基於Jmeter的接口自動化測試實踐


  在去年實施了一年的三端(PC、無線M站、無線APP【Android、IOS】)后,今年7月份開始,我們開始進行接口自動化的實施,目前已完成了整個框架的搭建以及接口的持續測試集成。今天做個簡單的分享。

  在開始自動化投入前,需要先問幾個問題

  1. 為什么要投入人力做自動化?
  2. 以及有UI自動化的情況下,為什么還要做接口自動化?
  3. 測試人員需要有代碼能力嗎?如果需要,需要什么程度的代碼能力?

  以上都是開放式問題,有機會再相互探討。

  在打算實施接口自動化后,需要解決如下幾個問題

  1. 接口自動化要測試哪些接口,我們要怎么測試這些接口,每個接口需要分別覆蓋什么?
  2. 工欲善其事必先利其器,接口自動化測試如何選型工具?很多工具都具有接口測試功能,如何挑選工具
  3. 如何做到持續集成?

  接口測試從測試關注點上看可以分為單接口測試以及聯合接口測試

  單接口測試關注內容為:

  1. 響應狀態
  2. 響應時間 
  3. 請求數據格式:協議、編碼、字段
  4. 響應數據格式:編碼、字段

  聯合接口測試關注多個接口組合特定業務場景測試;

  在進行持續集成的接口自動化測試中,我們重點關注的是多個接口聯合測試,即業務場景實現過程中各個依賴接口的自動化測試,而在手工測試中,去重點關注單個接口的各個測試內容;

  測試工具的比較

  在工具選擇上我們也比較了目前市面上比較常用的測試工具以及自研方案

  從調研情況看,選擇還是非常多,市面上有非常成熟的工具供選擇,也可以自研工具平台。在難以取舍情況下,我們列出如上的幾個維度對工具進行橫向比較,在綜合考慮我們團隊的情況,選擇了jmeter進行接口自動化開發工具

  整個接口自動化就圍繞如下內容,其中Java是團隊的第一編程語言,使用Jenkins進行任務管理以及調度,達到課持續集成,使用ant作為構建橋梁,連接jenkins和jmeter

  

 

  工具選擇好后,就開始設計系統的業務流程以及設計標准了,雖然是測試,但是也要以開發標准對待寫代碼,開玩笑的說以專業精神對待業余愛好

  首先對於一個可持續集成測試系統,首先要易於使用,能很方便的執行、查看測試結果以及定位測試問題;還要團隊成員,哪怕別的團隊成員也可以很方便的使用本系統,不需要具備很多的專業背景或者深入的了解系統細節才能使用;

  整個系統的flow如下,jenkins作為最上層的入口,負責結果展示、發生郵件、啟動執行系統,ant根據執行的target,調動jmeter執行自動化任務,每個自動化任務需要執行的數據集從另一套系統,我們內部叫奧卡姆剃刀系統讀取測試數據,執行結果一種是標准的junit執行報告結果,用於生成簡易的測試報告,另一份是自定義的測試結果集,用於分析測試數據以及往第三方關聯系統分發測試結果

  

    

   數據流程定義好后,就是實際的編碼設計階段了,由於做接口自動化中,特別是設計復雜業務數據時,需要自定義開發一些擴展包,beanshell是我們常用的,但是這個有一個問題就是beanshell不支持即時的語法檢查,只有在運行期間出錯了才能知道語法有問題,也無法對腳本進行調試查看運行期間的各種數據狀態,針對這個問題,我們采用如下設計方式進行解決,

  采用PO模型方式組織代碼,基於mvc設計模式開發代碼,將jmeter作為view層,只負責業務流程,所有的實現在擴展包里實現,擴展包使用intellij idea開發調試,測試通過后打包給jmeter使用,調試和測試也在idea下完成,使用junit作為測試單元,使用測試樁完成所有接口以及業務邏輯的調試

  

 

展示了部分結果如下

后面有空再寫寫實現的一些細節以及遇到的坑吧,感慨下今年過的好快,好幾天就結束了,年前定下的小目標還記得嘛  哈哈

后續打算出個jmeter培訓教程,不知道這方面是否有需求


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM