logo资料库

三角形构成及next day软件自动化测试.doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
姓名 学号 实验成绩 年级、班 2016 级 软 件 工程二班 安阳师范学院计算机与信息工程学院 综合性、设计性实验报告书 实 验 课 程: 软件测试技术 实验指导教师: 宋翠叶 实 验 时 间: 2018.11.6~2018.11.13 实 验 题 目: 测试用例设计与自动化执行 实验类型: □ 综合性  设计
计算机信息工程学院结合性、设计性实验报告书 一、 实验目的与要求 1. 掌握等价类划分法和边界值法等黑盒测试用例设计方法; 2. 掌握动态测试的基本过程,熟练编写自定义的测试程序,完成测试的执行与分析。 3. 针对三角形判定需求和下一日问题描述两个问题,分别完成以下四步工作: 1) 设计函数接口(并明确测试对象) 2) 初步实现函数(编译链接通过即可) 3) Case 设计与编制(给出设计过程和设计结果) 4) 应用 Junit4 框架,完成参数化测试类编写与运行 4. 应用 Junit4 实现两个函数接口的打包测试 二、 实验仪器设备及实验环境 硬件:实验室 PC 机,一人一台; 软件:Windows 系统,JDK+eclipse 环境, JUnit 框架, Office 办公软件 三、 总的设计思想、实验原理等 针对待测程序,在明确其功能需求之后,可综合应用各种测试用例设计方法完成测试用 例的设计,从而巩固所学方法;通过将测试输入、实际结果与预期结果的比较、整体测试结 果的统计等过程以程序方式实现,可加深对动态测试的理解,提高测试能。通过本报告的要 求,增强文档规范意识和文档撰写能力。 四、 三角形判定问题实验步骤 问题描述:一个程序需读入三个正数,把这三个数值看作一个三角形的三条 边的长度值。如果输入不合法,输出“Illegal Input”;否则如果这三条边构不 成三角形,则输出“构不成三角形”;否则输出构成三角形的类型,如“普通三 角形”,“直角三角形”,“等腰三角形”,“等腰直角三角形”或“等边三角形”。 待实现函数接口列表: 序号 1 函数名称 } Triangle{ 2 3 GetTriangl eType(){ } main() { } 待测试接口列表: 序号 1 函数名称 testGetTri angleType( ) throws Exception { } 形参列表 返回值类型 功能简述 double a, double b, double c, \ String[] args \ string void 定义三个值作为三边,并在 接下来的语句中附给 side1, side2,side3 用于判断三角形的类型 简单运行一个等边三角形的 例子 形参列表 返回值类型 功能简述 / void 判断预期输出与实际输出是 否一样
计算机信息工程学院结合性、设计性实验报告书 1. 初步实现函数(编译链接通过即可) public String GetTriangleType() //判断三角形类型 { if(side1<0||side2<0||side3<0) try { return "Illegal Input"; } catch (Exception e) { // TODO Auto-generated catch block } if(side1+side2<=side3||side1+side3<=side2||side2+side3<=side1) try { return "构不成三角形"; } catch (Exception e) { // TODO Auto-generated catch block } if(side1==side2&&side2==side3)//等边三角形 return "等边三角形"; else if(side1==side2||side2==side3||side1==side3)//等腰三角形 { if(Math.abs(side1*side1-(side2*side2+side3*side3))<0.001 ||Math.abs(side2*side2-(side1*side1+side3*side3))<0.001 ||Math.abs(side3*side3-(side1*side1+side2*side2))<0.001) return "等腰直角三角形"; else return"等腰三角形"; } else if(Math.abs(side1*side1-(side2*side2+side3*side3))<0.001 ||Math.abs(side2*side2-(side1*side1+side3*side3))<0.001 ||Math.abs(side3*side3-(side1*side1+side2*side2))<0.001) return "直角三角形"; else//一般三角形 return "一般三角形"; } 2. Case 设计与编制(给出设计过程和设计结果) 等价类说明 等价类精化条件说明 A.仅构成普通三角形 构不成其他特殊类型 A A A 构不成其他特殊类型 构不成其他特殊类型 构不成其他特殊类型 测试用例 编号 1 2 3 4 输入 数据 2,3,4 3,2,4 2,5,6 6,2,7 预期 输出 普通三角形 普通三角形 普通三角形 普通三角形
计算机信息工程学院结合性、设计性实验报告书 B. 仅构成等腰三角形 能构成等腰三角形 B B 但构不成其他特殊类型 能构成等腰三角形 但构不成其他特殊类型 能构成等腰三角形 但构不成其他特殊类型 C. 构成等腰直角三角 形 构成等腰三角形且满足直 角三角形条件 C D. 构成直角三角形 D D D 构成等腰三角形且满足直 角三角形条件 仅构成直角三角形 但构不成其他特殊类型 仅构成直角三角形 但构不成其他特殊类型 仅构成直角三角形 但构不成其他特殊类型 仅构成直角三角形 但构不成其他特殊类型 5 6 7 8 9 10 11 12 13 E. 等边三角形 构成三角形,且三边相等 14 E 构成三角形,且三边相等 15 F. 够不成三角形 无法构成三角形 F 无法构成三角形 16 17 G. Illegal Input G G 输入值包含 0,负数或字符 18 输入值包含 0,负数或字符 19 输入值包含 0,负数或字符 20 3. 参数化测试 @RunWith(Parameterized.class) public class TriangleTest { 3,2,2 2,3,2 4,5,5 等腰三角形 等腰三角形 等腰三角形 1,1, 1.414213 2,2, 2.828426 3,4,5 等 腰 直 角 三 角形 等 腰 直 角 三 角形 直角三角形 4,3,5 直角三角形 5,12,13 直角三角形 6,8,10 直角三角形 2,2,2 3,3,3 2,2,6 1,1,2 -1,2,3 1,-1,3 1,2,-1 等边三角形 等边三角形 够 不 成 三 角 形 够 不 成 三 角 形 Illegal Input Illegal Input Illegal Input private Triangle t; private double s1; private double s2; private double s3; private String exp_type;//预期值 private boolean excepted; public TriangleTest(double s1,double s2,double s3,boolean excepted,String type) throws Exception{ this.s1 = s1; this.s2 = s2; this.s3 = s3; this.excepted = excepted; this.exp_type = type; }
计算机信息工程学院结合性、设计性实验报告书 @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } @Before public void setUp() throws Exception { t = new Triangle(s1,s2,s3); } @After public void tearDown() throws Exception { } @Parameters public static Collection data(){ Object[][] object = { {2,3,4,"一般三角形"}, {3,2,4,"一般三角形"}, {2,5,6,"一般三角形"}, {6,2,7,"一般三角形"}, {2,2,3,"等腰三角形"}, {2,3,2,"等腰三角形"}, {4,5,5,"等腰三角形"}, {1,1,1.414213,"等腰直角三角形"}, {2,2,2.828426,"等腰直角三角形"}, {3,3,3,"等边三角形"}, {2,2,2,"等边三角形"}, {3,4,5,"直角三角形"}, {4,3,5,"直角三角形"}, {5,12,13,"直角三角形"}, {6,8,10,"直角三角形"}, {2,2,6,"构不成三角形"}, {1,1,2,"构不成三角形"}, {-1,2,3,"Illegal Input"}, {1,-1,3,"Illegal Input"}, {1,2,-1,"Illegal Input"}, }; return Arrays.asList(object); } @Test public void testGetTriangleType() throws Exception { //比较预期值与实际值 String result_type = t.GetTriangleType(); assertEquals(exp_type,result_type); }
计算机信息工程学院结合性、设计性实验报告书 } 五、 下一日问题实验步骤 问题名称:NextDate 问题 输入:年、月、日,表示一个日期 输出:年、月、日,表示输入日期的下一天的日期 如果输入不合理,输出“不合法日期” 年的范围规定在[1850,2800]之间 待实现函数接口列表: 序号 1 2 3 函数名称 NextDate( ){ } theday main() { } 形参列表 String lastdate \ 返回值类型 功能简述 定义年,月,日,构造函数 String lastdate String[] args string void 得出下一天的日期 简单测试一下 待测试接口列表: 序号 1 函数名称 GetnextdateT est( ){ } \ 形参列表 返回值类型 功能简述 void 判断预期输出与实际输出是 否一样 1. 初步实现函数(编译链接通过即可) public String theday(String lastdate) { day=day+1; if(day>date[year][month]) { day=1; month++; if(month>12) { month=1; year++; } } String fix; //生成年月日的字符串 fix=""+year+"-"; if(month<10) fix = fix +0+month+"-"; fix = fix +month+"-"; else if(day<10) fix = fix +0+day; else return fix; fix=fix+day; } 2. Case 设计与编制(给出设计过程和设计结果)
计算机信息工程学院结合性、设计性实验报告书 设条件桩如下: C1:年是否为闰年 C2:月份是哪类月 C3:日是否在月末 动作桩如下: A1:年份不动 A2:年份加 1 A3:月份不动 A4:月份加 1 A5:月份变为 1 A6:日期加 1 A7:日期变为 1 1 Y 2 Y 1,2,3,4, 5,6,7,8, 9,10,11 1,2,3,4, 5,6,7,8, 9,10,11 Y √ N √ √ √ 桩 C1 年是否 为闰年 C2 月份是 哪类月 C3 日是否 在月末 A1 年份不 动 A2 年份加 1 A3 月份不 动 A4 月份加 √ 1 A5 月份变 为 1 A6 日期加 1 A7 日期变 √ 为 1 3 Y 12 Y √ √ √ 4 Y 12 N √ √ 5 N 6 N 1,2,3,4, 5,6,7,8, 9,10,11 1,2,3,4, 5,6,7,8, 9,10,11 N √ √ Y √ √ √ √ √ 7 N 12 Y √ √ √ 8 N 12 N √ √ √ 输入条件说明 闰年前十一个月月末 闰年前十一个月月末 闰年前十一个月非月末 闰年前十一个月非月末 闰年十二月月末 闰年十二月月末 测试用例编号 1 2 3 4 5 6 输入数据 2012-01-31 2012-02-29 2016-03-03 2020-11-11 2024-12-31 2020-12-31 预期输出 2012-02-01 2012-03-01 2016-03-04 2020-11-12 2025-01-01 2021-01-01
计算机信息工程学院结合性、设计性实验报告书 闰年十二月非月末 闰年十二月非月末 平年前十一个月月末 平年前十一个月月末 平年前十一个月非月末 平年前十一个月非月末 平年十二月月末 平年十二月月末 平年十二月非月末 平年十二月非月末 7 8 9 10 11 12 13 14 15 16 2000-12-01 2012-12-15 2013-01-31 2013-02-28 2015-03-03 2021-11-11 2026-12-31 2027-12-31 2001-12-01 2019-12-15 2000-12-02 2012-12-16 2013-02-01 2013-03-01 2015-03-04 2021-11-12 2027-01-01 2028-01-01 2001-12-02 2019-12-16 3. 参数化测试类 @RunWith(Parameterized.class) public class NextDateTest { private NextDate nextDate; private String nString; private String exp_type;//预期日期 public NextDateTest(String nString,String type) throws Exception{ this.nString=nString; this.exp_type = type; } @Before public void setUp() throws Exception { nextDate = new NextDate(nString); } @Parameters public static Collection data(){ Object[][] object = { {"2012-01-31","2012-02-01"}, {"2012-02-29","2012-03-01"}, {"2016-03-03","2016-03-04"}, {"2020-11-11","2020-11-12"}, {"2024-12-31","2025-01-01"}, {"2020-12-31","2021-01-01"}, {"2000-12-01","2000-12-02"}, {"2012-12-15","2012-12-16"}, {"2013-01-31","2013-02-01"}, {"2013-02-28","2013-03-01"}, {"2015-03-03","2015-03-04"},
分享到:
收藏