API測試
從本質上來說,API測試是用來驗證組成軟件的那些單個方法的正確性,而不是測試整個系統本身.
API測試也被稱為單元測試(Unit Testing), 模塊測試(Module Testing), 組建測試(Component Testing), 以及元件測試(Element Testing).
為了將待測的程序和用於測試它們的測試套件(test harness)系統區分開來,待測程序通常叫做SUT(System Under Test), AUT(Application Under Test) 或者IUT(Implementation Under Test)
通常來說,當待測函數或方法都位於DLL當中時,使用術語API測試.當待測方法位於某個類(當然,這個類可能作為一個DLL來實現)中的時候,使用術語單元測試等更為寬泛的術語.
API測試需要注意的點
- 存儲用於測試用例的數據 (文本[自定義的序列化/反序列化,IOReaderWrter],XML[XmlSerializer],數據庫[ADO.net])
- 讀入測試用例的數據
- 解析測試用例
- 運行測試用例
- 判定測試結果
- 紀錄測試過程與結果
- 給測試加上時間戳
- 綜合總結測試結果
- 紀錄測試總耗時
- 處理輸入輸出特殊值(null,string.Empty,"",越界值)
- 處理"方法拋出異常"
- 發送郵件(Report)
- 自動運行(.Bat, Task Schedule, Daily Build & Run)(TFS)
自動化測試相對於手工測試有以下優點
- Speed--快速地進行成千上萬個測試用例;
- Accuracy--不受人為的因素的干擾,例如記錄錯誤的結果;
- Precision--每次都以同樣的方式運行;
- Efficiency--晚上白天都可以進行測試;
- Skill-Building--培養技能,手工測試非常枯燥乏味,提高不了技能。
待測方法的代碼如下:

好了,下面來介紹API自動化測試的流程:
1、准備測試用例數據,最好是獨立於測試套件,可以存放在txt文件 ,XML文件和數據庫,以便多個測試套件重復使用。這里我准備好了
測試ID 待測方法 測試輸入 期望值
0001:ArihthmeticMean:4 8:8
0002:ArihthmeticMean:2 2:24
0003:ArihthmeticMean:4 8:8
0004:ArihthmeticMean:3 2:345.4
0005:ArihthmeticMean:55 555:555
0006:ArihthmeticMean:2 444:23234
0007:ArihthmeticMean:4 8:8
0008:ArihthmeticMean:2 2:24
實際測試時,需要成千上萬個測試用例數據,包括邊界值,空值,無效輸入。有些自動化測試工具可以自動產生測試用例數據。
2、讀入測試用例數據
a.如何從測試用例文件中讀入讀入每條測試用例數據?
b.設計--通過while循環遍歷測試用例的每一行。
c.方案

3、解析測試用例
a.如何解析出用字符串隔開的測試用例的各個字段
b.設計-使用string.Split()方法,該方法返回一個字符數組。具體使用去查查api
c.具體實現方案看接下來的代碼
4、把數據轉換為合適的類型
a.讀入的是字符串類型,在這里必須轉為整型
b.看下面的整理代碼
5、判定測試用例通過與否
a.如何判定API測試用例是否通過
b.設計--調用待測方法,傳給它測試用例的輸入,得到返回值,然后比較實際結構和測試用例中讀入的期望值是否一致
c.具體代碼看下面
6、記錄測試用例結果
a.如何把測試用例的結果存入獨立於測試程序的簡單文本文件
b.設計--在處理測試用例的主循環中,使用System.IO.StreamWriter對象把測試用例ID和測試結果寫到一個文本文件。當然可以記錄到XML文件或者數據庫中,看需要
c.代碼實現看下面
7、給測試用例結果文件加上實際戳

8、通過計算對測試結果進行總結
9、獲得測試的總運行時間
用DateTime TimeSpan可以實現
10、處理輸入為空或者期望值為空的情況--NULL
11、處理“方法拋出異常”的情況
12、處理輸入參數為空字符串的情況
13、在測試用例失敗時發送警告郵件
System.Net.Mail下的MailMessage類實現,很簡單
14、自動運行測試套件
用.BAT文件可以實現,用System.Diagnosis.Process命名空間下的Start()方法
在這里,稍微實現了代碼

結果如下:
CaseID Result Method Details
===============================
0001 Pass ArihthmeticMean actual=8
0002 Fail ArihthmeticMean actual=2
0003 Pass ArihthmeticMean actual=8
0004 Fail ArihthmeticMean actual=3
0005 Pass ArihthmeticMean actual=555
0006 Fail ArihthmeticMean actual=444
0007 Pass ArihthmeticMean actual=8
0008 Fail ArihthmeticMean actual=2
===========================end test run===============
pass=4Fail=4
測試結果文件2011-3-26 16-01-02 testresult.txt,內容如下
0001 Pass ArihthmeticMean actual=8
0002 Fail ArihthmeticMean actual=2
0003 Pass ArihthmeticMean actual=8
0004 Fail ArihthmeticMean actual=3
0005 Pass ArihthmeticMean actual=555
0006 Fail ArihthmeticMean actual=444
0007 Pass ArihthmeticMean actual=8
0008 Fail ArihthmeticMean actual=2
至此,API自動化測試介紹基本完畢