《软件测试技术》
单元测试实践实验报告
诚信声明
本人重承诺:本实验报告是本人独立工作所获得的成果。尽我所知,实验报告中除特别标注的地方外,不包含其他人已经发表或撰写过的成果。实验报告中对报告工作的任何帮助者所做的贡献均做了明确的说明并表达了意。
如有抄袭,本人愿意承担因此而造成的任何后果。
特此声明。
签名: Eastmount 日期:2013-6-9
任务:第 2 题
实验容与完成情况:
实验思想
单元测试实践中我测试题目是第2题“输入年份year和月month,求该月有多少天”的任务。由于它是一个C语言程序,而且没有子函数,能直接计算其结果,所以直接把该程序看做一个测试单元,并采用如下实验步骤进行测试:
,静态分析源程序代码(静态白盒测试方法),分析检查源程序的语法、结构、算法等的正确性,并对错误进行修正;
、边界值分析、错误猜解法等方法,并结合动态白盒测试的逻辑覆盖,对每条语句及分支条件都进行覆盖测试,同时测试过程中跟踪执行每一条语句,对程序进行比较完整动态测试;
,并完成实验报告。
静态测试
我采用的是VS 2012进行单元测试,源程序如下所示:
#include <>
main( )
{ int year, month, days;
printf("Enter year and month:");
scanf("%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: printf("Input error!\n"); /* 月份错误 */
days=0;
}
if( days!=0 )
printf("%d, %d is %d days\n", year, month, days);
}
经过代码走读,静态分析源程序,我发现该程序具有以下错误:
(1).主函数mian()缺少类型说明,应该添加int或void类型;
(2).程序缺少返回值,如果定义的int型,添加“return 0;”返回值,如果是void型,添加“return;”返回空值;
(3).注意“;”的使用,它应该是英文的“;”,而代码中都是使用的中文的分号,这是一个编码方式错误的语法错误;
判断闰年时的计算公式:“year%4==0&&year%100!=0&&year%400==0”是错误的算法,它应该是该年
“(year%4==0&&year%100!=0)||(year%400==0)”时为闰年,2月为29天(下面的测试用例及测试都是修改后的算法进行的);
(1).按照正规的、更有效、美观的编码方式,定义变量时应该每个变量单独定义一行,这样更加方便阅读和使用,如下:
int year;
int month;
int days;
(2).在使用switch语句时,如果分支结果case中有多个语句时,最好使用括号包括相应的语句代码,如下图所示:
default:
{
printf("Input error!\n"); /* 月份错误 */
days=0;
}
(3).在使用if语句时,最好都用括号包含相应语句代码;同时括号要单独占一行,这样更加的方便别人与自己的阅读与使用。
在动态测试过程中,我主要采用黑盒动态测试等价划分、边界值分析、错误猜解法等方法,并结合白盒动态测试,逻辑覆盖所有语句及分支条件并跟踪每行代码进行测试。
由于该程序要求输入的是year和month两个数据,并且都是int类型,再结合生活实际中年份和月份的知识,我对输入数据的特点进行一下总结:
(1).输入的数
单元测试实践实验报告 来自淘豆网m.daumloan.com转载请标明出处.