測試的目的是檢查程序的行為是否符合設計規格,程序的行為就是某種輸入時會產生什么輸出,因此,一個典型的測試用例完成以下工作:設定輸入數據、執行程序、驗證輸出是否符合預期。
函數的輸入數據一般包括:
A、參數;
B、成員變量,只考慮函數需要讀取的成員變量;
C、全局變量,只考慮函數需要讀取的全局變量;
以上三項,當涉及到復雜數據類型時,只考慮函數需要讀取的域,例如,一個結構對象,有十個域,而函數只讀取其中一個域,則不必考慮其他九個域。
D、其他數據,如函數需要讀取文件或數據庫中的數據,則要先在文件或數據庫中設置好這些數據。
顯然,所有可能輸入都進行測試,既不可能也無意義,我們應該用一定的規則選擇有代表性的數據作為輸入。輸入可分為三大類:正常輸入,邊界輸入,非法輸入,每大類還可再分為若干小類,劃分小類的依據是:同一小類中每個數據都具有等價的測試效果,也就是說,小類中取任取一個數據作為輸入,如果測試通過,可以肯定同小類的其他輸入也可以測試通過,這就是平常說的“等價類法”。
正常輸入
例如字符串的Trim函數,功能是將字符串前后的空格去除,那么正常的輸入可以有四類:
前面有空格;
后面有空格;
前后均有空格;
前后均無空格。
邊界輸入
上例中空字符串可以看作是邊界輸入。
再如一個表示年齡的參數,它的有效范圍是0-100,那么邊界輸入有兩個:0和100。
非正常輸入
垃圾數據或使代碼不能完成正常功能的數據,如一個文件操作的函數,非正常輸入有這么幾類:
文件不存在;
目錄不存在;
文件正在被其他程序打開;
[NextPage]
權限錯誤。
預期輸出
一個完整的測試用例應該有預期輸出,預期輸出就是程序運行后的預期結果,通常表現在對某些數據的修改,即預期輸出要自動判斷程序所改寫的數據的結果值是否符合預期。程序可能修改的數據包括:
A、返回值;
B、輸出參數;
C、成員變量,只考慮函數所改寫的成員變量;
D、全局變量,只考慮函數所改寫的全局變量;
以上四項,當涉及到復雜數據類型時,只考慮函數所改寫的域,例如,一個結構對象,有十個域,而函數只改寫了其中一個域,則不必考慮其他九個域。
E、其他數據,如函數改寫文件或數據庫中的數據,也是一種輸出,不過通常難于自動判斷是否符合預期,可用人工查看來代替。
文章來源于領測軟件測試網 http://www.kjueaiud.com/