原創(chuàng)|行業(yè)資訊|編輯:龔雪|2014-03-20 10:14:42.000|閱讀 1163 次
概述:自動化測試中,測試代碼冗余和測試代碼與數(shù)據(jù)分離的問題一直是測試人員討論的話題。小編整理了現(xiàn)在測試人員應用Junit應對這兩個問題的辦法。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
自動化測試中,測試人員一直討論如何在特定的正常條件和異常條件下運行系統(tǒng),檢查系統(tǒng)漏洞。通常情況下,大量不同的輸入,但處理邏輯的業(yè)務不變,對其結(jié)果進行驗證也會有不同的期望值。這樣也產(chǎn)生了大量了冗余代碼。
目前測試人員都通過自己的工具和技術(shù)一定程度解決了測試代碼與數(shù)據(jù)分離及測試代碼冗余的問題,下面介紹junit工具自動測試方法
Junit(文章中Junit都是指的Junit4)給出了參數(shù)化的特性,從而實現(xiàn)了不同的輸入對應相同的代碼。
測試方法:
public class UserAccess { // simple validation for user name and password public static boolean accessCheck(String userName, String password) { if (userName.length() <= 4 || userName.length() > 8 ) return false; if (password.length() <= 4 || password.length() > 8 ) return false; if (userName.contains("@" )) return false; if (password.contains("*" )) return false; return true; } }
使用Junit參數(shù)化,減少代碼冗余:
import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import static org.junit.Assert.assertEquals ; import sample.junit.code.UserAccess; /* * JUnit - Parameter test sample */ @RunWith(Parameterized.class) public class JunitSample { private String user ; private String pwd ; private boolean expected ; @Parameters public static Collection dataGenerate() { return Arrays.asList( new Object[][] { { "user01","123456" ,true}, { "user02","123456" ,true}, { "user03","12345678" ,true} }); } public JunitSample(String user,String pwd,boolean expected) { this.user = user; this.pwd = pwd; this.expected = expected; } @Test public void testAccessCheck(){ assertEquals(expected,UserAccess. accessCheck(user, pwd)); } }
運行結(jié)果:
數(shù)據(jù)與代碼的分離(Feed4Junit):
import static org.junit.Assert.assertEquals ; import org.databene.benerator.anno.Source; import org.databene.feed4junit.Feeder; import org.junit.Test; import org.junit.runner.RunWith; import sample.junit.code.*; @RunWith (Feeder.class ) public class Feed4junitSample { @Test @Source( "Data.csv" )//CSV source public void testAccessCheck_CSV(String userName, String pw, boolean expected) { assertEquals(expected, UserAccess. accessCheck(userName, pw)); } @Test @Source( "data.xls" )//Excel source public void testAccessCheck_Excel(String userName, String pw, boolean expected) { assertEquals(expected, UserAccess. accessCheck(userName, pw)); } }
運行結(jié)果如下:
最后通過通過 url,driver 等信息建立數(shù)據(jù)連接,數(shù)據(jù)庫作為數(shù)據(jù)源。實現(xiàn)Junit自動化測試的數(shù)據(jù)與代碼分離測試方法。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn