一、实验目的与要求
【含用例输入、期望输出、实际输出、设计方法描述】
1.1三角形问题的黑盒测试用例设计
1.2 次日问题的黑盒测试用例设计
二、实验环境
实验语言:Java
编译软件:IDEA
绘图软件:vscode
三、实验内容
根据设计方法绘制测试用例表格,填写用例和预期结果,执行代码获取实际结果,最终完成表格的填写。
四、测试用例描述及实验步骤
4.1实验步骤
1、给定三条边的长度,判断是否能够构成一个三角形,并返回相应的三角形类型。。
2、根据给定的日期,计算下一天的日期。
4.2用例描述
1.三角形问题:
根据勾股定理,当三边长度分别为3、4、5时,可以构成一个直角三角形。因此,我们期望系统能够正确地判断该三角形为直角三角形,并输出正确的结果;当三边长度均相等时,可以构成一个等边三角形。因此,我们期望系统能够正确地判断该三角形为等边三角形,并输出正确的结果;当两边长度相等时,可以构成一个等腰三角形。因此,我们期望系统能够正确地判断该三角形为等腰三角形,并输出正确的结果;根据三角形的边长关系,任意两边之和大于第三边才能构成一个三角形。当边长为2、3、6时,无法满足这个条件,因此无法构成一个三角形。我们期望系统能够正确地判断该输入为非三角形,并输出正确的结果;我们可以覆盖不同类型的三角形,如直角三角形、等边三角形、等腰三角形以及非三角形。这样可以验证系统对于不同类型的输入能够正确地判断和输出相应的结果。
2.次日问题:
根据次日问题的定义,给定一个日期,系统应该能够正确地计算并输出该日期的下一天。在这个测试用例中,输入日期为2023年5月20日,我们期望系统能够计算出下一天的日期为2023年5月21日,并输出正确的结果。在次日问题中,需要考虑到月末和年末的情况。在这个测试用例中,输入日期为2023年12月31日,我们期望系统能够正确地计算出下一天的日期为2024年1月1日,并输出正确的结果。对于闰年的处理是次日问题中的一种特殊情况。在这个测试用例中,输入日期为2024年2月28日,我们期望系统能够正确地计算出下一天的日期为2024年2月29日,并输出正确的结果。在这个测试用例中,输入日期为2023年11月30日,我们期望系统能够正确地计算出下一天的日期为2023年12月1日,并输出正确的结果;通过设计这些测试用例,我们可以覆盖不同的日期情况,包括普通年份的日期计算、月末的日期计算以及闰年的日期计算。这样可以验证系统对于不同情况的输入能够正确地计算并输出相应的结果。
五、调试过程及实验结果
实验结果
三角形问题
测试用例 | 用例描述 | 边长A | 边长B | 边长C | 预期输出 | 实际输出 |
1 | 构成常规三角 | 4 | 5 | 6 | 一般三角形 | 一般三角形 |
2 | 均为正数且两边相等 | 6 | 6 | 10 | 等腰三角形 | 等腰三角形 |
3 | 均为正数且三边相等 | 5 | 5 | 5 | 等边三角形 | 等边三角形 |
4 | 无法达成两数之和大于第三边 | 1 | 1 | 2 | 不是三角形 | 不是三角形 |
5 | 存在一个0 | 4 | 4 | 0 | 不是三角形 | 不是三角形 |
6 | 存在一个负数 | 4 | 4 | -1 | 不是三角形 | 不是三角形 |
7 | 存在三个0 | 0 | 0 | 0 | 不是三角形 | 不是三角形 |
8 | 存在三个负数 | -1 | -1 | -1 | 不是三角形 | 不是三角形 |
9 | 存在负数和0 | -1 | 0 | 0 | 不是三角形 | 不是三角形 |
次日问题
条件桩
编号 | 描述 |
M1 | 这月有30天 |
M2 | 这月有31天且现在不是12月 |
M3 | 现在是12月 |
M4 | 现在是2月 |
Y1 | 今年是闰年 |
Y2 | 今年不是闰年 |
D1 | 今天是1<=day<=27 |
D2 | 今天是28号 |
D3 | 今天是29号 |
D4 | 今天是30号 |
D5 | 今天是31号 |
动作桩
编号 | 描述 |
A0 | 日期错误 |
A1 | 日期号+1 |
A2 | 日期号重置 |
A3 | 月份+1 |
A4 | 月份重置 |
A5 | 年份+1 |
判定表
规则 | 1 2 3 | 4 | 5 | 6 7 8 9 | 10 | 11 12 13 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 22 |
年 | Y1 | Y2 | Y1 | Y2 | |||||||||
月 | M1 | M1 | M1 | M2 | M2 | M3 | M3 | M4 | M4 | M4 | M4 | M4 | M4 |
日 | D1 D2 D3 | D4 | D5 | D1 D2 D3 D4 | D5 | D1 D2 D3 D4 | D5 | D1 | D2 | D2 | D3 | D4 | D4 D5 |
A0 | T | T | T | ||||||||||
A1 | T | T | T | T | T | ||||||||
A2 | T | T | T | T | T | ||||||||
A3 | T | T | T | T | |||||||||
A4 | T | ||||||||||||
A5 | T |
测试用例
序号 | 年 | 月 | 日 | 预期输出 | 实际输出 |
1 2 3 | 2020 | 5 | 24 | 2020-5-24 | 2020-5-24 |
4 | 2024 | 4 | 4 | 2024-4-5 | 2024-4-5 |
5 | 2022 | 13 | 31 | 月份有误 | 月份有误 |
6 7 8 9 | 1990 | 4 | 5 | 190-4-6 | 1990-4-6 |
10 | 2022 | 7 | 31 | 2022-8-1 | 2022-8-1 |
11 12 13 14 | 2022 | 12 | 15 | 2022-12-16 | 2022-12-16 |
15 | 2022 | 12 | 31 | 2023-1-1 | 2023-1-1 |
16 | 2023 | 2 | 15 | 2023-2-16 | 2023-2-16 |
17 | 2021 | 2 | 28 | 2021-3-1 | 2021-3-1 |
18 | 2020 | 2 | 28 | 2020-2-29 | 2020-2-29 |
19 | 2020 | 2 | 52 | 2020-3-1 | 2020-3-1 |
20 | 2021 | 2 | 35 | 日期有误 | 日期有误 |
21 22 | 2028 | 2 | 30 | 日期有误 | 日期有误 |
六、 总结
本次实验我们进行了黑盒测试,旨在验证系统的功能是否符合预期。通过观察系统的输入和输出,我们设计了多个测试用例来覆盖不同的情况和场景。在实验过程中,我们遇到了一些挑战,但也采取了相应的策略来解决。
其中一个挑战是需求规格的不完整或不清晰。这导致测试人员难以确定正确的输入和预期输出。为了克服这个问题,我们与开发团队和业务分析人员紧密合作,澄清需求细节,并确保测试人员对系统功能的理解与开发团队一致。这帮助我们准确设计测试用例,并验证系统在不同输入条件下的输出是否符合预期。
另一个挑战是复杂的系统逻辑。某些系统具有复杂的交互过程和逻辑,导致测试用例的设计变得困难。为了应对这个挑战,我们通过分析系统的功能和业务流程,将复杂系统拆分为较小的模块或功能单元,并逐个进行测试。这样可以降低测试的复杂性,集中精力测试每个模块的功能。
此外,我们还面临了无法访问内部代码的限制。黑盒测试无法直接访问系统的内部实现细节,这可能限制了测试的覆盖范围。为了克服这个问题,我们基于系统的功能和接口设计了测试用例,并利用边界值分析、等价类划分等技术来提高测试覆盖率。同时,与开发团队进行密切合作,共享关键信息和数据,以便更全面地测试系统。
本次黑盒测试实验使我们更加了解了系统的功能和行为。通过设计合适的测试用例,我们能够验证系统的正确性和准确性。同时,我们也意识到了黑盒测试中可能遇到的一些困难,并学会了通过与团队合作、合理设计测试用例、使用适当的工具和技术来克服这些困难。这些经验对于今后的测试工作将是宝贵的参考和指导。