聊聊自動化測試框架

  • 2019 年 12 月 11 日
  • 筆記

來源:http://www.51testing.com

  無論是在自動化測試實踐,還是日常交流中,經常聽到一個詞:框架。之前學習自動化測試的過程中,一直對「框架」這個詞知其然不知其所以然。

  最近看了很多自動化相關的資料,加上自己的一些實踐,算是對「框架」有了一些理解,這篇博客,就聊聊自動化框架的一些事吧。。。

  一、什麼是框架

  框架(framework)是一個框子——指其約束性,也是一個架子——指其支撐性。是一個基本概念上的結構,用於去解決或者處理複雜的問題。

  在軟件工程中,框架(Framework)是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;

  另一種定義認為,框架是可被應用開發者定製的應用骨架,前者是從應用方面而後者是從目的方面給出的定義。

  —— 百度百科

  上面的概念比較抽象,換另一個角度解釋:

  1、框架本身一般不完整到可以解決特定問題;

  2、框架天生就是為擴展而設計的;

  3、框架裏面可以為後續擴展的組件提供很多輔助性、支撐性的方便易用的工具,也就是說框架是配套了一些幫助解決某類問題的庫(libraries)或工具(tools)。

  約束性:針對解決特定問題的軟件框架會首先定義問題的邊界,進而將相關的軟件組件約束在這個邊界內,保持框架在解決問題方面上的內聚性。

  支撐性:框架本身不解決什麼問題,但給了解決問題的相關組件一個組合底子,這個底子的科學性和易用性直接影響在此之上進一步開發的科學性和方便性。

  —— 知乎

  上面的2個對框架的解釋和定義,看起來也並沒有很簡單直白的說清楚什麼是框架,下面是我的一些理解:

  定義:為解決某些特定問題而約束邊界,支撐整個問題解決方案,配套了一些解決問題的組件而構成的工具。

  特定問題:什麼問題?——自動化測試

  約束邊界:為什麼約束?——明確測試範圍和目的

  解決方案:用什麼方案解決問題?——編程語言+工具+其他

  構成工具的組件:哪些組件?—— 用例、腳本、數據、日誌、報告、通知

  工具:特點是什麼?—— 靈活性、可擴展性、高內聚低耦合

二、自動化測試

  1、為什麼要進行自動化測試?

  ①、黑盒測試回歸效率低

  ②、手動測試的偶然性和不確定性

  ③、回歸的覆蓋率不足

  ④、交付的產品質量無法保證,全靠評估

  ⑤、系統越複雜,問題越多

  ⑥、上線時間長、構件失敗率高導致的蝴蝶效應(迭代快,加班多)

  2、自動化測試能解決什麼問題?

  ①、提高出現問題後的響應速率

  ②、降低回歸成本

  ③、提高回歸覆蓋率

  ④、提高回歸效率

  ⑤、提高回歸的穩定性

  3、自動化測試的不足有哪些?

  ①、無法減少成本投入,而是為了加快測試結果反饋,提升測試質量

  ②、自動化適用於回歸和冒煙,而不是發現BUG

  ③、錄製回放功能是雞肋,可視化並不是一個很好的做法

  ④、不是所有所有系統所有功能都適合做自動化測試

 三、自動化測試框架

  構成框架的組件,最起碼應該具備以下的功能:

  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,經典的持續集成工具;

數據庫:測試數據管理;

項目管理工具:測試結果統計管理;

  PS:自動化測試工具太多,上面只是列舉了使用率較高以及我個人還算了解的一些開源工具,具體的框架選型,需要根據具體項目特點和團隊、個人技術特點來決定!

  關於自動化測試框架的一些理解和思考總結,就是上面這些內容,提到的一些框架組件可能存在不合理的地方,僅供參考,如有更好的建議,請指出,不勝感激。。。

歡迎參加眾測:

https://wap.ztestin.com/site/register?usercode=FAAAQwMQGAAXAwQBA3QhExcDHAQDPjVaABMIQg%3D%3D