实验2、黑盒测试方法:等价类划分法+边界值分析方法
一、实验目的
- 掌握等价类、有效等价类、无效等价类、边界值等概念。
- 掌握边界值分析法、等价类划分法的测试用例设计方法。
- 能够将这两种方法结合起来,灵活运用
二、实验任务
以下三个任务、至少完成两个
1、对三角问题综合运用边界值分析方法、等价类划分方法设计测试用例。
三角形问题:void Triangle (int a, int b, int c)函数规定输入三个整数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型(等边三角形、等腰三角形、一般三角形、构不成三角形),并在屏幕上输出。1<=a,b,c<=200。
实验步骤:
- 划分等价类,得到等价类表。等价类表格式如下:
输入变量 | 有效等价类 | 无效等价类 |
a,b,c | <a,b,c>:边为a,b,c的一般三角形 | a输出超出预定值 |
a,b,c | <a,b,c>:边为a,b,c的等边三角形 | b输出超出预定值 |
a,b,c | <a,b,c>:边为a,b,c的等腰三角形 | c输出超出预定值 |
a,b,c | <a,b,c>:边为a,b,c不能组成三角形 |
- 综合运用这两种方法设测试用例,得到测试用例表:
边界值 | a | b | c |
[1,200] | [1,200] | [1,200] | [1,200] |
- 综合运用这两种方法设测试用例,得到测试用例表:
测试用例ID | a | b | c | 预期输出 |
T1 | 5 | 5 | 5 | 等边三角形、等腰三角形 |
T2 | 2 | 2 | 3 | 等腰三角形 |
T3 | 3 | 6 | 5 | 一般三角形 |
T4 | 201 | 0 | 50 | 不构成三角形 |
T5 | -1 | 30 | -30 | 不构成三角形 |
T6 | 100 | 100 | 100 | 等边三角形 |
T7 | 20 | 18 | 29 | 一般三角形 |
T8 | 70 | 120 | 70 | 等腰三角形 |
- 根据上述测试用例表,能否进行优化,获得最小测试用例集合:
测试用例ID | a | b | c | 预期输出 |
T1 | 5 | 5 | 5 | 等边三角形 |
T2 | 2 | 2 | 3 | 等腰三角形 |
T3 | 3 | 6 | 5 | 一般三角形 |
T4 | 201 | 0 | 50 | 不构成三角形 |
T5 | 100 | 100 | 100 | 等边三角形 |
测试过程:
这里只对一组用例进行了测试,如果需要可根据下面提供的测试代码进行其他测试用例的测试。
测试代码:
#include <stdio.h>
void triangle( int a, int b, int c ); // 函数声明 --- 作用域
int main(void)
{
int x,y,z;
printf("please input (length):\n");
printf("x:");
scanf("%d",&x);
printf("y:");
scanf("%d",&y);
printf("z:");
scanf("%d",&z);
triangle( x,y,z );//判断三角形类型
}
void triangle( int a, int b, int c )
{
int temp;
if( a > b )
{//如果a比较b大,就相互转换
temp = a;
a = b;
b = temp;
}
if( a > c )
{//如果a比较c大,就相互调换
temp = a;
a = c;
c = temp;
}
if( b > c )
{//如果b比较c大,就相互调换
temp = b;
b = c;
c = temp;
}
if( a+b <= c )
{
printf("不是三角形!!\n");
return ;
}
else
{
if( a == b )
{
if( a != c )
printf("等腰三角\n");
else
printf("等边三角\n");
}
else
{
printf("是个三角形\n");
}
}
}
2、对于找零钱最佳组合问题运用边界值分析法设计测试用例。
实验步骤:
- 分析边界值。
付款={-1,0,49,51,99,100}
总价={-1,0,50,55,100,101}
- 运用健壮性边界条件法设计测试用例,得到测试用例表(测试用例表格式同实验1)。
测试用例ID | 付款 | 总价 | 预期输出 |
T1 | -1 | 0 | 不符合标准 |
T2 | 0 | 0 | 不用找零 |
T3 | 0 | 50 | 不能购买 |
T4 | 33 | -1 | 不符合标准 |
T5 | 99 | 0 | 应找零钱99元 |
T6 | 100 | 51 | 应找零钱49元 |
T7 | 49 | 100 | 不能购买 |
T8 | 100 | 101 | 不用找零 |
T9 | 66 | 55 | 应找零钱11元 |
T10 | 51 | -1 | 不符合标准 |
测试过程
这里只对一组用例进行了测试,如果需要可根据下面提供的测试代码进行其他测试用例的测试。
- 执行测试,填写软件缺陷报告。
简单软件缺陷报告格式如下:
测试模块: | 找零钱 | 开 发 者: | |
测 试 员: | 测试日期: | 2024.3.29 | |
软件缺陷列表 | |||
缺陷ID | 缺陷详细信息 | ||
BUG1 | 无 | ||
BUG2 | 无 | ||
BUG3 | 无 | ||
BUG4 | 无 |
测试代码:
#include <stdio.h>
#include<math.h>
int main()
{
double a,b;
printf("请输入付款金额:");
scanf("%lf",&a);
if(a<0||a>100){
printf("不符合标准。\n");
return 0;
}
printf("请输入物品价格:");
scanf("%lf",&b);
if(b<0||b>100){
printf("不符合标准。\n");
return 0;
}
printf("您的余额为:%lf\n",a-b);
if(a-b>0){
printf("应找零钱%lf\n",a-b);
}else if(a==a-b||a==b){
printf("不用找零\n");
}else{
printf("您付的金额不足以购买该产品。\n");
}
return 0;
}