本文是我受邀在 TiD2019質(zhì)量競(jìng)爭(zhēng)力大會(huì)區(qū)塊鏈論壇中的分享的一個(gè)主題,介紹如何運(yùn)用 DevOps 技術(shù)體系讓開(kāi)發(fā)和測(cè)試人断、運(yùn)維進(jìn)行高效協(xié)作,如何使用 CI/CD 進(jìn)行區(qū)塊鏈軟件自動(dòng)化測(cè)試、軟件發(fā)布鲤拿;設(shè)計(jì) CI/CD 流水線時(shí)需要注意哪些問(wèn)題;區(qū)塊鏈軟件自動(dòng)化測(cè)試有哪些難點(diǎn)署咽;如何提高自動(dòng)化測(cè)試運(yùn)行效率近顷;什么樣的測(cè)試報(bào)告才是好的報(bào)告生音;測(cè)試框架優(yōu)化實(shí)戰(zhàn)經(jīng)驗(yàn)分享。
大綱
- 背景介紹
- DevOps 流程 - 需求窒升、開(kāi)發(fā)缀遍、測(cè)試、運(yùn)維饱须、監(jiān)控一體化
- 敏捷開(kāi)發(fā)與DevOps - 開(kāi)發(fā)和測(cè)試域醇、運(yùn)維應(yīng)該如何協(xié)作
- 為什么要自動(dòng)化測(cè)試?
- 介紹CI/CD流水線
- 如何設(shè)計(jì)測(cè)試流水線
- 實(shí)戰(zhàn)經(jīng)驗(yàn):優(yōu)化流水線
- 實(shí)戰(zhàn)經(jīng)驗(yàn):優(yōu)化測(cè)試框架
背景介紹
為了提高軟件的研發(fā)效率蓉媳、保證軟件質(zhì)量譬挚、高效服務(wù)運(yùn)維,我們?cè)陂_(kāi)發(fā)管理上實(shí)踐敏捷開(kāi)發(fā)酪呻、使用 DevOps 進(jìn)行自動(dòng)化運(yùn)維减宣、實(shí)行持續(xù)的自動(dòng)化測(cè)試。
在介紹怎么做之前玩荠,先說(shuō)下我們做了什么漆腌,這樣能比較好理解知道我們?yōu)槭裁匆@樣做。
我們?cè)?016年開(kāi)發(fā)了一款區(qū)塊鏈軟件 CITA姨蟋,并在2017年進(jìn)行了項(xiàng)目開(kāi)源:https://github.com/cryptape/cita
CITA 是我們從頭開(kāi)始自主研發(fā)的一個(gè)高性能區(qū)塊鏈內(nèi)核屉凯,具有微服架構(gòu)、水平擴(kuò)展眼溶、組件可插拔悠砚、高性能這些特質(zhì)。
區(qū)塊鏈服務(wù)簡(jiǎn)單可以看作是一種分布式的賬本同步系統(tǒng)堂飞。為了簡(jiǎn)化應(yīng)用開(kāi)發(fā)者的使用我們還開(kāi)發(fā)了與之配套的各種開(kāi)發(fā)灌旧、調(diào)試工具、組件绰筛,例如:
CITA內(nèi)核與各組件的關(guān)系圖:
這些工具都是開(kāi)源的:https://www.citahub.com/#componentArea
具體怎么做
我們實(shí)踐 敏捷開(kāi)發(fā)
我們使用敏捷開(kāi)發(fā)中的 Scrum 框架管理團(tuán)隊(duì)目標(biāo)和進(jìn)度枢泰。
敏捷開(kāi)發(fā)的目標(biāo)是通過(guò)迭代開(kāi)發(fā)的方式交付可工作的軟件。
我們會(huì)將一個(gè)大的版本作為一個(gè)Milestone(里程碑)铝噩,定義好必須要完成的總目標(biāo)和時(shí)間點(diǎn)衡蚂,然后切分成幾個(gè)較短工作周期的 Sprint(迭代),每個(gè) Sprint 有自己要完成的階段目標(biāo)骏庸。
我們使用 Story Point 來(lái)評(píng)估每個(gè)任務(wù)的完成時(shí)間毛甲,使用燃盡圖反饋任務(wù)完成進(jìn)度,以便可調(diào)控每個(gè) Sprint 的節(jié)奏和進(jìn)度具被,如下圖玻募,是我們一個(gè)子產(chǎn)品開(kāi)發(fā)過(guò)程的各個(gè)Sprint 里的燃盡圖:
在具體的任務(wù)管理上我們使用 Kanban(看板)工具來(lái)跟蹤每個(gè)成員的任務(wù)狀態(tài),如下圖:
看板是一種圖形化的展示工具一姿,由于人類(lèi)天生對(duì)視覺(jué)化的信息更容易理解七咧,通過(guò)它可以很直觀的反應(yīng)每個(gè)任務(wù)的狀態(tài)跃惫、同時(shí)也是一種工作量的直觀呈現(xiàn),讓開(kāi)發(fā)組中每個(gè)成員都可以清晰知道自己艾栋、同時(shí)了解到其他人的工作進(jìn)展爆存。
我們實(shí)踐 DevOps
軟件開(kāi)發(fā)不只是把代碼編寫(xiě)出來(lái)就完事,還需要經(jīng)過(guò)測(cè)試保證完整性裹粤、把測(cè)試后的軟件部署到服務(wù)器上终蒂,還要設(shè)置監(jiān)控保障服務(wù)運(yùn)行正常蜂林,并能收集反饋給產(chǎn)品遥诉、開(kāi)發(fā)團(tuán)隊(duì)對(duì)軟件功能、質(zhì)量進(jìn)行持續(xù)的改善噪叙,才是一個(gè)完整可用的服務(wù)開(kāi)發(fā)到上線的過(guò)程矮锈,整個(gè)過(guò)程如上圖所示,一環(huán)銜接一環(huán)睁蕾。
我們?nèi)绾螌?shí)踐 DevOps苞笨?
如上圖所示,DevOps 不單是運(yùn)維團(tuán)隊(duì)的事情子眶,而是開(kāi)發(fā)瀑凝、運(yùn)維、測(cè)試各種崗位人員一體化實(shí)施的一個(gè)過(guò)程臭杰。我們要求做到流程規(guī)范化粤咪,這樣各個(gè)職能成員能互相了解對(duì)方的工作輸出預(yù)期,才能高效協(xié)作渴杆。流程規(guī)范化后寥枝,才能使用工具進(jìn)行自動(dòng)化來(lái)提高工作效率和減少人為產(chǎn)生的故障。讓各環(huán)節(jié)的協(xié)作像是流水線般清晰可感知磁奖、可預(yù)期囊拜。
有人認(rèn)為要實(shí)踐 DevOps 要要求團(tuán)隊(duì)成員都是全棧工程師,而我認(rèn)為專(zhuān)業(yè)分工才能深入和精通比搭,因此我們把團(tuán)隊(duì)分為區(qū)塊鏈開(kāi)發(fā)冠跷、測(cè)試開(kāi)發(fā)、運(yùn)維開(kāi)發(fā)團(tuán)隊(duì)身诺,注意到每個(gè)崗位都是有“開(kāi)發(fā)“字眼蜜托,具備有編程能力的團(tuán)隊(duì)才是能有效實(shí)踐 DevOps 的根本。
我給團(tuán)隊(duì)設(shè)定3個(gè)目標(biāo):
開(kāi)發(fā)區(qū)塊鏈軟件 - 軟件代碼 用 CI 進(jìn)行自動(dòng)化代碼質(zhì)檢戚长、測(cè)試盗冷、構(gòu)建、發(fā)布
測(cè)試區(qū)塊鏈軟件 - 測(cè)試代碼 用 CI 進(jìn)行冒煙同廉、回歸仪糖、性能柑司、穩(wěn)定性測(cè)試
運(yùn)維區(qū)塊鏈服務(wù) - 監(jiān)控服務(wù) 用 CI 進(jìn)行主動(dòng)監(jiān)控、被動(dòng)告警
對(duì)這樣的團(tuán)隊(duì)的要求:
- 開(kāi)發(fā)锅劝、測(cè)試攒驰、運(yùn)維均要求有編程能力
- 開(kāi)發(fā)、測(cè)試故爵、監(jiān)控服務(wù)的代碼玻粪,均遵從相同的開(kāi)發(fā)流程、使用CI工具
開(kāi)發(fā)流程
使用 GitHub Flow 進(jìn)行代碼管理诬垂, 本地創(chuàng)建 feature 分支 -> 發(fā)PR -> 代碼審查 / CI 檢查 -> 合并 master 分支:
自動(dòng)化運(yùn)維
使用 CI/CD 流水線 進(jìn)行自動(dòng)化構(gòu)建劲室、測(cè)試、發(fā)布结窘、部署:
開(kāi)發(fā)人員的代碼開(kāi)發(fā)完成會(huì)進(jìn)行代碼審查很洋、靜態(tài)代碼掃描檢查代碼規(guī)范和代碼安全檢查、運(yùn)行自動(dòng)化測(cè)試隧枫;根據(jù)不同的分支合并策略進(jìn)行不同環(huán)節(jié)的自動(dòng)化部署喉磁,如合并到 develop 分支會(huì)觸發(fā) staging 環(huán)境的部署,部署成功后自動(dòng)通知測(cè)試人員進(jìn)行驗(yàn)收測(cè)試官脓;合并到 master 分支會(huì)觸發(fā) production 環(huán)境的部署协怒,部署成功后自動(dòng)發(fā)送上線通知讓運(yùn)營(yíng)人員進(jìn)行運(yùn)營(yíng)使用。 使用自動(dòng)化的 CI/CD 工具和流程卑笨,可以把功能開(kāi)發(fā)到上線時(shí)間孕暇,縮短到開(kāi)發(fā)人員提交代碼的最后一刻,并且在 CI 服務(wù)上有記錄湾趾,每個(gè)人都能知道是什么人芭商、在什么時(shí)候、部署了什么改動(dòng)搀缠、到哪個(gè)環(huán)節(jié)铛楣,提高了運(yùn)維效率也減少了人工操作過(guò)程的人為事故可能性。
服務(wù)監(jiān)控
運(yùn)維使用 ELK 服務(wù)進(jìn)行日志收集艺普、數(shù)據(jù)分析簸州,如下圖,我們對(duì) 測(cè)試鏈 各個(gè)節(jié)點(diǎn)上服務(wù)的日志收集和分析歧譬,出現(xiàn)軟件故障時(shí)方便運(yùn)維岸浑、開(kāi)發(fā)人員了解原因。
為了方便CITA服務(wù)的運(yùn)維瑰步,我們的運(yùn)維團(tuán)隊(duì)開(kāi)發(fā)了 CITA 的監(jiān)控服務(wù)矢洲,可用于監(jiān)控節(jié)點(diǎn)中CITA的服務(wù)運(yùn)行情況,包括采集區(qū)塊鏈數(shù)據(jù)缩焦、CITA進(jìn)程的存活監(jiān)控读虏、運(yùn)行環(huán)境監(jiān)控责静、故障自動(dòng)告警通知,提供給開(kāi)發(fā)盖桥、運(yùn)維人員友好的可視化的面板灾螃,如下圖:
同樣的,這個(gè)監(jiān)控工具的本身的開(kāi)發(fā)流程也是一樣遵從同樣的 DevOps 實(shí)踐揩徊,同樣也是開(kāi)源的:https://github.com/cryptape/cita-monitor
持續(xù)自動(dòng)化測(cè)試
提高了開(kāi)發(fā)腰鬼、運(yùn)維效率,還要保障軟件的質(zhì)量塑荒,這個(gè)是我們測(cè)試團(tuán)隊(duì)的工作重點(diǎn)熄赡。
下圖是軟件測(cè)試中著名的測(cè)試金字塔,測(cè)試金字塔說(shuō)明了一種兩難的境地:越是上層的測(cè)試袜炕,就會(huì)耗費(fèi)越多的精力本谜、時(shí)間和成本。
我們的測(cè)試團(tuán)隊(duì)的工作重點(diǎn)正是最耗時(shí)間偎窘、資源的系統(tǒng)測(cè)試的自動(dòng)化。這并不是說(shuō)開(kāi)發(fā)團(tuán)隊(duì)就不用管測(cè)試了羡洁,開(kāi)發(fā)團(tuán)隊(duì)主要編寫(xiě)單元測(cè)試数苫、集成測(cè)試等的白盒測(cè)試考蕾。
因?yàn)槲覀冋J(rèn)為:
- 自動(dòng)化測(cè)試才能讓QA的價(jià)值最大化;
- 自動(dòng)化需要 CI 工具來(lái)做管理和執(zhí)行仆葡。
區(qū)塊鏈軟件是一種多實(shí)例運(yùn)行的系統(tǒng),只保障了單元測(cè)試志笼、集成測(cè)試的結(jié)果是遠(yuǎn)不足夠保障系統(tǒng)最終是可用沿盅、結(jié)果是可信的,而區(qū)塊鏈又是一個(gè)用計(jì)算機(jī)軟件解決【信任】的工具纫溃,軟件首先必須是可信的腰涧,產(chǎn)生的數(shù)據(jù)才能讓人信任,因此我們對(duì)測(cè)試工作投入大量的精力來(lái)保障軟件的質(zhì)量紊浩。
我們做的系統(tǒng)測(cè)試是一種端對(duì)端級(jí)別的窖铡、在仿真環(huán)境中軟件運(yùn)行結(jié)果的黑盒測(cè)試,為了提高測(cè)試工作效率坊谁,我們使用了 CI 流水線來(lái)管理多種測(cè)試策略费彼。
測(cè)試流水線
什么是 CI/CD 流水線(Pipeline)?
如下圖所示口芍,Jenkins 是我們使用的 CI 工具之一箍铲,一條 CI/CD Pipeline 像是一個(gè)的管道,代碼提交后會(huì)觸發(fā) CI 的運(yùn)行策略鬓椭,執(zhí)行自動(dòng)化的構(gòu)建颠猴、測(cè)試從而實(shí)現(xiàn)持續(xù)集成或持續(xù)部署流程聋庵,不同管道環(huán)節(jié)有各自的輸入、輸出芙粱,任何一個(gè)環(huán)節(jié)出問(wèn)題都阻塞影響到整個(gè)管道的工作祭玉。
進(jìn)行 CI/CD 流水線設(shè)置之前,先思考3個(gè)問(wèn)題:
- 如何設(shè)計(jì)一條合理的流水線春畔?
- 如何設(shè)計(jì)測(cè)試流水線脱货?
- 為什么要設(shè)置多條流水線?
流水線設(shè)計(jì)關(guān)鍵要素有2點(diǎn):
- 設(shè)計(jì)合適的Workflow:工作流程律姨,如:stage 1 -> stage 2 -> stage 3
- 設(shè)計(jì)Workflow 中的 Stage Job:階段工作振峻,如:unit-test, build, integration-test, code-audit, staging-deploy, production-deploy
每個(gè) Stage Job 也有5個(gè)設(shè)計(jì)關(guān)鍵要素:
- Up/Down stream:上下游的Stage Job
- Trigger: 觸發(fā)條件
- Input/Output:輸入?yún)?shù);輸出構(gòu)件產(chǎn)物择份、輸出參數(shù)
- Steps:執(zhí)行步驟
- Notification:結(jié)果通知扣孟;最后的 stage 都要有明確的通知對(duì)象
我們都知道做軟件開(kāi)發(fā)需要有 PRD(功能需求文檔),同樣的流水線設(shè)置也需要有設(shè)計(jì)文檔荣赶。
在設(shè)置具體的 CI/CD 流水線前凤价,要做下流水線設(shè)計(jì),如下圖是我們其中2條流水線的設(shè)計(jì)文檔:
設(shè)計(jì)好各種流水線的作用拔创、執(zhí)行策略和運(yùn)行步驟細(xì)節(jié)后利诺,就可以在 CI 工具上進(jìn)行相應(yīng)的設(shè)置,不要一邊想一邊改 CI 配置剩燥,特別是對(duì)于復(fù)雜的流水線應(yīng)該設(shè)計(jì)好再做設(shè)置慢逾,這樣一來(lái)流水線自己也有了文檔留存,方便其他運(yùn)維同事協(xié)作灭红,開(kāi)發(fā)和測(cè)試也能清楚工作流程侣滩。
如下圖,是我們?cè)O(shè)置的發(fā)版測(cè)試流水線:
發(fā)版測(cè)試流水線分為4個(gè)階段:
- 構(gòu)建測(cè)試對(duì)象:獲取軟件代碼变擒,自動(dòng)編譯生成不同算法版本的二進(jìn)制文件bin
- 生成測(cè)試運(yùn)行環(huán)節(jié):把 bin 文件放入可運(yùn)行的環(huán)境君珠,構(gòu)建 Docker Image
- 運(yùn)行測(cè)試用例:對(duì)不同 bin 版本運(yùn)行自動(dòng)化測(cè)試用例;并行執(zhí)行節(jié)省時(shí)間
- 生成測(cè)試報(bào)告:自動(dòng)匯總各個(gè)版本的測(cè)試結(jié)果赁项,自動(dòng)生成一份包含測(cè)試對(duì)象葛躏、測(cè)試環(huán)境、測(cè)試結(jié)果的報(bào)告悠菜;并自動(dòng)把構(gòu)建產(chǎn)物存檔舰攒,方便對(duì)外發(fā)布
多種流水線策略
發(fā)版流水線無(wú)疑是我們?nèi)粘i_(kāi)發(fā)中最重要的一種流水線,為了能讓開(kāi)發(fā)人員盡早發(fā)現(xiàn)代碼質(zhì)量問(wèn)題悔醋,我們還設(shè)置各種策略的測(cè)試流水線摩窃,例如用于保障開(kāi)發(fā)主分支的系統(tǒng)測(cè)試流水線、用于保障測(cè)試代碼質(zhì)量的冒煙、回顧測(cè)試流水線猾愿;用于保障軟件性能的性能測(cè)試流水線等鹦聪。
- 系統(tǒng)測(cè)試流水線:
- 當(dāng)開(kāi)發(fā)人員在開(kāi)發(fā)的 develop 分支有合并時(shí)執(zhí)行全量測(cè)試用例集的回歸測(cè)試,用于保障開(kāi)發(fā)主分支的代碼質(zhì)量蒂秘。
- 冒煙測(cè)試流水線:
- 用于做測(cè)試用例的增量泽本,用于保障測(cè)試代碼的代碼質(zhì)量;當(dāng)測(cè)試人員提交測(cè)試代碼的 feature 分支時(shí)執(zhí)行姻僧;只運(yùn)行 P1 級(jí)別的測(cè)試用例集规丽,執(zhí)行速度快,加快代碼審查撇贺、合并流程赌莺;復(fù)用由發(fā)版流水線生成的測(cè)試對(duì)象。
- 回歸測(cè)試流水線:
- 用于保障測(cè)試代碼的代碼質(zhì)量松嘶;當(dāng)測(cè)試人員合并測(cè)試代碼的 develop 分支時(shí)執(zhí)行艘狭;運(yùn)行全量的測(cè)試用例集,執(zhí)行速度慢翠订,但避免引入有破壞性的代碼巢音;同樣是復(fù)用由發(fā)版流水線生成的測(cè)試對(duì)象。
其他測(cè)試流水線:
- 性能測(cè)試流水線:
- 除了保障軟件的可用性蕴轨,我們非常關(guān)注軟件的運(yùn)行效率港谊,因此我們?cè)O(shè)置了性能測(cè)試流水線。性能測(cè)試關(guān)注的結(jié)果是一些性能指標(biāo)橙弱,如反映服務(wù)處理能力的TPS、延遲和響應(yīng)時(shí)間等燥狰。但性能測(cè)試的運(yùn)行代價(jià)很高棘脐,需要獨(dú)占主機(jī)資源并長(zhǎng)時(shí)間運(yùn)行。因此我們?cè)O(shè)置成每天晚上凌晨2點(diǎn)半自動(dòng)運(yùn)行性能測(cè)試流水線龙致,運(yùn)行完畢會(huì)生成圖形化的報(bào)告發(fā)送郵件通知開(kāi)發(fā)團(tuán)隊(duì)蛀缝。這樣開(kāi)發(fā)團(tuán)隊(duì)每天都能了解到主分支的性能變化情況,當(dāng)出現(xiàn)有重大性能變化時(shí)可以及早進(jìn)行優(yōu)化修復(fù)目代,而不是等到發(fā)版測(cè)試階段才知道結(jié)果屈梁。
- 穩(wěn)定性測(cè)試流水線:
- 我們還關(guān)注軟件的穩(wěn)定性,軟件的穩(wěn)定性是指在服務(wù)有大量請(qǐng)求壓力時(shí)各種關(guān)鍵功能還能正常工作榛了。因此我們?cè)O(shè)置了穩(wěn)定性測(cè)試流水線在讶,在發(fā)版階段執(zhí)行,可以按需要選擇壓測(cè)的參數(shù)霜大。
- 可用性測(cè)試流水線:
- 開(kāi)發(fā)人員做了一些重大改動(dòng)构哺,在合并到主分支前,想了解是否有其他副作用,因此運(yùn)維提供了可用性測(cè)試流水線曙强,開(kāi)發(fā)自己選擇需要測(cè)試的分支執(zhí)行即可獲得該分支回歸測(cè)試的結(jié)果残拐。
- 性能改進(jìn)測(cè)試流水線:
- 開(kāi)發(fā)人員做了一些性能相關(guān)的改動(dòng),想了解整體上的性能變化碟嘴,運(yùn)維提供了性能改進(jìn)測(cè)試流水線溪食,開(kāi)發(fā)自己選擇需要測(cè)試的分支執(zhí)行即可獲得該分支的性能測(cè)試結(jié)果。
在DevOps 模式的協(xié)作重點(diǎn)
在 DevOps 模式下開(kāi)發(fā)娜扇、測(cè)試错沃、運(yùn)維人員的協(xié)作重點(diǎn)為:
- 運(yùn)維的工作目標(biāo)是使用自動(dòng)化技術(shù)為開(kāi)發(fā)、測(cè)試提供便利流程袱衷、工具捎废,減少重復(fù)工作
- 測(cè)試的工作目標(biāo)是使用自動(dòng)化技術(shù)提高測(cè)試效率、保障開(kāi)發(fā)成果質(zhì)量
- 開(kāi)發(fā)享受自動(dòng)化的便利致燥,專(zhuān)心做開(kāi)發(fā)登疗,提高軟件質(zhì)量
沒(méi)有自動(dòng)化則沒(méi)有效率提升和質(zhì)量持續(xù)保障,而自動(dòng)化工具的維護(hù)當(dāng)然也是有代價(jià)的嫌蚤,這個(gè)正就是實(shí)踐 DevOps 的團(tuán)隊(duì)真正要做的工作辐益。
實(shí)戰(zhàn)經(jīng)驗(yàn)分享
如何優(yōu)化流水線和測(cè)試框架,以下是我們實(shí)踐的一些技巧和收獲:
流水線優(yōu)化技巧
- 流水線互相制約保障質(zhì)量
系統(tǒng)測(cè)試流水線保障開(kāi)發(fā)代碼質(zhì)量
回歸測(cè)試流水線保障測(cè)試代碼質(zhì)量
-
配合 GitHub Flow 約定自動(dòng)化觸發(fā)規(guī)則:
feature 分支跑冒煙脱吱,冒煙過(guò)了合并到 develop
合并 develop 跑回歸智政,回歸過(guò)了合并到 master
-
重用測(cè)試對(duì)象:
發(fā)版測(cè)試構(gòu)建測(cè)試對(duì)象
冒煙、回歸使用已構(gòu)建的測(cè)試對(duì)象
測(cè)試對(duì)象放入Docker Image 做版本管理箱蝠,本地測(cè)試和CI上使用相同測(cè)試對(duì)象
存檔構(gòu)建工件
合并測(cè)試報(bào)告
測(cè)試環(huán)境使用 Docker Container 隔離
每條測(cè)試用例隔離運(yùn)行
測(cè)試框架優(yōu)化技巧
- 使用環(huán)境變量及 Docker Image Tag 獲取測(cè)試對(duì)象
- 使用 Docker Image 獲得統(tǒng)一的測(cè)試環(huán)境
- 出錯(cuò)自動(dòng)重試用例
- 測(cè)試用例并行執(zhí)行
- 管理輸出日志
- 輸出直觀的測(cè)試報(bào)告
什么樣的測(cè)試報(bào)告才是好的報(bào)告续捂?
測(cè)試工作的最終呈現(xiàn)結(jié)果就是測(cè)試報(bào)告,那什么樣的測(cè)試報(bào)告才是好的報(bào)告宦搬?
我認(rèn)為一份清晰準(zhǔn)確的測(cè)試報(bào)告總結(jié)內(nèi)容應(yīng)該包含:
-
測(cè)試對(duì)象
- 軟件名稱(chēng)
- 軟件版本
- 源碼地址
- 源碼commit id
- bin文件輸出的版本信息
-
測(cè)試環(huán)境
- 測(cè)試代碼的commit id
測(cè)試用例
測(cè)試結(jié)果
而一個(gè)好的測(cè)試框架應(yīng)該能幫助測(cè)試人員自動(dòng)生成這樣一份測(cè)試報(bào)告牙瓢,提高測(cè)試人員的工作效率和準(zhǔn)確性。
以下就是我們使用的測(cè)試框架(使用 TestNG 作為基礎(chǔ)框架)得到的報(bào)告:
我們對(duì)測(cè)試框架持續(xù)改良间校,使得自動(dòng)生成測(cè)試報(bào)告中能輸出我們關(guān)注的測(cè)試對(duì)象版本矾克、測(cè)試環(huán)境、測(cè)試代碼版本等信息憔足,收到測(cè)試報(bào)告通知時(shí)胁附,每個(gè)人都在通過(guò)報(bào)告可以清晰并準(zhǔn)確知道測(cè)試的是什么、是什么結(jié)果滓彰、怎么測(cè)試的控妻。
我認(rèn)為企業(yè)協(xié)作的高效秘訣之一是:Don't ask, look by your self! (不用問(wèn),自己看)
可以主動(dòng)感知的信息才有效率找蜜,通過(guò)詢(xún)問(wèn)才能得知是低效的工作方式饼暑。
以上便是我們對(duì)區(qū)塊鏈軟件的工程質(zhì)量控制的一些經(jīng)驗(yàn)分享,請(qǐng)注意,每個(gè)企業(yè)都有各自的優(yōu)勢(shì)弓叛、短板或歷史包袱彰居,經(jīng)驗(yàn)不能復(fù)制只能參考,適合自己的才是最好的撰筷,謝謝陈惰。