单元测试实践实验报告

上传人:鲁** 文档编号:458238977 上传时间:2022-09-28 格式:DOC 页数:8 大小:148.51KB
返回 下载 相关 举报
单元测试实践实验报告_第1页
第1页 / 共8页
单元测试实践实验报告_第2页
第2页 / 共8页
单元测试实践实验报告_第3页
第3页 / 共8页
单元测试实践实验报告_第4页
第4页 / 共8页
单元测试实践实验报告_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《单元测试实践实验报告》由会员分享,可在线阅读,更多相关《单元测试实践实验报告(8页珍藏版)》请在金锄头文库上搜索。

1、软件测试技术单元测试实践实验报告诚信声明本人郑重承诺:本实验报告是本人独立工作所获得的成果。尽我所知,实验报告中除特别标注的地方外,不包含其他人已经发表或撰写过的成果。实验报告中对报告工作的任何帮助者所做的贡献均做了明确的说明并表达了谢意。如有抄袭,本人愿意承担因此而造成的任何后果。特此声明。 签名: Eastmount 日期:2013-6-9任务:第 2 题实验内容与完成情况:一. 实验思想单元测试实践中我测试题目是第2题“输入年份year和月month,求该月有多少天”的任务。由于它是一个C语言程序,而且没有子函数,能直接计算其结果,所以直接把该程序看做一个测试单元,并采用如下实验步骤进行

2、测试:1.首先对源程序进行不执行的代码走读,静态分析源程序代码(静态白盒测试方法),分析检查源程序的语法、结构、算法等的正确性,并对错误进行修正;2.然后采用动态黑盒测试的等价划分、边界值分析、错误猜解法等方法,并结合动态白盒测试的逻辑覆盖,对每条语句及分支条件都进行覆盖测试,同时测试过程中跟踪执行每一条语句,对程序进行比较完整动态测试; 3.分析统计测试的结果,并完成实验报告。二. 静态测试我采用的是VS 2012进行单元测试,源程序如下所示:#include main( ) int year, month, days;printf(Enter year and month:);scanf(

3、%d%d, &year, &month);switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; /* 处理“大”月 */case 4: case 6: case 9: case 11: days=30; break; /* 处理“小”月 */ case 2: if(year%4=0&year%100!=0 & year%400=0) days=29; /* 处理闰年平月 */ else days=28;/* 处理不是闰年平月 */ break; default: prin

4、tf(Input error!n); /* 月份错误 */ days=0; if( days!=0 ) printf(%d, %d is %d daysn, year, month, days);经过代码走读,静态分析源程序,我发现该程序具有以下错误:1.语法错误(1).主函数mian()缺少类型说明,应该添加int或void类型;(2).程序缺少返回值,如果定义的int型,添加“return 0;”返回值,如果是void型,添加“return;”返回空值;(3).注意“;”的使用,它应该是英文的“;”,而代码中都是使用的中文的分号,这是一个编码方式错误的语法错误;2.算法错误判断闰年时的计算

5、公式:“year%4=0&year%100!=0&year%400=0”是错误的算法,它应该是该年“(year%4=0&year%100!=0)|(year%400=0)”时为闰年,2月为29天(下面的测试用例及测试都是修改后的算法进行的);3.代码规范格式优化(1).按照正规的、更有效、美观的编码方式,定义变量时应该每个变量单独定义一行,这样更加方便阅读和使用,如下:int year;int month;int days;(2).在使用switch语句时,如果分支结果case中有多个语句时,最好使用括号包括相应的语句代码,如下图所示:default: printf(Input error!n

6、); /* 月份错误 */days=0;(3).在使用if语句时,最好都用括号包含相应语句代码;同时括号要单独占一行,这样更加的方便别人与自己的阅读与使用。三.动态测试在动态测试过程中,我主要采用黑盒动态测试等价划分、边界值分析、错误猜解法等方法,并结合白盒动态测试,逻辑覆盖所有语句及分支条件并跟踪每行代码进行测试。 1.输入数据特点由于该程序要求输入的是year和month两个数据,并且都是int类型,再结合生活实际中年份和月份的知识,我对输入数据的特点进行一下总结:(1).输入的数据类型应该为int型,并且输入的是两个数字;(2).输入的年份范围应该大于0,小于int型的最大可表达范围;(

7、3).输入的月份实际生活中只有12个月,因此应该为1-12间的数字;(4).由于要判断每月多少天,所以月份还要划分为4、6、9、11月30天,1、3、5、7、8、10、12月31天,2月特殊判断;(5).同理,年数year也要划分为闰年和非闰年;(6).同时注意测试月份1、12边界值。2.列出等价类和边界值表输入条件有效等价类无效等价类年、月类型及个数(1).输入2个int型数字(2).输入非数字字符(3).输入少于2个数字(4).输入大于2个数字年份范围(5).在0-int最大值之间闰年被400整除(6). 在0-int最大值之间闰年不被100整除且被4整除(7).在0-int最大值之间平年

8、(8).年份小于0(9).年份大于int最大值(2147483647)月份范围(10).月份=4,6,9,11(11).月份=3,5,7,8,10(12).月份=1(13).月份=12(14).月份=2(15).月份12(16).月份13.设计测试用例用例编号输入预期输出覆盖等价类是否通过CS0012002 112002,11 is 30 days(1)、(7)、(10)CS002aaa bbbInput error!(2)CS0032002Input error!(3)CS0042002 11 10Input error!(4)CS0052000 102000,10 is 31 days(1

9、)、(5)、(11)CS0061996 11996,1 is 31 days(1)、(6)、(12)CS0071990 121990,12 is 31 days(1)、(7)、(13)CS0081800 21800,2 is 28 days(1)、(7)、(14)CS0092008 22008, 2 is 29 days(1)、(6)、(14)CS0102000 22000,2 is 29 days(1)、(5)、(14)CS011-2000 7Input error!(8)CS01210000000000 8Input error!(9)CS0132013 0Input error!(15)

10、CS0142013 14Input error!(16)三. 实验结果按照上面等价划分和边界值设置的测试用例,对源程序进行测试的结果如下图所示:用例编号CS001输入2002 11预期输出2002,11 is 30 days覆盖等价类(1)、(7)、(10)实际输出是否通过通过用例编号CS002输入aaa bbb预期输出Input error!覆盖等价类(2)实际输出是否通过通过用例编号CS003输入2002预期输出Input error!覆盖等价类(3)实际输出一直等待再输入一个数字是否通过未通过用例编号CS004输入2002 11 10预期输出Input error!覆盖等价类(4)实际输

11、出应该只能输入2个数字,输入3个它也按两个数处理,显然不能通过是否通过未通过用例编号CS005输入2000 10预期输出2000,10 is 31 days覆盖等价类(1)、(5)、(11)实际输出是否通过通过用例编号CS006输入1996 1预期输出1996,1 is 31 days覆盖等价类(1)、(6)、(12)实际输出是否通过通过用例编号CS007输入1990 12预期输出1990,12 is 31 days覆盖等价类(1)、(7)、(13)实际输出是否通过通过用例编号CS008输入1800 2预期输出1800,2 is 28 days覆盖等价类(1)、(7)、(14)实际输出是否通过

12、通过用例编号CS009输入2008 2预期输出2008, 2 is 29 days覆盖等价类(1)、(6)、(14)实际输出是否通过通过用例编号CS010输入2000 2预期输出2000,2 is 29 days覆盖等价类(1)、(5)、(14)实际输出是否通过通过用例编号CS010输入2000 2预期输出2000,2 is 29 days覆盖等价类(1)、(5)、(14)实际输出是否通过通过用例编号CS011输入-2000 7预期输出Input error!覆盖等价类(8)实际输出当输入年份0时就应该是错误的年份是否通过未通过用例编号CS012输入10000000000 8预期输出Input

13、 error!覆盖等价类(9)实际输出从输出结果可以发现int数字已经溢出,但它输出了结果,应该输出错误提示是否通过未通过用例编号CS013输入2013 0预期输出Input error!覆盖等价类(15)实际输出是否通过通过用例编号CS014输入2013 14预期输出Input error!覆盖等价类(16)实际输出是否通过通过四. 结果分析与体会经过上面的测试后,该测试用例的语句覆盖率和分支条件覆盖率为100%,基本考虑了所有该题目的输入情况。根据单老师课程所讲述的内容并结合课件,完美对题目2进行了单元测试,更好的掌握了静态测试、动态测试方法,其中包括黑盒测试的等价划分、边界值设定,白盒测试的覆盖所有路径、分支条件,都更深刻的进行了学习与理解。出现的问题:同时,在实验中也遇到了一些问题,其中主要的问题如下:1.在对年份进行等价划分时,它只要求输入的为int型数字,没有具体的输入年份要求,但根据生活中的经验,是否该把小于0的年份和大于int型最大值的年份划分至无效等价类?这是一个很困扰我的问题。2.它给定的题目是想测试输入year和month判断月份的天数,但是在判断闰年的公式中,它给出的是

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号