你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

一、自動化測試

眾所周知,自動化測試已經成為軟件項目中不可或缺的測試方法。基於用戶交互界面(GUI)的自動化測試方法具有模擬用戶行為和過程可視化的特點,因此受到了廣大入門自動化人士的喜愛。諸如:QTP、Selenium等都具有強大的功能支撐和豐富的知識庫,而逐漸成為自動化測試人士必備工具之一。

然而,伴隨著敏捷開發和持續交付在軟件開發項目中的普及和應用,測試工作的重心不得不進一步前移。而由於用戶界面的開發通常處於軟件開發的末端且缺陷修復成本較大,因此基於GUI的自動化測試無法很好的適用於此類項目。基於應用程序接口(API)的自動化測試卻可以很好的解決了此類問題。

你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

二、接口自動化測試

在分層測試策略中各層工作有明確的測試重心,測試工作通過逐層開展螺旋上升。這樣一方面促使開發測試一體化,直接提高了測試效率;另一方面也可以儘早發現程序缺陷,降低缺陷修復成本。

你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

  圖-2.1分層測試策略

API接口測試介於單元測試和界面測試之間,是一種灰盒測試方法,主要測試內部接口功能的完成性。相較於UI自動化測試,它具有自動化成本低和測試效率高的特點。

接口測試的工作原理是接口測試工具模擬客戶端向服務器發送報文請求,服務器接受請求並做出響應。然後向客戶端返回應答信息,接口測試工具對應答信息進行解析的一個過程。如圖(報文傳輸的大致流程):

你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

常用的接口測試工具有:

1、Apache JMeter:是一款基於Java的開源測試工具,主要應用於WEB應用程序的負載測試,同時也支持單元測試和接口測試;

2、Postman:是一款功能強大的網頁測試工具,支持WEB API和HTTP請求,能夠發送任何類型的HTTP請求(GET、HEAD、POST、PUT等)。Postwomen與其近似的一款免費開源、輕量級測試工具;

3、SoapUI,是一款用於SOAP和REST的開源API測試自動化框架,可以集成到Eclipse等開發工具中,支持用戶二次開發;

4、Robot Framework,是一款基於Python3的開源自動化測試框架,具有良好的可擴展性,支持關鍵字驅動,運行用戶二次開發。

基於這些接口測試工具,測試人員可以根據自身業務需要開發適合自己的接口自動化測試工具。有了接口自動化測試工具,我們就可以開展自動化測試工作。

接口自動化測試的基本流程有(如圖):

1、在測試工具中登記待測交易的接口報文格式;

2、編寫測試案例,向案例中添加交易接口並進行配置關聯;

3、準備測試數據並對測試數據進行參數化;

4、測試工具自動執行自動化測試案例;

5、測試工具比對預期結果和返回結果,驗證案例是否執行成功。

你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

三、接口自動化測試要點

參照DevOps的評級標準,作者所處項目的所有交易的接口必須進行全量自動化測試覆蓋。項目組為了保證項目測試達到該標準,為此做了大量的前期規劃和實踐探索,結合作者的自身的項目實踐與大家分享幾點接口自動化測試過程中的工作要點。

1、梳理交易流程做到一目瞭然。

以稅金支付賬號維護交易為例,該交易包含新增/修改提交複核、複核通過、複核退回、刪除四個程序接口。各接口程序之間的關係如下圖所示,提交複核分為新增提交複核和修改提交複核,提交之後可以複核通過也可以複核退回,刪除交易只能處理複核退回的數據。

因此我們可以整理出該交易的分支案例如下:

1)新增提交複核>複核通過>修改提交複核>複核通過;

2)新增提交複核>複核退回>修改提交複核>複核退回>刪除。

由圖(稅金支付賬號維護交易流程圖)我們可以一目瞭然的看出該上述兩條分支案例已完全覆蓋稅金支付賬號維護交易的所有業務分支。從而避免接口自動化測試時遺漏某一邏輯分支,造成缺陷逃逸。

你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

2、詳細的接口設計文檔是成功的前提

子曰:"工欲善其事,必先利其器。"一個詳細的接口設計文檔是接口自動化測試順利開展的重要前提。為了保證接口測試的順利開展,我們要求項目組開發人員務必給出接口交易各字段的校驗規則和操作步驟。

如圖示,展示了提交複核接口各輸入字段的校驗規則,提交複核類型不能為空,必須是old/new。同時開發人員還寫出了提交複核接口程序的處理步驟,如對數據庫表:稅金支付賬號,先進行賦值操作,然後進行了保存到數據庫中。

詳細的字段校驗規則,有助於後續測試人員在編寫接口自動化測試案例時準確的填寫接口字段值。並根據校驗規則和操作步驟設置檢查點,比對判斷程序返回結果是否正確。詳細的驗證方法見下一部分"案例正確性驗證"。

你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

 提交複核接口字段校驗規則

你想學會的接口自動化測試,工具、流程、要點、步驟、案例全剖析

 提交複核接口操作步驟

3、案例的正確性驗證

1)程序返回信息的正確性驗證。案例執行完畢,對程序返回結果的正確處理決定了自動化案例能否正確發現程序缺陷。可以說全面的正確性驗證決定了自動化測試案例的質量高低與否。如:圖(提交複核接口字段校驗規則)中提交複核類型字段輸入NULL/add等非法值後,我們不僅要驗證程序的錯誤碼為200,同時也要驗證報錯信息是否符合預期,確定該條案例確實測試到該條校驗規則。

為此我們引入了關鍵字比對功能,提取預期錯誤提示信息的唯一標識關鍵字。以關鍵字為標準,檢索程序反饋信息是否存在該關鍵字,若檢索到該錯誤信息關鍵字則判定該反向案例執行通過且正確。若未檢索到該錯誤信息關鍵字,則判定該反向案例設計不能覆蓋此條交易規則。

2)數據庫操作的正確性驗證。程序執行過程中涉及到大量的數據庫增刪改操作,從驗證完備性考慮,需要進一步驗證數據庫操作是否正確,避免插入、修改的數據存在錯誤,或數據庫操作失敗後回滾造成髒數據的存在。

為了驗證數據庫插入、修改、刪除是否成功,數據是否符合預期,我們採用了以下兩種驗證方法:1)交易關聯驗證;2)數據比對驗證。

交易關聯驗證是通過業務邏輯進行驗證,使用後置交易是否能成功執行來驗證前置交易數據庫操作是否正確。如:錄入一張金額為100元的發票,我們可以先發起領票101元的交易,再發起領票100元的交易,如果領票101元失敗,領票100元成功,即可證明錄入金額為100元準確無誤。

數據比對驗證是系統或業務需要的登記類數據,這類數據沒有後續的邏輯關係,傳統的處理方法是人工查詢數據庫或查詢交易,我們開發出一個數據庫查詢API,通過前置交易傳入的表的KEY值查詢到該條記錄的其他字段值,並與預期值進行比對,從而實現了自動化核對。

4、其他要點提示

除了以上3點之外,測試人員還需要關注數據是否獨立、測試案例是否形成了閉環、測試數據的參數化。數據是否獨立決定了測試環境對自動化案例的影響程度,數據獨立性越高則環境變化造成的影響越小。測試案例能否形成閉環決定了該條測試案例是否可以被重複大量執行。測試數據參數化決定了我們的案例複用程度和後期的維護成本,對等價的數據進行參數化設置不僅有助於我們覆蓋大量測試數據。同時當程序發生改變時,我們可以簡單快捷的修改測試數據。常用的測試數據來源有數據庫、配置文件、接口返回值、excel/txt文件。

四、結語

隨著自動化測試成為測試工程師必備技能之一。擁有了該項技能在面對功能、模塊日趨複雜和迭代頻繁的軟件開發項目時,測試人員可以從容不迫的解決和應對這些問題。本文基於此種考慮,介紹了自動化測試的相關知識。結合作者在項目中的實踐分享了接口自動化測試過程中的幾點感悟,希望對想要邁入和初步邁入的自動化測試領域的同志們有所幫助。

我是一名從事了多年軟件測試的老測試員,今年年初我花了一個月整理了一份最適合2020年學習的軟件測試學習乾貨,可以送給每一位對軟件測試感興趣的小夥伴,想要獲取的可以關注我的頭條號並在後臺私信我:【測試】,即可免費獲取。


分享到:


相關文章: