在軟件研發生命周期的各個階段都有自動化測試技術的存在,並且對提升測試效率有着至關重要的作用。
單元測試的自動化技術
單元測試階段的“自動化”包括:
-
測試用例執行的自動化;
根據軟件詳細設計采用等價類划分和邊界值分析方法設計測試用例,在測試代碼實現后再以自動化的方式統一執行。 -
用例框架代碼生成的自動化;
如TestNG 框架代碼應該由自動化工具生成
-
部分測試輸入數據的自動化生成;
自動化工具能夠根據不同變量類型自動生成測試輸入數據。
比如,某個被測函數的原型是 void fun(int* p, short b),那么測試數據自動生成技術就會為輸入參數 int* p 自動生成“空”和“非空”的兩個指針 p,然后分別執行函數 void fun(int* p, short b),並觀察函數的執行情況。如果函數內部沒有對空指針進行特殊處理,那么函數 fun 的調用必定會拋出異常,從而發現函數的設計缺陷。
同樣地,對於輸入參數 short b 會自動生成超出 short 范圍的 b,測試函數 fun 的行為。
-
自動樁代碼的生成;
自動樁代碼的生成是指自動化工具可以對被測試代碼進行掃描分析,自動為被測函數內部調用的其他函數生成可編程的樁代碼,並提供基於測試用例的樁代碼管理機制。 -
被測代碼的自動化靜態分析;
靜態分析主要指代碼的靜態掃描,目的是識別出違反編碼規則或編碼風格的代碼行。通常這部分工作是結合項目具體的編碼規則和編碼風格,由自動化工具通過內建規則和用戶自定義規則自動化完成的。目前比較常用的代碼靜態分析工具有 Sonar 和 Coverity 等。 -
測試覆蓋率的自動統計與分析。
單元測試用例執行結束后,自動化工具可以自動統計各種測試覆蓋率,包括代碼行覆蓋率、分支覆蓋率、MC/DC 覆蓋率等。
代碼級集成測試的自動化技術
現在的開發理念追求的是系統復雜性的解耦,會去盡量避免“大單體”應用,采用 Web Service 或者 RPC 調用的方式來協作完成各個軟件功能。所以現在的軟件企業,尤其是互聯網企業,基本不會去做代碼級集成測試。
Web Service 測試的自動化技術
Web Service 測試,主要是指 SOAP API 和 REST API 這兩類 API 測試。
使用API 自動化測試框架
Web Service 測試“自動化”包括:
-
API 測試用例執行的自動化;
-
測試腳手架代碼的自動化生成;
-
部分測試輸入數據的自動生成;
-
Response 驗證的自動化;
-
基於 SoapUI 或者 Postman 的自動化腳本生成。
GUI 測試的自動化技術
GUI 自動化測試主要分為兩大方向,傳統 Web 瀏覽器和移動端原生應用(Native App)的 GUI 自動化。雖然二者采用的具體技術差別很大,但是用例設計的思路類似。
對於傳統 Web 瀏覽器的 GUI 自動化測試,業內主流的開源方案采用 Selenium,商業方案采用 Micro Focus 的 UFT(前身是 HP 的 QTP);
對於移動端原生應用,通常采用主流的 Appium,它對 iOS 環境集成了 XCUITest,對 Android 環境集成了 UIAutomator 和 Espresso。
來源於:極客時間 茹炳晟 軟件測試52講