等价类测试与边界值测试

neu*_*cer 27 testing black-box equivalence

我理解等效测试是如何工作的.

它与边界值测试有什么相同或不同?

Jon*_*röm 67

等价类测试
EC测试是指您想要测试的许多测试项目(例如值),但由于成本(时间/金钱),您没有时间对其进行测试.因此,您将测试项分组到类中,其中每个类中的所有项都假设行为完全相同.理论上,您只需要测试每个项目中的一个以确保系统正常工作.
示例1
2岁以下的儿童免费乘坐巴士.年轻人支付10美元,成人支付15美元,老年人支付5美元.
职业:
价格:0 - >年龄:0-1
价格:10 - >年龄:2-14
价格:15 - >年龄:15-64
价格:5 - >年龄:65-无限

示例2(多个参数)
手机K80,J64和J54运行Java 5.K90和J99运行Java 6.但是有两个可能的浏览器FireFox和Opera,J模型运行FF和K模型运行O.
类:
浏览器:FF ,Java:5 - >电话:J64,J54
浏览器:FF,Java:6 - >电话:J99
浏览器:O,Java:5 - >电话:K80
浏览器:O,Java:6 - >电话:K90

等价类测试
的危险使用EC 测试存在危险,测试书中很少提及,但要记住这一点非常重要.
仅仅因为假设两个项/值在同一个类中并且行为相同,并不意味着它们的行为相同.
这意味着只是因为您在类中测试了一个值,该类中的所有值都表现相同.我的真实世界的例子是手机都有一个特定的Java平台.他们认为所有的工作都是一样的,但他们实际上并没有.因此,在类中测试一个值是好的,但不够好.EC测试是一个很好的工具,但它不是万无一失的,要小心它.如果测试用例便宜且快速(如自动化),测试更多,或者为什么不测试它们!

边界值测试
BV测试是指您决定在已识别的每个类的边缘测试值.理论是大多数缺陷都在一个类的边缘. 示例
类别:
价格:0 - >年龄:0-1(边界值0,1)
价格:10 - >年龄:2-14(边界值2,14)
价格:15 - >年龄:15-64(边界值15,64)
价格:5 - >年龄:65-infinity(边界值65)

边界价值测试的批评
1)我和其他测试专业人​​员,我从中学过,并不相信大多数缺陷隐藏在每个类的边缘.我从未见过任何证明情况如此的研究.2)您需要使用BV测试证明EC测试存在缺陷,因为您测试了每个类的多个值.3)使用整数等值时很容易使用.但是手机型号或浏览器版本的边界价值是多少?

隐藏边界值测试类
的边界值通常基于系统应如何工作的规范.这一切都很好,但大多数系统包含任何规范都没有解释的边界,你需要自己寻找.例如'在系统出现故障和中断之前,我可以在测试字段中输入多少个字符.','数据文件在读取之前变得如此之慢会变得多么烦人'.
真实世界的例子
- 在胜利7中将一百万个字符粘贴到FireFox 3.5中的文本区域会崩溃它
- ReCaptcha有16003个字符的限制,如果有人在字段中放置16004个字符,你的系统是否会处理它传回给它的413.或者它会破裂

总结
EC测试和BV测试是很好的工具,您应该使用它们但它们并不完美,并且不希望发现使用它们的所有缺陷.利用您对系统的专业知识以及您的智慧和直觉来尝试更多项目,并寻找可能失败的其他方式.寻找隐藏的界限!


Vin*_*nie 19

边界值分析仅意味着选择类边界附近的值.因此,您仍然根据类划分输入域,而不是从类的中间选择值使用来自边界的值.

例如,如果输入条件的范围是20到70,那么您有三类输入

  1. 不到20岁
  2. 在20到70之间
  3. 70多个

然后对于边界值分析,选择输入= 19,20,21,69,70,71.这种类型的分析会在边界上发现错误.


sat*_*esh 11

等效性测试需要通过边界值测试来补充.

例如,对于取值介于1到12之间
(例如一年中的几个月)的函数的等效测试,分区将是:

  • 值小于1(0,-1,-2),无效分区
  • 值为1-12,有效分区
  • 值大于12,无效分区
  • 对于等价测试,从每个分区类中选择一个值作为测试输入就足够了.这意味着值为-2,6的测试,并且15被认为足以测试函数的行为.但是这些值并没有发现可能经常出现的一个一个错误.

    通过边界值测试,测试输入将是:-1,0,1,11,12,13(在边界处),这将捕获逐个错误.

    我认为这两种测试方法是相互补充的.