在服務(wù)端優(yōu)化代碼或者火星直播項目迭代過程時蝇完,服務(wù)端每天都會有很多次代碼的提交官硝,而要保證每次代碼的提交都能不影響線上環(huán)境的穩(wěn)定性和客戶端功能正常運行尤為重要,而接口測試可以檢查接口的數(shù)據(jù)返回四敞、數(shù)據(jù)格式以及數(shù)據(jù)類型是否與預(yù)期保持一致绷蹲。從而確保每一次服務(wù)端代碼的上線都能夠安全穩(wěn)定誓斥,以及實現(xiàn)對線上接口的實時監(jiān)控,出現(xiàn)問題時即時暴露七扰,保證服務(wù)端的穩(wěn)定性没龙。
接口測試可以使測試人員提前介入測試铺厨,當(dāng)客戶端還未開發(fā)完成之時,可以通過接口測試模擬客戶端的請求硬纤,來驗證接口的正確性解滓,提前檢查接口返回數(shù)據(jù)與期望是否一致,檢查服務(wù)端處理異常Case的能力筝家,將可能會出現(xiàn)的bug控制在項目測試前期階段洼裤。
在火星直播版本迭代過程中,需要在項目流程中有充足的時間去編寫新的自動化測試用例以及對之前接口的維護(hù)溪王,而一套Robotframework框架擁有強(qiáng)大的擴(kuò)展庫腮鞍,可以滿足對接口值骇、數(shù)據(jù)庫、移動端UI自動化移国、Web端UI自動化的測試吱瘩,而且其本身的驅(qū)動原理能大大的縮小開發(fā)成本,提升用例編寫效率迹缀。
Robot Framework框架是一個通用的驗收測試和驗收測試驅(qū)動開發(fā)的自動化測試框架(ATDD)使碾,使用關(guān)鍵字驅(qū)動的測試方法。其檢測能力可以通過測試庫實現(xiàn)可以使用 Python 或 Java 的擴(kuò)展祝懂,用戶可以使用相同的語法票摇,用于創(chuàng)建測試用例創(chuàng)建新的更高層次的現(xiàn)有的關(guān)鍵詞。Robot Framework 的操作系統(tǒng)和應(yīng)用獨立框架砚蓬。核心框架是使用 Python 和運行在 Jython(JVM)和 IronPython(.NET)兄朋。
Robotframework 項目結(jié)構(gòu)分為Testsuite,Testcase怜械,Resource File颅和,Library這幾個層級,Testcase就是在Testsuite下的具體的單個自動化測試用例缕允,利用關(guān)鍵字驅(qū)動調(diào)用底層封裝好的類庫來編寫一條條自動化測試用例峡扩,可以更加效率的完成用例的編寫工作,其各自之間的關(guān)系如下圖所示
Robot Framework 所支持的庫主要分標(biāo)準(zhǔn)庫障本、擴(kuò)展庫和 其它 教届。 標(biāo)準(zhǔn)庫提供基本功能,擴(kuò)展庫提供特定領(lǐng)域的操作驾霜。 因為 Robot Framework 所支持的測試庫非常多案训,這里例一些常用的。
Web 自動化測試:SeleniumLibrary粪糙,Selenium2Library等强霎。
Windows GUI 測試:AutoItLibrary。
移動測試:AndroidLibrary蓉冈、iOSLibrary城舞、AppiumLibrary 等。
數(shù)據(jù)庫測試: Database Library 寞酿,MongoDB library家夺,RedisLibrary 等。
文件對比測試:Diff Library伐弹。
HTTP 測試: RequestsLibrary
通過關(guān)鍵字驅(qū)動可以快速精準(zhǔn)的調(diào)用底層庫中的具體的方法拉馋,例如
對于上面的例子來說,set variable 、create session煌茴、create dictionary和 get request随闺,should be equal as strings ,都是“關(guān)鍵字”景馁,這些關(guān)鍵字由RequestsLibrary和Builtln類庫所提供板壮,那么這就是最基本的一條接口自動化用例,通過參數(shù)的拼接合住,模擬客戶端向服務(wù)器發(fā)送請求報文绰精,然后拿到返回的結(jié)果后將其轉(zhuǎn)化為json格式,驗證各個返回值的類型以及Value值是否與期望相符透葛。
火星直播的業(yè)務(wù)層面目前有四個模塊笨使,分別是直播相關(guān),內(nèi)容相關(guān)僚害,個人信息相關(guān)以及統(tǒng)計上報相關(guān)硫椰。然后每個模塊里面還有諸多小類別,根據(jù)四大模塊設(shè)計如圖所示用例分類:
項目結(jié)構(gòu)及用例命名規(guī)則設(shè)計
用例采用模塊+功能點+ac的規(guī)則來命名萨蚕,這樣能清晰的知道用例所屬模塊靶草、其功能點以及調(diào)用的哪個ac≡酪#火星的項目結(jié)構(gòu)如圖所示
用例的斷言分別驗證了返回各個參數(shù)的類型是否正確奕翔,驗證了value值的具體返回值和有固定取值區(qū)間value,驗證了狀態(tài)碼以及errorcode值是否正確浩蓉。舉一個獲取星光的接口用例派继,如圖所示
Robotframework的報告和日志都是以html的格式輸出的,日志會具體到每一條case的每一個關(guān)鍵字的執(zhí)行的成功或失敗以及執(zhí)行的耗時捻艳。日志如圖所示:
報告則是對整個項目執(zhí)行的一個概覽驾窟,如圖所示:
以上便是Robotframework的簡單介紹以及在火星直播接口自動化測試項目中的實踐。
這個項目是火星測試團(tuán)隊共同完成的认轨,每個人都有自己的開發(fā)量绅络,我們分別建立了自己的dev分支,定期評審各自代碼好渠,優(yōu)化各自代碼后昨稼,最終合并到了主分支。最終在Jenkins中下載了Robotframework插件拳锚,集成到了Jenkins中。
打通郵件系統(tǒng)寻行,每天定期會執(zhí)行整個項目霍掺,并發(fā)送錯誤報告,可以在郵件中直接打開報告和日志,也可在Jenkins中查看報告和日志。在Jenkins中的報告顯示杆烁,如圖所示:
以上便是Robotframework+Jenkins的一些簡單介紹牙丽,以及如何在火星直播中一步步落地的,相信在版本快速迭代的時代兔魂,測試同學(xué)在完成業(yè)務(wù)功能測試的同時也能高效的編寫接口和移動端UI自動化Case烤芦,選用這套框架可能會是一個不錯的選擇,當(dāng)然也存在不足的地方析校,后續(xù)也有許多二次開發(fā)優(yōu)化的空間构罗,希望大佬們多多指導(dǎo),互相探討智玻。Thanks遂唧!~