持续测试的益处
自從2006年Unruly公司成立以來,其團(tuán)隊就開始采用極限敏捷(XP)實踐并沿用至今。Unruly的軟件開發(fā)項目是由多個小型團(tuán)隊完成的,沒有設(shè)立專職的測試人員。這些團(tuán)隊在開發(fā)代碼時遵從測試優(yōu)先原則,并且投入了大量的精力以實現(xiàn)能夠在真實環(huán)境運行的自動化檢測,而不依賴于在預(yù)發(fā)布環(huán)境中進(jìn)行手工測試。
\\Rachel Davies是Unruly的敏捷教練,她在敏捷測試日2015年荷蘭大會上進(jìn)行了關(guān)于持續(xù)測試的主題演講。InfoQ有幸對Davies進(jìn)行了采訪,內(nèi)容涉及以持續(xù)化方式進(jìn)行測試的重要性、這種方式是如何演變的,以及它為Unruly所帶來的商業(yè)優(yōu)勢。
\\InfoQ:能否請你解釋一下,為什么自動化測試對你的團(tuán)隊如此重要?
\\\Davies:它的重要性是因為自動化測試比起手工檢測軟件速度更快、也更加可靠。手工測試是一件很煩人的工作。我們希望做到,在銷售人員提出某些產(chǎn)品變更需求的當(dāng)天就能夠立即部署。為了實現(xiàn)這一點,我們對部署腳本進(jìn)行了自動化,并且通過腳本運行自動測試。機(jī)器比人類運行重復(fù)性步驟要快得多,因此自動化能夠幫助我們更快地交付有價值的解決方案。
\\\InfoQ:你能否為我們舉一些例子,讓我們了解自動化測試是如何幫助Unruly的團(tuán)隊交付商業(yè)價值的?
\\\Davies:銷售人員可以對運行中的系統(tǒng)提出某種變更的需求,而我們能夠在幾個小時、而不是幾天內(nèi)讓這個變更生效。我們有一個與眾不同的地方,就是我們沒有搭建任何臨時的預(yù)發(fā)布環(huán)境,強(qiáng)制代碼必須在這些環(huán)境上進(jìn)行檢驗。我們的做法是直接將變更發(fā)布到生產(chǎn)環(huán)境中,因為這樣可以更快地交付價值。雖然新的代碼直接部署了到新的生產(chǎn)環(huán)境中,但我們可以通過某些手段讓在線系統(tǒng)的用戶不會直接看到這些變更。我們的做法是使用多個可部署的小步驟,通過自動化測試檢測行為是否符合我們的需求。如果在測試中出現(xiàn)了速度緩慢或是經(jīng)常出錯的情況,那么在團(tuán)隊的回顧會議中會進(jìn)行討論。
\\\InfoQ:經(jīng)過這么多年對持續(xù)測試的投入,你覺得為什么值得這樣做,持續(xù)測試能夠為你帶來什么益處?
\\\Davies:通過采取測試優(yōu)先的開發(fā)方式,我們實現(xiàn)了良好的代碼覆蓋率,以幫助我們檢測產(chǎn)品的特性是否按期望的方式工作。如果有任何變更破壞了現(xiàn)有的自動化測試,我們能夠迅速地發(fā)現(xiàn)問題。通過對在線服務(wù)進(jìn)行自動化監(jiān)控,也能夠幫助我們指出是否出現(xiàn)了哪種我們沒有預(yù)料到的情況。以測試驅(qū)動我們的產(chǎn)品開發(fā),這種方式也幫助我們團(tuán)隊專注于所需交付的價值,并不斷發(fā)展前進(jìn)。
\\\InfoQ:在敏捷測試日荷蘭大會上,你談到了在生產(chǎn)環(huán)境中運行某些持續(xù)性的檢測以進(jìn)行持續(xù)測試。你能否描述一下這種方式是如何實現(xiàn)的?
\\\Davies:我們配置了Nagios警報系統(tǒng),它會根據(jù)在線服務(wù)的不同情況對團(tuán)隊發(fā)出通知。如果出現(xiàn)問題,我們將通過短信方式獲得通知。我們也在開發(fā)團(tuán)隊的區(qū)域擺放了幾臺大屏幕,以顯示我們的在線系統(tǒng)的軟件負(fù)載及性能。也許你會有興趣讀一下我們的開發(fā)者所寫的一個博客,其中提到了監(jiān)控檢測中的壞味道。
\\\InfoQ:你能否詳細(xì)闡述一下自動化測試這幾年間在Unruly是如何演變的嗎?
\\\Davies:公司是于2006年成立的,我們當(dāng)時就采用了XP實踐當(dāng)中的TDD,因此從一開始測試就是自動化的。經(jīng)過幾年的發(fā)展,我們必須將這些測試擴(kuò)展到瀏覽器與設(shè)備測試上(因為瀏覽器和移動平臺的新功能也在不斷涌現(xiàn))。產(chǎn)品的功能也擴(kuò)展了,并且在技術(shù)上產(chǎn)生了很大的轉(zhuǎn)變,轉(zhuǎn)為能夠適應(yīng)桌面電腦、平板和移動設(shè)備的“響應(yīng)式”網(wǎng)站。而在2006時平板電腦并非我們所考慮支持的設(shè)備。
\\我們并沒有采用讓非技術(shù)人員也能夠閱讀的BDD風(fēng)格的測試,這是因為我們早先在使用FiTnesse進(jìn)行自動化驗收測試時的體驗很糟糕。我們的開發(fā)者直接與項目干系人進(jìn)行對話,而不是業(yè)務(wù)分析師。所有的測試都是由開發(fā)者使用與應(yīng)用代碼相同的編程語言進(jìn)行編寫和維護(hù)的,因此使用示例型BDD的風(fēng)格對于我們來說沒有多少益處。
\\\InfoQ:你在演講中提到在測試中使用了chaos monkeys技術(shù),你是否詳細(xì)說明一下?
\\\Davies:這一點是受到Netflix的基礎(chǔ)設(shè)施chaos monkeys的啟發(fā),因此我們也開發(fā)了特定于我們領(lǐng)域的“monkeys”,在生產(chǎn)環(huán)境中的應(yīng)用級別注入一些潛在的錯誤,例如在對于延遲非常敏感的應(yīng)用中產(chǎn)生服務(wù)無響應(yīng)的錯誤。這種方式能夠幫助我們找到并修復(fù)那些在測試環(huán)境中不會出現(xiàn)的問題。我們的一位開發(fā)者Alex Wilson在一篇博客帖子中就提到了如何在生產(chǎn)環(huán)境中注入應(yīng)用級的錯誤。
\\\InfoQ:有沒有什么新的測試技術(shù)是看起來很有前途的,并且你們團(tuán)隊也打算嘗試的?
\\\Davies:我們或許能夠在手工探索性測試方面投入更多時間。對于這種測試,經(jīng)典的定義是“同時進(jìn)行測試設(shè)計與測試執(zhí)行,同時進(jìn)一步學(xué)習(xí)系統(tǒng)”,這一定義來自于由Cem Kaner、James Bach與Bret Pettichord在2002年共同出版的名作《軟件測試經(jīng)驗與教訓(xùn)》(Lessons Learned in Software Testing)。這種方式與自動化檢測不同,而是積極地探索系統(tǒng)的各種行為,在不使用腳本的情況下學(xué)習(xí)系統(tǒng)會表現(xiàn)出哪些未預(yù)料的行為。
\\\InfoQ:如果有其它組織打算實施持續(xù)測試,你能否為他們提供些建議?
\\\Davies:首先將所有的回歸測試都實現(xiàn)自動化,并且不要將注意力分散到BDD上。從基礎(chǔ)的健康狀況檢測開始自動化,例如冒煙測試,并逐漸改善測試覆蓋率。從最重要的業(yè)務(wù)邏輯,或是最容易出錯的地方開始。
\\\查看英文原文:Benefits of Continuous Testing
總結(jié)
- 上一篇: (转)Nginx反向代理设置 从80端口
- 下一篇: 双11电商手机大战盘点,大神荣耀各成势力