软件测试-黑盒测试2
实验四 黑盒测试2
1.实验目的
(1)能熟练应用黑盒测试技术进行测试用例设计;
(2)对测试用例进行优化设计。
2.实验内容
题目 1:日期问题。
应用等价类和边界值、随机数据生成法设计测试用例进行程序测试:该程序
有三个输入变量 month、day、year(month、day和year 均为整数值,并且满
足:1000≤year≤1999,1≤month≤12 和 1≤day≤31)分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004年11月29日,则该程序的输出为 2004年12月1日。
(1) 分析各种输入情况,列出为输入变量 month、day、year划分的有效等价类和无效等价类。
(2) 分析程序的需求说明,结合等价类划分、边界值、随机数据生成方法,给出程序可能的输入。
(3) 根据 (1) 和 (2) ,导出测试用例。
(4) 设计程序并编码实现,应用 1-3 设计的测试用例进行测试,记录测试结果。
步骤一:划分有效等价类和无效等价类
Testcase |
有效等价类 |
编号 |
无效等价类 |
编号 |
年 |
1000到1999年内的闰年 |
1 |
小于1000的年份数 |
11 |
1000到1999年内的平年 |
2 |
大于1999的年份数 |
12 |
|
月 |
2 |
3 |
小于1的整数 |
13 |
4,6,9,11 |
4 |
|||
1,3,5,7,8,10 |
5 |
大于12的整数 |
14 |
|
12 |
6 |
|||
日 |
1到27的整数 |
7 |
小于1的整数 |
15 |
28 |
8 |
大于31的整数 |
16 |
|
29 |
9 |
其他输入如字符、浮点数 |
17 |
|
30 |
10 |
29 |
18 |
|
31 |
12 |
30 |
23 |
|
31 |
24 |
测试用例 |
年 |
月 |
日 |
期望输出 |
实际输出 |
测试结果 |
1 |
999 |
7 |
21 |
年份不符合 |
隔日日期为1021年3月2号 |
√ |
2 |
1000 |
2 |
10 |
隔日日期为1000年2月12号 |
隔日日期为1000年2月12号 |
√ |
3 |
1001 |
2 |
10 |
隔日日期为1001年2月12号 |
隔日日期为1001年2月12号 |
√ |
4 |
1998 |
3 |
20 |
隔日日期为1998年3月22号 |
隔日日期为1998年3月22号 |
√ |
5 |
1999 |
3 |
20 |
隔日日期为1999年3月22号 |
隔日日期为1999年3月22号 |
√ |
6 |
2000 |
7 |
21 |
年份不符合要求 |
年份不符合要求 |
√ |
7 |
1021 |
0 |
10 |
月份不符合要求 |
月份不符合要求 |
√ |
8 |
1021 |
1 |
10 |
隔日日期为1021年1月12号 |
隔日日期为1021年1月12号 |
√ |
9 |
1021 |
2 |
10 |
隔日日期为1021年2月12号 |
隔日日期为1021年2月12号 |
√ |
10 |
1021 |
11 |
10 |
隔日日期为1021年11月12号 |
隔日日期为1021年11月12号 |
√ |
11 |
1021 |
12 |
10 |
隔日日期为1021年12月12号 |
隔日日期为1021年12月12号 |
√ |
12 |
1021 |
13 |
10 |
月份不符合要求 |
月份不符合要求 |
√ |
13 |
1021 |
2 |
27 |
隔日日期为1021年3月1号 |
隔日日期为1021年3月1号 |
√ |
14 |
1021 |
2 |
28 |
隔日日期为1021年3月2号 |
隔日日期为1021年3月2号 |
√ |
15 |
1021 |
2 |
29 |
日期不符合要求 |
日期不符合要求 |
√ |
16 |
1020 |
2 |
27 |
隔日日期为1020年2月29号 |
隔日日期为1020年2月29号 |
√ |
17 |
1020 |
2 |
28 |
隔日日期为1020年3月1号 |
隔日日期为1020年3月1号 |
√ |
18 |
1020 |
2 |
29 |
隔日日期为1020年3月2号 |
隔日日期为1020年3月2号 |
√ |
19 |
1021 |
2 |
30 |
日期不符合要求 |
日期不符合要求 |
√ |
20 |
1021 |
1 |
30 |
隔日日期为1021年2月1号 |
隔日日期为1021年2月1号 |
√ |
21 |
1021 |
1 |
31 |
隔日日期为1021年2月2号 |
隔日日期为1021年2月2号 |
√ |
22 |
1021 |
4 |
30 |
隔日日期为1021年5月2号 |
隔日日期为1021年5月2号 |
√ |
23 |
1021 |
4 |
31 |
日期不符合要求 |
日期不符合要求 |
√ |
24 |
1021 |
2 |
0 |
日期不符合要求 |
日期不符合要求 |
√ |
步骤二:设计测试用例
实验代码:
#include<iostream>
using namespace std;
struct Data{
int year;
int month;
int day;};
int day_month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
void IsLeapYear(Data d)//判断闰年,改变2月日数
{
if ((d.year % 4 == 0 && d.year % 100 != 0) || d.year % 400 == 0)
day_month[1] = 29;
else
day_month[1] = 28;
}
bool IsDay(Data d)//判断日期是否正确
{
IsLeapYear(d);
if (d.year < 1000 || d.year>1999)
{
cout << "年份不符合要求" << endl; return false;
}
else if (d.month < 1 || d.month>12)
{
cout << "月份不符合要求" << endl; return false;}
else{
if (d.day >= 1 && d.day <= day_month[d.month - 1])
{ }
else
{
cout << "日期不符合要求" << endl; return false;
}}}
void AfterData(Data d)//隔一日问题
{
d.day = d.day + 2;
if (d.day / day_month[d.month - 1] > 0)
{
d.day = d.day % day_month[d.month - 1];
d.month++;
if (d.month > 12)
{
d.month = d.month % 12;
d.year++;
}}
cout << "隔日日期为" << d.year << "年" << d.month << "月" << d.day << "号" << endl;}
int main()
{
Data data;
while (true)
{
int year, month, day;
cout << "请输入1000年-1999年间某日期:";
cin >> year; cin >> month; cin >> day;
data.year = year; data.month = month; data.day = day;
if (IsDay(data))
AfterData(data);
system("pause");
}
return 0;}
题目 2:采用状态图分析方法绘制电梯运行的状态图
要求:用文字描述状态图绘制的步骤;编号所有的输入;初始状态:空闲;
绘制电梯运行的所有状态直到没有新的状态产生。根据状态图设计测试用例覆盖
图中的所有状态。
步骤一:列出被测系统的输入事件
代号 |
事件 |
ip1 |
按上升键 |
ip2 |
按下降键 |
ip3 |
按楼层取消键 |
ip4 |
按开门键 |
ip5 |
按关门键 |
ip6 |
按报警键 |
ip7 |
楼层到达 |
步骤二:绘制电梯状态图
步骤三:设计测试用例
路径1:空闲-开门-关门-上升-报警
路径2:空闲-上升-到达楼层-下降-空闲
3.实验分析
题目一应用等价类和边界值、随机数据生成法设计测试用例对程序进行测试。首先对于年份、月份以及日期的数字有明显限制,年份需要在1000到1999年之间,一年有十二个月,日期最多从一至三十一。其次每个月份的天数不同,二月份比较特殊,对于闰年和非闰年有较大区别,用if ((d.year % 4 == 0 && d.year % 100 != 0) || d.year % 400 == 0)来进行判断。对于月末,隔天日期可能改变月份使用d.day = d.day % day_month[d.month - 1]; d.month++;来判断,测试用例实验正确。题目二使用状态图法来设计测试用例,首先要对电梯所有状态进行判断,其次要考虑所有可能改变状态的输入事件,仔细考虑并绘制状态图,设计测试用例。
4.实验总结
对于状态图法设计测试用例不太熟悉,使用起来较为困难。绘制状态图可能考虑不周,存在缺陷。同时在设计题目一的测试用例时,将问题想的很复杂,仔细分析下来发现,没有自己想象的那么困难,首先判断是否为闰年,来判断二月份的天数以及对月末隔天月份的转换没有想象的那么复杂。
软件测试-黑盒测试2相关推荐
- 软件测试——黑盒测试技术
软件测试--黑盒测试技术1 黑盒测试发现的错误类型 功能错误或遗漏 界面错误 外部数据库访问错误 性能错误 初始化和终止错误 理论上,黑盒测试只有采用穷举输入测试,把所有可能输入都作为测试情况考虑,才 ...
- 软件测试黑盒测试实验心得_软件测试的基础知识
1测试的含义为"以检验产品是否满足需求为目标".而软件测试活动包括了很重要的任务,即发现错误. 2什么是软件测试 广义的概念 指软件生存周期中所有的检查.评审和确认工作,其中包括了 ...
- 软件测试 黑盒测试与白盒测试简单分类
软件测试 软件测试其实就是对程序进行一些操作,来发现程序所存在的缺陷,衡量软件的质量,并对其是否能满足设计要求进行评估的过程. 软件测试方法分类 基于直觉和经验的方法 Ad-hoc测试方法:强调测试人 ...
- 软件测试——黑盒测试
1.概述 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检验每个功能都是否能够正常使用. 在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情 ...
- 软件测试-黑盒测试,白盒测试,灰盒测试
黑盒测试 概述 实际上就是功能测试,不关心程序的内部结构,只关心输入输出.基于产品需求和用户观点出发的测试,查看界面规划是否符合界面需求,查看是否有功能遗漏,是否有人机交互错误,数据库结构错误,检测行 ...
- 软件测试黑盒测试代码,软件测试黑盒测试代码.doc
实验一 黑盒测试 1.实验目的 (1)能熟练应用黑盒测试技术进行测试用例设计: (2) 对测试用例进行优化设计 2.实验内容 找零钱最佳组合 假设商店货品价格(R)皆不大于100 元(且为整数),若顾 ...
- 深圳软件测试 黑盒测试,深圳软件测试培训:常用控件黑盒测试方法有哪些?...
深圳软件测试培训(sz.qa.tedu.cn)专家就针对常用控件黑盒测试方法有哪些这一问题做一个详细的分解.希望能在工作中对你有所帮助! 1.常用控件有哪些 文本框,复选框,按钮,单选按钮,列表框,组 ...
- 软件测试——黑盒测试基本方法
黑盒测试的定义 黑盒测试又称功能测试,它是通过一系列测试用例来检测软件的功能是否正常.在黑盒测试中,我们把软件看成是一个黑盒子(不关注内部的实现原理),通过关注软件的输入输出结果,来判断软件是否存在问 ...
- 软件测试-黑盒测试学习
黑盒测试方法(功能测试) 定义: 黑盒测试是用来测试程序每个功能是否正常的测试方法,测试过程中,将被测试的程序看作你个黑盒子,不考虑功能具体的逻辑实现,只是验证功能是否符合规格说说明书的要求.主要用于 ...
- 软件测试-黑盒测试:等价类划分法
等价类划分法 参考文献: 软件测试方法_等价类划分法 等价类划分法设计测试用例 软件测试第8讲_测试流程_测试用例(等价类划分法) 整个等价类划分法的核心就是:如何划分等价类,如何区分有效等价类和无效 ...
最新文章
- 解决:【异常】Caused by: java.lang.IllegalStateException: Zip64 archives are not supported
- tf.keras.layers.MaxPool2D 最大池化层 示例
- 计算机信息技术应用的困惑,信息技术教育的困惑
- arm linux c++编译警告:ISO C++ forbids converting a string constant to ‘char*’(需要把const char*转换成char*)
- linux 基因组数据下载,linux下用Aspera从NCBI上下载SRA格式宏基因组数据
- Tiny Wings 为什么能迅速成为 iOS App Store 付费应用第一名?
- 【Todo】RTP/RTCP/RTSP/SIP/SDP 等多媒体传输和会话协议
- c语言中的switch语句中的break和continue的作用
- linux桌面xfce美化_Xfce Linux桌面环境,Arduino机器人,热门DevOps书籍,FreeDOS,Python,Go等
- 硬编码与非硬编码(软编码)区别
- java里ssm框架分页代码_SSM框架实现分页查询例子
- 盘点前 10 名的免费跨浏览器测试工具
- php gtk 中文手册,PHP-GTK
- 基于电气火灾监控系统与物联网的设计与研究
- 最新美团Java面试题目(共3面)
- java面向对象小知识
- 【技术邻】基于DynaForm的多工步连续模(级进模)分析实例
- jQuery-入口函数
- IE主页被恶意修改处理办法
- RK3326 8.1系统定制化通用修改