到底誰應該對軟件開發的質量負責?

本文關鍵點:

  • 隨着軟件開發越來越追求質量,每個團隊成員都要爲質量負責。

  • 質量的定義不再僅僅有正常運行時間和可靠性,有了供用戶選擇的各個方面。

  • 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年的時間幫助團隊過渡到敏捷軟件開發環境,她專門幫助測試人員和業務人員理解他們是“整個團隊方法”的一部分角色。

查看英文原文: Who is in Charge of Quality in Software Development

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章