在測試人 員提交軟件缺陷報告后,最不希望看到的這些缺陷被開發人員忽略,盡管你堅信這一定是軟件缺陷,而罪魁禍首就是這些缺陷不可重現!一旦出現這樣的情況,測試 人員會很被動,開發人員也會對測試人員有意見。這就使得關系本來就不怎么融洽的測試人員和開發人員之間的關系更加緊張;對于整個時間緊湊的項目來說,無異 于是火上澆油。為了減少這種尷尬情況的出現,非常有必要分析一下軟件缺陷不能重現的原因。
1. 測試環境不一致
從廣義上來說,保證或影響軟件的任何因素都是環境,例如,系統的構造版本、應用服務器的類型和版本、瀏覽器的語音和版本等。
以下就是我們會遇見的錯誤:某個B/S(Web應用)架構的系統軟件運行于IE8上,出現了JS(Java Script)腳本錯誤導致頁面瀏覽異常的軟件缺陷,把IE8降級到IE6或7后,此軟件缺陷就自動消失了。
2. 測試配置不一致
程序運行都是基于一定的配置條件下進行的,包括被測系統參數設置、基礎數據完整性、業務流程完整性等,比如,我們曾經在某數據庫產品測試過程中,由于在安裝界面中選擇了非默認路徑進行安裝,結果導致該數據庫物理備份會恢復功能出錯,而對方在核對缺陷時按照默認路徑進行了安裝,因此缺陷總是無法重現。
3. 內存泄露
某些系統長期運行后出現速度慢的原因是開發人員未養成回收內存的習慣。這類錯誤在短期內不會出現,但當系統長期運行時就會出現,并且由此會引發一系列的問題。
4. 數據接口不匹配
一般只有在查看源代碼后才能發現。某些類型的數據會被系統自動轉換,有些數據被截斷或被強制轉換成另外一種數據類型時,會出現一些潛在的錯誤。
基于以上測試過程中出現的軟件缺陷不能重現的原因,我們提出如下一些解決策略,以更好地從源頭上減少不可重現軟件缺陷的出現。
1. 測試環境配置充分細致
測試人員在測試前,嚴格核對系統的運行環境配置要求,并充分考慮系統在線運行后的環境變化,做好測試環境配置的全面規劃,注意細節。另外可以使用Ghost對硬件或某個分區進行鏡像備份。
2. 捕獲系統日志,分析異常信息
測試人員應養成記錄系統錯誤日志的習慣,保留系統在出錯時的真實狀態。比如將IE瀏覽器高級選項設置為“顯示每個腳本錯誤的通知”。
3. 監測系統狀態,異常及時告警
在實施系統測試過程中,我們必須充分關注系統運行狀態的變化,一旦系統運行狀態發生較大的波動,勢必會對后期的業務執行帶來較大的影響。因此,系統運行監測的一個重要內容是需要及時反饋系統運行異常,并提供異常報告。
4. 測試數據翔實,易于追溯
測試數據是軟件測試的 核心,很多情況下,測試人員為了縮短測試周期,在實際測試前并沒有充分編寫足夠的測試數據,也沒有記錄這些測試數據的執行順序和運行軌跡,一旦程序在某個 節點出現問題,我們無法判斷其產生的過程和引起這個缺陷的具體測試數據,對我們進一步分析軟件缺陷產生的原因會造成一些不必要的障礙。
正是基于此我們強調在軟件測試開始前,我們必須制定完整的測試用例,輔以詳細的測試數據,并明確測試數據的操作步驟和每一步的預期結果,這樣,一旦軟件出現問題,我們可以很快進行重現和定位。
附錄1:常用正交表
(1)L4(23)
列號 | 1 | 2 | 3 |
試驗號 |
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
(2)L8(27)
列號 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
試驗號 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 2 | 2 | 1 | 1 | 2 | 2 |
4 | 1 | 2 | 2 | 2 | 2 | 1 | 1 |
5 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
6 | 2 | 1 | 2 | 2 | 1 | 2 | 1 |
7 | 2 | 2 | 1 | 1 | 2 | 2 | 1 |
8 | 2 | 2 | 1 | 2 | 1 | 1 | 2 |
(3)L12(211)
列號 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
試驗號 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 | 2 | 2 |
4 | 1 | 2 | 1 | 2 | 2 | 1 | 2 | 2 | 1 | 1 | 2 |
5 | 1 | 2 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 2 | 1 |
6 | 1 | 2 | 2 | 2 | 1 | 2 | 2 | 1 | 2 | 1 | 1 |
7 | 2 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 1 | 2 | 1 |
8 | 2 | 1 | 2 | 1 | 2 | 2 | 2 | 1 | 1 | 1 | 2 |
9 | 2 | 1 | 1 | 2 | 2 | 2 | 1 | 2 | 2 | 1 | 1 |
10 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 2 |
11 | 2 | 2 | 1 | 2 | 1 | 2 | 1 | 1 | 1 | 2 | 2 |
12 | 2 | 2 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 2 | 1 |
(4)L9(34)
列號 | 1 | 2 | 3 | 4 |
試驗號 |
1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 |
4 | 2 | 1 | 2 | 3 |
5 | 2 | 2 | 3 | 1 |
6 | 2 | 3 | 1 | 2 |
7 | 3 | 1 | 3 | 2 |
8 | 3 | 2 | 1 | 3 |
9 | 3 | 3 | 2 | 1 |
(5)L16(45)
列號 | 1 | 2 | 3 | 4 | 5 |
試驗號 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 |
4 | 1 | 4 | 4 | 4 | 4 |
5 | 2 | 1 | 2 | 3 | 4 |
6 | 2 | 2 | 1 | 4 | 3 |
7 | 2 | 3 | 4 | 1 | 2 |
8 | 2 | 4 | 3 | 2 | 1 |
9 | 3 | 1 | 3 | 4 | 2 |
10 | 3 | 2 | 4 | 3 | 1 |
11 | 3 | 3 | 1 | 2 | 4 |
12 | 3 | 4 | 2 | 1 | 3 |
13 | 4 | 1 | 4 | 2 | 3 |
14 | 4 | 2 | 3 | 1 | 4 |
15 | 4 | 3 | 2 | 4 | 1 |
16 | 4 | 4 | 1 | 3 | 2 |
(6)L25(56)
列號 | 1 | 2 | 3 | 4 | 5 | 6 |
試驗號 |
1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 3 | 3 |
4 | 1 | 4 | 4 | 4 | 4 | 4 |
5 | 1 | 5 | 5 | 5 | 5 | 5 |
6 | 2 | 1 | 2 | 3 | 4 | 5 |
7 | 2 | 2 | 3 | 4 | 5 | 1 |
8 | 2 | 3 | 4 | 5 | 1 | 2 |
9 | 2 | 4 | 5 | 1 | 2 | 3 |
10 | 2 | 5 | 1 | 2 | 3 | 4 |
11 | 3 | 1 | 3 | 5 | 2 | 4 |
12 | 3 | 2 | 4 | 1 | 3 | 5 |
13 | 3 | 3 | 5 | 2 | 4 | 1 |
14 | 3 | 4 | 1 | 3 | 5 | 2 |
15 | 3 | 5 | 2 | 4 | 1 | 3 |
16 | 4 | 1 | 4 | 2 | 5 | 3 |
17 | 4 | 2 | 5 | 3 | 1 | 4 |
18 | 4 | 3 | 1 | 4 | 2 | 5 |
19 | 4 | 4 | 2 | 5 | 3 | 1 |
20 | 4 | 5 | 3 | 1 | 4 | 2 |
21 | 5 | 1 | 5 | 4 | 3 | 2 |
22 | 5 | 2 | 1 | 5 | 4 | 3 |
23 | 5 | 3 | 2 | 1 | 5 | 4 |
24 | 5 | 4 | 3 | 2 | 1 | 5 |
25 | 5 | 5 | 4 | 3 | 2 | 1 |
(7)L8(4×24)
列號 | 1 | 2 | 3 | 4 | 5 |
實驗號 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 2 |
3 | 2 | 1 | 1 | 2 | 2 |
4 | 2 | 2 | 2 | 1 | 1 |
5 | 3 | 1 | 2 | 1 | 2 |
6 | 3 | 2 | 1 | 2 | 1 |
7 | 4 | 1 | 2 | 2 | 1 |
8 | 4 | 2 | 1 | 1 | 2 |
(8)L12(3×24)
列號 | 1 | 2 | 3 | 4 | 5 |
試驗號 |
1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 2 | 2 |
3 | 1 | 2 | 2 | 1 | 2 |
4 | 1 | 2 | 2 | 2 | 1 |
5 | 2 | 1 | 2 | 1 | 1 |
6 | 2 | 1 | 2 | 2 | 2 |
7 | 2 | 2 | 1 | 2 | 2 |
8 | 2 | 2 | 1 | 2 | 2 |
9 | 3 | 1 | 2 | 1 | 2 |
10 | 3 | 1 | 1 | 2 | 1 |
11 | 3 | 2 | 1 | 1 | 2 |
12 | 3 | 2 | 2 | 2 | 1 |
(9)L16(44×23)
列號 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
試驗號 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 | 2 | 1 | 2 | 2 |
3 | 1 | 3 | 3 | 3 | 2 | 1 | 2 |
4 | 1 | 4 | 4 | 4 | 2 | 2 | 1 |
5 | 2 | 1 | 2 | 3 | 2 | 2 | 1 |
6 | 2 | 2 | 1 | 4 | 2 | 1 | 2 |
7 | 2 | 3 | 4 | 1 | 1 | 2 | 2 |
8 | 2 | 4 | 3 | 2 | 1 | 1 | 1 |
9 | 3 | 1 | 3 | 4 | 1 | 2 | 2 |
10 | 3 | 2 | 4 | 3 | 1 | 1 | 1 |
11 | 3 | 3 | 1 | 2 | 2 | 2 | 1 |
12 | 3 | 4 | 2 | 1 | 2 | 1 | 2 |
13 | 4 | 1 | 4 | 2 | 2 | 1 | 2 |
14 | 4 | 2 | 3 | 1 | 2 | 2 | 1 |
15 | 4 | 3 | 2 | 4 | 1 | 1 | 1 |
16 | 4 | 4 | 1 | 3 | 1 | 2 | 2 |