• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 軟件測試的本質是什么?(2)

    發表于:2013-08-16來源:Csdn作者:fnngj點擊數: 標簽:本質
    對于一個免費開放的郵箱來說,會有成千上萬的用戶每天都有用戶注冊登錄,如果有用戶遇到了上面的問題呢?程序該如何處理?當然,對于一個郵箱系統,

      對于一個免費開放的郵箱來說,會有成千上萬的用戶每天都有用戶注冊登錄,如果有用戶遇到了上面的問題呢?程序該如何處理?當然,對于一個郵箱系統,你可能不以為然,他的修復速度與成本都不算高,假如,這個用戶有非常保密且重要的郵件,結果被別一個用戶登錄查看了呢?假如這不是一個郵箱系統,而是一個銀行系統呢?那有可能用戶的財產就會受到損失。(相比較而言,互聯網產品(B/S架構)比客戶端產品(C/S架構)的修復速度與成本要低)

      這樣說有些聳人聽聞,又不能全部測試,不測試又會漏掉軟件缺陷。軟件終歸要分布的,此時測試就要停止,但是如果這么快停止下來,還有測試沒做。怎么辦?

      如上圖所示,縱軸是表示缺陷的數量,橫軸表示測試工作量。缺陷的數量隨著測試工作的進展在不段減少;但測試有費用也隨著工作量在不段提高。

      也就是說要想發現更多的缺陷就必須投入更多費用(這個費用包括時間、人才,物力), 對一個新項目,我們前提可能1天發現10個缺陷。到后面可能10天發現1個缺陷,或者發現一個缺陷所需要的時間更長,我們有必要是去為發現一個缺陷而繼續增加費用么?本來就不存在完美的產品,我們的目標是找到最合適的測試量,使投入(測試費用)與回報(修復缺陷數)達到最優。

      測試無法顯示潛在的軟件缺陷

      仔細理解一下這個標題。當測試人員對一個軟件進行測試時,他發現了很多缺陷,功能的,界面的,兼容性能。然后,測試人員可以好不憂郁的說,這個軟件存在缺陷。

      當又測試人員又對另一個軟件進行測試時,他用盡各種測試方法,測遍所有功能(當然,這是不可能,上面已經說了無法完全測試),他投入了大量的時間和精力卻最終沒有發現一個缺陷。那么測試人員不能保證這個軟件是沒缺陷的,當然,他更無法去報告這些潛伏的缺陷。也就是說測試人員只能報告已經發現的缺陷,對于未知的誰也不能肯定。

      (這也是測試人員遭受質疑的地方,你既然不能保證軟件的質量,要你何用。測試人員可以提高軟件的質量,至于能提高多少,全憑測試人員的能力決定了。不像開發人員對于一個功能的實現,能或不能是很明確的兩個答案。)

      找到的軟件缺陷越多,就說明軟件的缺陷越多

      我們先來體會下面兩句話。

      “找到的軟件缺陷越多,說明軟件遺留的缺陷越少”

      “找到的軟件缺陷越少,說明軟件遺留的缺陷越少”

      不管是開發還是測試,我們期望軟件遺留的缺陷少。但是上面的兩句話都不成產。我們發現缺陷的多少和最終軟件遺留的缺陷多少毫無關系。那么為什么會有上面兩種推斷呢?

      “找到的軟件缺陷越多,說明軟件遺留的缺陷越少”這種情況,假設缺陷在一定數量的情況下,測試人員業務非常精通,測試極其認真,發現越多的缺陷 ,說明還遺留的缺陷就越少。那么,我也可以假設隨便這么一測,就發現這么多缺陷,那這個軟件應該還有很多。

      “找到的軟件缺陷越少,說明軟件遺留的缺陷越少”這種情況,假設經驗非常豐富,而且工作非常認少,測試人員花費了很大的時間和精力都不能找到缺陷,說明軟件本身的質量很少,也就是說其本身遺留的缺陷越少。那么,我也可以假設為,是不是我對業務不夠熟悉,經驗不夠豐富,為什么發現不了缺陷。那么可能軟件遺留的缺陷還有很多,只是我沒有發現。

      更嚴謹說法,或者更準確的說法是“找到的軟件缺陷越多,就說明軟件的缺陷越多。”我們發現有缺陷越多,只能說明軟件的缺陷多。并無法正明軟件還遺留的缺陷的多少。

      當然,也并不是無法評估軟件遺留缺陷的多少,我們可以根據開人員的工作經驗與技術能力,測試人員的工作經驗,測試技能,對業務的熟悉程度以及后以往完的成項目質量進行評估。

      并非所有軟件缺陷都能修復

      “每一個測試人員都一顆追求完美的心”,當我們發現了一個缺陷時,我們希望它能夠被修復,我們不能容忍被發現的缺陷眼睜睜的存在著而無法得到修復。在軟件測試中,令人沮喪的現實是,即使拼盡全力,也不是所有的軟件缺陷都能修復。

      這并不意味著軟件測試員未達到目的,或者項目小組將發布質量有缺陷的產品。其真正的含義是要軟件測試員具備本文開頭(缺陷的定義)中所描述的測試的素質---進行良好的判斷,搞清楚在什么情況下不能追求完美。項目小組需要每對一個軟件缺陷進行取舍,根據風險決定哪些要修復,哪些不要。

      不需要修復軟件缺陷的原因:

      * 沒有足夠的時間。在任何一個項目中,通常是軟件功能較多,而代碼編寫人員和軟件測試人員較少,而且在項目進度中沒有編制和測試留出足夠的空間。

      * 不算真正的缺陷?;蛘哂腥苏f,這不算缺陷,而是一項新的功能。在某些特殊場合,錯誤理解、測試錯誤或說明書變更會把軟件缺陷當作附加功能來對待。

      * 目前技術無法解決。你不會相信,人類有豐富的想象力,很多時候是受制于技術上無法實現。

      * 修復的風險太大。這種情況非常常見。軟件本身是脆弱的、難以理清頭緒。修復一個軟件缺陷可能導致其它軟件缺陷出現。在緊迫的產品發布進度壓力之后,修復軟件將冒引入更多缺陷的情況下。我們只能不去理睬現有的缺陷。

      * 修復成本太高,當我們使用一種技術去完成一項工作,當技術將要完成的時候發現一個缺陷無法解決,需要換用另一個技術才能有效規避這個缺陷。那這個修復成本將非常高。迫于時間與成本的壓力。我們需要暫時不去理會。

      * 不值得修復。雖然有些不中聽,但這是真的。不常出現的軟件缺陷和在不常用的功能中出現的缺陷,或都出現也不會造成什么影響,那么就不值得去修復。這些都要歸結為商業風決策。

      軟件說明書不斷變化

      軟件開發者面臨一個難題。整個行業變化太快,去年還很時髦的產品今年就過時了,同時,軟件變得更龐大、更復雜,功能越來越多,導致軟件開發周期不斷變長。這兩種反作用力形成了矛盾,結果是產品說明書一變再變。

    原文轉自:http://blog.csdn.net/fnngj/article/details/8597036

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>