白盒测试实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
一、实验目的
1.熟练掌握如何运用基路径测试方法进行测试用例设计。
2.初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容
1、题目
前一日函数PreDate是NextDate的逆函数(代码实现见下),实现功能为:输入1800 年到2050 年之间的某个日期,函数返回这一天的前一天的日期。(此处不考虑无效输入)请采用基路径方法对前一日函数进行测试用例设计,并利用程序插装技术对测试用例的判定覆盖率进行检查分析。
代码:(被测函数为PreDate)
#include"stdio.h"
typedef struct MyDate{
int month;
int day;
int year;
}MyDate;
MyDate PreDate(MyDate date);
int Leapyear(int year);
void Print(MyDate date);
MyDate PreDate(MyDate date)
//输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据{
1.MyDate yesterday;
2.yesterday.month = date.month; // initialization
3.yesterday.day = date.day;
4.yesterday.year = date.year;
5.int days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};
//初始化每月天数,其中2月不确定,初始化为0
6.if(date.day>1)
7.yesterday.day=date.day-1;
else
{
8.if(date.month==1)
{
9.yesterday.year=date.year-1;
10.yesterday.month=12;
11.yesterday.day=31;
}
12.else if(date.month==3)
{
13.if(Leapyear(date.year))
{
14.yesterday.month=2;
15.yesterday.day=29;
}
else
{
16.yesterday.month=2;
17.yesterday.day=28;
}
}
else
{
18.yesterday.month=date.month-1;
19.yesterday.day=days_month[date.month-1];
}
}
20.return yesterday;
}
21.int Leapyear(int year)
{
22.if((year%4==0&&year%100!=0) || (year%400==0))
23.return 1;
24.else return 0;
}
void Print(MyDate date)
{
25.printf("%d--%d--%d\n",date.year,date.month,date.day); }
2、测试用例设计
1)控制流图
2)环路复杂度计算
由图可知,图中的环路有五条,故环路复杂度为五。
3)基本路径集设计
基本路径集为:
A.1、2、3、4、5、6、8、12、13、14、15、20、25
B.1、2、3、4、5、6、8、12、16、17、20、25
C.1、2、3、4、5、6、8、12、18、19、20、25
D.1、2、3、4、5、6、8、9、10、11、20、25
E.1、2、3、4、5、6、7、20、25
4)测试用例集设计
测试用例集为:
2000-1-2 2000-1-1 2000-3-1
1999-3-1 1980-5-1
3、插装后源程序清单与判定覆盖率分析结果(要求截取插装后程序运行界面)#include"stdio.h"
typedef struct MyDate{
int month;
int day;
int year;
}MyDate;
int a[6];
MyDate PreDate(MyDate date);
int Leapyear(int year);
void Print(MyDate date);
int count();
MyDate PreDate(MyDate date)
//输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据{
MyDate yesterday;
yesterday.month = date.month; // initialization
yesterday.day = date.day;
yesterday.year = date.year;
int days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31}; //初始化每月天数,其中2月不确定,初始化为0
if(date.day>1)
{
a[0]=count();
yesterday.day=date.day-1;
}
else
{
a[1]= count();
if(date.month==1)
{
a[2]= count();
yesterday.year=date.year-1;
yesterday.month=12;
yesterday.day=31;
}