7個無用的測試指標

2021-08-19 13:06:28 字數 2814 閱讀 6097

原文:

譯者:夜風輕揚

譯者注:平時在測試工作中恪守的那些指標真的都是金科玉律麼?請讀下文:

軟體測試度量是一種通過檢測軟體測試過程的質量和有效性來評估軟體開發的量化方法。開發團隊使用測試指標來跟蹤開發過程各個階段的軟體質量。測試指標對於管理層也很有用,它可以讓公司股東評估軟體開發團隊的效率。

測試指標應該始終是有意義和可執行的。問題是有些測試指標無法達到這一目標。許多指標都是誤導,有些只是無價值的指標,而有些則毫無意義。

下面這些無用的測試指標的例子可以幫助你更好地理解測試指標是否提供了所需的洞察力。

這是乙個糟糕的度量標準,原因很簡單,它沒有告訴你測試用例測試的是什麼。

這個度量標準的最初想法是,我們開發的測試用例越多,我們的測試就越全面。實際上,許多測試用例根本沒有對測試覆蓋率做出貢獻。許多測試套包含已棄用的測試,這些測試不再與軟體的新版本相關。測試用例的設計效率不高,因此它們會重疊,並且本質上是測試相同的功能。

在這些和許多其他的情況下,擁有更多的測試用例並不是一件好事,這可能只是代表乙個臃腫且過於複雜的測試套。

這是乙個糟糕度量標準的原因之一在於,度量每乙個測試人員的任何東西都不是乙個好的實踐——它鼓勵過度的競爭,並且破壞協作的的團隊工作,而團隊合作在敏捷組織中得到了強烈的鼓勵。

有些公司甚至會根據每個軟體測試人員發現的缺陷來決定員工報酬,這對團隊的目標尤其不利,因為它往往會抑制資訊的共享,並促進「每個人都只為自己」的態度。

此外,乙個員工可能在測試乙個穩定的軟體特性,而另乙個測試乙個有缺陷的、不穩定的特性。在這個度量標準下,後者會被認為效能更好,因為他發現了更多的bug,這是很愚蠢的的。

使用百分比通率作為度量指標是乙個壞主意,因為在你的軟體開發團隊中不鼓勵的行為很容易操縱這種指標。

例如,測試團隊可能會專注於執行更容易通過的測試,從而提高通過率。或者,團隊可以將乙個長時間的測試分解成許多小的測試,人為地提高百分比的通過率。換句話說,這個指標變化無常,易於操縱。

**覆蓋是另乙個常用的度量指標,常常被錯誤地使用。**覆蓋率是由單元測試覆蓋的**行百分比。**覆蓋可以給你乙個完全錯誤的實際測試覆蓋圖,原因有兩個:

首先,單元測試並不是對你軟體的全面測試。它們只是測試**中特定的微元件是否能夠正常工作。即使你的車裡的所有部件都經過了測試和完美的工作,也不能保證汽車會啟動。

其次,這個指針對單元測試質量沒有任何意義。乙個單元測試可以包含優雅設計的**,測試乙個方法或函式的所有相關輸入和輸出。或者,它可能是一團亂麻,只測試其中的一些功能,或者其他無關的或已棄用的功能。用越來越多的草率的單元測試來覆蓋**對任何人都沒有好處。

在許多情況下,自動執行的測試用例百分比是乙個無價值的度量標準。如果自動化測試不像舊的手工測試那樣測試功能,那麼越來越多的自動化測試是沒有意義的。或者如果軟體變化太快,自動化測試很快就會崩潰,需要完全重構。

被這個指標掩蓋的另乙個方面是測試持續時間。新增越來越多的selenium測試,進行自動化ui測試是乙個好主意。但是執行這些測試可以使構建時間從幾分鐘增加到幾小時。在當前頻繁發布版本的現實中,進行這樣的測試需要非常謹慎,對於需要匆忙進行交付的團隊就只能跳過了。

這可能是軟體質量的最古老的度量標準,它早在上世紀60年代就在ibm內部使用過。改度量指標為乙個bug貼上乙個**標籤——識別乙個bug、修復它、並驗證它的成本。這個共識就是:在開發周期的早期修復bug要便宜得多,而在測試後期,或者在生產過程中,修復它們是非常昂貴的。

在開發周期的不同階段度量每個缺陷的成本是乙個很好的想法。然而,一些團隊度量每個缺陷的成本,以使軟體維護更有效。

主要問題是:對於軟體的質量和使用者的經驗,缺陷有不同的含義。有些缺陷是「化妝品」,對於軟體的使用者幾乎沒什麼影響。而其他的一些缺陷,如安全問題,如果不解決的話可能會帶來災難性後果。

乙個軟體團隊可能會把注意了放在那些影響不大的缺陷上,大幅降低每個缺陷的成本,但是最終會損壞軟體的質量。

缺陷密度是指軟體中檢測到的得到確認的缺陷數量。通常認為較低的缺陷密度等同於較低的軟體質量,但這並不是真的。

缺陷密度的乙個問題是,缺陷的數量取決於測試是如何構造和報告的,以及軟體測試人員的技能。某個軟體問題可以被當成乙個bug、或者是該問題不同方面的15個bug,或者根本沒有bug報告,因為測試人員沒有發現它。因此,對於相同的軟體,缺陷密度可能會有很大的變化。

在當今的測試世界中,有三個挑戰與測試指標密切相關:

找到一種同時提高測試質量和速度的方法。持續測試是一種實踐,它有助於提高軟體質量,同時與快速迭代保持同步。在持續的測試環境中,度量標準是至關重要的,以確保軟體質量真實的提高,而不是在迭代之間被侵蝕。

防止未經測試的**更改流入到生產環節中。沒有軟體可以真正做到百分百的測試覆蓋率(即使如上面提到的那樣做到100%的**覆蓋,這也不一樣。)傳統的通過/失敗度量不會告訴你最近的**更改是否經過了測試。如果沒經過測試,度量標準不會揭示發布這部分軟體所固有的風險。

收集用於分析的質量指標出處單一。有大量的工具可以提供qa指示。但是它們都比較典型的集中與度量測試團隊的過程和工作。其中的某些指標會如上述所說的那樣不確定或者誤導。今天的指標不能提供足夠的、有意義的、顯示軟體質量趨勢的資訊。

真正提供有用資訊,並幫助你了解軟體質量的真實度量標準是很難得到的。

新的平台,如sealights,乙個在敏捷環境中測量真實測試覆蓋率的平台,通過提供更有用的測試指標和更具有代表性的軟體質量來改變測試場景。具體地說,一種跨越所有型別自動和手工測試的對於測試覆蓋的全面度量方法;乙個「聖杯」度量,它揭示了每個敏捷版本中固有的風險。

隨著敏捷的出現,軟體開發已經成長起來,而測試也是如此,但是度量標準遠遠落在後面。最重要的是識別、評估和實踐真實的度量標準能夠幫助敏捷團隊開發出更好的軟體。

軟體開發測試中七個無用的指標,看完別再受誤導了

軟體測試度量是一種通過檢測軟體測試過程的質量和有效性來評估軟體開發的量化方法。開發團隊使用測試指標來跟蹤開發過程各個階段的軟體質量。測試指標對於管理層也很有用,它可以讓公司股東評估軟體開發團隊的效率。測試指標應該始終是有意義和可執行的。問題是有些測試指標無法達到這一目標。許多指標都是誤導,有些只是無...

無用的自動化測試

自動化測試,特別是ui級的自動化測試是一件費力而不討好的事情。自動化測試使得測試人員疲於應付,朝不顧夕,如坐針氈,苟延殘喘。ui級的自動化測試看起來很美好,就像罌粟,如果你經不住 冒然嘗試,那麼後果很嚴重,下場很慘淡。也許這個世界上就不應該出現自動化測試這個東西,起碼在中國不應該出現,因為這個是無效...

11個無用而有趣的Linux終端彩蛋

這裡有一些很酷的linux終端彩蛋,其中的每乙個看上去並沒有實際用途,但很有趣。我剛才對電腦做了什麼?你可能這樣問自己。一定是美妙的事情吧。現在,在sudo命令提示提示下輸出錯誤的口令,你的電腦就會指責你。我最喜歡的一句 聽好了,煎餅一樣的腦子,我沒有時間聽你胡說八道了。你看過這張截圖?那就是執行a...