unit-testing - 良好的边境测试

标签 unit-testing testing

  1. 如果假设我创建了一个输入文本,它应该只接受 1 到 100 之间的任何小数,我应该如何测试它?

    恕我直言,我将在这个流程中进行测试:

    “0”、“1”、“50”、“100”、“101”、“0.9”、“100.1”、“A”

    这些够了吗?是否有结构化流程如何测试这种边界测试? (有什么好文章吗?)我也要考“1+1”吗?

  2. 如果问题改为“接受 1 到 100 之间的任何整数”,这一系列测试是否足够?输入序列是否需要不同于测试小数?

    “0”、“1”、“50”、“50.5”、“100”、“101”、“0.9”、“100.1”、“A”

最佳答案

对于 #1,您走在正确的轨道上,我认为您甚至可能有太多属于同等类别的案例。通常,如果您有一个下限 L 和一个上限 U,则足以测试 L 和 U 是否有效以及 L - e 和 L + e 是否无效(其中 e 是最小的或相当小的增量以摆脱边界)。如果你想为理智增加额外的值(value),那么测试 L 和 U 之间的东西也可以。有人会说在 L 和 U 之间选择一个随机值也可以,但我更喜欢我的测试是确定性的。

所以在上面的例子中,L 是 1,U 是 100。由于它是一个十进制值,e 的值很棘手,因为 e 理论上可以无限小。最好根据您的客户场景选择合理的东西。例如,如果是美元金额,选择 0.01 将是一个不错的选择。在这种情况下,这将为我们留下“1”、“100”、“0.99”和“100.01”。

由于您的文本框也可以接受字母,因此在这里也可以像上面使用“A”所做的那样测试非数字数据。减轻测试负担的另一种方法是将您的客户体验设计为仅允许有效值。在整数情况下,一种方法是使用仅具有 1 到 100 之间整数值的组合框。

对于 #2,情况确实发生了一些变化。 L 为 1,U 为 100,但 e 现在为 1,因为唯一的有效值是整数值。如果您想测试十进制值是否会引发错误,那是另一类情况,与边界无关。因此“50.5”和“A”对于错误条件就足够了。或者,如果您想舍入小数,您也可以对其进行测试。

关于unit-testing - 良好的边境测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6427738/

相关文章:

javascript - 当元素存在时执行操作,但当元素不存在时不失败( Cypress E2E 测试)

testing - 如何在 Laravel 中以登录用户身份运行 Behat 测试?

java - 如何使用Java捕获网络流量并在不使用代理的情况下获取文件类型?

javascript - 在不重新排序属性的情况下获取 HTML

visual-studio - 当 VS2013 以管理员身份运行时,MSTest 正在删除测试结果

ios - 使用iOS中的OCUnit在XCode 4.5中使用Core Data对象进行单元测试

IE 9/OF/Chrome Javascript/JQuery 浏览器测试框架

angularjs - Grunt Karma PhantomJS - 语法错误 : Unexpected token '>' ?

unit-testing - 你如何对 Jboss Rules (Drools) 规则进行单元测试?

javascript - 为什么在使用 Google Closure 模拟时需要同时调用 replayAll 和 verifyAll?