【測試理論】軟件缺陷的本質

    我才疏學淺,很少引經據典。當然,就我感覺而言,軟件行業,尤其是軟件測試,談的上經典的,屈指可數。

    我從網上查閱到,計算機硬件的錯誤率是:對 1Mbit 進行10億小時操作,突發異常 778 – 25,000 次(參考Google員工論文,這方面資料很少,如果理解有誤請看原文)。如果硬件極少發生缺陷,那麼軟件怎麼會出錯呢。

    實際上,我們通常說的軟件缺陷是指軟件沒有按照我們期望方式工作,本質上是給了計算機錯誤的指令或沒有給該給的指令。所以,軟件缺陷的本質是:人的失誤 。人和計算機交流的時候:話說錯了,該囑咐的沒囑咐,說的囉裏囉嗦。可以說:計算機從來沒有錯,軟件從來沒有錯,都是人的錯。

    軟件測試,就是要掃除軟件的缺陷,我們應該以什麼樣的視角,什麼樣的手段來發現、避免軟件的缺陷呢?

    如果我們只是根據交付給我們的軟件的表現,來發現缺陷的話,那麼對於我們想不到的輸入,就難以看到軟件的行爲。甚至對於我們看到的錯誤行爲,也有可能理解爲合理的行爲。還有可能是我們只關注到了軟件部分行爲,而忽略了其他行爲。導致種種缺陷漏網的發生。

    如果把視角放在,如何避免、發現人的失誤上,提升軟件質量可做的事情,就有很多可以發揮想象力的地方。比如,人們發明了 軟件開發流程 ,技術評審點(TR),分階段、逐層量化控制人可能出現的失誤。很多開發的checklist、測試checklist、某個領域特有的checklist等等。甚至在軟件測試中想一想,如果我是開發,這裏可能會用什麼方式實現,可能埋下怎樣的錯。

    想想現在軟件工程師在大家腦中的形象,很多時候,是我們自己 把腦力勞動做成了體力勞動,做賤了自己


參考文檔: DRAM Errors in the Wild: A Large-Scale Field Study  

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