web自動化測試
目錄
一、 自動化測試基本介紹 2
二、 Web自動化工具 3
三、 Selenium介紹 4
四、 Selenium WebDriver常用API 4
五、 TestNG 6
六、 環境搭建 8
一、自動化測試基本介紹
1 自動化測試概述:
什么是自動化測試?一般說來所有能替代人工測試的方式都屬於自動化測試,即通過工具和腳本來模擬人執行用例的過程。
2 自動化測試的作用
- 減少軟件測試時間與成本改進軟件質量
- 通過擴大測試覆蓋率加強測試工作
- 進行手動測試難以完成的、需要更高的成本、更長的計划、更高的質量的任務
- 迭代更新較少,但仍需測試人員維護的,通過自動化解放人力
3 自動化測試的主要應用:
- 冒煙測試(主業務流程)
- 回歸測試
- 性能測試
- 兼容性測試 (一套測試腳本,多個平台執行)
- 完成手動測試無法完成的工作下班后無人值守測試
4 web自動化實現的目標:
(一)原則:
- 編寫自動化測試用例庫,根據用例庫里面的用例編寫測試用例。
- 提高測試效率,降低測試成本
- 重復性較強的用例用自動化實現
- 快速的回歸測試,提高版本發布的速度和質量
- 功能覆蓋率達到要求
- 測試具有移植性和可重復性
(二)實施策略(持續集成):
- 框架的選擇
- 環境搭建
- case編寫:提取公共模塊、提取公共參數、功能邏輯熟悉
- log輸出
- 報告輸出
- Jenkins持續集成:定時集成、發送郵件
二、Web自動化工具
1 web自動化工具的選擇:
市場上自動化工具分為開源和和商用付費兩種,下面提供兩種類型主流的selenium和QTP對比
最終選擇:selenium+IDEA(java+maven+testng)+jenkins
三、Selenium介紹
(一)selenium 測試原理:
- 在自動化測試過程中,存在三部分組件:客戶端腳本+瀏覽器驅動+瀏覽器終端。
- 驅動文件,以geckodriver.exe為例,這個可執行的驅動文件啟動后,相當於一個暴露了一系列接口的服務器,監聽某一端口。
- 客戶端的操作(訪問頁面,定位元素,輸入數據,點擊按鈕等)都是封裝成了接口請求(eg:/session/xx/yy),然后提交到驅動服務器。
- 驅動服務器接收到客戶端的請求后,再跟終端瀏覽器交互。
- 終端瀏覽器做出相應操作(操作元素、甚至瀏覽器本身:截屏、窗口、安裝插件證書)。
(二)selenium 工具套件簡單介紹
- Selenium WebDriver:面向對象API。
- Selenium IDE(集成開發環境):FireFox插件,用於提供圖形化界面來錄制和回放腳本,插件只是用來模擬原型的工具,並不希望測試工程師使用此工具用來運行大批量的測試腳本。此插件需要使用第三方的javaScript代碼庫才能支持循壞和條件判斷
- Selenium-Grid可以在多個測試環境以並發的方式執行測試腳本,實現腳本的並發執行,縮短大量測試腳本的執行時間。
四、Selenium WebDriver常用API
(一)selenium WebDriver常用基礎API
(一) 瀏覽器操作
- 加載瀏覽器驅動,打開頁面:
driver = new FirefoxDriver();
String baseUrl = "http://oa2.midairen.com/index.html";
driver.get(baseUrl);
- 關閉瀏覽器:
driver.close();//關閉瀏覽器
- 最大化窗口:
driver.manage().window().maximize();
- 后退到前一頁:
driver.navigate().back();
- 前進到后一頁:
driver.navigate().forward();
- 刷新頁面:
driver.navigate().refresh();
- 獲得title並打印
String title =driver.getTitle();
- 殺掉Windows的瀏覽器進程
- 當前瀏覽器窗口截屏(比較截屏)
- 操作瀏覽器的cookie
(二) 頁面操作
- 獲取頁面的源代碼
- 獲取頁面的URL地址
- 在輸入框中清除原有的文字
- 在輸入框中輸入指定內容
- 單擊按鈕
- 雙擊某個元素
- 操作單選下拉列表
- 操作單選框
- 操作復選框
- 檢查元素文本內容是否出現
- 執行JS腳本
- 操作iframe中的頁面元素
- 操作富文本
(三) 元素定位的方法:
五、TestNG
(一)TestNG基本介紹:
TestNG是Java中的一個測試框架,是一個目前很流行實用的單元測試框架,有完善的用例管理模塊,配合Maven能夠很方便管理依賴第三方插件。使用TestNG可以做功能、接口、單元、集成的自動化測試,最常見的是結合selenium做功能自動化測試,它使用Java注釋去寫測試方法。
測試人員一般用TestNG來寫自動化測試,開發人員一般用Junit寫單元測試,TestNG適合測試人員使用的主要原因:TestNG更適合復雜的集成測試。
(二) testNG的特點:
- 注解
- TestNG使用Java和面向對象的功能
- 支持綜合類測試(例如,默認情況下,沒有必要創建一個新的測試來作為每個測試方法的類的實例)
- 獨立的編譯時間測試代碼運行時配置/數據信息
- 靈活的運行時配置
- 支持依賴測試方法,並行測試,負載測試,局部故障
- 靈活的插件API
- 支持多線程測試
(三) 注解:
TestNG常用的測試用例組織結構由test Suite-test-測試class-測試方法。Test suite有一個或者多個test組成,test由一個或者多個測試class組成,一個測試class有一個或者多個測試方法組成。運用不同層級的測試用例時,課通過不同注解實現測試前的初始化工作,測試用例執行工作和測試后的清理工作。
常用注解如下:
(四) 依賴測試
某些復雜的測試場景需要按照某個特定的順序執行測試用例,一以此保證某個特定順序執行測試用例,此測試場景運行需求稱為依賴測試。通過依賴測試,不同的測試方法間共享數據和程序狀態。使用dependsOnMethods參數 實現。
@Test(dependsOnMethods = {"testcase1"})
(五) 斷言
在執行自動化測試用例的時候,我們需要自動判斷用例執行完成后獲得的輸出值是否與預期值一致,這個時候就需要用到斷言功能。TestNG中提供了一個Assert類:org.testng.AsserTestNG中提供了一個Assert類,org.testng.Assert類是作為放置一系列斷言的靜態方法的容器。
Assert.assertTrue(select1.isDisplayed());//斷言判斷select1元素是否在頁面存在
常用的斷言:
- assertTrue:判斷是否為true。
- AssertFALSE:判斷是否為FALSE。
- AssertNull:判斷是否為空
- AssertNoNull:判斷是否不為空
- AssetEquals:判斷是否相等
- AssertNoEquals:判斷是否不相等
六、環境搭建
見另一博文:https://www.cnblogs.com/liuzhongzhu/p/11611698.html