以效率為導向:用ChatGPT和HttpRunner實現敏捷自動化測試(二)

2023-10-13 18:00:15

1、前言

在上一篇文章: 利用ChatGPT提升測試工作效率——測試工程師的新利器(一)中,我們提到了如何通過chatGPT生成單介面測試用例,然後再讓chatGPT去根據測試用例去生成介面自動化指令碼。本篇文章將詳細講解一下我們團隊內部在遇到業務痛點時如何利用Httprunner框架進行介面自動化測試的。當最近邂逅chatGPT後又是如何將二者結合起來,實現"敏捷"自動化測試的。

首先業務測試面對的痛點就是在商業化Devops產品在交付過程中,不同的客戶現場和公司內部存在各種各樣的環境還有各種國產化系統,並行多個客戶交付,多版本需要進行迴歸測試。如果在有限的人力資源下,通過測試人員人工進行迴歸的化可能就會不能按時按點完成交付。如何快速的實現介面自動化輔助迴歸,經過團隊內部選型,根據快速性,靈活性,易用性最終選擇了HttpRunner框架。最終實現了能在不同的客戶現場環境,當運維人員部署完成環境後能夠快速實現基本功能迴歸測試,大大減少了測試人員的迴歸時間。

接下來詳細講一下我們是如何使用Httprunner通過「點」,「改」,「查」這三板斧進行介面自動化測試的。點就是通過在web前端進行業務操作將對應介面錄製下來,然後一條命令輸出自動化指令碼。改就是需要將所有重複需要替換的內容用指令碼進行批次更改,當然變數抽取及斷言目前仍然需要每個介面人工進行更改。查就是執行偵錯找錯修正。相比一些介面測試工具或平臺需要人工單介面錄入,Httprunner簡直是so easy,哪裡麻煩點哪裡!下面先舉例詳細介紹一下如何通過Httprunner生成自動化指令碼。

2、招式一:點一點

現在我以一個簡單的業務場景進行說明,要將在團隊空間模組建立團隊空間,建立迭代,建立卡片整個流程實現自動化。首先需要在Web端進行對應的操作。

同時用Fiddler等抓包工具,或者瀏覽器本身的F12功能也可以抓取業務流程介面。刪除次要保留核心介面,將所有介面匯出成har檔案createSpaceCardDemo.har。(抓包工具及瀏覽器都可以匯出)

接下來通過Httprunner框架的工具命令列:har2case.exe createSpaceCardDemo.har將har檔案轉化成py指令碼。(當然也可以是yml格式,相比較而言py格式的更簡潔易讀)

3、招式二:改一改

執行命令第一輪生成這樣的:通過觀察發現指令碼裡面url,headers,cookies,請求體等資訊會根據不同環境不同使用者進行變更,所以需要引數化。

「祕製」指令碼第二輪替換後變成這樣:將url,headers,cookies進行抽離後,此時指令碼已經非常簡潔明瞭了。

人工第三輪替換:將入參引數化保證每次都能執行。返回值欄位抽取後吐給下個結果或其他依賴指令碼。斷言針對每個介面的業務特性有針對性的進行判斷。

4、招式三:查一查

修改完成後,通過命令hrun .\testcases\space\space\createSpaceCardDemo_test.py --html=reports\index.html執行,檢查指令碼的正確性。

是不是感覺特別簡單。比把大象裝冰箱還要簡單。

說明:前期框架需要做好規劃,變數抽離函數封裝要做好。還需要考慮不同環境,不同部署方式,介面字首變動等等業務特點。這樣後期的自動化指令碼就越簡單。

5、ChatGPT生成用例

以上就是Httprunner實現介面自動化的基本流程。但是如果要做核心介面的異常場景如何測試呢,前端不能通過點一點,錄製一下就會自動生成指令碼。如果人工去手工寫也會大大提高測試人員的工作量。現在chatGPT閃亮登場了。初步想法就是給chatGPT介面入參,入參的約束條件。然後讓chatGPT生成介面的異常場景的測試用例。再讓chatGPT將我們的測試用例轉成我們需要的自動化指令碼。又是如此簡單,so easy!哪裡不對再讓chatGPT改哪裡。

經過幾輪的改改改,最終chatGPT生成的用例如下:

6、ChatGPT生成Httprunner指令碼

接下來再將生成好的測試用例餵給chatGPT,讓它自動生成介面自動化指令碼。先訓練按照一個用例生成符合預期的介面自動化指令碼。

接下來將所有生成的測試用例"喂"給chatGPT,讓其將所有測試用例生成Httprunner介面自動化指令碼。通過命令hrun .\testcases\space\exceptions\createSpaceException_P01_test.py執行後發現直接成功。當然目前的斷言還只是狀態碼斷言,還需針對不同場景的訊息體進行斷言。

7、總結

以上就是當chatGPT與Httprunner(官網連結)碰撞出的火花。Httprunner對於寫介面用例已經非常簡單了,當再遇到chatGPT後功能又大大增強了。我們對於能錄製的介面只需通過三板斧,點一點,改一改和查一查就能寫好一個場景的用例。對於不能進行錄製的單介面可以通過chatGPT去生成用例,然後再讓chatGPT去自動生成自動化指令碼。當然目前的應用還屬於相對比較簡單的介面,前期剛剛使用可能會像小孩子剛學走路會磕磕絆絆,但是我相信隨著不斷探索和學習,隨著chatGPT的發展會越來越熟練。因為星星之火可以燎原。

作者:京東科技 張興磊

來源:京東雲開發者社群 轉載請註明來源