一、背景
隨著自動化測試的設計理念不斷完善、新的技術不斷應用,自動化測試資產的積累代價和維護成本不斷降低,自動化測試資產的數量持續增長。同時,隨著DevOps的普及,應用研發過程越來越敏捷,自動化測試能力逐步從測試部門輸出至開發部門,在每日構建、制品晉級、版本發布等流程中成為必備環節。
![]()
隨著自動化測試執行能力的不斷提升,自動化測試執行結果數據指數級增加,大量的結果分析處理工作成為自動化測試開展的瓶頸。本文介紹一種基于知識庫的接口自動化測試結果分析方法與裝置,通過接口測試結果模型化方法和基于錯誤碼庫、非缺陷知識庫的錯誤歸類分析方法,輔助測試人員高效實施大規模、多系統的接口自動化測試結果分析處理。
二、接口測試結果模型化
接口自動化測試,簡單地說,就是按測試需求裝報文,發送給被測系統,接收并解析返回報文,判斷測試成功失敗。
在自動化測試平臺中,對接口測試過程模型化統一封裝:
(1)通訊過程是報文發送和接收,其相關內容抽象為通訊組件;
(2)報文是被測系統與其客戶端或調用方針對具體接口約定的交互信息。其中,報文組裝和解析相關內容抽象為報文組件,具體接口交互信息抽象為報文格式,對發送給被測系統的報文稱為輸入報文,被測系統返回的報文稱為輸出報文。
![]()
三、對測試結果的第一級分析:根據返回標志位進行初步判斷
一般而言,符合一定開發規范的應用系統,會在返回報文公有域特定字段返回應用級處理結果。若應用級處理錯誤,則還會在返回報文公有域特定字段返回錯誤碼和錯誤信息。
![]()
因此,在接口自動化測試執行過程中,執行程序將接口測試結果預處理為統一數據模型,包括結果標志、錯誤碼、錯誤信息和返回報文,便于后續處理。
其中,結果標志分為5類:
(1)應用級處理正確,則結果標志為N,此時錯誤碼、錯誤信息均為空;
(2)應用級處理錯誤,則結果標志為E,錯誤碼、錯誤信息存儲返回報文提取的相應信息;
(3)在金融系統中,為保證安全,重要金融交易一般會涉及雙人復核或者遠程授權的過程,此時應用級處理結果為“需要授權”,則結果標志為A,錯誤碼、錯誤信息均為空;
(4)在平臺執行接口測試的過程中,若出現任何程序未處理的內部異常,則結果標志為I,此時錯誤碼、錯誤信息均為空;
(5)在常見的HTTP/HTTPS、TCP等通訊方法中,若無法正常通訊并拿到預期的返回報文,則認為在通訊級發生異常,結果標志為U,此時錯誤碼、錯誤信息均為空。
通過第一級分析,可以對接口測試結果進行初步分類,輔助測試人員判斷接口測試報錯類型,排除網絡等環境因素造成的誤報。
四、對測試結果的第二級分析:根據錯誤碼庫和非缺陷知識庫進行精準判斷
僅通過返回報文分析,對于“大幅降低接口測試誤報率”的預期是不夠的,需要配合錯誤碼庫和非缺陷知識庫進行第二級精準分析。其實現方式是:自動化測試平臺按系統名稱為各系統提供錯誤碼庫,對結果標志為E的接口測試結果細分錯誤碼,分別設置錯誤描述、匹配方式和匹配表達式。匹配方式分為三種:
(1)精確匹配:該匹配方式適用于統籌設計良好的系統,項目組能夠較好的歸類業務錯誤、分配錯誤碼,并在系統接口設計中在公有域有固定字段返回錯誤碼和錯誤信息,此類系統直接采用錯誤碼庫中的錯誤碼與接口測試結果模型中的錯誤碼匹配;
(2)錯誤信息模糊匹配:該匹配方式適用于能夠從固定字段輸出錯誤信息,但沒有固定字段返回錯誤碼或者錯誤碼定義不規范(如錯誤碼是中文信息)的系統,此類系統錯誤碼和錯誤信息由測試人員自行定義,每類錯誤碼需對應設計匹配表達式,即一條正則表達式,若接口測試結果模型中的錯誤信息能匹配該正則表達式則歸為該類錯誤;
(3)返回報文模糊匹配:該匹配方式適用于接口設計不規范、無固定字段返回錯誤信息的系統,此類系統錯誤碼和錯誤信息由測試人員自行定義,每類錯誤碼需對應設計匹配表達式,即一條正則表達式,若接口測試結果模型中的返回信息能匹配該正則表達式則歸為該類錯誤。
在實際接口測試中,由于被測系統配置錯誤、被測系統鋪底數據異常等問題而出現的錯誤并非本次測試結果中需重點關注的內容,對于該類錯誤,將錯誤碼庫中的對應錯誤條目增加標志位,即納入非缺陷知識庫。
經過實踐,在實施第二級精準分析后,往往能大幅降低接口自動化測試的誤報率,減少一線測試團隊的分析工作量。
五、接口測試結果歸類分析
基于接口測試結果的模型化和兩級分析,我們將接口測試的結果分類分析,輸出概要表和錯誤分類表。
概要表如下:
![]()
執行錯誤的交易將進一步處理為錯誤明細表,如下:
![]()
利用該分析結果,測試人員可重點關注結果類型為“執行錯誤”的分類,確認為缺陷的應提交給開發人員修復;對于“執行錯誤非缺陷”的分類,應在解決對應問題后再次測試相關接口。
六、結語
本文介紹的接口自動化測試結果分析方法,將不同系統、不同通訊方式、不同報文協議的接口測試結果標準化為的統一數據模型,并依據組織級錯誤碼庫和非缺陷知識庫對標準化的測試結果進行分類分析,大大降低測試結果的人工分析工作量。其中,錯誤碼庫及配套的三種錯誤匹配方式,使得測試人員可以靈活自主地為被測系統定制錯誤歸類識別方案,在不同應用系統接口設計標準化程度不一的場景下,解決了接口測試結果的錯誤識別問題;非缺陷知識庫的設計,使得測試人員可以預設部分不關注的錯誤類型,以獲取重點更加突出的錯誤分析結果,輔助測試人員更加高效地完成測試活動。
接口自動化測試的誤報率控制,是提升自動化測試效能的關鍵點,筆者也將繼續探索相關方法,致力于自動化測試效能的不斷提升。
最后:在我的V:atstudy-js,可以免費領取一份10G軟件測試工程師面試寶典文檔資料。以及相對應的視頻學習教程免費分享!其中包括了有基礎知識、Linux必備、Shell、互聯網程序原理、Mysql數據庫、抓包工具專題、接口測試工具、測試進階-Python編程、Web自動化測試、APP自動化測試、接口自動化測試、測試高級持續集成、測試架構開發測試框架、性能測試、安全測試等。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.