今年忙乎了大半年的自動化測試寫了一個測試框架一直就想寫點東西總結一下由於懶總是沒有心性來寫些東西今天無聊乘機寫點不然又不知猴年馬月才能動筆了^_^
本文不想討論自動化測試的利弊Web測試和性能測試也不是本文的討論范疇本文只討論單元測試以及集成測試階段的問題只談了JUnit的一些缺陷以及我們是否有更好的選擇以及開發者的測試是否能讓測試人員也能玩得動呢如果你沒興趣不防就此別過以免你後悔
言歸正傳說到用JUnit進行單元測試對於Java開發人員來說再熟悉不過了即使
沒有用過也一定聽過吧
在項目的過程中如果你是開發人員你也許有這樣的想法偶們知道用JUnit來寫單元測試的好處可偶們沒時間寫功能夠用了可還是繁瑣一開始還用的可後來忙於改代碼接口改動又大也就沒時間堅持用下去了
如果你是測試人員你或許會這樣想偶覺得開發人員寫的單元測試可能過於粗略很可能有些邊界沒檢查到但我對Java不太熟悉無法通過修改他們的測試代碼來進行更完善的測試只能通過現象猜本質了在功能測試階段多點幾下鼠標也就可能出錯了
哦也許我猜錯了我怎麼能懂得測試人員的心思呢實際上我都不是一個稱職的測試人員
我們來看看JUnit都有哪些令人不爽的地方
繁瑣維護的成本不低XP提倡為每個方法都加一個測試方法不少XP的追隨者也是真能做到的但當項目的代碼行達到萬以上時為每個方法增加一個測試方法令人不爽的是需要幾乎跟源碼一樣多的測試代碼甚至更多唉老大不是我不想做我是做不完啊
測試代碼的質量不好檢查如果你是一個敬業的人相信不會有這樣的問題但是人都有惰性尤其是日復一日地重復寫代碼的你當面臨加班寫測試代碼和回家看球賽的選擇時我想還是選看球賽的人大有人在反正簡單得很不會出錯的關鍵的是頭兒不會知道的
在單元測試階段的效果比較明顯在其它測試階段幾乎就難於勝任了也難怪望文生意JUnit本來就是Java Unit測試嘛你XXX要求還真高
關鍵不是我要求高是我們這些coding的共同敵人要求高啊所以問題不能不解決於是就有一些先驅們做了一些嘗試
一Software Agitator
什麼是Software Agitator?當年JUnit的締造者Kent Beck的又一力作它是一個自動的運行軟件代碼並提供軟件代碼行為觀察報告的一種方法它幫助開發人員單元測試他們的代碼而不用手動編寫測試代碼使用該方法開發人員將創造出更好更容易維護和健康的軟件產生很少的bug具有更高的生產效率因為他們花了很少的時間去分析失敗和改寫他們的代碼
Software Agitator的主要特性有
自動生成測試數據自動創建智能的Mock 對象提供盡可能多的代碼覆蓋
全面的報告代碼覆蓋率報告方法輸出語句行和條件覆蓋率
超過個Factory庫也可以通過簡單的Java API 延伸factory控制輸入數據和
轉化數據格式
支持TDD(測試驅動開發)
支持JUnit等
支持Regression測試(也就老外這麼多名詞說白了就是測試用例在不同的項目中
重復利用)
存儲信息在XML文件裡(包括用例報告)不需要數據庫
自動檢測代碼標准違規
完全集成Eclipse開發環境
顯然Agitator的功能非常強大陣對性強個人覺得起碼有如下好處
基於XML來描述用例信息比robot和Quest Test都易於使用這使測試人員都能參與其中題外話我一直想不通robot和Quest Test為何要自己發明一套自己的腳本?除了自我封閉排除異己之外實在沒有其它有說服力的道理可言
它能大大減輕了開發人員的重復勞動這是開發人員不能堅持用JUnit進行測試的罪魁啊基本上彌補了JUnit的缺陷真不愧為JUnit的始俑者一句話懶人只需要一個理由
測試報告全面而且是xml形式的通過測試報告也能比較可靠地檢查質量
Agitator的缺陷也明顯
不適合於Web測試和GUI測試
它不是免費的這是最大的缺點了吧如果能象JUnit那樣免費……我想得也太 美了(
可惜拿不到Agitator的試用版不然能做些例子但能給我們不少啟發
測試框架需要進一步減輕開發人員的工作量
測試用例的開放性(XML格式)別只顧自己玩代碼讓開發經驗欠缺的測試人員也玩玩 如何?自動化測試有必要學習其他腳本語言嗎?除了商業利益的因素外沒有任何令人信服的理由
測試的智能化全面的報告支持Regression測試自動定時執行等等
是啊真的是個好東東啊難道就沒有其它免費的嗎?我還真沒發現如果你知道請告訴我謝謝
不過如果你能讀到這為了報答你的拜讀之情就介紹一款免費的測試框架以致不會令你太失望
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28509.html