DevOps實踐(1)面向服務的全自動化測試體系
一、功能
- 依托于robotframework
- 根據(jù)代碼注釋,自動生成測試庫
- 自動搜索測試用例或指定測試用例文件運行
- commit觸發(fā)測試和周期性定時(按天/小時)測試
- 測試報表統(tǒng)計(區(qū)分環(huán)境)
- 企業(yè)微信通知測試結(jié)果
在此之前,大家要去復習兩個重要的概念,一個是【測試金字塔】模型,
另一個是【基于關(guān)鍵字和數(shù)據(jù)驅(qū)動的測試】。
二、自動化測試架構(gòu)
在這一套自動化測試架構(gòu)中,代碼注釋起到了核心的作用,背后就是標準化的要求,代碼注釋的格式如下:
基于代碼的comment,能完成如下能力的輸出:
- Document。我們要自動生成api接口說明文檔,可以依賴此方法生成。
- 自動化生成服務測試用例。自動根據(jù)關(guān)鍵字構(gòu)造自動化測試的方法和用例。
三、根據(jù)代碼注釋,自動生成測試庫
指定項目的根目錄,會自動將測試庫寫入到test/library/[項目名].py
如下代碼
注意,如果post/put請求發(fā)送的是一個list數(shù)據(jù),這里param請寫struct類型。如
- @param struct data
然后測試數(shù)據(jù)構(gòu)造data=[{"a": 1}],框架將會發(fā)送[{"a": 1}]作為http body
會自動掃描并生成robotframework的測試庫
使用者,只需要撰寫測試數(shù)據(jù)即可(數(shù)據(jù)驅(qū)動測試)
四、自動搜索測試用例或指定測試用例文件運行
1. 自動搜索測試用例
根據(jù)我們的部署規(guī)范,工具會自動搜索/usr/local/easyops目錄下的項目,符合如下要求:
- 文件夾必須是全小寫的
- 文件夾下有test/case目錄
2. 指定測試用例文件
- 可指定測試用例的文件/目錄測試
五、commit觸發(fā)測試和周期性定時(按天/小時)測試
- 工具會自動監(jiān)聽commit,觸發(fā)測試
- 也可指定每1h或每1d測試
自動觸發(fā)流水線執(zhí)行全流程的驗證,開發(fā)、測試和發(fā)布亦是如此。
六、測試報表統(tǒng)計
1. 我們提出3個評價指標:
- 成功率:成功的用例個數(shù)/ 總的測試用例個數(shù)
- 覆蓋率:(keyword總數(shù)-未測試的keyword個數(shù))/ keyword總數(shù)
- 測試用例指數(shù):測試keyword的測試數(shù)據(jù)個數(shù)的平均。最小是1(每個接口都只有1個測試數(shù)據(jù)),希望能達到3~5
2. 測試的結(jié)果數(shù)據(jù)會自動解析并存儲到influxdb,利用grafana來展示
3. 區(qū)分環(huán)境。我們有162、163、164等開發(fā)環(huán)境,所有數(shù)據(jù)都會區(qū)分顯示
此時的環(huán)境管理非常重要,過去的痛苦之處是如何快速創(chuàng)建和有效管理環(huán)境。由于我們的研發(fā)模式采用的是git workflow模式,所以能產(chǎn)生大量的特性分支,一個特性勢必對應一個環(huán)境。因此會產(chǎn)生大量的開發(fā)環(huán)境、集成測試和回歸測試環(huán)境,必須能夠保證我們服務測試用例和環(huán)境能一一對應,且無需人工接入,這一點就大大降低了測試維護的代價和成本。
七. 企業(yè)微信通知測試結(jié)果
項目的測試成功率小于100%,將會發(fā)送到企業(yè)微信
八、總結(jié)
一個完善的自動測試體系背后,是有很多經(jīng)驗值得分享的:
- 研發(fā)參與測試。我們說的參與測試不是參與測試本身,而是參與測試體系的搭建。研發(fā)和測試為了共同的目標,稍作改變,而不是完全依賴后續(xù)環(huán)境,自動化測試體系構(gòu)建成本就可以大大降低。
- 標準化。研發(fā)堅持標準化的代碼習慣,基于標準化,傳遞能力給自動化測試過程,效率和質(zhì)量都能得到保障。
- 質(zhì)量意識前置。我們不把“質(zhì)量當成測試組的職責”,而是把這部分的能力前置到研發(fā)階段,共同構(gòu)建質(zhì)量保障壁壘。
- 自動化。我們在開發(fā)自動化測試體系的同時,把其能力和平臺流水線能力對接起來,讓執(zhí)行和接入成本大大降低。
- 數(shù)據(jù)化度量。即使建立了完善的測試體系,如果沒有很好的度量,效果依然不會很好,度量***的方式——看板。
- 閉環(huán)。有問題就立即要去解決,讓測試發(fā)現(xiàn)的問題閉環(huán)起來。
【本文是51CTO專欄作者“王津銀”的原創(chuàng)稿件,轉(zhuǎn)載請注明出處】