1. 程式人生 > >面試題四期-中高階測試工程師基礎知識必備+selenium篇

面試題四期-中高階測試工程師基礎知識必備+selenium篇

想漲薪的同鞋,都想搞錢,你做好搞錢的準備了嗎?直接進入正題吧

 


 

引言:自動化永遠是避不開的,反正你入職的崗位要不要用自動化,你必須得會一點,加分項。這一塊包括,自動化一些理念和自動化的工具使用。

 

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

答: isElementPresent

 

2、selenium中hidden或者是display = none的元素是否可以定位到?

答:不能

 

3、selenium中如何保證操作元素的成功率?也就是說如何保證我點選的元素一定是可以點選的?

答:- 新增元素智慧等待時間 driver.implicitly_wait(30)

- try 方式進行 id,name,clas,x path, css selector 不同方式進行定位,如果第一種失敗可以自動嘗試第二種

-Selenium保證元素成功率是通過元素的定位,當然它的定位方法很多,一定能有合適的。但是在自動化工程的實施過程中,高質量的自動化測試不是隻有測試人員保證的。需要開發人員規範開發習慣,如給頁面元素加上唯一的name,id等,這樣就能大大地提高元素定位的準確性。當然如果開發人員開發不規範,我們在定位元素的時候儘量使用相對地址定位,這樣能減少元素定位受頁面變化的影響。只要我們元素定位準確,就能保證我的每一個操作符合我的預期

 

4、如何提高selenium指令碼的執行速度?

答: Selenium指令碼的執行速度受多方面因素的影響,如網速,操作步驟的繁瑣程度,頁面載入的速度,以及我們在指令碼中設定的等待時間,執行指令碼的執行緒數等。所以不能單方面追求執行速度的,要確保穩定性,能穩定地實現迴歸測試才是關鍵。

我們可以從以下幾個方面來提高速度:

 

一,減少操作步驟,如經過三四步才能開啟我們要測試的頁面的話,我們就可以直接通過網址來開啟,減少不必要的操作。

 

二,中斷頁面載入,如果頁面載入的內容過多,我們可以檢視一下載入慢的原因,如果載入的內容不影響我們測試,就設定超時時間,中斷頁面載入。

 

三,在設定等待時間的時候,可以sleep固定的時間,也可以檢測某個元素出現後中斷等待也可以提高速度。

 

四,配置testNG實現多執行緒。在編寫測試用例的時候,一定要實現鬆耦合,然後在伺服器允許的情況下,儘量設定多執行緒執行,提高執行速度。

 

5、用例在執行過程中經常會出現不穩定的情況,也就是說這次可以通過,下次就沒辦法通過了,如何去提升用例的穩定性?

答:

- time.sleep( )

- driver.implicitly_wait(30)

- 多用 try 捕捉,處理異常

-此時我們要分析出不穩定的原因,然後有針對性的去解決問題。主要有以下幾個方面 :

一,網速問題:有的時候網頁載入的比較慢,在程式執行的時候要操作的元素沒有顯示出來。這種情況比較常見,執行一次網速好的時候通過了,再執行一次,頁面沒有開啟,就不通過了。為了提高穩定性,我們只能犧牲執行時間了,在經常檢測失敗的元素前加上等待時間,等要操作的元素出現之後再執行下面的操作。

二,Selelnium的原因:Selenium1.0和2.0還是有區別的,有些兒函式在2.0下執行確實有時而有效,時面無效。如果mouseover()函式,就是這種情況, 我們需要避免使用這類的函式。

三,多執行緒的時候,測試用例間相互影響。雖然多執行緒的時候執行速度比較快,但是如果用例之間的耦合性沒有設計好,也會影響的,如果用例A先於用例B執行的時候,就會影響到用例B;反之則沒有問題。這種情況,如果你的自動化測試工程打算多執行緒的時候,提前就要把測試用例測試的耦合度比較鬆,儘量沒有任何關係,因為多執行緒的執行順序是不受控制的。

 

6、你的自動化用例的執行策略是什麼?

答:

- 自動化測試用例的執行策略是要看自動化測試的目的,通常有如下幾種策略:

一,自動化測試用例是用來監控的,在此目的下,我們就把自動化測試用例設定成定時執行的,如果每五分鐘或是一個小時執行一次,在jenkins上建立一個定時任務即可。

二,必須迴歸的用例。有些兒測試用例,如BVT測試用例,我們在公司產品任何變動上線之前都需要回歸執行。那我們就把測試用例設定成觸發式執行,在jenkins上將我們的自動化測試任務繫結到開發的build任務上。當開發人員在模擬環境上部程式碼的時候,我們的自動化測試用例就會被觸發執行。

三,不需要經常執行的測試用例。像全量測試用例,我們沒有必要一直迴歸執行,必竟還是有時間消耗的,有些非主要業務線也不需要時時迴歸。這類測試用例我們就採用人工執行,在jenkins建立一個任務,需要執行的時候人工去構建即可。

 

7、什麼是持續整合?

答:

- 持續整合源於極限程式設計(XP),是一種軟體實踐,軟體開發過程中整合步驟是一個漫長並且無法預測的過程。整合過程中可能會爆發大量的問題,因此整合過程需要儘可能小而多,實際上持續整合講的是不斷的去做軟體的整合工作。持續整合,最簡單的形式是包括一個監控版本控制(SVN等等)變化的工具。當變化被發覺時,這個工具可以自動的編譯並測試你的應用。

 

8、自動化測試的時候是不是需要連線資料庫做資料校驗?

答:

- UI自動化不需要

- 介面測試會需要

 

9、id,name,class,xpath, css selector這些屬性,你最偏愛哪一種,為什麼?

答:- css 、xpath 幾乎所有的元素都可以定位到

 

10、如何去定位頁面上動態載入的元素?

答:- 觸發動態載入元素的事件,直至動態元素出現,進行定位

 

11、如何去定位屬性動態變化的元素?

答:- xpath或者css通過同級、父級、子級進行定位

 

12、點選連結以後,selenium是否會自動等待該頁面載入完畢?

答:- 會的

 


 

更多文章請關注作者微信公眾號:城事十則