边界值分析(通常简称为 BVA)是一种常见的黑盒测试技术。 这种方法通过验证输入值在允许范围内的边界来测试软件缺陷。
本文将探讨什么是边界分析测试、为什么它有用,并探讨一些不同的方法、技术和各种边界测试工具。
什么是软件测试中的边界值分析?
边界值分析是功能测试的一种。 这类测试主要是验证软件的每个功能是否符合要求和规格。 在边界测试中,这种功能包括软件如何处理各种输入。
BVA 是一种软件测试技术,用于验证软件如何对输入边界或输入边界边缘的输入做出响应。 实质上,每个输入都有可允许的范围。 例如,您可以为登录设置一个密码框,接受 8 到 12 个字符的密码。 边界测试将测试字符长度为 7、8、12 和 13 的密码。
这里的思路是,与界限内的数字(如 9、10 和 11)相比,界限外的数字(如 7、8、12 和 13)更容易出错。 在接受 8 到 12 个字符的字段框的示例中,这样做的好处似乎微不足道,但当你需要为接受 1 到 20 个字符或 1 到 1000 个数字的字段框等编写测试用例时,这些好处就会变得更加明显。
因此,为了节省时间,减少功能测试中测试用例的数量,边界值分析法关注的是数值:
- 最小值
- 直接低于最小值
- 最大值
- 直接高于最大值
测试中边界值分析的好处
对于质量保证团队来说,边界测试有几个显著的优势。
#1. 提高软件质量
对于测试人员来说,噩梦般的场景就是错误和缺陷被忽视。 由于需要核实的事情太多,一些缺陷可能会漏掉。 边界测试可证明软件中更有可能包含错误的区域的功能,从而更好地构建软件,最终实现更可靠、更稳定的应用程序。
#2. 提高测试覆盖率
软件测试中的 BVA 非常有用,因为它有助于减少全面测试覆盖所需的测试用例数量。 边界值分析可确保对重要值和每个值进行更彻底的测试。
#3. 早期缺陷检测
边界值测试是优先考虑早期缺陷检测的方法的一部分。 在开发过程中尽早发现错误意味着开发团队可以节省时间和金钱,更不用说在开发的早期阶段弥补错误要容易得多。
#4. 效率
边界值测试可以减少对大量测试用例的需求,因此效率极高。 事实上,将输入减少到最有可能导致问题的输入之外,可以大大节省测试团队编写和执行测试用例的时间。
测试中边界值分析的缺点
当然,没有一种软件测试技术是完美无缺或没有局限性的。 虽然边界值分析有很多好处,但使用这种功能测试技术也有一些限制。
#1. 范围狭窄
BVA 在有效数据输入的边界或边缘工作。 一般来说,它会忽略中间的输入,理由是如果边上的有效输入是正常的,那么中间的输入就不会有问题。 不过,有些未经测试的值可能会出现问题,这并非没有先例。
#2. 过于简单
边界分析就是要化繁为简。 虽然这种方法可以减少测试用例,但对于具有多重边界、交互或依赖关系的高度复杂领域来说,这种方法就不那么适用了。 事实上,它很难处理复杂的情况,这意味着您需要探索其他技术来获得足够的覆盖面。
#3. 假设
任何试图提高效率的流程都有可能遗漏某些错误。 BVA 侧重于范围边缘的边界。 在此过程中,它必须对边界值两侧的其他输入做出假设。 测试人员必须在效率和覆盖率之间取得平衡,如果单独使用边界测试,会带来轻微风险。
#4. 依靠准确的规格和要求
高效的 BVA 取决于规格和要求文件的质量和准确性。 这些文件中任何未检查的错误都会渗入边界值测试,导致特定错误在开发的关键后期阶段才被检查和发现。
#5. 对等价类的依赖
进行全面的 BVA 需要对等价类有很强的工作知识。 准确设置这些等级需要经验和一些应用背景信息。
边界值分析的挑战
软件测试
现在,您应该对边界测试的利弊有了一定的了解。 但是,如果您想在自己的软件测试中采用这种方法,您还必须了解必须克服的各种挑战。
以下是在软件测试中实施边界值测试的一些挑战。
#1. 划定边界
对于有能力的测试人员来说,识别简单系统中的边界几乎没有什么挑战。 不过,也有一些更为复杂的情况,例如
- 输入域复杂,输入变量多样或关系错综复杂
- 未在规范文件中明确说明的边界
- 根据用户操作或其他条件改变的动态边界
#2. 要求不明确
需求文件写得不好或不清楚会妨碍边界值的确定。 清晰、完整、详尽的规范文件需要时间,但最终会得到回报。
#3. 专业知识
边界值分析可能非常复杂。 事实上,测试团队需要具备相关经验和知识的人员来了解技术的细微差别。 此外,测试人员还需要掌握一些软件知识,或至少有可靠的规范文档作为依据。
#4. 错误
边界分析旨在减少验证有效和无效输入所需的测试用例数量。 然而,检测范围之外的缺陷很容易被忽视。 此外,”off-by-one “错误是常见的编码错误,可能发生在边界或边界附近。 测试人员必须意识到这些情况,并为测试做好准备。
#5. 测试用例爆炸
在多重输入边界的作用下,测试用例很快就会变得复杂,并出现无法控制的倍增。 在这种情况下,通过边界测试可以节省的时间和金钱就会丧失,从而损害解决方案的效益。 具有大量组合或排列组合的复杂软件构建也会产生类似的效果。
#6. 分析工具的局限性
软件测试自动化工具可以帮助团队进行充分的边界值分析。 不过,即使在最好的情况下,这些工具在测试和创建测试时也需要一些人工干预。 对于具有多变量交互作用的复杂构建,这种情况可能会更加严重。
不同类型的边界值
软件测试中的测试
在《软件测试:作者 Paul C.Jorgensen 和 Byron DeVries 描述了四种不同类型的边界值测试,它们是
1.正常边界值测试(NBVT)
- 测试输入域边缘的有效输入值
- 探索最小值和最大值,以及边界上下的输入值
- 这是典型的边界值分析
2.稳健边界值测试(RBVT)
- 与上述 NBVT 类似,但也包括无效输入
- 在边界和边界外进行测试,但也考虑无效输入
- 侧重于从极端或意外输出中查找错误
3.最坏情况边界值测试(WBVT)
- 使用极端有效值和无效值验证软件行为
- 探索输入域边缘的值和这些边界之外的值
- 力求了解软件在更极端条件下的行为
4.稳健的最坏情况边界值测试(RWBVT)
- 混合使用 RBVT 和 WBVT,进行最彻底的边界值测试
- 在典型和极端边界测试有效和无效输入值
- 提供发现边界相关缺陷的最佳机会
这些方法的全面性各不相同,其中 RWBVT 最为全面。 但是,测试人员必须认识到,要发现这种额外的缺陷,需要投入额外的时间和精力。
等价分割和边界值
分析:异同
等价分割法和边界值分析法经常结合使用。 事实上,这两种技术具有很强的互补性。 不过,它们描述了验证数据输入的不同方法。 下面我们来看看两者的异同。
1.相似之处
等价分割和边界值分析是一对好搭档。 以下是这两种技术的一些相似之处。
- 它们都是黑盒测试技术,即侧重于输入和输出,无需事先了解应用程序的源代码即可进行测试。
- 它们都是全面测试投入方法的一部分
- 它们都能帮助测试人员在全面的测试覆盖率与不编写过多测试用例之间取得平衡。
2.差异
为了探究等价分割法和边界值分析法之间的区别,我们需要将两者分开来看。
等价分割
- 将输入数据划分为等价类,这些等价类应产生类似的系统输出结果
- 使用每个类别中的一个代表值,并用该值对系统进行测试
- 它关注的是确定有效和无效的等价类
边界值分析
- 测试等价类边界或边缘的值
- 测试多个值,包括最小值、最大值和边界两侧的值
- 查找边界边缘的错误
等价分割和边界值分析实例
为了帮助您加深对等价分割和边界值分析的理解,下面举几个例子。
等价分割示例:
比方说,您有一个汽车登记输入框。 通常情况下,美国汽车牌照有 6 到 7 个字符。 为简单起见,我们不考虑特殊号牌。
有效数据= Plates 6 或 7 个字符
无效数据= 印有>6 或>7 字符的印版。
边界值分析示例
使用上述相同的号码牌示例,边界分析将测试
有效数据 = 有 6 或 7 个字符的印版
无效数据= 印有 5 或 8 个字符的印版,某些情况下印有 4 和 9 个字符的印版
边界值分析示例
要充分理解这一概念,最好的办法也许是再看一两个边界值分析的例子。
边界值测试示例 #1
为了更详细地探讨边界值测试,我们来看一个年龄验证域的例子。
我们有一个供用户输入年龄的方框。
边界值为
- 最低年龄 = 18 岁
- 最高年龄 = 120 岁
边界测试案例示例:
共有六个测试案例:
- 17、18 和 19,分别低于最低值、最低值和高于最低值
- 119、18 和 19,分别低于最大值、最大值和高于最大值
边界值测试示例 #2。
在下一个边界测试示例中,我们将探讨一个网站,该网站对 100 美元及以上的订单提供 20% 的最低价值购买折扣。
在这个例子中,购买超过 600 美元可享受 25% 的折扣。 边界值测试将处理 100 美元至 600 美元之间的投入。
边界值为
最低合格折扣 = 100 美元
最高合格折扣 = 600 美元
边界测试案例示例:
同样,我们总共生成了六个测试用例,它们是
- 99.99美元、100美元和100.01美元,分别低于最低限额、最低限额和高于最低限额
- 599.99美元、600美元和600,01美元,分别低于最高限额、最高限额和高于最高限额
软件测试中的边界测试准确吗?
在研究论文《利用等价分割和边界值分析方法进行黑盒测试》中,作者探讨了如何利用等价分割和边界值分析方法来测试印度尼西亚马塔兰大学的学术信息系统。
作者使用流行的开源测试工具 Selenium 进行测试,共运行了 322 个测试用例。 等效测试和边界值分析发现了约 80 个失败案例,这导致有效测试分数与无效测试分数的比例约为 75:25。 总之,在软件测试中结合使用等价分割和 BVA,可对软件进行全面和有益的测试。
最佳边界值测试工具
虽然专用的边界测试软件工具并不多见,但有许多著名的测试工具都能胜任这项工作。
#3. 测试用例实验室
TestCaseLab 是一款基于云的测试管理工具,可帮助进行 BVA 测试。 该软件允许团队通过直观、美观的用户界面创建和管理测试用例。 TestCaseLab 灵活且功能丰富,但也有其局限性,包括报告和自定义选项有限。
#2. Micro Focus UFT One
Micro Focus UFT One 是一款侧重于功能和回归测试的软件测试工具。 它支持不同的平台、设备和API 测试,并提供强大的集成选项。 它提供无代码和关键字驱动测试创建功能,可帮助团队轻松创建边界值分析测试用例。 与 ZAPTEST 等工具相比,您需要考虑一些局限性,如学习曲线陡峭、功能不够强大等。
#1. 扎普测试
ZAPTEST 是一款全面的软件自动化测试工具,具有先进的RPA 功能。 它旨在为测试人员提供一套用户友好、功能强大的测试自动化工具,可帮助以各种方式验证软件,包括在软件测试中使用 BVA。
ZAPTEST 在帮助边界值分析方面最引人注目的一些用例包括测试用例生成、测试数据处理、测试执行以及报告和分析。 ZAPTEST 用户可以利用一系列模板和高度定制化功能,结合无代码测试用例创建功能,快速、轻松地创建和管理强大的测试用例,用于所有类型的边界分析。
除了测试用例的生成和管理,ZAPTEST 的 RPA 功能还能以其他方式帮助测试团队进行边界值分析测试。 例如,您可以自动执行测试用例、生成测试数据,并与其他测试工具建立强大的集成。
边界值测试提示
- 将边界值分析与等价分割相结合,确保您的测试用例涵盖各种输入情况
- 使用无效输入场景(即负测试),确保验证软件如何处理错误和意外输入
- 花时间确定文本、数字、布尔值等不同数据类型的边界值。
- 优先对关键功能或更容易出错的区域进行边界值测试
- 使用能代表用户将输入域名的数据类型的真实数据。
最后的想法
边界值分析是一种有用的功能测试方法。 当你有一个输入域时,你需要检查它是否接受有效数据,并在接收到无效数据时发送错误信息。 边界分析测试只需建立全面测试所需的测试用例,就能有效地验证功能。
边界测试会查看可接受范围内或其附近的值,并验证系统如何对这些输入做出响应。 这样做的结果是节省了大量时间和精力,因为你不需要建立多余的测试用例。 在快节奏的软件开发世界里,截止日期似乎来得太快,测试团队需要一切可以得到的帮助。