軟體測試的目的到底是什麼一直是困擾開發人員和測試人員的一個問題,
專案管理人員希望測試能夠保證軟體項目的成功
開發人員希望希望測試可以讓他們理直氣壯的說,他們的軟體是沒有問題的,從而證明他們的工作成果
軟體測試經典理論說,測試無法證明軟體是沒有問題,而只能證明軟體是有錯誤的.
軟體測試的經典理論又說好的測試案例是能發現那些問題的測試案例,
於是問題產生了,測試到底是做什麼的?
其實這個問題並不難解決,只要你從一個更高的角度去看待這個問題.
專案管理中有一個很重要的領域就是風險管理,而測試是防範和解決技術風險一個重要手段。
這樣可以很好解決測試在軟體開發中的地位和作用問題。
首先來說風險(技術風險)。軟體是一個科技含量比較高的行業,由於新技術比較多,所以技術風險自然會比較大,如何防範這些風險帶來的危害是我們要格外注意的一個問題
風險的危害 = 風險發生的機率 * 風險造成的危害。
作為測試工作就是通過降低風險發生的機率和以及風險造成的危害來保證項目的順利實施的。
先說降低風險發生的機率,在功能測試中就是測試的覆蓋率,盡量提高測試強度在儘可能多的覆蓋所有的功能點,
比如煙霧測試 (Smoke Test)、合法資料測試、非法資料的測試,就是逐步增強測試強度,來發現問題,
再說降低風險造成的危害,從純技術角度來說,軟體測試發現的問題,其危害程度是不一樣的,比如死機問題,應該是最嚴重的問題了,其次是功能無法實現,發現這些問題的價值往往是很大的。這些問題往往會產生嚴重的問題,如果及時發現這些問題,可以讓開發人員及時進行修改,防止系統的這些問題給項目的開發帶來嚴重的問題。
在這裡要說幾個個人的一些體會。
1測試人員不能通過測試工作給項目帶來直接的好處,說簡單一點就是測試不能測試出來好的產品,但通過對測試中發現問題的修改可以讓產品的品質上一個高台階,
2測試人員不能要能善於發現問題,更要善於和開發人員交流,讓他們認識到發現的問題,並對這些問題進行修改,從而通過開發人員實現自己的價值
3測試人員需要通過自己測試技術的提高,採用更科學的測試方法,和工具,增強測試強度,告訴專案經理,我們的產品經過測試,發生問題的機率比原來降低了好幾個數量級,發生問題機率降低了,從另外一個方面講就是產品的可靠性增強了,這正式上級領導獎勵測試部門的目的
4什麼樣的測試案例是好好測試案例,如果是發現從未發現過的測試案例才是好的測試案例,那麼在迴歸測試的,如果所有測試案例都通過了,這些測試案例都是壞的測試案例嗎?這顯然說不過去,在我看來,評判一個測試案例好壞應該有兩個標準,一個是是否發現問題的機率比較高的測試案例才是好的測試案例,另外一個便於開發人員確定問題的測試案例才是好的測試案例,這裡說的比較複雜,舉幾個例子吧。
如果說發現了未發現的bug的測試是好的測試,這個東西如何實施就無法確定,沒有測試誰知道哪個哪個測試案例可能發現問題,所以測試人員根本無法實施測試工作的改進,但如果說發現問題可能性比較大的,就比較好實施了,比如劃分等價類別,邊界值等方法都是經過長期總結出來的發現問題可能性比較大的方法,
另外,測試的目的,是修改問題,在軟體開發過程中,如果要修改問題,首先要定位,其次判斷問題發生的條件,如果你的測試案例(一般來說是幾個或者幾十個),可以讓開發人員發現問題發生的規律,那麼他們可以方便的發現問題發生的規律,對開發人的定位工作會起到很大的協助做用,這樣的測試案例對提高產品品質的作用是很大的的