目錄
自動化測試
-
概述
- 自動化測試,就是把以人為驅動的測試行為轉化為機器執行的過程。
- 自動化測試往往通過一些測試工具或框架,編寫自動化測試用例,來模擬手工測試過程。
- 階段:一般落后於新功能的手工測試階段,可以在手工用例執行完成或功能上線后,再補充。
-
分類
- 自動化測試廣義說法包括,白盒自動化測試,GUI自動化測試,性能自動化測試
- GUI自動化測試的原理:通過軟件模擬用戶實際的鼠標和鍵盤操作,實現自動化執行和操作的過程。
- 性能自動化測試的原理:通過客戶端模擬多個虛擬用戶並發請求,來檢驗服務器的性能行為是否滿足系統要求。
-
自動化測試的優點:
- 1、通過錄制,編寫腳本執行測試,減少回歸測試
- 2、執行手工測試困難,或不可能做得測試,(模擬多個用戶並發測試)
- 3、更好的利用資源,(將繁瑣的任務自動化,利用晚上或周末的時間進行執行自動化測試)
- 4、測試具有一致性和可重復性,(重復多次相同的測試,在不同配置下執行,可以在不同的操作系統測試)
- 5、測試的復用性
- 6、縮短測試的時間和周期
-
自動化測試局限:
- 1、不能取代手工測試:手工測試比自動化測試發現的bug要多;
- 2、自動化測試對測試人員的要求相對更高;
- 3、測試用例需要根據版本迭代進行更新,有一定維護成本;
- 4、工具本身不具有想象力
- 5、對測試質量的依賴性極大
-
希望借助自動化流程解決的問題
- 1、測試時間緊張,手工測試可能覆蓋不全,容易錯過某些邊界情況;
- 2、模塊間強耦合時,單純從頁面進行測試時,比較難深入發現問題;
- 3、回歸測試時,需要投入較大的人力和工時;
- 4、實現手工測試無法達成的測試任務,如並發;
- 5、通過編寫測試用例,加深對業務/數據的認知,有助於下階段迭代中發現隱藏的問題。
-
引入自動化測試的前提條件
- 項目周期長,需求變動不頻繁;
- 自動化測試腳本可重復使用;
- 測試任務手工測試難以實現;
-
做自動化測試需要具備的能力
- 編碼能力;
- 熟悉被測系統;
- 掌握一個自動化測試框架/工具;
- 不斷學習;
-
自動化測試用例設計原則
- 保持case的獨立性;
- 保持case的可遷移性;
- 提升case的執行效率;
自動化框架
-
概述
- 定義:為解決某些特定問題而約束邊界,支撐整個問題解決方案,配套了一些解決問題的組件而構成的工具。
- 特定問題:什么問題?——自動化測試
- 約束邊界:為什么約束?——明確測試范圍和目的
- 解決方案:用什么方案解決問題?——編程語言+工具+其他
- 構成工具的組件:哪些組件?—— 用例、腳本、數據、日志、報告、通知
- 工具:特點是什么?—— 靈活性、可擴展性、高內聚低耦合
-
圖示
-
組件
- Log:日志記錄和管理功能,針對不同的情況,設置不同的日志級別,方便定位問題;
- Report:測試報告生成和管理以及即時通知,測試結果快速響應;
- Source:配置文件、靜態資源的管理,遵循高內聚低耦合原則;
- Common:公共函數、方法以及通用操作的管理,遵循高內聚低耦合原則;
- TestCase:測試用例管理功能,一個功能點對應一個或者多個case,盡可能的提高覆蓋率;
- TestData:測試數據管理功能,數據與腳本分離,降低維護成本,提高可移植性;
- TestSuite:測試組件管理功能,針對不同場景不同需求,組裝構建不同的測試框架,遵循框架的靈活性和擴展性;
- Statistics:測試結果統計管理功能,每次執行測試的結果統計、分析、對比以及反饋,數據驅動,為軟件優化和流程改進,提供參考;
- Continuous:持續集成環境,即CI環境,包括測試文件提交、掃描編譯、執行測試、生成報告及時通知等功能,持續集成是自動化測試的核心!
常見的自動化測試框架
-
1、接口自動化框架:
- ①、java+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine
- ②、python+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
- ③、python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
- ④、jmeter+Maven/Ant+Jenkins+MySQL+testlink/redmine
-
2、UI自動化測試框架
- ①、java+selenium/appium+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine
- ②、python+selenium/appium+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
- ③、python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine
-
總結
- 它們都擁有共同特性:編程語言+單元測試框架+掃描編譯工具+持續集成工具+數據庫+項目管理工具。
- 編程語言:編寫測試腳本、日志記錄和輸出;
- 單元測試框架:提供測試腳本運行、異常校驗等一些列的配置;
- 掃描編譯工具:測試文件掃描編譯,一般配合持續集成工具使用效果更佳;
- 持續集成工具:Jenkins,經典的持續集成工具;
- 數據庫:測試數據管理;
- 項目管理工具:測試結果統計管理;
-
面試總結
- 框架:6項 -- 編程語言+單元測試框架+掃描編譯工具+持續集成工具+數據庫+項目管理工具。
- 具體:10項
- 日志記錄和管理功能;測試報告;配置文件、靜態資源;公共函數、方法以及通用操作;測試用例;測試數據;測試組件;測試結果統計;持續集成環境。
自動化測試的流程
- 分析自動化測試需求,一般在手工測試之后開始;
- 根據項目的特點、選擇合適的自動化測試工具,並搭建測試環境
- 測試用例設計和開發:設計測試用例;或提取手工測試的測試用例,轉化為自動化測試用例
- 開發自動化軟件測試框架和測試腳本
- 執行:通過工具、代碼實現自動化的構造輸入、自動檢測輸出結果是否滿足預期
- 生成自動測試報告
- 持續改進、腳本優化
游戲自動化測試的思考
-
參考文章:
自動化測試工具腦圖