80% 的軟體缺陷常常生存在軟體 20% 的空間裡。這個原則告訴我們,如果你想使軟體測試有效地話,記住常常光臨其高危多發 “ 地段 ” 。在那裡發現軟體缺陷的可能性會大的多。這一原則對於軟體測試人員提高測試效率及缺陷發現率有著重大的意義。聰明的測試人員會根據這個原則很快找出較多的缺陷而愚蠢的測試人員卻仍在漫無目的地到處搜尋。
80-20 原則的另外一種情況是,我們在系統分析、系統設計、系統實現階段的複審,測試工作中能夠發現和避免 80% 的軟體缺陷,此後的系統測試能夠協助我們找出剩餘缺陷中的 80% ,最後的 5% 的軟體缺陷可能只有在系統交付使用後使用者經過大範圍、長時間使用後才會曝露出來。因為軟體測試只能夠保證儘可能多地發現軟體缺陷,卻無法保證能夠發現所有的軟體缺陷。
80-20 原則還能反映到軟體測試的自動化方面上來,實踐證明 80% 的軟體缺陷可以藉助人工測試而發現, 20% 的軟體缺陷可以藉助自動化測試能夠得以發現。由於這二者間具有交叉的部分,因此尚有 5% 左右的軟體缺陷需要通過其他方式進行發現和修正。
為效益而測試
為什麼我們要實施軟體測試,是為了提高項目的品質效益最終以提高項目的總體效益。為此我們不難得出我們在實施軟體測試應該掌握的度。軟體測試應該在軟體測試成本和軟體品質效益兩者間找到一個平衡點。這個平衡點就是我們在實施軟體測試時應該遵守的度。單方面的追求都必然損害軟體測試存在的價值和意義。一般說來,在軟體測試中我們應該盡量地保持軟體測試簡單性,切勿將軟體測試過度複雜化,拿物理學家愛因斯坦的話說就是: Keep it simple but not too simple 。
缺陷的必然性
軟體測試中,由於錯誤的關聯性,並不是所有的軟體缺陷都能夠得以修複。某些軟體缺陷雖然能夠得以修複但在修複的過程中我們會難免引入新的軟體缺陷。很多軟體缺陷之間是相互矛盾的,一個矛盾的消失必然會引發另外一個矛盾的產生。比如我們在解決通用性的缺陷後往往會帶來執行效率上的缺陷。更何況在缺陷的修複過程中,我們常常還會受時間、成本等方面的限制因此無法有效、完整地修複所有的軟體缺陷。因此評估軟體缺陷的重要度、影響範圍,選擇一個折中的方案或是從非軟體的因素(比如提升硬體效能)考慮軟體缺陷成為我們在面對軟體缺陷時一個必須直面的事實。
軟體測試必須有預期結果
沒有預期結果的測試是不可理喻的。軟體缺陷是經過對比而得出來的。這正如沒有標準無法進行度量一樣。如果我們事先不知道或是無法肯定預期的結果,我們必然無法瞭解測試正確性。這很容易然人感覺如盲人摸象一般,不少測試人員常常憑藉自身的感覺去評判軟體缺陷的發生,其結果往往是把似是而非的東西作為正確的結果來判斷,因此常常出現誤測的現象。
軟體測試的意義 - 事後分析
軟體測試的目的單單是發現缺陷這麼簡單嗎?如果是 “ 是 ” 的話,我敢保證,類似的軟體缺陷在下一次新項目的軟體測試中還會發生。古語說得好, “ 不知道曆史的人必然會重蹈覆轍 ” 。沒有對軟體測試結果進行認真的分析,我們就無法瞭解缺陷發生的原因和應對措施,結果是我們不得不耗費的大量的人力和物力來再次尋找軟體缺陷。很可惜,目前大多測試團隊都沒有意識到這一點,測試報告中缺乏測試結果分析這一環節。
結論:
軟體測試是一個需要 “ 自覺 ” 的過程,作為一個測試人員,遇事沉著,把持尺度,從根本上應對軟體測試有著正確的認識,希望本文對讀者對軟體測試的認識有所協助