接口测试用例模板_ITest:京东数科接口自动化测试实践
ITest
作者:鄭琳
京東數(shù)科平臺(tái)開發(fā)團(tuán)隊(duì)原創(chuàng),轉(zhuǎn)載請(qǐng)獲得授權(quán)
導(dǎo)讀:你是否為每天“點(diǎn)點(diǎn)點(diǎn)”的工作而感到索然無味?你是否苦于沒有合適的工具而對(duì)復(fù)雜的測(cè)試任務(wù)望而卻步?頻繁變動(dòng)的接口,重復(fù)的功能測(cè)試,你,疲憊么?京東數(shù)科運(yùn)維部平臺(tái)開發(fā)組基于日常接口測(cè)試經(jīng)驗(yàn),開發(fā)了接口測(cè)試平臺(tái)——ITest。通過此平臺(tái)讓研發(fā)流程更高效,讓測(cè)試回歸測(cè)試本身,做適配數(shù)科場(chǎng)景的通用接口測(cè)試平臺(tái)。本文將從需求背景、平臺(tái)特性、架構(gòu)設(shè)計(jì)、未來規(guī)劃幾方面詳細(xì)闡述ITest助力接口自動(dòng)化測(cè)試在京東數(shù)科的最佳實(shí)踐與探索。一、需求背景接口測(cè)試位于測(cè)試金字塔的中間層,與業(yè)務(wù)關(guān)聯(lián)度較高,測(cè)試及運(yùn)行成本適中,同時(shí)能夠覆蓋到端對(duì)端測(cè)試所不能覆蓋的并發(fā),安全等,在測(cè)試過程中占據(jù)重要地位。接口自動(dòng)化測(cè)試因其能夠降低回歸成本,提高回歸效率,在回歸測(cè)試及冒煙測(cè)試階段應(yīng)用較為廣泛。但面對(duì)日益復(fù)雜的軟件設(shè)計(jì),做好接口自動(dòng)化工作并非易事,在此針對(duì)其中兩個(gè)痛點(diǎn)進(jìn)行闡述:1、復(fù)雜場(chǎng)景的接口自動(dòng)化編碼耗時(shí)多,接口測(cè)試工具無法滿足個(gè)性化需求自動(dòng)化測(cè)試能夠穩(wěn)定執(zhí)行的前提是,單個(gè)測(cè)試用例必須能夠重復(fù)成功運(yùn)行。這意味著完整的自動(dòng)化用例中必須包含測(cè)試數(shù)據(jù)準(zhǔn)備,測(cè)試調(diào)用,數(shù)據(jù)校驗(yàn)及數(shù)據(jù)清理工作等。在應(yīng)用逐漸微服務(wù)化的今天,A服務(wù)接口的數(shù)據(jù)準(zhǔn)備工作可能會(huì)依賴多個(gè)B服務(wù)的接口,接口測(cè)試用例的設(shè)計(jì)本身對(duì)于測(cè)試同學(xué)的業(yè)務(wù)能力就是不小的挑戰(zhàn),要完成高質(zhì)量的穩(wěn)定可重復(fù)運(yùn)行的自動(dòng)化用例的編碼,更是一件耗時(shí)的事情。而目前通用的接口測(cè)試工具能解決的多是通用性的需求,當(dāng)用戶的接口請(qǐng)求中包含自定義算法,加解密信息等情況時(shí),接口測(cè)試工具無法給予友好的支持。2、團(tuán)隊(duì)協(xié)作不易,開發(fā)和測(cè)試對(duì)齊用例有溝通成本在自動(dòng)化編碼的過程中,測(cè)試代碼維護(hù)在代碼倉(cāng)庫(kù)中,測(cè)試用例的管理也依賴于代碼倉(cāng)庫(kù)。項(xiàng)目中不同模塊的測(cè)試情況沒有一個(gè)總體的入口,較難對(duì)測(cè)試的情況進(jìn)行度量和總體評(píng)估,不同模塊間的用例復(fù)用也變得比較困難。同時(shí)因開發(fā)同學(xué)對(duì)測(cè)試情況了解不足,在冒煙階段,bug驗(yàn)證及測(cè)試回歸階段,往往需要測(cè)試和開發(fā)同學(xué)對(duì)代碼倉(cāng)庫(kù)中的用例進(jìn)行對(duì)齊,有一定的溝通成本。為提高測(cè)試效率,簡(jiǎn)化溝通成本,讓測(cè)試同學(xué)專注于測(cè)試策略選擇,測(cè)試用例設(shè)計(jì)、codeReview等更重要的工作,筆者所在團(tuán)隊(duì)研發(fā)了接口自動(dòng)化測(cè)試平臺(tái)ITest, 致力于提供簡(jiǎn)易、靈活,通用的接口自動(dòng)化測(cè)試服務(wù)。二、ITest特性1、靈活的用例組織,提高測(cè)試效率簡(jiǎn)潔的用例配置視圖,提供多協(xié)議支持(http, jsf, dubbo, jdbc 等)
ITest提供了簡(jiǎn)潔的可視化配置頁(yè)面,用戶通過對(duì)關(guān)鍵接口信息的配置、斷言項(xiàng)的選擇及預(yù)期結(jié)果配置即可完成單個(gè)接口測(cè)試用例的組織。目前平臺(tái)可支持http, jsf, dubbo, jdbc 等常用協(xié)議類的接口用例配置。
圖1??jdbc協(xié)議測(cè)試步驟配置
通用的用例組織方式,可將測(cè)試結(jié)果特定信息提取為變量,在測(cè)試上下文中傳遞
用例與數(shù)據(jù)分離
圖3? 用例參數(shù)化配置
內(nèi)嵌常用的函數(shù)(時(shí)間戳,隨機(jī)數(shù),求和,常用加解密算法等)
圖4? ?常用函數(shù)支持
2、便利的項(xiàng)目協(xié)作&管理,簡(jiǎn)化溝通流程
項(xiàng)目空間內(nèi)用例共享,利于項(xiàng)目?jī)?nèi)用例復(fù)用和對(duì)齊
項(xiàng)目域內(nèi)測(cè)試執(zhí)行計(jì)劃靈活編排
圖5??測(cè)試計(jì)劃編排示意
項(xiàng)目域管理多組測(cè)試計(jì)劃,用于不同迭代及測(cè)試目標(biāo)
圖6??測(cè)試工程詳情視圖
測(cè)試計(jì)劃執(zhí)行情況可追溯,提供歷史測(cè)試報(bào)告及執(zhí)行詳情
3、多維度運(yùn)行支持,提高測(cè)試運(yùn)行穩(wěn)定性
用例在線快速調(diào)試
測(cè)試計(jì)劃執(zhí)行,支持定時(shí)執(zhí)行,批量執(zhí)行等
任務(wù)運(yùn)行狀態(tài)通知
4、持續(xù)集成
與JCI & JAT 深度合作,嵌入JCI CI&CD流水線
開放API,滿足業(yè)務(wù)線多樣化的CI&CD需求
圖8? 與通用接口測(cè)試工具功能對(duì)比
三、ITest架構(gòu)設(shè)計(jì)
1、核心概念
測(cè)試步驟,測(cè)試用例及測(cè)試計(jì)劃是ITest接口自動(dòng)化平臺(tái)的核心概念。其中,測(cè)試步驟和測(cè)試用例是兩個(gè)描述不同粒度測(cè)試行為的單位,測(cè)試步驟定義了單個(gè)接口測(cè)試行為,測(cè)試用例則可描述多個(gè)接口測(cè)試行為。測(cè)試用例可嵌套測(cè)試用例和測(cè)試步驟,滿足復(fù)雜測(cè)試場(chǎng)景的編排需求。
圖9? ?測(cè)試步驟,測(cè)試用例及參數(shù)化關(guān)系
測(cè)試計(jì)劃是多組測(cè)試步驟及測(cè)試用例的有序集合,beforeGlobal和afterGlobal 中的用例是整個(gè)計(jì)劃的前置用例和后置用例,beforeGlobal用例會(huì)先于整個(gè)測(cè)試計(jì)劃內(nèi)其他用例執(zhí)行,若執(zhí)行失敗,則直接跳過該測(cè)試計(jì)劃剩余用例。
測(cè)試計(jì)劃可包含多個(gè)group,同一group中用例可共享執(zhí)行上下文。在group中可定義beforeGroup 和afterGroup用例,做為group 內(nèi)的前置用例和后置用例。beforeGroup用例若執(zhí)行失敗,則直接跳過該group 中剩余用例。不同group間用例互不影響,可并行執(zhí)行。
圖 10??測(cè)試計(jì)劃組成示意
2、總體架構(gòu)及模塊簡(jiǎn)介
圖11?? ITest 總體架構(gòu)概覽ITest由管理平臺(tái)和執(zhí)行引擎兩大模塊構(gòu)成。其中,管理平臺(tái)是面向用戶側(cè)的,負(fù)責(zé)測(cè)試用例的編輯及快速調(diào)試,測(cè)試計(jì)劃的編排及調(diào)度執(zhí)行,測(cè)試結(jié)果展示,消息通知,角色權(quán)限管理,項(xiàng)目空間和個(gè)人空間用例及計(jì)劃的維護(hù)等工作。執(zhí)行引擎則負(fù)責(zé)測(cè)試模板的解析及執(zhí)行工作。執(zhí)行引擎通過java編寫,可以通過ITest Agent,Jenkins,容器云輕松集成,當(dāng)前默認(rèn)環(huán)境托管在數(shù)科容器云lambda上,提供面向數(shù)科測(cè)試環(huán)境及公網(wǎng)的集成測(cè)試能力。
圖12??? ITest engine 功能邏輯示意
四、ITest未來規(guī)劃
為更好支持接口自動(dòng)化測(cè)試,ITest 接口自動(dòng)化測(cè)試平臺(tái)計(jì)劃在以下方面繼續(xù)豐富完善功能:
1、豐富測(cè)試用例及測(cè)試計(jì)劃的組織結(jié)構(gòu),在目前順序組織的基礎(chǔ)上,增加分支選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的組織方式,以應(yīng)對(duì)復(fù)雜測(cè)試邏輯的需求。
2、增加對(duì)腳本語(yǔ)言的支持,同時(shí)提供函數(shù)的上傳與編輯需求,滿足用戶多樣化自定義函數(shù)的需求。
3、自動(dòng)化測(cè)試的精準(zhǔn)度量:從代碼及接口數(shù)據(jù)層面對(duì)測(cè)試覆蓋率進(jìn)行度量,進(jìn)一步結(jié)合分布式服務(wù)跟蹤系統(tǒng)SGM與精準(zhǔn)測(cè)試的理念,實(shí)現(xiàn)源碼與用例的雙向綁定,繼而針對(duì)版本迭代的代碼變更為用戶回歸范圍提供建議。
互動(dòng)討論:你在日常工作中都遇到哪些接口測(cè)試的痛點(diǎn)?你覺得一個(gè)好的接口自動(dòng)化測(cè)試平臺(tái)是什么樣子的呢?歡迎在留言區(qū)分享你的困惑或你的見解。
往期好文推薦:>自動(dòng)化測(cè)試在京東數(shù)科的實(shí)踐與探索>只看這三點(diǎn)就夠:快速了解聯(lián)邦學(xué)習(xí)框架!> 京東數(shù)科七層負(fù)載 | HTTPS硬件加速 (Freescale加速卡篇)>?京東數(shù)科mPaaS:深度解讀京東金融App(Android)的秒開優(yōu)化實(shí)踐總結(jié)
以上是生活随笔為你收集整理的接口测试用例模板_ITest:京东数科接口自动化测试实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python如何实现凯撒密码加密解密
- 下一篇: plsql如何显示表结构图_工地新人如何