生活随笔
收集整理的這篇文章主要介紹了
软件测试——实验二
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、目的和要求
1、掌握應(yīng)用黑盒測試技術(shù)進行測試用例設(shè)計。
2、掌握對測試用例進行優(yōu)化設(shè)計方法。
二、實驗內(nèi)容
日期問題
測試以下程序:該程序有三個輸入變量month、day、year(month、day和year均為整數(shù)值,并且滿足:1≤month≤12、1≤day≤31和1900≤year≤2050),分別作為輸入日期的月份、日、年份,通過程序可以輸出該輸入日期在日歷上隔一天的日期。例如,輸入為2004 年11月30日,則該程序的輸出為2004年12月1日。
(1)劃分等價類,按照等價類劃分法設(shè)計測試用例;
(2)編寫nextDate函數(shù);
(3)掌握Junit4的用法,使用Junit4測試nextDate函數(shù)。
JUnit4是JUnit框架有史以來的最大改進,其主要目標便是利用Java5的Annotation特性簡化測試用例的編寫。掌握Junit4定義的一些常見Annotations:org.junit.Test org.junit.Beforeorg.junit.Afterorg.junit.BeforeClassorg.junit.AfterClassorg.junit.Ignoreorg.junit.runner.RunWithorg.junit.runners.Suite.SuiteClassesorg.junit.runners.Parameterized.Parameters:
三、測試用例的編寫
(1)劃分等價類,按照等價類劃分法設(shè)計測試用例;
代碼:
Heihe
.java
package ruanjianceshishiyaner
;import java
.io
.BufferedReader
;
import java
.io
.IOException
;
import java
.io
.InputStreamReader
;
import java
.util
.regex
.Pattern
;public class Heihe
{private
static final Pattern pattern
= Pattern
.compile("^[-\\+]?[\\d]*$");public
static String
nextDate(String s_year
, String s_month
, String s_day
) {if (!(isInteger(s_year
) && isInteger(s_month
) && isInteger(s_day
))) {return "無效輸入";}int year
= Integer
.parseInt(s_year
);int month
= Integer
.parseInt(s_month
);int day
= Integer
.parseInt((s_day
));boolean flag
= false
;if (year
< 1900 || year
> 2050) {return ("年的值不在指定范圍");} else if (month
> 12 || month
< 1) {return ("月的值不在指定范圍");} else if (day
> 31 || day
< 1) {return ("日的值不在指定范圍");}switch (month
) {case 1:case 3:case 5:case 7:case 8:case 10:if (day
== 31) {day
= 1;month
= month
+ 1;} else {day
= day
+ 1;}break;case 4:case 6:case 9:case 11:if (day
== 30) {day
= 1;month
= month
+ 1;} else if (day
== 31) {flag
= true
;} else {day
= day
+ 1;}break;case 12:if (day
== 31) {day
= 1;month
= 1;year
= year
+ 1;} else {day
= day
+ 1;}break;case 2: {if (((year
% 4 == 0 && year
% 100 != 0) || year
% 400 == 0)) {if (day
== 29) {day
= 1;month
= 3;} else if (day
< 29) {day
= day
+ 1;} else {flag
= true
;}} else {if (day
== 28) {day
= 1;month
= 3;} else if (day
< 28) {day
= day
+ 1;} else {flag
= true
;}}}break;default:}if (year
> 2050) {return ("年的值不在指定范圍");} else if (flag
) {return ("日的值不在指定范圍");} else {return ("下一天是" + year
+ "年" + month
+ "月" + day
+ "日");}}public
static boolean
isInteger(String str
) {return pattern
.matcher(str
).matches();}
}HeiheTest
.java
package ruanjianceshishiyaner
;import org
.junit
.Assert
;
import org
.junit
.Test
;
import org
.junit
.runner
.RunWith
;
import org
.junit
.runners
.Parameterized
;
import org
.junit
.runners
.Parameterized
.Parameters
;import java
.util
.Arrays
;
import java
.util
.Collection
;@
RunWith(Parameterized
.class
)
public class HeiheTest
{private String input1
;private String input2
;private String input3
;private String expected
;@Parameterspublic
static Collection
<?> prepareData(){String
[][] object
= {{"2000","1","20","下一天是2000年1月21日"},{"2000","2","29","下一天是2000年3月1日"},{"2000","4","30","下一天是2000年5月1日"},{"2001","1","31","下一天是2001年2月1日"},{"2001","2","28","下一天是2001年3月1日"},{"2001","4","30","下一天是2001年5月1日"},{"1899","1","1","年的值不在指定范圍"},{"2051","1","1","年的值不在指定范圍"},{"200?","1","1","無效輸入"},{"2000","-1","1","月的值不在指定范圍"},{"2000","13","1","月的值不在指定范圍"},{"2000","1?","1","無效輸入"},{"2000","1","-1","日的值不在指定范圍"},{"2000","1","32","日的值不在指定范圍"},{"2000","4","31","日的值不在指定范圍"},{"2000","2","30","日的值不在指定范圍"},{"2001","2","29","日的值不在指定范圍"},{"2000","1","1?","無效輸入"}};return Arrays
.asList(object
);}public
HeiheTest(String input1
,String input2
,String input3
,String expected
){this
.input1
= input1
;this
.input2
= input2
;this
.input3
= input3
;this
.expected
= expected
;}@Testpublic
void testDate(){String result
= Heihe
.nextDate(input1
,input2
,input3
);Assert
.assertEquals(expected
,result
);}
}
四、測試結(jié)果的分析
六個無效等價類和十二個有效等價類測試成功,實驗完成
五、測試文檔的撰寫
六、心得與體會
(1)初步掌握應(yīng)用黑盒測試技術(shù)進行測試用例設(shè)計。
(2)學(xué)會了優(yōu)化設(shè)計測試用例方法。
(3)能用Junit實施參數(shù)化測試
(4)學(xué)習(xí)了使用等價類劃分法
總結(jié)
以上是生活随笔為你收集整理的软件测试——实验二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。