本文關鍵點:
-
隨着軟件開發越來越追求質量,每個團隊成員都要爲質量負責。
-
質量的定義不再僅僅有正常運行時間和可靠性,有了供用戶選擇的各個方面。
-
David A. Garvin 1984年的《定義質量的五種方法》將質量定義爲卓越的質量、基於價值的質量、基於用戶的質量、基於產品的質量和基於製造的質量。
-
除了基於製造的質量之外,大多數類型的質量是不可測量的,但是團隊又必須要考慮它,並且常常要直接與用戶一起來做這件事。
-
行爲驅動的設計(BDD)是一種在編寫代碼之前規劃用戶旅程和測試用例的方法。
敏捷軟件開發和DevOps除了強調用戶體驗,還讓我們關注產品背後的人。但是這些過程重要嗎?或者只是爲了證明方法是不是正確?倫敦P3X(或People, Product, and Process Exchange )非常關注這三個P的交集,也許最後一個X是最有趣的,因爲它凝聚了更多的縮寫,比如測試驅動開發(TDD)、行爲驅動開發(BDD)、持續交付(CD)、領域驅動開發(DDD)等等,以幫助團隊審視如何系統性地建立更好的系統。
Janet Gregory 是敏捷測試協會的聯合創始人,近期她完成了一場主題演講,主題是關於追求軟件質量的過程,在演講結尾,她問大家是否感受到敏捷團隊的魔力,如果能感受到他們在傳遞質量意識,舉手示意。結果整個房間裏,大概只有幾個敏捷實踐者舉起了手。
自敏捷宣言簽署以來,已經走過了這17個年頭,我們是怎樣過來的,爲什麼仍有一些人看它如鏡花水月一般?也許我們仍然沒有進行正確的交流,也許我們沒有和合適的人在一起協作,或者我們的過程中根本就不包括交流。
儘管這份宣言將個人和交互置於流程和工具之上,但流程中的某些內容也是以人爲本的。也許通過審視我們的過程,我們可以更好地響應變化,增加協作,減少bug,所有這些都是爲了儘早和經常地滿足客戶。Gregory拿出一個世代相傳的質量方法,將其應用於現代敏捷軟件團隊,希望每個人都能對發佈的內容有主人翁的精神。
究竟什麼是“質量”
Gregory指出,必須先爲質量給出主觀定義。她引用David A. Garvin在1984年提出的“定義質量的五種方法”,以這種方法開始爲質量下定義:
-
卓越的質量:氛圍,天生的卓越氣質,舉世公認的成就
-
基於價值的質量:價格和成本
-
基於用戶的質量:對某些人(一考慮質量大多數人就會想到的那些人)的價值
-
基於產品的質量:你的用戶在尋求什麼?(比如你提供的牛奶)
-
基於製造的質量:實踐、過程、標準、要求、規範,我們做得對麼?
Gregory將每個類別的重要性進行了可視化,並將其應用到現代敏捷環境中。如下圖所示,從最必要的中心向外輻射。
基於製造的質量
首先,有件事得順利開展下去,因此基於製造的質量必須在第一位。
Gregory說,這與測試驅動設計有關,因爲“通過創建清晰的代碼,可以顯著減少返工”。
讓我們第一次就把事情做對,使我們不會有其他的缺陷,可以滿懷信心地發佈。
TDD,這是一個在軟件測試之前先設計自動化測試的實踐,它倒推迫使軟件解耦,是製造質量的重要組成部分。Gregory引用了一項研究成果,該研究指出,與不進行TDD的團隊相比,進行TDD的團隊會少60%到90%的缺陷,但是TDD平均用時要多花15%到30%。
許多團隊都在面對這種質量和速度的權衡。
“也許PO(產品負責人)說,與提高質量相比,我寧願你加入新功能。是誰,正在做出這些決定?”
Gregory說,除了TDD,基於製造的流程還包括:
-
針對可維護性的編碼
-
針對錯誤日誌的監控
-
持續集成
-
在故事上開展探索式測試
-
驗證產品是否符合規格的測試
-
爲快速反饋而創建自動化測試
-
平臺的靜態分析
-
明確定義完成標準
最後,她說,“像DevOps之類的實踐是在設法在向客戶發佈產品時降低給客戶帶來的風險。”
基於產品的質量
簡單來說,如果基於製造的質量是爲了確保某些事正常開展,那麼基於產品的質量則是爲了確保產品按預期正常工作。例如,我們希望付錢追求更高的品質,但如果雖然某樣東西壞了,但它的成本很低甚至爲零,我們也會更寬容。如果有例外,那可能是我們通常期望的又能免費而又能工作良好的應用程序。
Gregory指出,什麼是基於產品的質量,這取決於目標受衆。會計人員會希望鍵盤托盤能從當今大多數筆記本電腦中分離出來。
這其實是在問這樣的問題:
-
我們打造的是正確的東西嗎?
-
我們加入了我們想要的功能嗎?
這包括:
-
驗收測試驅動開發(ATDD),有時也稱爲故事測試驅動開發,它是將關鍵客戶引入到TDD階段
-
安全性測試
-
Bug bashes——就像一個團隊黑客馬拉松,尋找儘可能多的Bug
-
持續交付
-
特徵的探索式測試
-
Beta版本
-
性能測試
-
負載測試
基於用戶的質量
對於這個觀點,存在的分歧最大。按照Gregory 的說法是:“人各有所好,不同的人有不同的選擇。他們有不同的需求。如果我們想讓顧客選擇,就讓顧客滿意。”
但別忘了,她接着說,“我們假設了一個大前提,那就是消費者掌握足夠的信息,他們可以做出一個合格的決定。”
她提到一款曾經使用過的應用,自己覺得它非常不友好。事實證明,用戶喜歡它的原因,是因爲它完全遵循了他們的工作方式。她並不在那個領域工作。所有都是爲了滿足特定用戶的特定用例。
基於價值的質量
這很簡單,這就是人們願意爲之買單的東西。價值很難判斷,如果不與潛在客戶交流,基本上不可能做出判斷。
基於價值的質量可以通過以下幾種方法進行評估:
-
有效性
-
效率
-
舒適度
-
信心
-
複雜性
-
環境適應性
卓越的質量
最後是最難以評估的質量——卓越。Gregory說,這是因爲情感是最難度量的,這種評估要把卓越的質量與藝術性、參與度和客戶忠誠度結合起來。
我們如何度量軟件的質量?
總的來說,如果您接受Garvin的質量級別,那麼軟件質量的大部分內容都很難度量。她引用了Isabel Evans 在《軟件質量度量》一書中的說法。基於製造的質量有很多例子:
-
生產環境中的缺陷數量
-
生產環境中的缺陷的嚴重性
-
從上次發佈到生產環境至今的天數
-
自上次發佈生產環境的X天內獲得的新支持票數
-
構建發射源總保持綠色
-
沒有古怪的自動化測試(隨機性的失敗)
-
代碼庫的靜態代碼分析結果是健康的
-
返工率很低
-
bug不會重複出現
你還可以做做用戶滿意度調查,以這種形式度量基於用戶的質量。
然而,你無法真正度量基於產品的、基於價值的或卓越的質量。但是,您可以討論和評估質量的所有五個層次。測試是度量質量的重要手段,但Gregory提醒說,產品團隊不能否定在彼此之間、與用戶以及與競爭對手討論質量的價值。
當然,團隊需要在希望避免錯誤和追求速度之間找到平衡。
整個團隊對質量負責
很清楚的一點是,質量保證不僅僅是測試部門的責任,開發人員不能把代碼丟給他們就算了,或者質量保證這種叫法本身就有點問題。
整個團隊都在把控質量
“如果你的組織、你的公司以質量爲出發點,很可能就會取得成功,因爲其他一切都很到位。一切都很正常。但是如果你們一開始認爲速度最重要,不關注質量,那麼就很有可能長期進行大量的返工,會出現很多不可維護的代碼,質量將更進一步地下降”Gregory 說。
但她並沒有提供一個追求品質的完美祕方。
“不管你用定性的還是定量的,那沒所謂,但你得問問自己,你在尋求什麼,它能讓你滿懷信心地發佈嗎?”Gregory說。
“度量過程的質量就是度量產品的質量嗎?”她引用了《BDD Book 1: Discovery 》的合著者Seb Rose的話:“當度量成爲目標時,那麼它就不再是好的度量了。”
Gregory說:“無論你如何度量它,它都應該引發一場討論,看看你們到底需要什麼。”
她繼續說:“團隊掌控着質量,但你們必須考慮得更長遠一些。過程中的質量和實踐中的質量。
你的團隊的能力,你如何交付軟件的能力。
她最後說,在這個方向上展開每次對話時,如果大家都從試圖解決問題開始,那是最好的了。
Gregory說:“讓我們將質量管理納入我們的流程,並學會談論我們做什麼。”
關於作者
Jennifer Riggins目前居住在倫敦,是一名科技故事講述者和作家,在故事裏,數字轉型與文化交匯,希望能讓世界變得更美好。你可以在推特上關注她@jkriggins。
敏捷測試協會的聯合創始人Janet Gregory花了14年的時間幫助團隊過渡到敏捷軟件開發環境,她專門幫助測試人員和業務人員理解他們是“整個團隊方法”的一部分角色。