堅持原創,堅持實踐,堅持乾貨,如果你覺得有用,請點擊推薦,也歡迎關注我部落格園和微信公眾號。
談談最近做的一個自動化平台
微信搜索【大奇測試開】,關注這個堅持分享測試開發乾貨的傢伙。
來到新的公司有半年多了,由於業務和人員的極速擴張,整個局面處於百廢待興階段,有太多方方面面的事情要做,前五個月基本上都是在給各式各樣的需求進行支援,最近的兩個月多月才比較固定做技術域的事情。

所在組主要是做一些平台和工具開發,以及一些專項測試,基本好多公司在做的我們也都在搭建,比如用例、造數、覆蓋率等等平台&工具,以及移動、服務專項等,我是負責從0開始搭建的一個介面自動化平台需求,要得急第一個版本上線要求一周(攤手)。
上圖給出了目前平台的整體功能的架構,最初的想法和搭建平台的目的在這裡總結下,大概有以下幾個方面:
背景原因: 品質部門按照業務域劃分,一般都有來自原有團隊現有框架,亦或新團隊從以前公司帶過來的框架,無法短時間再造遷移,也不太可能統一一種框架;
業務痛點: 測試結果沒有資料庫持久化,都是利用現有的工具包生成的靜態文件報告,無法做統計相關分析和歷史數據查詢;
效率問題:自動化本身想要想要起作用,除了框架和程式碼的穩定高品質,還要做持續集成,分散在各小組基本只能做到jenkins定時調度,而且這部分都是一些重複性的工作。
主要是這三點,其實還有包括如運營推廣、與其他平台打通等不利的多方面因素,基於上邊這些,就誕生了這個自動化平台,其實嚴格來說算是一個主打報告功能,輔助執行等功能的這麼一個平台。然後對於平台功能直接參考上圖,短期內規劃如此,暫不展開講了。
接著來看下一個技術相關的圖,它主要簡單清晰的展示了已實現部分和未來涉及到技術內容,結果上報的部分最開始是通過提供一個開放API上報介面,讓各個團隊的自動化話框架自行改造,將每次本地或者Jenkins運行的測試結果上傳給平台。
隨著業務對接和功能的迭代,其實各團隊雖然各框架結構實現方法各不相同,但運行方式總體就是JAVA TestNG 和 Python pytest 兩種,個別使用了JUnit,而在JAVA自動化項目持續集成的方式都是maven命令行,Python項目就是py文件執行。所以在彙集結果上報數據的處理無外乎兩種方式:
-
TestNG:使用自定義監聽器,如繼承ITestListener 和 IReporter
-
Pytest:使用Hook,比如利用pytest_runtest_makereport
這兩個框架在自定義報告有很多可研究的地方,後邊會搞個系列講講,這裡僅做個拋磚引玉,既然各測試組都用相同的東西做相同的事情,並且有的組技術能力也有一定的壁壘,因此就有了為了解決這個痛點而出現的JAVA上報工具包和Pytest上報插件,通過簡單的引用配置就能最小成本快速的上報。
再有另外一個核心的功能是平台支援了Jenkins無感知的配置和Pipeline調度,給出幾張截圖來看看初步成果。
圖1: 操作新建綁定程式碼項目,後端會自動配置好Jenkins服務

圖2: 進入綁定的項目配置對應的執行計劃,TestNG為XML,Pytest為py文件。同時支援定時配置,飛書通知基本配置,另外在新建測試後就會自動進行調度執行,然後通過技術架構的三種方式把結果上報到平台,平台進行匯總統計。
圖3: 調度執行完成後,從項目測試報告tab或者收到的通知簡報上可以跳轉到報告詳情頁,主要展示測試報告的詳細資訊,並且把錯誤的case優先分類展示,讓其第一時間進行確認和處理。
平台還會持續迭代,從文章開始的產品架構圖和技術架構已經展示了未來迭代的更多功能,當然規劃還是在實際的落地和後續的使用回饋中不斷調整變化,很應景我司的一個文化「擁抱變化」。
,之前一直想找個點,做個開源的項目,並且希望能有一定的使用價值,而不是為了開源而做再做一個類似介面web工具,這個報告平台和插件也許就是個不錯的方向,可以在積累一段時間,踩過一些坑後對其重新梳理,把功能更通用需求方面整理,將平台和工具包一併分享出來。正好之前的《提測平台》系列也快接近尾聲,要有新的系列繼續,做個小調研,同時也希望大家可以加我微信入群或私信一同探討,也可以未來參與共建。


