三角形单元测试实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单元测试实验报告
一、实验内容
1、系统地学习和理解单元测试的基本概念、原理,掌握单元测试的基本技术和方法;
2、对三角形问题采用开发测试驱动程序进行单元测试,并给出测试结果;
3、完成实验并认真填写实验报告。
二、问题描述
输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形?如果能构成三角形,则判断三角形的类型(等边三角形、等腰三角形、一般三角形)。要求输入三个整数a、b、c,必须满足以下条件:1≤a≤200;1≤b≤200;1≤c≤200。请采用静态白盒测试方法和动态白盒测试方法设计测试用例。
请采用驱动程序开发进行单元测试。
三、被测程序原代码
#include
int main()
{
int a;
int b;
int c;
printf("请输三角形边长:");
scanf("%d", &a);
printf("\n");
printf("请输三角形边长:");
scanf("%d", &b);
printf("\n");
printf("请输三角形边长:");
scanf("%d", &c);
printf("\n");
if (a + b <= c || a + c <= b || b + c <= a)
printf("不是三角形!\n");
else
{
if (a == c || a == b || b == c) {
if (a == c && a == b)
{
printf("等边三角形!\n"); }
else
printf("等腰三角形!\n"); }
else
printf("三角形!\n");
}
return 0;
}
四、测试用例设计
黑盒测试的边界值加等价类
五、驱动程序源代码
#include
#include
int Triangle(int a,int b,int c)
{
if (a + b <= c || a + c <= b || b + c <= a)
return 0;
else
{
if (a == c || a == b || b == c)
{
if (a == c && a == b)
{
return 3;
}
else
return 2;
}
else
return 1;
}
}
void testTriangle()
{
printf("这是Triangle的测试\n");
int PassNum=0;//测试通过的数量
int FailNum=0;//测试没有通过的数量
FILE* pFpFrom=NULL;//数据文件的指针,储存测试用例的基本信息
FILE* pFpTo=NULL;//记录测试用例执行结果的文件的指针char* DataFileName="Data.txt";//打开测试文件,准备读取测试用例
pFpFrom=fopen(DataFileName,"r");
if(!pFpFrom){
printf("读取数据失败,返回\n");
return;
}
char* DataFileTestResultName="testTriangle.txt";//打开数据文件
pFpTo=fopen(DataFileTestResultName,"w+t");
if(!pFpTo){
printf("打开文件失败,返回\n");
return;
}
fprintf(pFpTo,"-------对函数Triangle的单元测试结果------\n");
int TCID=0;
int a,b,c;
int expectedOutcome;
int actualOutcome;//边的输入,预期输出,实际输出
char* ex;
char* ac;
printf("对函数展开单元测试\n");
while(!feof(pFpFrom)){//不断读取测试用例Id
fscanf(pFpFrom,"%d",&TCID);//读入测试用例的ID
fscanf(pFpFrom,"%d",&a);//读入测试用例的边a
fscanf(pFpFrom,"%d",&b);//读入测试用例的边b
fscanf(pFpFrom,"%d",&c);//读入测试用例的边c
fscanf(pFpFrom,"%d",&expectedOutcome);//读入测试用例的预期输出
actualOutcome=Triangle(a,b,c);//执行测试用例
if(expectedOutcome==3){
ex="等边三角形";
}else if(expectedOutcome==2)
{
ex="等腰三角形";
}
else if(expectedOutcome==1)
{
ex="一般三角形";
}else if(expectedOutcome==0)
{
ex="不是三角形";
}
if(actualOutcome==3){
ac="等边三角形";
}else if(actualOutcome==2)
{
ac="等腰三角形";
}
else if(actualOutcome==1)
{
ac="一般三角形";
}else if(actualOutcome==0)
{
ac="不是三角形";
}
printf("测试用例%d:边a:%d,边b:%d,边c:%d;预期输出%s,实际输出%s",TCID,a,b,c,ex,ac);
if(actualOutcome==expectedOutcome)
{
PassNum++;
printf("通过\n");
fprintf(pFpTo,"测试用例%d:Pass\n",TCID);
}else
{
FailNum++;
printf("失败\n");
fprintf(pFpTo,"测试用例%d:Fail\n",TCID);
}
}
fclose(pFpFrom);//关闭测试用例数据文件