解密敏捷自动化测试
團(tuán)隊(duì)敏捷化轉(zhuǎn)型過后,該如何進(jìn)行項(xiàng)目的測(cè)試以及驗(yàn)收?敏捷測(cè)試與傳統(tǒng)測(cè)試有什么不同?自動(dòng)化測(cè)試在其中又擔(dān)任著怎樣的角色?本文將給大家介紹敏捷自動(dòng)化測(cè)試,以及Choerodon豬齒魚自動(dòng)化測(cè)試的落地。
敏捷測(cè)試的定義和意義
在傳統(tǒng)開發(fā)模式中,開發(fā)人員和測(cè)試人員往往各司其職:開發(fā)人員了解到產(chǎn)品需求后開始編寫代碼,測(cè)試人員拿到產(chǎn)品需求說明書后開始編寫測(cè)試用例,等到開發(fā)完成,再開始對(duì)照測(cè)試用例進(jìn)行人工測(cè)試工作。
但是在軟件生命周期的需求、設(shè)計(jì)、開發(fā)、測(cè)試這四個(gè)階段中,后面的階段一般是依賴于前面的階段的,所以越往后期響應(yīng)變化的難度越大。比如,在開發(fā)過程中不僅需要響應(yīng)需求變更,而且需要響應(yīng)設(shè)計(jì)上的變化。從這個(gè)角度來看,處于最后階段的測(cè)試必須及時(shí)響應(yīng)前面三個(gè)階段的所有變化。可是在傳統(tǒng)的開發(fā)模式中,當(dāng)需求變更產(chǎn)生的時(shí)候測(cè)試人員所編寫的測(cè)試用例往往已經(jīng)完成,需要對(duì)其進(jìn)行推倒重構(gòu),整個(gè)測(cè)試流程就是在重復(fù)一些沒有用的工作。
傳統(tǒng)測(cè)試流程圖:
而敏捷測(cè)試是遵從敏捷軟件開發(fā)原則的一種測(cè)試實(shí)踐。敏捷開發(fā)模式把測(cè)試集成到了整個(gè)開發(fā)流程中而不再把它當(dāng)成一個(gè)獨(dú)立的階段,因此測(cè)試變成了整個(gè)軟件開發(fā)流程中必不可少,需要考慮人力、時(shí)間成本的一環(huán)。敏捷測(cè)試包含了具備專業(yè)測(cè)試技能人員在內(nèi)的跨職能團(tuán)隊(duì),這使得這種組合式的團(tuán)隊(duì)能更好地交付價(jià)值,滿足項(xiàng)目的業(yè)務(wù)、質(zhì)量和進(jìn)度目標(biāo)。
在敏捷開發(fā)模式中,所有的開發(fā)人員同時(shí)也是測(cè)試人員,對(duì)自己的業(yè)務(wù)負(fù)責(zé),對(duì)團(tuán)隊(duì)的代碼負(fù)責(zé),是一種邊開發(fā)邊測(cè)試的模式。敏捷模式中一到四周的短開發(fā)周期,克服了傳統(tǒng)模式中項(xiàng)目周期長(zhǎng)、生命周期的工作內(nèi)容不好分配、后期變更影響大等困難。
由于敏捷方法中迭代周期短,測(cè)試人員應(yīng)盡早開始測(cè)試,包括及時(shí)對(duì)需求、開發(fā)設(shè)計(jì)的評(píng)審,更重要的是能夠及時(shí)、持續(xù)的對(duì)軟件產(chǎn)品質(zhì)量進(jìn)行反饋。敏捷測(cè)試中通常包含以下幾個(gè)階段來保證敏捷測(cè)試的可靠性、時(shí)效性:
1. 驗(yàn)收測(cè)試:對(duì)于這個(gè)迭代中新增、修改的功能按照迭代初期提出的需求內(nèi)容進(jìn)行測(cè)試驗(yàn)收。可采用冒煙測(cè)試的方法對(duì)新版本的業(yè)務(wù)流程進(jìn)行測(cè)試。
2. 回歸測(cè)試:對(duì)于模塊進(jìn)行全量測(cè)試,保證其全部功能的可用性,驗(yàn)證當(dāng)前迭代新增、修改過的功能對(duì)于其他內(nèi)容沒有不良影響。
3. 系統(tǒng)測(cè)試:運(yùn)用場(chǎng)景法測(cè)試和相互交叉測(cè)試保證整個(gè)系統(tǒng)在迭代結(jié)束后處于一個(gè)可發(fā)布狀態(tài)。
簡(jiǎn)單地說,敏捷測(cè)試就是持續(xù)地對(duì)軟件質(zhì)量問題進(jìn)行及時(shí)的反饋與響應(yīng)。
敏捷測(cè)試流程圖:
自動(dòng)化測(cè)試能帶來什么
自動(dòng)化測(cè)試在敏捷測(cè)試中占有絕對(duì)的主導(dǎo)地位。雖然在傳統(tǒng)項(xiàng)目開發(fā)周期的測(cè)試階段也推薦自動(dòng)化測(cè)試,但由于整體的項(xiàng)目周期比較長(zhǎng),人員上的資源也較為充足,不使用自動(dòng)化測(cè)試也可以控制測(cè)試人員人天成本并且達(dá)到測(cè)試目標(biāo)。一般來說,回歸測(cè)試能夠獲得幾周甚至上月的時(shí)間,而在敏捷的開發(fā)模式中則迫切要求測(cè)試的高度自動(dòng)化,一個(gè)迭代通常是兩三周的時(shí)間,那也就意味著你只有兩三天的時(shí)間來進(jìn)行整個(gè)項(xiàng)目的全套測(cè)試流程。沒有自動(dòng)化,也就談不上敏捷。在敏捷測(cè)試流程中,主要分為以下幾個(gè)主要測(cè)試階段:
▌單元測(cè)試(Unit Test,UT)
是針對(duì)程序模塊(軟件設(shè)計(jì)的最小單位)來進(jìn)行正確性檢驗(yàn)的測(cè)試工作。程序單元是應(yīng)用的最小可測(cè)試部件。在過程化編程中,一個(gè)單元就是單個(gè)程序、函數(shù)、過程等;對(duì)于面向?qū)ο缶幊?#xff0c;最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法。
▌集成測(cè)試(Integration Test,IT)
整合測(cè)試又稱組裝測(cè)試,即對(duì)程序模塊采用一次性或增值方式組裝起來,對(duì)系統(tǒng)的接口進(jìn)行正確性檢驗(yàn)的測(cè)試工作。整合測(cè)試一般在單元測(cè)試之后、系統(tǒng)測(cè)試之前進(jìn)行。實(shí)踐表明,有時(shí)模塊雖然可以單獨(dú)工作,但是并不能保證組裝起來也可以同時(shí)工作。
▌?dòng)脩趄?yàn)收測(cè)試(User Acceptance Test,UAT)
用戶驗(yàn)收測(cè)試,也叫用戶可接受測(cè)試,一般在項(xiàng)目流程的最后階段,這時(shí)相關(guān)的產(chǎn)品經(jīng)理、業(yè)務(wù)人員、用戶或測(cè)試人員根據(jù)測(cè)試計(jì)劃和結(jié)果對(duì)系統(tǒng)進(jìn)行測(cè)試和驗(yàn)收,來決定是否接收系統(tǒng)。它是一項(xiàng)確定產(chǎn)品是否能夠滿足合同或用戶所規(guī)定需求的測(cè)試。
▌回歸測(cè)試(Regression Test)
回歸測(cè)試是軟件測(cè)試的一種,旨在檢驗(yàn)軟件原有功能在修改后是否保持完整。回歸測(cè)試主要是以檢查退化為目的的測(cè)試。退化主要指由于系統(tǒng)的版本更新,在之前的版本中正常運(yùn)行的功能變得無法正常運(yùn)行,或者緊急修正了某個(gè)問題,但引發(fā)了其他的問題的現(xiàn)象。
以上這四種測(cè)試模式,目前都可以找到適用的主流自動(dòng)化測(cè)試框架來滿足需求。單元測(cè)試和集成測(cè)試可以使用如今比較流行的JUnit、TestNG、Spock等框架進(jìn)行測(cè)試。而用戶驗(yàn)收測(cè)試與回歸測(cè)試可以使用一些api接口測(cè)試框架 REST Assured + TestNG 、mocha + chai 等。還可以使用一些針對(duì)UI界面的測(cè)試框架例如selenium和appium來編寫測(cè)試腳本。
Choerodon自動(dòng)化測(cè)試落地
在敏捷測(cè)試的支持過程中,Choerodon平臺(tái)支持了基于手動(dòng)測(cè)試的操作結(jié)構(gòu)(項(xiàng)目版本->用例文件夾,測(cè)試循環(huán)->測(cè)試階段)的主流自動(dòng)化測(cè)試框架。目前包括 mocha + chai 的api測(cè)試框架,以及 TestNG + REST Assured 的api測(cè)試框架。未來迭代中會(huì)新增支持 TestNG + selenium 的前端測(cè)試UI框架。從而完整地支持了敏捷測(cè)試中包含四個(gè)測(cè)試方面的主流框架(單元測(cè)試與集成測(cè)試在持續(xù)交付模塊中落地實(shí)現(xiàn))。
在自動(dòng)化測(cè)試的運(yùn)行模式上,我們沿用了持續(xù)交付模塊所使用的基于不同的k8s平臺(tái)定義環(huán)境,然后通過頁面修改運(yùn)行配置,達(dá)到可在不同環(huán)境中嵌入運(yùn)行測(cè)試的目的。運(yùn)行結(jié)束后將測(cè)試報(bào)告回傳并加以解析,生成測(cè)試用例、測(cè)試階段和測(cè)試執(zhí)行。并盡可能保留并重新設(shè)計(jì)了不同框架的原生html報(bào)告,給了PO多種查看測(cè)試結(jié)果的途徑,且支持定時(shí)任務(wù)等運(yùn)行方式。
類原生的 Mocha + chai 測(cè)試報(bào)告:
雖然在技術(shù)上支持了敏捷化的自動(dòng)化測(cè)試,但是在自動(dòng)化測(cè)試落地的過程中,也遇到了一些問題的。
1. 重新定義工作量
在敏捷的開發(fā)模式中,迭代規(guī)劃會(huì)議尤為重要。因?yàn)槊艚輬F(tuán)隊(duì)中沒有專門的測(cè)試人員,所以當(dāng)一個(gè)團(tuán)隊(duì)決定去實(shí)踐自動(dòng)化測(cè)試的時(shí)候,意味著相同難度的任務(wù)工作量基本變成了原來的兩倍。作為PO在規(guī)劃故事的過程中,應(yīng)該充分考慮到測(cè)試腳本的編寫工作量,并計(jì)算到成員的工作內(nèi)容當(dāng)中,從而給團(tuán)隊(duì)成員”減負(fù)“,鼓勵(lì)他們更高質(zhì)量地完成測(cè)試任務(wù)(畢竟在測(cè)試腳本上偷懶可比在業(yè)務(wù)代碼上偷懶容易多了)。
2. 鼓勵(lì)互相幫助
從敏捷測(cè)試的理論上來說,每個(gè)開發(fā)人員負(fù)責(zé)維護(hù)自己功能的測(cè)試代碼。但是在實(shí)際的迭代過程中,難免會(huì)造成任務(wù)分配有輕微失衡的情況出現(xiàn)。這種情況下應(yīng)鼓勵(lì)隊(duì)員主動(dòng)幫助其他成員分擔(dān)測(cè)試代碼維護(hù)等瑣碎任務(wù),促進(jìn)團(tuán)隊(duì)成員間的互幫互助,作為團(tuán)隊(duì)的一份子應(yīng)當(dāng)把整個(gè)項(xiàng)目當(dāng)成自己分內(nèi)的工作內(nèi)容。而不是說這個(gè)功能是”李四“寫的,事不關(guān)己高高掛起。
3. 留出足夠的測(cè)試時(shí)間
在實(shí)踐自動(dòng)化測(cè)試以后,可能在迭代結(jié)束前的測(cè)試階段會(huì)更容易測(cè)出Bug,這個(gè)時(shí)候應(yīng)比以前多預(yù)留出一段時(shí)間給團(tuán)隊(duì)成員以確保在迭代結(jié)束前可以求證全部缺陷,鼓勵(lì)團(tuán)隊(duì)成員把這個(gè)迭代發(fā)現(xiàn)的問題就在這個(gè)迭代中解決,從而使用自動(dòng)化測(cè)試提高交付質(zhì)量。
寫在最后
手動(dòng)測(cè)試和自動(dòng)化測(cè)試對(duì)于敏捷項(xiàng)目來說同等重要,人工手動(dòng)測(cè)試才是保證交付結(jié)果的最后一關(guān)。不能因?yàn)槭褂昧俗詣?dòng)化測(cè)試而忽視傳統(tǒng)測(cè)試,這兩者只是在開發(fā)的不同階段中扮演了不同的角色。
關(guān)于敏捷的自動(dòng)化測(cè)試的實(shí)踐,太多人有不同的見解,正所謂一千個(gè)觀眾眼中有一千個(gè)哈姆雷特。每個(gè)團(tuán)隊(duì)的敏捷落地都有各自的特色與道路,所以實(shí)踐出最適合自己團(tuán)隊(duì)的自動(dòng)化測(cè)試方案,提高團(tuán)隊(duì)的凝聚力與生產(chǎn)力才是敏捷的最終目的,祝大家都找到一個(gè)適合自己團(tuán)隊(duì)的敏捷方法。
關(guān)于Choerodon豬齒魚
Choerodon豬齒魚作為開源多云應(yīng)用平臺(tái),是基于Kubernetes的容器編排和管理能力,整合DevOps工具鏈、微服務(wù)和移動(dòng)應(yīng)用框架,來幫助企業(yè)實(shí)現(xiàn)敏捷化的應(yīng)用交付和自動(dòng)化的運(yùn)營(yíng)管理,同時(shí)提供IoT、支付、數(shù)據(jù)、智能洞察、企業(yè)應(yīng)用市場(chǎng)等業(yè)務(wù)組件,致力幫助企業(yè)聚焦于業(yè)務(wù),加速數(shù)字化轉(zhuǎn)型。
大家也可以通過以下社區(qū)途徑了解豬齒魚的最新動(dòng)態(tài)、產(chǎn)品特性,以及參與社區(qū)貢獻(xiàn):
- 官網(wǎng):http://choerodon.io
- 論壇:http://forum.choerodon.io
- Github:https://github.com/choerodon
- 微信公眾號(hào):Choerodon豬齒魚
- 微博:Choerodon豬齒魚
歡迎加入Choerodon豬齒魚社區(qū),共同為企業(yè)數(shù)字化服務(wù)打造一個(gè)開放的生態(tài)平臺(tái)。
總結(jié)
- 上一篇: 检查错别字在线检测系统网站,免费错别字识
- 下一篇: DIY装机之机箱(机箱相关参数)