实验三黑盒测试(二)
一、实验目的
通过本实验,掌握因果图法生成测试用例的步骤。
二、相关内容
利用因果图生成测试用例的基本步骤如下:
(1)分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。
(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。
为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。
(4)把因果图转换为决策表。
(5)根据决策表中的每一列设计测试用例。
三、实验内容
有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。
其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
编写程序实现之,然后用因果图法对自动售货机设计测试用例并测试之。
要求:
1、编写程序,实现上述自动售货过程。
(任选一种自己熟悉的语言,有无界面均可,实现相应的功能即可。
)
2、用因果图法设计测试用例。
(1)正确画出因果图。
(2)画出决策表。
(3)给出测试用例。
提示:可按如下步骤进行:
1)分析这一段说明,列出原因和结果。
2)画出因果图。
(所有原因结点列在左边,所有结果点列在右边。
可以考虑建立中间结点,表示处理的中间状态。
比如,可设如下几种中间状态:该找5角,可找5角,按下按钮、钱已付清)
3)画出决策表。
4)给出测试用例。
四、实验报告
实验报告提交内容:源程序清单、因果图、决策表。
(测试用例有时间就设计,没有时间可以不设计)
一,因果图;
因果图-画条件和结果
有零钱
选橙汁
选啤酒
投5角
投1
元
红灯亮
出橙汁
出啤酒
找5角
找1元
有零钱
红灯亮
出橙汁
出啤酒
找5角
找1元
E E
因果图-应该找零钱
出橙汁
出啤酒
找5角
找1元
E
E
红灯亮
出橙汁
出啤酒
找5角
找1元
E
E
出橙汁
出啤酒
找5角
找1元
E
E
因果图-5角钱付清
红灯亮
出橙汁
出啤酒
找5角
找1元
E
E
因果图-退还1元
有零钱选橙汁
选啤酒投5角
投1元
红灯亮
出橙汁
出啤酒
找5角
找1元
E
E 选商品
钱付清
V
V
V
V
应该找零钱V
能够找零钱
V
V
判定表
去除无效用例
合并判定表
二,源程序:
#include <stdio.h>
#include<math.h>
main()
{ float a;
int b;
float LingQian=50;
system("graftabl 936");
clrscr();
B:
if(LingQian==0)
{
printf("\n零钱找完!红灯亮!\n");
}
printf("\n请投币:\n");
scanf("%f",&a);
if(LingQian==0&&a==1)
{printf("返回1元") ;
goto B;
};
if(a==0.5||a==1)
{
printf("请选择饮料:\n 1为可乐!2为啤酒!\n");
scanf("%d",&b);
if(a==1&&b==1)
{
printf("\n可乐\n 找零:0.5元\n");
LingQian=LingQian-0.5;
}
else if(a==1&&b==2)
{
printf("\n啤酒\n 找零:0.5元\n");
LingQian=LingQian-0.5;
}
else if(a==0.5&&b==1)
{
printf("\n可乐\n");
LingQian=LingQian+0.5;
}
else if(a==0.5&&b==2)
{
printf("\n啤酒\n");
LingQian=LingQian+0.5;
}
}
else
{goto B;}
goto B;
}。