自動化測試面試題及答案大全(1)


1、selenium中如何判斷元素是否存在?

沒有提供原生的方法判斷元素是否存在,一般我們可以通過定位元素+異常捕獲的方式判斷

2、selenium中hidden或者是display = none的元素是否可以定位到?
不可以,想點擊的話,可以用js去掉dispalay=none的屬性

3、selenium中如何保證操作元素的成功率?也就是說如何保證我點擊的元素一定是可以點擊的?
1.首先通過封裝find方法,實現wait_for_element_ispresent(WebDriverWait)
2.在對頁面進行click之前,先滾動到該元素(通過Js封裝),避免在頁面未加載完成前或是在下拉之后才能顯示。
3.不同方式進行定位,與expected_conditions判斷方法封裝,循環判斷頁面元素出現后再操作;
4.開發人員規范開發習慣,如給頁面元素加上唯一的name,id等。

4、如何提高selenium腳本的執行速度?
1.優化測試用例。設置等待時間的時候,少用sleep,盡量不用implicitly_wait,多用顯式等待方法;
2.減少不必要的操作步驟。如經過三四步才能打開要測試的頁面的話,可以直接通過網址來打開;
3.中斷頁面加載。如果加載的內容不影響我們測試,就設置超時時間,中斷頁面加載;
4.使用Selenium grid,通過testNG實現並發執行。 在編寫測試用例的時候,實現松耦合,然后再服務器允許的情況下,盡量設置多線程實現並發運行。

5、用例在運行過程中經常會出現不穩定的情況,也就是說這次可以通過,下次就沒辦法通過了,如何去提升用例的穩定性?
1.在經常檢測失敗的元素前盡量加上顯式等待時間,等要操作的元素出現之后再執行下面的操作;
2.多線程的時候,減少測試用例耦合度,因為多線程的執行順序是不受控制的;
3.多用 try 捕捉,處理異常;
4.盡量使用測試專用環境,避免其他類型的測試同時進行,對數據造成干擾。

6、如何設計高質量自動化腳本
1.使用四層結構實現業務邏輯、腳本、數據分離。
2.使用PO設計模式,將一個頁面用到的元素和操作步驟封裝在一個頁面類中。如果一個元素定位發生了改變,我們只用修改這個頁面的元素屬性
3.對於頁面類的方法,我們盡量從客戶的正向邏輯去分析,方法中是一個獨立場景,例如:登錄到退出,而且不要想着把所有的步驟都封裝在一個方法中。
4 測試用例設計中,減少測試用例之間的耦合度。

7、你的自動化用例的執行策略是什么?
1.自動化測試用例是用來監控的。集成到jenkins,創建定時任務定時執行;
2.有些用例在產品上線前必須回歸。jenkins上將任務綁定到開發的build任務上,觸發執行;
3.有些用例不需要經常執行。jenkins創建一個任務,需要執行的時候人工構建即可。

8、什么是持續集成?
頻繁的將代碼集成到主干,持續性的進行項目的構架,以便能能夠快速發現錯誤,防止分支大幅度偏離主干

9、自動化測試的時候是不是需要連接數據庫做數據校驗?
UI自動化不需要
接口測試會需要

10、Selenium有幾種定位方式?你最偏愛哪一種,為什么?
Selenium有八種定位方式:
與name有關的有三種:name、class_name、tag_name
與link相關的有兩種:link_text、partitial_link_text
與id有關:id
全能選手:xpath、css_selector
如果存在id,我一定使用Id,因為簡單方便,定位最快。其次是Xpath,因為很多情況下html標簽的屬性不夠規范,無法唯一定位。Xpath是通過相對位置定位
如果沒有,那么CSS定位器應該被優先考慮,因為在大多數現代瀏覽器中,它們的評估速度比XPath更快。

11、如何去定位頁面上動態加載的元素?
首先觸發動態事件,然后再定位。如果是動態菜單,則需要層級定位。——JS實現(對動態事件封裝)

12、如何去定位屬性動態變化的元素?
先去找該元素不變的屬性,要是都變,那就找不變的父元素,用層級定位(以不變應萬變)
屬性動態變化也就是指該元素沒有固定的屬性值,可以通過:
JS實現,
通過相對位置來定位,比如xpath的軸,paren/following-sibling/percent-sibling
http://www.cnblogs.com/zhaozhan/archive/2009/09/10/1564332.html

13、點擊鏈接以后,selenium是否會自動等待該頁面加載完畢?

不會的。所以有的時候,當selenium並未加載完一個頁面時再請求頁面資源,則會誤報不存在此元素。所以首先我們應該考慮判斷,selenium是否加載完此頁面。其次再通過函數查找該元素。

14、webdriver client的原理是什么?
在selenium啟動以后,driver充當了服務器的角色,跟client和瀏覽器通信,client根據webdriver協議發送請求給driver。driver解析請求,並在瀏覽器上執行相應的操作,並把執行結果返回給client.

15、webdriver的協議是什么?
WebDrive協議本身是http協議,數據傳輸使用json

16、啟動瀏覽器的時候用到的是哪個webdriver協議?
-http

17、什么是page object設計模式?
1.通俗來講,把每個頁面當成一個頁面對象,頁面層寫定位元素方法和頁面操作方法
2.用例層從頁面層調用操作方法,寫成用例
3.可以做到定位元素與腳本的分離

18、怎樣去選擇一個下拉框中的value=xx的option?
1.select類里面提供的方法:select_by_value(“xxx”)
2.xpath的語法也可以定位到

19、如何在定位元素后高亮元素(以調試為目的)?
-重置元素屬性,給定位的元素加背景、邊框

20、什么是斷言和驗證?
斷言(assert):測試將會在檢查失敗時停止,並不運行后續的檢查
優點:可以直截了當的看到檢查是否通過
缺點:檢查失敗后,后續檢查不會執行,無法收集那些檢查結果狀態
驗證(vertify):將不會終止測試
缺點:你必須做更多的工作來檢查測試結果:查看日志——>耗時多,所以更偏向於斷言

21、page object設置模式中,是否需要在page里定位的方法中加上斷言?
不需要,page頁只做元素抓取和操作方法

22、page object設計模式中,如何實現頁面的跳轉?
初始化driver參數,Page類傳driver參數

23、自動化測試用例從哪里來?
-手工用例中抽取

24、你覺得自動化測試最大的缺陷是什么?
-不穩定
-可靠性不強
-不易維護
-成本與收益

25、什么是分層測試?
1.數據層
2.接口層’
3.UI層

26、webdriver可以用來做接口測試嗎?
不可以,webdriver是專門做web的UI自動化參數

27、get和post 的區別?
1、GET請求:請求的數據會附加在URL之后,以?分割URL和傳輸數據,多個參數用&連接。
POST請求:POST請求會把請求的數據放置在HTTP請求包的包體中。
2、傳輸數據的大小
使用GET請求時,傳輸數據會受到URL長度的限制。
對於POST,理論上是不會受限制的
3、安全性。POST的安全性比GET的高

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

————————————————
版權聲明:本文為CSDN博主「測試喵」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_33299873/article/details/89371131


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM