UI自動化測試入門 - Selenium 的使用
Background
随着時代車輪的轉動以及科技行業的蓬勃發展 , 越來越多的人開始選擇從事 IT 行業 , 在産品逐漸成型過程中,測試扮演着重要的角色 。 随着産品複雜度不斷上升,疊代過程中需要做非常大量的回歸測試 ,這個時候相信很多測試人員都有着這樣的想法: 如果能把重複繁重的回歸測試任務交給機器去做該多好啊! 作為一名有着些 (小) 許 (白) 開發能力的測試愛好者,經過一段時間的自學後,算是有所收獲 。在這裡 , 僅給大家展示一下 UI 自 (操) 動 (控) 化 (浏) 測 (覽) 試 (器) 的魅力。
Target
借助 selenium (UI 自動化測試架構),不僅可以實作 B\S 架構軟體自動化測試 , 也可以給工作、生活增添便利與色彩 (隻要是人通過使用浏覽器能夠做到的事情 , 就沒有不能自動化實作的!)
實作第一個自動化測試用例
首先,我們來了解一下什麼叫做測試用例:
測試用例(Test Case)即是為某個特殊目标而編制的一組測試輸入、執行條件以及預期結果,用于測試某個程式路徑或核實是否滿足某個特定需求。
然後,我們再來了解一下何謂自動化測試:
自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例并通過評審之後,由測試人員根據測試用例中描述的規程一步步執行測試,得到實際結果與期望結果的比較。在此過程中,為了節省人力、時間或硬體資源,提高測試效率,便引入了自動化測試的概念。
好的 , 在了解完基礎知識以後我們來模拟一次簡單的、真實的測試場景(驗證百度首頁連結的正确性) :

我們通過執行腳本的方式 , 自動化實作整個測試用例的執行過程 ,常見的UI自動化測試環境搭建步驟(selenium + java OR selenium + python)在這裡就不做介紹了。
直接上代碼
public class BaiduTest {
WebDriver driver = null;
@BeforeSuite
public void Setup() {
System.setProperty("webdriver.chrome.driver",
"C:\\MyDownloads\\Download"
+"\\chrome-win32\\chromedriver.exe");
driver = new ChromeDriver();
}
@Test(dataProvider = "data")
public void Baidu_Homepage_0001(String url, String expectTitle) {
driver.navigate().to(url);
Assert.assertEquals(driver.getTitle(),expectTitle);
}
@DataProvider(name = "data")
public Object[][] data(){
return new Object[][]{
{ "http://www.baidu.com", "百度一下,你就知道" },
};
}
@AfterSuite
public void tearDown() {
driver.quit();
}
這裡采用了單元測試架構 TestNG 進行了用例和測試資料的封裝 ,相信大家可以清晰的看到,在 @Test 中執行了整個測試用例 , 并且可以發現 @Test 方法名與測試用例編号一緻 。測試資料則由 @DataProvider 提供 。至于 @BeforeSuite 以及 @AfterSuite 則代表着整套測試的初始以及收尾工作 。以 TestNG Test 運作以後 , 控制台輸出如下:
PASSED: Baidu_Homepage_0001("http://www.baidu.com", "百度一下,你就知道")
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
可以看到在上面輸出中看到了 PASSED 的字樣,代表此用例通過。