软件测试至关重要,因为可以测试开发的应用程序是否正常工作。而软件测试人员可以实施各种类型的测试。
尽管种类众多,但所有测试都属于两种分类之一:正面测试和负面测试。这两种测试同样重要,而正面测试比负面测试更受欢迎。
本文将介绍软件测试中的负面测试,测试人员为什么会避免实施负面测试;还介绍如何在实践中执行负面测试以及将出现哪些负面测试场景,并分析正面测试和负面测试之间的区别,最后探讨了负面测试的好处。
什么是负面测试?
软件测试是检查应用程序的基本功能是否按照其设计正常工作的过程。与此同时,它验证应用程序是否具备处理问题和无效输入的能力。
负面测试是指软件测试的负面方法,也称为故障测试或错误路径测试。它旨在通过设计测试用例来发现应用程序的负面特征,它揭示了应用程序如何响应无效数据,并将预期输出与错误输出进行比较。
为什么测试人员避免进行负面测试?
尽管很有用,但负面测试似乎在软件测试人员中名声不佳。许多软件测试人员不愿进行负面测试,因为他们认为这可能会不必要地延迟软件或应用程序的发布。
有些测试人员认为负面测试是一种浪费时间和资源的行为,他们认为最好将时间和精力投入到正面测试中。
缺乏有关的技能和知识也阻碍了测试人员实施负面测试。因此并非每个人都完全了解该软件的工作原理及其局限性。
尽管负面测试的名字是负面的,但会带来积极的结果。由于以下原因,它应该是软件测试策略的重要组成部分:
- 企业责任
软件开发商需要向客户提供优秀的软件产品。负面测试与正面测试相结合对于确保应用程序的稳定性是必要的。虽然软件开发商可能无法完全保证应用程序没有错误,但至少可以通过负面测试尽量减少失败。
- 客户满意度
客户将软件项目委托给软件开发商,因为相信他们有能力创建出色的软件。如果涉及在线股票、电子商务和其他敏感的商业交易,高质量的软件就显得尤为重要。
如果软件开发商的目标是获得客户满意度,负面测试至关重要。尽管如此,由客户决定是否愿意投资执行负面测试所需的额外费用。
如何在实践中进行负面测试
以下是用来对软件应用程序执行负面测试的一些技术和实践:
- 边界值分析
这一方法涉及为边界限制之外的值编写测试用例。例如,如果测试的文本字段接受1到100个字符范围内的数据,则边界限制为1到100。
- 等价分区
这是一种测试软件程序功能的技术。它需要将输入值分组到不同的分区中。可以在每个分区中测试一些输入值。
- 错误猜测
这一过程查明触发故障或错误消息的特定条件。如果可能,应该尝试在不会发生系统崩溃的情况下识别和纠正问题。但在某些情况下,如果错误情况没有被立即关注和解决,错误的结果可能会导致极端的“下游”故障。
- 清单
这是一种基本但至关重要的方法,用于记录计划测试的错误情况。软件测试的清单通常与错误猜测一起使用。
- 反模式
如果有设计模式,反模式就是它们的对立面。如果前者是解决问题的最佳方式,那么后者则是行不通的解决方案。反模式是负面测试的理想来源。
- 探索性测试
这一技术用于在测试进行时增加测试人员对应用程序的了解。它可以与其他测试同时进行。探索性测试可以让他们清楚地了解应用程序的哪些方面有效,哪些方面无效。
- 小规模测试自动化
这是一种揭示内存错误、代码缺陷和其他问题的方法,这些问题在生产使用中偶尔会暴露出来。它需要执行相同的动作数千次才能看到它对程序的影响。
- 模糊测试
这一过程涉及随机数据的输入,这可能会导致意外故障、崩溃和问题。与其他负面测试用例不同,模糊测试没有预设的预期结果。它只是对由于任意输入而可能发生的情况的观察。
- 状态转换测试
这是一种用于发现应用程序中的缺陷的技术。它源于这样一种概念,即软件只能在一个时间点以一种特定的状态存在。例如在出现问题之前,程序被认为处于正常运行状态。
负面测试场景
执行负面测试的目的是查明应用程序在不同情况下可能出现的故障。以下是一些可能意外发生错误和崩溃的潜在情况:
- 填充必填字段
某些软件和网页展示了需要用户填写的字段。可以设计一个测试,将必填字段留空,以便评估应用程序对此场景的响应。
- 数据与字段类型的对应关系
大多数数字表单和对话框都能够以某种形式接收数据,例如文本、数字、日期和时间。可以进行测试,将错误的数据类型输入到控件中,以查看应用程序在这种情况下的反应。
- 允许的数据界限和限制
一些软件程序包含的输入字段只接收特定数字或文本范围内的数据。测试人员可以设计一个输入值低于或高于特定字段边界的测试。
- 允许的字符数
有些网页和应用程序的字段只允许用户输入有限数量的字符。测试人员可以选择概念化测试,其中在字段中输入的字符多于通常允许的字符数。
- 网络会话测试
某些Web浏览器要求用户在加载网页之前先登录。测试人员可以执行测试,尝试在不事先登录的情况下在应用程序中打开网页。
- 合理的数据
某些程序和网页具有合理限制的字段。测试人员可以进行负面测试,在该字段中输入无效数据。
正面测试和负面测试之间的区别
与负面测试相反,正面测试是一种软件测试,可以确保应用程序在正常情况下正常工作。下表概述了正面测试和负面测试之间的主要区别:
负面测试的好处
正面测试有其优势,但负面测试也有其重要的优势。以下是负面测试软件应用程序的一些好处:
- 负面测试有助于识别Bug的错误处理
它可以避免因错误处理Bug而导致的应用程序故障。它可以帮助确认软件代码是否停止管理已经编程的用例。它还可以防止客户端无法访问修复Bug所需数据的情况。
- 它有助于识别安全方面可能存在的薄弱环节
负面测试允许确保客户无法访问计划中的个人帐户,以防不允许这样做。它使测试人员能够在必要时阻止一组用户使用应用程序的专门功能。
- 它有助于维护干净的数据库
如果一个程序的数据库只包含有效数据,它就会处于良好状态。负面测试可以增加应用程序只存储和显示有效信息的可能性。
原文标题:A Complete Guide to Negative Testing in Software Testing,作者:Vakul Gotra