轉(zhuǎn)帖|行業(yè)資訊|編輯:蔣永|2016-11-29 13:44:30.000|閱讀 178 次
概述:近年來軟件的規(guī)模日益龐大,常常需要把復(fù)雜的系統(tǒng)劃分成小的組成部分,編程接口的設(shè)計十分重要。程序設(shè)計的實踐中,編程接口的設(shè)計首先要使軟件系統(tǒng)的職責(zé)得到合理劃分。良好的接口設(shè)計可以降低系統(tǒng)各部分的相互依賴,提高組成單元的內(nèi)聚性,降低組成單元間的耦合程度,從而提高系統(tǒng)的維護性和擴展性。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
API(Application Programming Interface,簡稱:API),又稱為應(yīng)用編程接口,就是軟件系統(tǒng)不同組成部分銜接的約定。由于近年來軟件的規(guī)模日益龐大,常常需要把復(fù)雜的系統(tǒng)劃分成小的組成部分,編程接口的設(shè)計十分重要。程序設(shè)計的實踐中,編程接口的設(shè)計首先要使軟件系統(tǒng)的職責(zé)得到合理劃分。良好的接口設(shè)計可以降低系統(tǒng)各部分的相互依賴,提高組成單元的內(nèi)聚性,降低組成單元間的耦合程度,從而提高系統(tǒng)的維護性和擴展性。
換句話說,API也可以看做程序/資源/組件的集成點。它的功能會跟UI有些類似,通過某些特定指令、參數(shù)等可以讓后臺的一堆代碼運行起來,最后得到想要的結(jié)果。不同的是它不提供可視的按鈕文本框之類的界面,而通常是由一個直接和底層代碼打交道的鏈接構(gòu)成。
API測試是針對系統(tǒng)所提供的API做各方面的驗證。API的性能和安全測試根據(jù)測試策略的不同,會是一個可選測試項。這個可以作為兩個單獨的問題來討論。
API的功能測試類似于UI功能測試,都是在已知輸入內(nèi)容和期望結(jié)果的前提下,使用這個功能/調(diào)用這個API并且驗證是否能返回期望的結(jié)果。不同的是API測試在返回結(jié)果被呈現(xiàn)給客戶前就完成了,從而對測試環(huán)境的依賴會比較小。
在討論這個話題之前,我們先來回顧下測試金字塔:
TestPyramid
如圖所示。簡單來講就是說越往上層走的測試,需要投入的成本會越高,而且會越難以維護。在這個結(jié)構(gòu)下,因為UT已經(jīng)覆蓋了絕大部分的代碼,所以其上層的集成/API測試和UI測試可以去除重復(fù)測試的部分,從而量也會越來越少,并且會有不錯的覆蓋率。
所以理想中的自動化測試結(jié)構(gòu)應(yīng)該是大量的UT+適量的集成測試(或者API測試)+少量的UI測試。
測試覆蓋率。UT關(guān)注點是各個單元是否能夠完成期望工作,只覆蓋一個單元內(nèi)部工作情況;集成/API測試關(guān)注點是各個模塊/單元之間協(xié)同工作,它所覆蓋的場景也會比單元測試更多。而UI測試會更加關(guān)注e2e,模擬用戶行為,在所有的程序依賴環(huán)境準備完成后再進行操作。相比之下API測試不依賴環(huán)境,測試成本會比UI測試更低,而且覆蓋率比UT更高。
快速反饋。API測試速度比UI測試更快(因為無需界面加載/響應(yīng)),短時間內(nèi)能跑很多用例。API測試也能精確的揭露是軟件中哪個組件除了問題,如果把你的API測試放到CI里面,一旦代碼修改破壞了現(xiàn)有的功能,就能夠快速反饋到團隊中。還可以把測試中發(fā)現(xiàn)的BUG也寫到API測試里面,讓測試成為一堵墻,從而能更好的能保證產(chǎn)品質(zhì)量。
可復(fù)用。API測試由于不需要瀏覽器、GUI等環(huán)境,所以可以更加靈活的在各個環(huán)境中復(fù)用。例如你可以在產(chǎn)品環(huán)境中、測試環(huán)境、研發(fā)環(huán)境中使用,你需要做的只是修改下測試數(shù)據(jù)而已。另外如果是在TDD模式下工作的話,API測試可能會在產(chǎn)品完成前就寫完了,后續(xù)的工作也會減少很多。
API功能測試的主要手段是使用工具/軟件調(diào)用待測API,然后驗證是否返回期望的output。這個output通常可能是:
* 返回成功或者失敗的status
* 是一段數(shù)據(jù)或者information
* 或者是跳轉(zhuǎn)到其他API
工具。市面上常見的API測試工具我知道的可以分成幾大類:
開源純代碼類,比如基于nodeJS的supertest,基于Java的rest-assured等,這類工具易于學(xué)習(xí),易于和CI集成,但是需要使用者有一定的編碼能力。 商用工具,比如SoapUI,功能強大操作簡單,還提供免費社區(qū)辦可以試用。 各類插件工具,比如Chrome插件Postman,也有收費版可以玩兒。
工具的選擇見仁見智,根據(jù)不同的環(huán)境選擇不同的工具。
測試。在正式開始測試之前,你得先搞清楚幾個問題:
待測API的目的是什么,誰是使用者 待測API會在什么環(huán)境下使用 待測API在異常環(huán)境下會不會有非期望響應(yīng) 這個測試需要測什么功能點 各個功能點的測試優(yōu)先級 如何定義期望返回的結(jié)果是成功還是失敗 待測API會不會和其他系統(tǒng)有交互(修改代碼后影響其他系統(tǒng))
這些問題會影響到你的測試結(jié)果是否符合客戶需求,或者說這些潛在的風(fēng)險會影響到這個項目是否成功。
如果你選的是必須得自己寫點兒代碼的工具,那么接下來得根據(jù)選擇的工具和項目代碼,去setup測試環(huán)境,讓工具能夠成功跑起來。
接著是設(shè)計你的測試框架,最好是要滿足可復(fù)用性強,高內(nèi)聚低內(nèi)聚什么的原則,記得要有輸出測試報告的模塊。
然后是用例,上面你已經(jīng)想好了需要測哪些功能點,針對這些點我們用腦圖之類的工具把需要測試的場景記錄下來。
最后就是腳本設(shè)計和測試數(shù)據(jù)設(shè)計,腳本和數(shù)據(jù)最好可以分開,這樣的話可以復(fù)用測試腳本,用不同的測試數(shù)據(jù)輸入去獲取不同的期望結(jié)果。
驗證的過程大致包含下面這些:
檢查API是不是根據(jù)你輸入的數(shù)據(jù)返回期望的結(jié)果 驗證API是不是不返回結(jié)果或者返回異常結(jié)果 驗證API是不是正確觸發(fā)其他event或者正確調(diào)了其他API 驗證API是不是正確更新了數(shù)據(jù)等等
完了就是輸出測試報告了,好的測試報告可以幫助你輕松定位到出錯的地方,使修復(fù)流程更加順暢。
最后的最后,強烈推薦把測試集成到CI中去,加速異常反饋,創(chuàng)建墻有力的質(zhì)量體系。
>>>>>查看更多測試分析相關(guān)資訊、產(chǎn)品
活動時間:11月1日-11月30日
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn