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