如果假设我创建了一个输入文本,它应该只接受 1 到 100 之间的任何小数,我应该如何测试它?
恕我直言,我将在这个流程中进行测试:
“0”、“1”、“50”、“100”、“101”、“0.9”、“100.1”、“A”
这些够了吗?是否有结构化流程如何测试这种边界测试? (有什么好文章吗?)我也要考“1+1”吗?
如果问题改为“接受 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/