实验三 黑盒测试1
实验目的
(1)能熟练应用黑盒测试技术进行测试用例设计;
(2)对测试用例进行优化设计。
实验内容
题目1:三角形问题。
根据下面给出的规格说明,利用等价类划分的方法,导出足够的测试用例。
输入三个整数a、b、c 分别作为三角形的三条边,现通过程序判断由三条边
构成的三角形的类型为等边三角形、等腰三角形、一般三角形以及构不成三角形。
现在要求输入三个整数a、b、c,必须满足以下条件:
条件1: 1≤a≤100 条件2: 1≤b≤100
条件3: 1≤c≤100 条件4: a<b+c
条件5: b<a+c 条件6: c<a+b
步骤一:根据程序清单,给出等价类表
Test case | 有效 | 编号 | 无效 | 编号 |
条件1 | 1≤a≤100 | 1 | a<1 | 7 |
a>100 | 8 | |||
条件2 | 1≤b≤100 | 2 | b<1 | 9 |
b>100 | 10 | |||
条件3 | 1≤c≤100 | 3 | c<1 | 11 |
c>100 | 12 | |||
条件4 | a≤b+c | 4 | a≥b+c | 13 |
条件5 | b≤a+c | 5 | b≥a+c | 14 |
条件6 | c≤a+b | 6 | c≥a+b | 15 |
条件7 | a,b,c均为整数 | 16 | 给的数存在非整数值 | 17 |
步骤二:设计测试用例,运行程序检查测试用例
Test case | a | b | c | 预期输出 | 实际输出 | 测试结果 |
1 | 3 | 3 | 3 | 等边三角形 | 等边三角形 | √ |
2 | 4 | 4 | 1 | 等腰三角形 | 等腰三角形 | √ |
3 | 2 | 3 | 4 | 一般三角形 | 一般三角形 | √ |
4 | -1 | 2 | 3 | a= -1 不满足条件 1,不能够成三角形 | a= -1 不满足条件 1,不能够成三角形 | √ |
5 | 101 | 100 | 12 | a= 101 不满足条件 1,不能够成三角形 | a= 101 不满足条件 1,不能够成三角形 | √ |
6 | 2 | -1 | 3 | b= -1 不满足条件 2,不能够成三角形 | b=-1不满足条件 2,不能构成三角形 | √ |
7 | 100 | 101 | 12 | b= 101 不满足条件 2,不能够成三角形 | b= 101 不满足条件 2,不能够成三角形 | √ |
8 | 2 | 3 | -1 | c= -1 不满足条件 3,不能够成三角形 | c= -1 不满足条件 3,不能够成三角形 | √ |
9 | 100 | 12 | 101 | c= 101 不满足条件 3,不能够成三角形 | c= 101 不满足条件 3,不能够成三角形 | √ |
10 | 10 | 2 | 5 | 不满足a<b+c,不能构成三角形 | 不满足a<b+c,不能构成三角形 | √ |
11 | 2 | 10 | 5 | 不满足b<a+c,不能构成三角形 | 不满足b<a+c,不能构成三角形 | √ |
12 | 2 | 5 | 10 | 不满足c<a+b,不能构成三角形 | 不满足c<a+b,不能构成三角形 | √ |
13 | 4.2 | 1.2 | 5.2 | 输入a,b,c的值存在非整数 | 输入a,b,c的值存在非整数 | × |
题目2:能够求出三个在-10000 到 10000 间整数中的最大者。
1 单个文本框的测试用例设计
一、数值等价类
对每个文本框而言,输入值的限制是在-10000到10000之间。因此我们可以
划分一个有效等价类和两个无效等价类。根据这三个等价类,设计如下测试用例:
用例序号 | 测试用例 | 预期输出 | 实际结果 | 测试结果 | 失败原因 |
MAX001 | 输入-9800 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX002 | 输入0 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX003 | 输入9800 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX004 | 输入-110000 | 程序必须能判断输入的数越界并能告知用户 | 请输入一个-10000至10000之间的整数 | √ | 无 |
MAX005 | 输入110000 | 程序必须能判断输入的数越界并能告知用户 | 请输入一个-10000至10000之间的整数 | √ | 无 |
二、数据类型等价类
1、由于在文本框中只能输入整数,因此我们可以确定:
有效等价类:数字 无效等价类:字母、小数点、控制字符、功能键
MAX006 | 输入9 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX007 | 输入-数 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX008 | 输入+数 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX009 | 输入A | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
MAX010 | 输入a | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
MAX011 | 输入特殊字符如% ? !等 | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
MAX012 | 输入控制字符如ctrl shift | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
MAX013 | 输入功能键如F1 | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
MAX014 | 输入12.34 | 程序必须能检查用户输入的字符是否合理并能告知用户 | 程序会自动将小数变为整数 | √ | 无 |
MAX015 | 输入空格 | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
MAX016 | 输入0100 | 程序必须能按需求说明书中的规定将其自动转换为100 | 程序能按需求说明书中的规定将其自动转换为100 | √ | 无 |
MAX017 | 输入00010 | 程序必须能按需求说明书中的规定将其自动转换为10 | 程序能按需求说明书中的规定将其自动转换为10 | √ | 无 |
MAX018 | 输入---1 | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
MAX019 | 输入+++1 | 程序必须能检查用户输入的字符是否合理并能告知用户 | 请输入一个整数 | √ | 无 |
根据上述分析,确定如下测试用例:
三、除了上面列出的测试用例,为了使程序的性能更稳定、良好,我们还要
MAX020 | 在输入一个数字后等待很长时间再输入下一个数字 | 测试的超时控制能否正常工作 | 测试的超时控制能正常工作 | √ | 无 |
MAX021 | 输入120后按下回车 | 光标应自动转移到合适的位置 | 光标应自动转移到合适的位置 | √ | 无 |
MAX022 | 直接输入回车 | 程序必须能够给出提示,要求用户必须进行输入 | 请输入一个整数 | √ | 无 |
MAX023 | 输入Delete和退格键 | 程序必须能够正常删除 | 程序能够正常删除 | √ | 无 |
MAX024 | 利用光标键移动 | 光标必须能跟踪到相应的位置 | 光标能跟踪到相应的位置 | √ | 无 |
MAX025 | 在输入框内单击鼠标 | 光标必须能跟踪到相应的位置 | 光标能跟踪到相应的位置 | √ | 无 |
MAX026 | 在输入框内双击鼠标 | 文本框内的全部内容处于选中状态 | 文本框内的全部内容处于选中状态 | √ | 无 |
MAX027 | 输入一个数字后切换到其他程序然后切换回来 | 光标应该停留在原处 | 光标应该停留在原处 | √ | 无 |
设计如下的测试用例:
四、边界值
要测试的程序边界值,我们可以设计出如下的测试用例:
MAX028 | 输入-10000 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX029 | 输入-10001 | 程序必须能检查用户的输入是否合理并给出提示 | 请输入一个-10000至10000之间的整数 | √ | 无 |
MAX030 | 输入-9999 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX031 | 输入10000 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX032 | 输入10001 | 程序必须能检查用户的输入是否合理并给出提示 | 请输入一个-10000至10000之间的整数 | √ | 无 |
MAX033 | 输入9999 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX034 | 输入0 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX035 | 输入1 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX036 | 输入-1 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX037 | 输入-99999 | 程序必须能检查用户的输入是否合理并给出提示 | 请输入一个-10000至10000之间的整数 | √ | 无 |
MAX038 | 输入99999 | 程序必须能检查用户的输入是否合理并给出提示 | 请输入一个-10000至10000之间的整数 | √ | 无 |
MAX039 | 输入99 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX040 | 输入100 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
MAX041 | 输入101 | 程序必须能接受输入并运行正常 | 程序能接受输入并运行正常 | √ | 无 |
2 程序功能的测试用例设计
一、等价类
两个数值的大小有三种情况,大于、等于或小于,现在我们要对三个数进行
比较,因此可以划分出如下的等价类:
根据上面的等价类划分,我们可以设计出如下的测试用例:
MAX042 | 输入3 2 1 | 显示最大数是3 | 显示最大数是3 | √ | 无 |
MAX043 | 输入3 2 2 | 显示最大数是3 | 显示最大数是3 | √ | 无 |
MAX044 | 输入3 1 2 | 显示最大数是3 | 显示最大数是3 | √ | 无 |
MAX045 | 输入3 3 2 | 显示最大数是3 | 显示最大数是3 | √ | 无 |
MAX046 | 输入3 3 3 | 显示最大数是3 | 显示最大数是3 | √ | 无 |
MAX047 | 输入3 3 4 | 显示最大数是4 | 显示最大数是4 | √ | 无 |
MAX048 | 输入2 3 1 | 显示最大数是3 | 显示最大数是3 | √ | 无 |
MAX049 | 输入2 3 3 | 显示最大数是3 | 显示最大数是3 | √ | 无 |
MAX050 | 输入2 3 4 | 显示最大数是4 | 显示最大数是4 | √ | 无 |
MAX051 | 输入3 1 4 | 显示最大数是4 | 显示最大数是4 | √ | 无 |
二、其它
我们还可以测试其它的一些测试用例,如下表所示:
MAX052 | 使用Tab键 | 光标可在文本框间顺序移动 | 光标可在文本框间顺序移动 | √ | 无 |
MAX053 | 当光标停在“取最大值”命令按钮上时按下确定按钮 | 求出最大值 | 求出最大值 | √ | 无 |
MAX054 | 单击最小化、最大化、还原按钮 | 能正常工作 | 能正常工作 | √ | 无 |
实验分析
对于实验题目一采用等价类划分来进行黑盒测试,有七个有效等价类和十个无效等价类。但是程序无法判断使用者输入不足三个整数,或者输入的三个数字不全为整数的情况。if ((typeid(a).name() == "int") && (typeid(b).name() == "int") && (typeid(c).name() == "int"))来进行非整数的判断。题目二采用了等价类和边界值测试方法,还考虑了一些其他可能导致程序出现错误的可能,程序测试没有出现很大问题,可以满足大体需要。
实验思考题
(1)在实际的测试中,如何设计测试用例才能达到用最少的测试用例检测出最多的缺陷?
答:首先要对需求做充足的分析,结合被测对象的特点,列出等价类。在此基础上分析出所有边界值,包括隐性的边界。在上述两类集合中选取交集,进行用例设计。尊崇以下原则:
•根据输入参数的代表值组合而成的有效等价类和无效测试用例按照测试用例的使用频率和重要程度排序,为每个测试用例设置不同的优先级,根据时间和资源的实际情况,有针对性地选择要执行的测试用例;
•优先选择包含边界值和边界值组合的测试用例;
•将一个等价类的每个代表值和其他等价类的每个代表值组合设计测试用例;
•保证满足最小原则,及一个等价类的每个代表值至少在一个测试用例中出现。
(2) 在进行用例设计时,如何考虑软件测试用例的充分性和减少软件测试用例的冗余性?
答:在编写测试用例的时候,要充分熟悉需求,并且了解软件的架构设计,各个模块的设计。精心选择测试数据来达到对需求的一个较好的覆盖率。在实际测试过程中,会因为软件的特性,可能各个模块之间有关联,这时可以安排好测试用例的执行顺序,以达到测试数据的重用。
实验总结
黑盒测试技术是我们常用的软件测试的方法,任何一款软件都不可能做到完全测试,只是尽可能的将方法结合使用,减少软件的缺陷,以便用户更好的体验。
问题:开始划分等价类的时候忘记边界值的问题,没有将边界值考虑进去,使得测试用例没有尽可能的覆盖。没有仔细辨别题目浪费了时间。最后发现自己基础知识有待提高,对待问题存在一知半解。
改进措施:对于黑盒测试,要尽可能考虑出每一种情况,所选的用例尽可能的覆盖到每一个类,加强专业知识的提高。