原創(chuàng)|行業(yè)資訊|編輯:龔雪|2014-03-20 10:14:42.000|閱讀 1163 次
概述:自動(dòng)化測(cè)試中,測(cè)試代碼冗余和測(cè)試代碼與數(shù)據(jù)分離的問題一直是測(cè)試人員討論的話題。小編整理了現(xiàn)在測(cè)試人員應(yīng)用Junit應(yīng)對(duì)這兩個(gè)問題的辦法。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
自動(dòng)化測(cè)試中,測(cè)試人員一直討論如何在特定的正常條件和異常條件下運(yùn)行系統(tǒng),檢查系統(tǒng)漏洞。通常情況下,大量不同的輸入,但處理邏輯的業(yè)務(wù)不變,對(duì)其結(jié)果進(jìn)行驗(yàn)證也會(huì)有不同的期望值。這樣也產(chǎn)生了大量了冗余代碼。
目前測(cè)試人員都通過(guò)自己的工具和技術(shù)一定程度解決了測(cè)試代碼與數(shù)據(jù)分離及測(cè)試代碼冗余的問題,下面介紹junit工具自動(dòng)測(cè)試方法
Junit(文章中Junit都是指的Junit4)給出了參數(shù)化的特性,從而實(shí)現(xiàn)了不同的輸入對(duì)應(yīng)相同的代碼。
測(cè)試方法:
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)); } }
運(yùn)行結(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)); } }
運(yùn)行結(jié)果如下:
最后通過(guò)通過(guò) url,driver 等信息建立數(shù)據(jù)連接,數(shù)據(jù)庫(kù)作為數(shù)據(jù)源。實(shí)現(xiàn)Junit自動(dòng)化測(cè)試的數(shù)據(jù)與代碼分離測(cè)試方法。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn