谈谈 Negative Testing

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/seagal890/article/details/84947168

谈谈 Negative Testing

我们创建一个新产品时,我们确保所有的需求都满足,并且客户得到正确的产品。但这样就够了吗?当然不是。Test Engineer通过软件测试来找出系统和产品中的缺陷。测试的真正目的是确保软件是无缺陷的。无缺陷系统是无故障系统。所以我们需要确保我们的系统是100%无故障的,因此Test Engineer必须同时进行正向(Positive)和负向(Negative)测试。正测试只不过是使用预期的数据和参数进行的测试。

什么是Negative Testing?

仅仅通过做正向(Positive Testing)的测试只能确保我们的系统在正常条件下工作,这不能保证系统是100%无故障的。我们必须确保我们的系统能够处理意想不到的情况。用这些意想不到的条件来测试我们的系统被称为负向测试或者反向测试(Negative Testing)。意外的情况可能是从错误的数据类型到强烈的黑客攻击。所以当他们面对现实的时候,确保系统能够很好地处理这种情况。

Negative Testing的例子

我们都知道电梯的功能。这些将被认为是电梯的要求,如按下楼层编号使电梯去那个特定的楼层。电梯一旦到达指定楼层,门就会自动打开。那么考虑下面的情况:

Negative Testing Positive Testing
如果乘坐电梯的人数(重量)超过了电梯给定的最大限制? 假设乘坐电梯的人数符合电梯容量(重量)的限制。
当乘客在电梯运行过程中按下了火警按钮,或者因为抽烟等触发了火警警报,那么会发生什么? 乘客在乘坐电梯是不会按下火警按钮,或者不会因为抽烟等触发火警警报。
当电梯在运行过程中,突然断电,或发生什么情况? 在电梯的运行过程中,不会发生断电的情况。

所有这些情况都会受到负面的(Negative)考验。重要的是,我们不能确保上述所有情况不会发生,所以我们需要将它们包含在测试范围以内。

考虑检查超重条件的情况,并且在实现时,当存在超重条件时,电梯执行异常。这将对系统的可靠性产生潜在的影响,甚至可能造成生命危险。这解释了什么是反向测试(Negative Testing)及其重要性。

在软件中,同样的情况也应用在软件中。对于反向测试(Negative Testing),我们设定了超出正常的操作程序。让我们来举一些例子。以注册信息的表单(Registration Form)为例:

Negative Testing Positive Testing
在输入Email时,输入无效的Email地址 仅仅输入正确的、合法的Email地址
尝试输入无效的电话号码,包括尝试输入的电话号码中包含无效的字符 仅仅输入正确的电话号码,或者正确格式的电话号码
上传图片时,上传图片大小超过文件容量(Size)限制的图片 仅仅上传符合图片大小(Size)限制的图片
上传无效类型的文件,例如:在上传图片的组件中,故意尝试上传XML、SQL、EXE等格式的文件 仅上传符合要求的文件格式的图片,例如:JPG、PNG、GIF等

正如我们刚才所说,我们必须确保所有这些Negative的情况下,我们的系统将正常工作。考虑这样的情况,如果某人试图在数字字段中输入一个字符,而系统无法处理意外数据,因为它正在等待输入数字,最后导致系统崩溃。或者,如果有人试图进行SQL注入并清除数据库中的所有数据。系统的用户承受不了这样的潜在损失。所以Negative Testing是很重要的。

因为测试是耗费时间和成本的任务,所以决定“测试什么”、“如何测试”和“测试话费多少时间和资源”是非常重要。我们必须明智地选择我们是否必须在系统中进行多少Negative Testing。

如何进行Negative Testing?

要做Negative Testing,我们必须考虑所有可能的情况。也就是说,如果可能的话,我们必须在测试用例中考虑它,无论它是否是使用它的正确方式。例如,如果我们看到一个电子邮件字段,请考虑除了正确的电子邮件格式之外的所有可能的输入。同样的方式,当我们看到一个图像上传选项,我们必须测试它的所有可能的文件。

在创建Negative Testing用例时,我们必须对输入进行优先级排序,否则可能出现很多情况。例如,对于应该只输入“.png”文件的图像字段,我们可以有很多选项可以上传,比如“jpeg”、“xml”、“xls”等等。所以我们需要优先考虑像xml和SQL这样的选项,它们比jpeg和xls具有更大的影响,所以我们应该首先考虑SQL和XML的情况。像这样,我们必须在执行之前对案例进行优先级排序,以节省时间和测试成本。

在某些情况下,Negative Testing会浪费大量的时间和资源。在许多情况下,不需要过度的进行Negative Testing。例如,如果应用程序是为单个人使用的,那么我们不必考虑一次有100个用户并发操作的情况。因此,确定Negative Testing测试用例的条件是非常重要的。有时我们不必对某一特定系统进行过多的Negative Testing。如果我们对A进行Negative Testing就需要熟练和有经验的测试者来创建Negative Testing的测试用例。

猜你喜欢

转载自blog.csdn.net/seagal890/article/details/84947168