我們可以從以下幾個方面來提高速度:
一,減少操作步驟,如經過三四步才能打開我們要測試的頁面的話,我們就可以直接通過網址來打開,減少不必要的操作。
二,中斷頁面加載,如果頁面加載的內容過多,我們可以查看一下加載慢的原因,如果加載的內容不影響我們測試,就設置超時時間,中斷頁面加載。
三,在設置等待時間的時候,可以sleep固定的時間,也可以檢測某個元素出現后中斷等待也可以提高速度。
四,配置testNG實現多線程。在編寫測試用例的時候,一定要實現松耦合,然后在服務器允許的情況下,盡量設置多線程運行,提高執行速度。
一,網速問題:有的時候網頁加載的比較慢,在程序執行的時候要操作的元素沒有顯示出來。這種情況比較常見,運行一次網速好的時候通過了,再運行一次,頁面沒有打開,就不通過了。為了提高穩定性,我們只能犧牲運行時間了,在經常檢測失敗的元素前加上等待時間,等要操作的元素出現之后再執行下面的操作。
二,Selelnium的原因:Selenium1.0和2.0還是有區別的,有些兒函數在2.0下運行確實有時而有效,時面無效。如果mouseover()函數,就是這種情況, 我們需要避免用這類函數。
三,多線程的時候,測試用例間相互影響。雖然多線程的時候運行速度比較快,但是如果用例之間的耦合性沒有設計好,也會影響的,如果用例A先於用例B執行的時候,就會影響到用例B;反之沒有問題。這種情況,如果你的自動化測試工程打算多線程時,提前就要把測試用例測試的耦合度比較松,盡量沒有任何關系,因為多線程的執行順序是不受控制的。
一,自動化測試用例是用來監控的,在此目的下,我們就把自動化測試用例設置成定時執行的,如果每五分鍾或是一個小時執行一次,在jenkins上創建一個定時任務即可。
二,必須回歸的用例。有些兒測試用例,如BVT測試用例,我們在公司產品任何變動上線之前都需要回歸執行。那我們就把測試用例設置成觸發式執行,在jenkins上將我們的自動化測試任務綁定到開發的build任務上。當開發人員在仿真環境上部代碼的時候,我們的自動化測試用例就會被觸發執行。
三,不需要經常執行的測試用例。像全量測試用例,我們沒有必要一直回歸執行,必竟還是有時間消耗的,有些非主要業務線也不需要時時回歸。這類測試用例我們就采用人工執行,在jenkins創建一個任務,需要執行的時候人工去構建即可。
通過研究selenium-webdriver的源碼,筆者發現其實webdriver的實現原理並不高深莫測無法揣度。在這里以webdriver ruby binding的firefox-webdriver實現為例,簡單介紹一下webdriver的工作原理。
-
當測試腳本啟動firefox的時候,selenium-webdriver 會首先在新線程中啟動firefox瀏覽器。如果測試腳本指定了firefox的profile,那么就以該profile啟動,否則的話就新啟1個profile,並啟動firefox;
-
firefox一般是以-no-remote的方法啟動,啟動后selenium-webdriver會將firefox綁定到特定的端口,綁定完成后該firefox實例便作為webdriver的remote server存在;
-
客戶端(也就是測試腳本)創建1個session,在該session中通過http請求向remote server發送restful的請求,remote server解析請求,完成相應操作並返回response;
-
客戶端接受response,並分析其返回值以決定是轉到第3步還是結束腳本;
這就是webdriver的工作流程,看起來很復雜實際上當了解了webdriver的實現原理后,理解上述問題應該比較簡單。
webdriver是按照server – client的經典設計模式設計的。
server端就是remote server,可以是任意的瀏覽器。當我們的腳本啟動瀏覽器后,該瀏覽器就是remote server,它的職責就是等待client發送請求並做出相應;
client端簡單說來就是我們的測試代碼,我們測試代碼中的一些行為,比如打開瀏覽器,轉跳到特定的url等操作是以http請求的方式發送給被 測試瀏覽器,也就是remote server;remote server接受請求,並執行相應操作,並在response中返回執行狀態、返回值等信息;
28、get和post 的區別?(感覺可能答案不對)
-因為使用GET請求不會產生什么動作。不會產生動作意味着GET的HTTP請求不會在服務器上產生任何結果。但是安全方法並不是什么動作都不產生,這里的安全方法僅僅指不會修改信息。POST可能會修改服務器上的資源的請求。比如CSDN的博客,用戶提交一篇文章或者一個讀者提交評論是通過POST請求來實現的,因為再提交文章或者評論提交后資源(即某個頁面)不同了,或者說資源被修改了。
兩種請求方式的區別:
1、GET請求,請求的數據會附加在URL之后,以?分割URL和傳輸數據,多個參數用&連接。URL的編碼格式采用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字符都要編碼之后再傳輸。
POST請求:POST請求會把請求的數據放置在HTTP請求包的包體中。上面的item=bandsaw就是實際的傳輸數據。因此,GET請求的數據會暴露在地址欄中,而POST請求則不會。
2、傳輸數據的大小
在HTTP規范中,沒有對URL的長度和傳輸的數據大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和服務器對URL的長度有限制。因此,在使用GET請求時,傳輸數據會受到URL長度的限制。
對於POST,由於不是URL傳值,理論上是不會受限制的,但是實際上各個服務器會規定對POST提交數據大小進行限制,Apache、IIS都有各自的配置。
3、安全性
POST的安全性比GET的高
29、公司內一直在使用的測試系統(B/S架構)突然不能訪問了,需要你進行排查並恢復,說出你的檢查方法
答:一、網站輸入域名直接無法訪問,網站之前還正常,突然就無法訪問