代碼示例:
public void test1() { //打開網站 selenium.open("http://xxx.xxx.xxx/yyy"); //通過Xpath 找到頁面中的某個DOM對象 selenium.select("xpath=//SELECT[@name='SBBUSYO']", "index=1"); //模擬點擊、輸入等頁面動作 selenium.click("xpath=//input[@type='button']"); //等待頁面加載 selenium.waitForPageToLoad("2000"); //斷言驗證是否正確轉向標題為“welcome”的頁面 assertEquals(selenium.getTitle(), "Welcome"); } |
代碼會啟動IE或者firefox執行,這樣就將單元測試可以覆蓋到了開發的全部環節。我們公司現在使用的LoadRunner是協議級的測試,通過對get\post協議的分析進行測試。
Selenium 是DOM級的測試,通過Xpath 尋找頁面標簽,驗證是否實現了希望的功能。Selenium支持js,和多瀏覽器,所以還可以用于測試瀏覽器兼容性。
百度進行web自動化測試的一些相關經驗:
1. 通過一些自己寫好的框架,加載.xls 文件數據導入測試用例的數據。對于一些需要反復回歸測試的測試用例,測試人員只需要用Excel填寫測試數據就可以。
2. 測試人員更專注于業務、流程比較復雜的用例,簡單的業務可以自動化測試。
3. Web自動化測試并不是為了找到bug,而是作為系統的一個安全網和防護欄,保證代碼的變動不會造成基礎和核心模塊出現問題。
4. Web自動化測試只能應用適合的場景,很多頁面還是需要人工測試。以百度目前的經驗,大概也只有20-30%的web可以進行自動化測試。所以需要精心挑選和設計測試用例。
5. 測試人員最好也擁有編寫代碼的能力。
TDD 測試驅動開發
1. 測試驅動開發:寫代碼前先寫測試。
2. 如何切入TDD?:從上到下寫代碼。即寫Web測試>Jsp頁面>Action測試>Action實現>service測試>service實現……
3. 通過測試和上層方法進行驅動開發。比如你寫Action測試時發現需要跳轉首頁的方法,就驅動在Action建立toIndex()方法。在Action發現你需要Service ,就建立Service對象,利用IDE的輔助提示功能,快速的進行驅動開發。
4. 隨時重構,包括Test的代碼。如果感覺代碼有bed smell就馬上重構。
5. 對于暫時沒有實現的或者無法實現的,通過Mock的方式實現。
6. Web測試可以先寫空業務場景,暫不實現,因為Web測試需要完整功能開發完畢并進行部署和服務啟動,并且耗時也比較長。
7. 測試用例是一種文檔,測試方法名稱以表達測試目的為第一目標。演示的時候講師經常起了這樣的方法名:Public void testShowMoreDetailWhenFrendListOver5(){} //當好友列表大于5個時顯示"show more"