促進(jìn)測試工作的工程實(shí)踐
譯文【51CTO.com快譯】測試實(shí)踐在向左右移動,改變了完成軟件工程的方式。除了本文介紹的多種測試類型外,測試驅(qū)動開發(fā)(TDD)、漸進(jìn)式工程和混沌工程如今也被視為測試。
TDD
由于可節(jié)省時間,TDD在敏捷和DevOps團(tuán)隊(duì)中大受歡迎。以用例和用戶故事的形式根據(jù)需求編寫測試,然后編寫代碼以通過那些測試。TDD進(jìn)一步倡導(dǎo)構(gòu)建較小的代碼段這一概念,代碼質(zhì)量方面的小成功積累成大成功。TDD立足于極限編程(XP)這個舊概念。
Gartner的高級主管分析師Thomas Murphy說:“測試驅(qū)動開發(fā)從一開始有助于提高質(zhì)量,并[幫助開發(fā)人員]在需要編寫代碼之前發(fā)現(xiàn)需求方面的瑕疵。”
健康福利公司Anthem的質(zhì)量保證架構(gòu)師Todd Lemmonds表示,由于其團(tuán)隊(duì)在過渡階段進(jìn)退不得,在這方面遇到過困難。
Lemmonds說:“TDD是朝敏捷方向發(fā)展的第一步。我向人們解釋,您基本上將所有精力都集中在根據(jù)這個故事[驗(yàn)證]這些驗(yàn)收標(biāo)準(zhǔn)上。然后他們想,‘那么,我需要創(chuàng)建并完成哪些測試,才能進(jìn)入到下一個階段?他們在驗(yàn)證技術(shù)規(guī)范,而[驗(yàn)收測試驅(qū)動開發(fā)]在驗(yàn)證業(yè)務(wù)規(guī)范,這就是到頭來向利益相關(guān)者展示的內(nèi)容。”
漸進(jìn)式軟件交付
漸進(jìn)式軟件交付常因咬文嚼字而被錯誤定義。其想法是,如果測試向前發(fā)展(變得更現(xiàn)代或更成熟),那么它就是“漸進(jìn)式”。漸進(jìn)式交付是擁有CI/CD流水線的敏捷和DevOps團(tuán)隊(duì)用來實(shí)現(xiàn)更快速地交付用戶真正喜歡的高質(zhì)量應(yīng)用程序這一使命的工具。它可能涉及眾多測試和部署,包括使用功能標(biāo)記、藍(lán)綠部署和金絲雀部署以及可觀察性的A/B測試和多變量測試。“漸進(jìn)式”部分向逐漸擴(kuò)大的受眾群體推出某項(xiàng)功能。
數(shù)字化轉(zhuǎn)型代理機(jī)構(gòu)SPR的測試服務(wù)執(zhí)行主管Nancy Kastl說:“漸進(jìn)式軟件交付是一種有效的策略,可以降低產(chǎn)品變更給業(yè)務(wù)運(yùn)營帶來的風(fēng)險(xiǎn)。目的是借鑒試點(diǎn)小組的經(jīng)驗(yàn),迅速解決可能出現(xiàn)的任何問題,并針對全面部署計(jì)劃改進(jìn)措施。”
Kastl認(rèn)為的其他好處包括如下:
- 為業(yè)務(wù)用戶驗(yàn)證權(quán)限設(shè)置的正確性
- 發(fā)現(xiàn)測試活動期間未發(fā)現(xiàn)的業(yè)務(wù)工作流程問題或數(shù)據(jù)不正確
- 軟件產(chǎn)品方面進(jìn)行有效培訓(xùn)
- 能夠在首次使用產(chǎn)品期間提供響應(yīng)支持
- 能夠在包括服務(wù)器和網(wǎng)絡(luò)在內(nèi)的實(shí)際生產(chǎn)條件下監(jiān)視軟件產(chǎn)品的性能和穩(wěn)定性
Kastl說:“跨國公司擁有龐大的軟件產(chǎn)品用戶群,并按國家或地區(qū)進(jìn)行定制配置,常常采用這種方法來計(jì)劃部署軟件產(chǎn)品。”
混沌工程
混沌工程實(shí)際上是測試混亂(基礎(chǔ)架構(gòu)、網(wǎng)絡(luò)和應(yīng)用程序故障)的影響,這關(guān)系到應(yīng)用程序的彈性。這個想法起源于Netflix,最初是一項(xiàng)名為“Chaos Monkey”的計(jì)劃:隨機(jī)選擇一臺服務(wù)器并將其禁用。最終,Netflix創(chuàng)建了一整套開源工具(名為Simian Army),以測試更多類型的故障,比如網(wǎng)絡(luò)故障或AWS區(qū)域或可用區(qū)服務(wù)下降。
Simian Army項(xiàng)目不再被積極維護(hù),但它的一些功能已移至其他Netflix項(xiàng)目?;煦绻こ萄永m(xù)了下來。實(shí)際上,Gartner發(fā)現(xiàn)它備受關(guān)注。
Gartner的Murphy說:“現(xiàn)在您開始看到幾個商業(yè)實(shí)施?;煦绻こ滔敫鼜V泛地被接受,您常常需要更商業(yè)的東西。倒不是需要商業(yè)軟件,而是圍繞它的社區(qū),那樣如果我需要某個東西,有人可以幫助我了解如何安全地做。”
混沌工程不是團(tuán)隊(duì)突然可以做的。通常需要幾年的時間,因?yàn)樗麄円蛛A段進(jìn)行實(shí)驗(yàn),比如實(shí)驗(yàn)室測試、應(yīng)用程序測試和預(yù)生產(chǎn)。
技術(shù)咨詢公司DMW Group的工程主管Chris Lewis表示,他公司嘗試過小規(guī)模的混沌工程,并將這個概念介紹給了DMW相當(dāng)保守的客戶。
Lewis說:“我們通過試點(diǎn)介紹混沌工程,表明它可以用來深入非功能性需求,表明需求實(shí)際上得到了滿足。我認(rèn)為很少有人愿意在生產(chǎn)環(huán)境中使用混沌工程,因?yàn)樗麄內(nèi)糟枫凡话?。那些客戶中?dān)任領(lǐng)導(dǎo)職務(wù)的人出身極傳統(tǒng)的背景。”
混沌工程在數(shù)字顛覆者和小型創(chuàng)新公司中更為常見,它們利用最新的技術(shù)和方法來脫穎而出。
H2:謹(jǐn)慎行事
組織實(shí)際準(zhǔn)備這么做時,運(yùn)用更多的測試技術(shù)大有益處。一個常見的錯誤是過早步子邁得過大,隨后未能獲得預(yù)期的效益。定制軟件開發(fā)公司Narwal的創(chuàng)始人兼首席執(zhí)行官Raj Kanuparthi表示,在一些情況下,人們要現(xiàn)實(shí)點(diǎn)。
Tricentis的大力支持者Kanuparthi說:“如果我還沒有落實(shí)好任何東西,那么我做好基本面,制定路線圖,然后逐步使用工具。您可以迅速來做,但要知道如何著手處理。好多人一開始什么方面都想做,卻沒有在任何一方面取得實(shí)質(zhì)性的進(jìn)步,于是就說‘這不行’。”
原文標(biāo)題:Engineering practices that advance testing,作者:Lisa Morgan
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】