Java三代單元測試工具的比較[轉貼]
第一代:JUnit :
優點:1.開源
2.測試後程式碼的質量提高明顯
3.JUnit是Java寫的
4.開發者寫出測試程式碼。它證明程式碼需要做什麼。如果有Bug會報錯。
缺點:1。完全手動工作
2.為達到覆蓋率,每100行程式碼寫200-400行的測試程式碼
3.需要寫很多的setup()、 shutdown()方法
4.測試程式碼難以維護,程式碼改變後,測試程式碼就無用了。
5.測試的覆蓋率很難上去,測試只是靜態的,線型的,只能測試有限的Path
第二代基於生成JUnit 測試指令碼的: JTest.
優點:1.出來5年了,很多IDE支援。
2.產生的測試程式碼(JUnit)近似開發者手寫的。
3.自動產生測試程式碼,減少了寫JUnit測試程式碼的時間。
4.靜態的程式碼分析。
缺點:1。證明了程式碼做了什麼,而不是保證了“需要做什麼”給人安全的錯覺。
Example:
• Method to add 2 numbers together
• Developer mistakenly write code: A+B=A
• Script generator will write tests to validate that:
1+1=1, 4+6=4,10+20=10
• When tests run, they will all pass!
• Only perfect code will generate valid tests
2.開發者必需手動複查數以千行的JUnit程式碼。看正確與否。
3.複查機器產生的程式碼是很痛苦的。
4.很多重複的JUnit程式碼,到處都有。
5.報告的資訊過多,不正確的測試將無法獲取Bug。
6.它使用了私有的庫,而不是純的JUnit。
7.幾乎不支援迭代/敏捷的開發模型。
(1) 同步/再生問題使它們沒有辦法使用。
(2)手動維護的話,失去了原有的自動化的意義。
8.要寫許多的註釋、說明在程式碼中。
9.靜態的技術已經不能滿足Java了。
(1)傳統的靜態的資料流分析只適合結構化的編碼。
(2)對簡單靜態的程式碼有用,對JAVA複雜的程式碼用處不大。
(3)interface, abstract, private的類、方法都不可測。
10.不可動態生成測試用例的弊端:
If(date day=SystemDate.day)and
(date month=SystemDate.month) then
return true;
else return false;
像這樣,今天是 return true 明天就是false;
11. 特殊用法:(1)生成的指令碼是透過一個生產框架來完成的。
(2)生成的指令碼只能最小的覆蓋率。
(3)要提高覆蓋率要用手動.
(4)指令碼的維護是手工而且很容易變得陳舊。失去自動化的意義
第三代:全新的自動化單元測試:Agitar Software
Agitator的優點:
1. 完全不用寫和維護測試指令碼。
2.完全的物件導向的測試。
3.保證了程式碼“需要做什麼”
4.把程式碼執行的真實情況(行為)直接反饋給開發者。
5.能有效地動態地生成資料(測試用例),對JAVA進行動態分析。
6.Agitation(資料分析,靜態分析,動態分析)。
7.Observation暴露程式碼執行情況,simple click斷言就生成了。
8.Factoies:200個不同的factory型別來規範輸入,匹配邏輯。
9.Pattion: 規範輸出,使邏輯更清晰。
10.Snapshort, stacktarce,跟蹤程式碼,查詢BUG,更容易。
11.自動建立智慧MOCK物件,提供儘可能的程式碼
12.測試配置以XML格式儲存,耐用,易改變,最有效的測試資產。
Dashboard的優點:
1. 標準和HTML表現形式,易於廣泛訪問和存取。
2. 清楚地看出軟體的健康和測試努力的狀態。
3. 專案彙總――複雜度,使用情況,風險情況、測試質量,覆蓋率。測試點透過/失敗的狀態。
4. 所有權的分配,每個人,每個問題的負責劃分非常清楚。
5. 分等級檢視,提供包、類的細節資訊,只要一,一目瞭然。
優點:1.開源
2.測試後程式碼的質量提高明顯
3.JUnit是Java寫的
4.開發者寫出測試程式碼。它證明程式碼需要做什麼。如果有Bug會報錯。
缺點:1。完全手動工作
2.為達到覆蓋率,每100行程式碼寫200-400行的測試程式碼
3.需要寫很多的setup()、 shutdown()方法
4.測試程式碼難以維護,程式碼改變後,測試程式碼就無用了。
5.測試的覆蓋率很難上去,測試只是靜態的,線型的,只能測試有限的Path
第二代基於生成JUnit 測試指令碼的: JTest.
優點:1.出來5年了,很多IDE支援。
2.產生的測試程式碼(JUnit)近似開發者手寫的。
3.自動產生測試程式碼,減少了寫JUnit測試程式碼的時間。
4.靜態的程式碼分析。
缺點:1。證明了程式碼做了什麼,而不是保證了“需要做什麼”給人安全的錯覺。
Example:
• Method to add 2 numbers together
• Developer mistakenly write code: A+B=A
• Script generator will write tests to validate that:
1+1=1, 4+6=4,10+20=10
• When tests run, they will all pass!
• Only perfect code will generate valid tests
2.開發者必需手動複查數以千行的JUnit程式碼。看正確與否。
3.複查機器產生的程式碼是很痛苦的。
4.很多重複的JUnit程式碼,到處都有。
5.報告的資訊過多,不正確的測試將無法獲取Bug。
6.它使用了私有的庫,而不是純的JUnit。
7.幾乎不支援迭代/敏捷的開發模型。
(1) 同步/再生問題使它們沒有辦法使用。
(2)手動維護的話,失去了原有的自動化的意義。
8.要寫許多的註釋、說明在程式碼中。
9.靜態的技術已經不能滿足Java了。
(1)傳統的靜態的資料流分析只適合結構化的編碼。
(2)對簡單靜態的程式碼有用,對JAVA複雜的程式碼用處不大。
(3)interface, abstract, private的類、方法都不可測。
10.不可動態生成測試用例的弊端:
If(date day=SystemDate.day)and
(date month=SystemDate.month) then
return true;
else return false;
像這樣,今天是 return true 明天就是false;
11. 特殊用法:(1)生成的指令碼是透過一個生產框架來完成的。
(2)生成的指令碼只能最小的覆蓋率。
(3)要提高覆蓋率要用手動.
(4)指令碼的維護是手工而且很容易變得陳舊。失去自動化的意義
第三代:全新的自動化單元測試:Agitar Software
Agitator的優點:
1. 完全不用寫和維護測試指令碼。
2.完全的物件導向的測試。
3.保證了程式碼“需要做什麼”
4.把程式碼執行的真實情況(行為)直接反饋給開發者。
5.能有效地動態地生成資料(測試用例),對JAVA進行動態分析。
6.Agitation(資料分析,靜態分析,動態分析)。
7.Observation暴露程式碼執行情況,simple click斷言就生成了。
8.Factoies:200個不同的factory型別來規範輸入,匹配邏輯。
9.Pattion: 規範輸出,使邏輯更清晰。
10.Snapshort, stacktarce,跟蹤程式碼,查詢BUG,更容易。
11.自動建立智慧MOCK物件,提供儘可能的程式碼
12.測試配置以XML格式儲存,耐用,易改變,最有效的測試資產。
Dashboard的優點:
1. 標準和HTML表現形式,易於廣泛訪問和存取。
2. 清楚地看出軟體的健康和測試努力的狀態。
3. 專案彙總――複雜度,使用情況,風險情況、測試質量,覆蓋率。測試點透過/失敗的狀態。
4. 所有權的分配,每個人,每個問題的負責劃分非常清楚。
5. 分等級檢視,提供包、類的細節資訊,只要一,一目瞭然。
相關文章
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 單元測試-【轉】論單元測試的重要性
- 單元測試工具
- [譯] JavaScript 單元測試框架:Jasmine, Mocha, AVA, Tape 和 Jest 的比較JavaScript框架ASM
- java中的單元測試Java
- 單元測試工具 TestNG 使用
- 滲透測試與自動化安全測試工具比較
- Java單元測試常用工具類小結Java
- 單元測試:單元測試中的mockMock
- 如何單元測試Java的private方法Java
- ABAP和Java SpringBoot的單元測試JavaSpring Boot
- 常用的Java開發工具比較Java
- (轉貼) C++,C#,Java功能比較 (.NET) (C#) (C/C++)C++C#Java
- Java單元測試技巧之PowerMockJavaMock
- 1.13-java單元測試junitJava
- Java單元測試神器之MockitoJavaMockito
- 常見的web系統測試管理工具比較Web
- ABAP和Java的單元測試Unit TestJava
- Java中的單元測試與整合測試最佳實踐Java
- Tessy—支援複雜場景測試的單元整合測試工具
- 玩轉 Github Profile Readme:單元測試Github
- java單元測試:unit testing best practicesJava
- Tessy—嵌入式軟體單元測試/整合測試工具
- Tessy — 嵌入式軟體單元測試/ 整合測試工具
- WinAMS--嵌入式軟體單元測試/整合測試工具
- Java Junit單元測試(入門必看篇)Java
- Java單元測試之JUnit 5快速上手Java
- 單元測試,只是測試嗎?
- 單元測試-一份如何寫好單元測試的參考
- 求助,現在有什麼 AI 相關的比較實用測試工具嗎?AI
- 單元測試的規範
- Apache Camel的單元測試Apache
- golang單元測試Golang
- 單元測試真
- iOS 單元測試iOS
- python 單元測試Python
- 前端單元測試前端
- Flutter 單元測試Flutter
- 單元測試 Convey