胡春美
摘要
近年來(lái)互聯(lián)網(wǎng)行業(yè)發(fā)展迅速,軟件產(chǎn)品也變得越來(lái)越復(fù)雜。隨著網(wǎng)站應(yīng)用規(guī)模的不斷擴(kuò)大,一個(gè)應(yīng)用部署所有功能的時(shí)代已經(jīng)過(guò)去,分布式架構(gòu)逐漸成為主流。接口的概念在開(kāi)發(fā)過(guò)程中無(wú)處不在,接口測(cè)試也成為了質(zhì)量保證的一個(gè)重要方面。Web接口測(cè)試可分為兩類(lèi):服務(wù)器接口測(cè)試和外部接口測(cè)試。本文對(duì)Web項(xiàng)目的接口測(cè)試內(nèi)容,過(guò)程和策略進(jìn)行了分析,希望對(duì)實(shí)際的項(xiàng)目測(cè)試工作起到一定的借鑒作用。
【關(guān)鍵詞】接口測(cè)試 Web項(xiàng)目 質(zhì)量保證
成熟度好的團(tuán)隊(duì)不再認(rèn)為質(zhì)量?jī)H僅是測(cè)試人員的工作,保證質(zhì)量人人有責(zé)。軟件項(xiàng)目的質(zhì)量管理貫穿軟件項(xiàng)目的整個(gè)周期。測(cè)試人員是質(zhì)量保證過(guò)程中重要角色,在不同階段有不同的質(zhì)量保證策略。如今人們的生活離不開(kāi)網(wǎng)絡(luò),各網(wǎng)站不僅功能復(fù)雜而且用戶(hù)數(shù)量龐大,分布式服務(wù)架構(gòu)和微服務(wù)架構(gòu)逐漸被企業(yè)所采用。接口是獲取和操作資源的方式,在復(fù)雜的項(xiàng)目中,接口測(cè)試必須重視。本文主要討論Web項(xiàng)目接口測(cè)試的相關(guān)內(nèi)容。
1 接口測(cè)試的定義及重要性
接口測(cè)試就是測(cè)試系統(tǒng)組件間接口的一種測(cè)試,主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。其以保證系統(tǒng)的正確和穩(wěn)定為核心,重要性主要體現(xiàn)在以下幾個(gè)方面:
(1)能夠提早發(fā)現(xiàn)bug,符合質(zhì)量控制前移的理念。
(2)接口測(cè)試低成本高效益,因?yàn)榻涌跍y(cè)試可以自動(dòng)化并且是持續(xù)集成的。
(3)接口測(cè)試從用戶(hù)的角度對(duì)系統(tǒng)接口進(jìn)行全面檢測(cè)。實(shí)際項(xiàng)目中,接口測(cè)試會(huì)覆蓋一定程度的業(yè)務(wù)邏輯。
2 常見(jiàn)的Web接口測(cè)試工具
用于接口測(cè)試的工具有很多,比如postman、RESTClient、jmeter、load飛勝nner等,比較常用的是postman和jmeter。
(1)Postman是一種網(wǎng)頁(yè)調(diào)試與發(fā)送網(wǎng)頁(yè)http請(qǐng)求的chrome插件。該插件使用簡(jiǎn)單,
可以用來(lái)很方便的模擬get或者post及其他方式的請(qǐng)求來(lái)調(diào)試接口。
(2)Jmeter是Apache開(kāi)發(fā)的基于Java的壓力測(cè)試工具。最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試,后來(lái)擴(kuò)展到其它領(lǐng)域。相比loadrunner來(lái)說(shuō),它內(nèi)存占用小,免費(fèi)開(kāi)源,輕巧方便。目前企業(yè)會(huì)在Jmeter的基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)以適應(yīng)實(shí)際項(xiàng)目的需求。
3 Web項(xiàng)目接口測(cè)試策略
測(cè)試人員的測(cè)試流程一般為:需求分析,測(cè)試計(jì)劃,用例設(shè)計(jì),測(cè)試執(zhí)行及測(cè)試報(bào)告。對(duì)于某個(gè)具體的階段可以細(xì)分為多個(gè)task。其中,用例設(shè)計(jì)是核心環(huán)節(jié),用例的好壞在某種程度上影響軟件的質(zhì)量保證。根據(jù)Web項(xiàng)目的特點(diǎn)及接口類(lèi)型,測(cè)試的內(nèi)容和方式也不同。
3.1 Http接口
對(duì)于瀏覽器與服務(wù)器的交互,分為get請(qǐng)求和post請(qǐng)求。請(qǐng)求中如果是通過(guò)URL訪問(wèn),此時(shí)用例設(shè)計(jì)需要注意傳參的設(shè)計(jì),參數(shù)的邊界情況,組合情況,此時(shí),功能測(cè)試方法中常用的等價(jià)類(lèi)思想和邊界思想仍然適用。除此之外,url傳參訪問(wèn)要注意安全性測(cè)試,防止對(duì)系統(tǒng)造成攻擊。舉一個(gè)實(shí)際的例子,一個(gè)Web項(xiàng)目用戶(hù)登錄進(jìn)去后可以訪問(wèn)屬于自己的客戶(hù)列表,這里己做了安全策略,但是當(dāng)點(diǎn)擊某一條客戶(hù)數(shù)據(jù)想要訪問(wèn)客戶(hù)的detail頁(yè)面時(shí),發(fā)現(xiàn)并不需要用戶(hù)賬號(hào)驗(yàn)證,在瀏覽器直接輸入地址即可訪問(wèn),這是對(duì)安全問(wèn)題忽視造成的結(jié)果。如果被同行所利用,盜取客戶(hù)資源,會(huì)造成巨大的經(jīng)濟(jì)損失。如果是json串的形式,可以借助postman等工具完成測(cè)試。
3.2 數(shù)據(jù)庫(kù)接口測(cè)試
測(cè)試人員可以從數(shù)據(jù)庫(kù)的基本操作增刪改查的角度進(jìn)行測(cè)試用例的設(shè)計(jì)。以增加數(shù)據(jù)為例,測(cè)試用戶(hù)在系統(tǒng)里提交數(shù)據(jù)的時(shí)候,需要驗(yàn)證數(shù)據(jù)庫(kù)能否正常保存。在用戶(hù)提交數(shù)據(jù)較多的系統(tǒng)里,尤其需要注意。比如,系統(tǒng)的核心功能是提交電子合同。那么,在合同模板中有較多的數(shù)據(jù)需要用戶(hù)填寫(xiě),在測(cè)試的時(shí)候需要對(duì)數(shù)據(jù)是否在數(shù)據(jù)庫(kù)中正確存儲(chǔ)進(jìn)行驗(yàn)證。此時(shí)進(jìn)行測(cè)試用例設(shè)計(jì)要注意空值,異常值的測(cè)試。
3.3 外部接口
對(duì)于外部接口或者是分布式架構(gòu)中的各個(gè)服務(wù)的接口,需要將測(cè)試提前,即在提測(cè)前,可由開(kāi)發(fā)人員進(jìn)行測(cè)試,這也符合測(cè)試驅(qū)動(dòng)開(kāi)發(fā)和質(zhì)量控制前移的思想。在提測(cè)前代碼review的過(guò)程中,測(cè)試人員在開(kāi)發(fā)人員的幫助下對(duì)API測(cè)試用例進(jìn)行審核,如有遺漏或者不合適的用例,即時(shí)提出并改正。一些自動(dòng)化的技術(shù)可以應(yīng)用進(jìn)來(lái)。
以上是Web項(xiàng)目中比較常見(jiàn)的需要測(cè)試的接口,在實(shí)際的測(cè)試過(guò)程中根據(jù)團(tuán)隊(duì)的成員情況以及項(xiàng)目實(shí)際特點(diǎn)制訂測(cè)試計(jì)劃及確定測(cè)試方式。測(cè)試是Web服務(wù)質(zhì)量保證的主要手段之一,測(cè)試自動(dòng)化是降低測(cè)試代價(jià)的有效途徑。對(duì)于接口測(cè)試,可以采用手動(dòng)測(cè)試和自動(dòng)化測(cè)試相結(jié)合的方式。除了使用現(xiàn)有的工具外,也可以開(kāi)發(fā)自己的接口測(cè)試工具和平臺(tái)。在質(zhì)量控制前移思想的指導(dǎo)下,測(cè)試人員需要在更早的階段關(guān)注接口的質(zhì)量,同時(shí)質(zhì)量保證工作貫穿整個(gè)項(xiàng)目流程:
(1)在需求分析及review階段,思考可能涉及的接口;
(2)在開(kāi)發(fā)方案設(shè)計(jì)階段,參與開(kāi)發(fā)方案設(shè)計(jì)討論,明確接口變動(dòng),如有風(fēng)險(xiǎn)及時(shí)提出;
(3)制訂測(cè)試計(jì)劃階段,明確測(cè)試內(nèi)容及測(cè)試方案和工具等;
(4)用例設(shè)計(jì)階段,設(shè)計(jì)測(cè)試用例,注意安全,異常及邊界情況。
(5)代碼及review,從代碼層關(guān)注接口的變動(dòng)和設(shè)計(jì),同時(shí)review開(kāi)發(fā)接口測(cè)試覆蓋率;
(6)測(cè)試執(zhí)行,按照測(cè)試計(jì)劃和用例,進(jìn)行接口測(cè)試,跟蹤bug;
(7)測(cè)試報(bào)告及總結(jié),總結(jié)經(jīng)驗(yàn)和教訓(xùn);
(8)上線(xiàn)及維護(hù),持續(xù)關(guān)注系統(tǒng)的穩(wěn)定性。
4 總結(jié)
隨著Web項(xiàng)目逐漸變的復(fù)雜,現(xiàn)多采用分層的結(jié)構(gòu)進(jìn)行開(kāi)發(fā),同時(shí)不同系統(tǒng)間進(jìn)行交互獲取數(shù)據(jù)。接口的增多需要接口測(cè)試得到足夠重視。本文闡述了接口測(cè)試的重要性及工具,然后根據(jù)實(shí)際的項(xiàng)目經(jīng)驗(yàn)分析了Web項(xiàng)目一般的接口測(cè)試過(guò)程和策略,具有一定的指導(dǎo)意義。
參考文獻(xiàn)
[1]任永昌編著.軟件項(xiàng)目管理[M].清華大學(xué)出版社,2012.
[2]侯可佳,白曉穎,陸?zhàn)?,李?shù)芳,周立柱.基于接口語(yǔ)義契約的Web服務(wù)測(cè)試數(shù)據(jù)生成[J].軟件學(xué)報(bào),2013,24(09):2020-2041.