软件测试技术与测试用例设计示例

⚡ 智能摘要

软件测试技术通过减少执行需求、最大化覆盖率,并利用结构化的手动方法识别难以捉摸的情况,从而帮助设计出更优的测试用例。这些黑盒方法,例如边界值分析和等价类划分,优先考虑边界和划分,以实现高效的验证。它们弥补了穷举测试的局限性,并借鉴核心原则来提高可靠性。

  • 核心原则: 软件测试技术从输入域中选择测试用例,以最小的努力实现最高的覆盖率,重点关注容易出错的领域。
  • 边界值分析: 测试边界(最小值、最大值、刚好在内部/外部),因为错误会聚集在那里,例如,对于输入 1-10,验证 0、1、2、9、10、11。
  • 等价划分: 将输入分为有效/无效类别(例如,<1、1-10、11-19、20-30、>30),每个类别测试一个代表。
  • 决策表测试: 将输入组合映射到因果表中的输出,只有当所有字段都填写完整时才启用提交按钮。
  • 状态转换: 通过输入(例如,登录尝试:正确的 PIN 码授予访问权限;三次错误的 PIN 码阻止帐户)来模拟顺序状态变化。
  • 错误猜测: 利用经验,结合历史数据和常见陷阱,针对可能存在的缺陷制定临时测试用例。

软件测试技术

什么是软件测试技术?

软件测试技术有助于设计更优的测试用例。由于无法进行穷举测试,手动测试技术有助于减少需要执行的测试用例数量,同时提高测试覆盖率。它们有助于识别那些难以发现的测试条件。软件测试技术可以分为以下几种类型:

  • 边值分析
  • 等价类划分
  • 基于决策表的测试
  • 状态转换
  • 错误猜测

👉 免费注册实时软件测试项目

软件测试技术的7项原则

软件测试技术遵循一系列原则来开展测试过程。这七项原则指导测试人员有效地规划、设计和执行测试。这些原则确保测试始终具有目的性、高效性,并与项目目标保持一致。

软件测试技术的7项原则是: 测试可以发现缺陷,全面测试是不可能的,早期测试可以节省时间和成本,缺陷 Clustering、农药悖论、测试与情境相关、以及无错误谬误。 您可以点击以下链接 链接 了解更多信息。

人工智能如何改变传统的软件测试技术?

AI是 revolut通过引入电离软件测试来引入 自动化、预测和适应性。 它使 自动生成测试用例 使用语言学习模型从自然语言中…… 自我疗愈脚本 能够适应用户界面变化,并且 预测性缺陷分析 基于历史数据。人工智能也支持 基于风险的优先级排序、视觉测试、自主测试执行 在 CI/CD 管道中。通过 自然语言界面 测试人员可以通过对话创建测试用例,从而加快工作流程。本质上,人工智能使测试变得更加高效。 更智能、更快速、更具韧性 在现代不断发展的应用程序中,减少人工操作,同时提高准确性和覆盖范围。

软件测试技术

边界值分析(BVA)

边界值分析是基于对分区边界的测试。它包括最大值、最小值、内部或外部边界、典型值和误差值。

经验证据表明,许多缺陷发生在边界条件附近,而非中间值附近。它也被称为边界值评估(BVA),提供了一系列测试用例来检验边界值。

这种黑盒测试技术是对等价类划分的补充,它着重关注相同输入范围的边界情况。该软件测试技术基于这样的原则:如果一个系统在边界值下运行正常,那么它很可能在范围内的所有值下都能正常运行。

边界值分析指南

  • 如果输入条件被限制在 x 和 y 的值之间,那么测试用例应该设计为包含 x 和 y 的值,以及大于和小于 x 和 y 的值。
  • 如果输入条件包含大量值,则应设计测试用例来测试最小值和最大值。此外,还应测试大于和小于最小值和最大值的值。
  • 将准则 1 和 2 应用于输出条件。这样可以得到反映预期最小值和最大值的输出结果。它还会测试低于或高于这些值的值。

计费示例:

Input condition is valid between 1 to 10

Boundary values 0,1,2 and 9,10,11

等价类划分

等价类划分将输入条件集划分为预期产生相似行为的组。这种软件测试方法将程序的输入域划分为若干数据类,并据此设计测试用例。

这种测试用例设计技术的核心思想是:针对每个类的代表性值的测试用例,等同于针对该类的任何其他值的测试用例。它能够帮助你识别有效和无效的等价类。

计费示例:

输入条件在以下范围内有效:

 1 to 10 and 20 to 30

因此,存在五个等价类。

--- to 0 (invalid)
1 to 10 (valid)
11 to 19 (invalid)
20 to 30 (valid)
31 to --- (invalid)

您从每个类中选择值,即

-2, 3, 15, 25, 45

另请阅读更多内容 – 边界值分析与等价分割测试

基于决策表的测试

决策表也称为因果表。这种软件测试技术用于响应一系列输入或事件的功能。例如,在表单验证场景中,“提交”按钮只有在所有必填字段都填写完毕后才会激活。

首要任务是识别那些输出取决于多种输入组合的功能。如果输入组合数量庞大,则将其拆分为更小的子集,这有助于管理决策表。

对于每个函数,都需要创建一个表格,列出所有输入组合及其对应的输出。这有助于发现测试人员可能忽略的情况。

以下是创建决策表的步骤:

  • 将输入列在行中
  • 在列中输入所有规则
  • 请在表格中填写不同的输入组合
  • 在最后一行,记下与输入组合相对应的输出。

例如:联系表单中的提交按钮只有在最终用户输入完所有信息后才会启用。

基于决策表的测试

状态转换

在状态转换测试技术中,输入条件的变化会改变被测应用程序(AUT)的状态。这种测试技术允许测试人员测试AUT的行为。测试人员可以通过按顺序输入各种输入条件来执行此操作。在状态转换测试技术中,测试团队会提供正向和负向的输入测试值来评估系统行为。

状态转换指南:

  • 当测试团队针对有限的一组输入值测试应用程序时,应该使用状态转换。
  • 当测试团队想要测试被测应用程序中发生的一系列事件时,应该使用测试用例设计技术。

计费示例:

在以下示例中,用户在三次尝试内输入有效密码即可成功登录。如果用户在第一次或第二次尝试中输入了无效密码,系统将提示用户重新输入密码。当用户连续三次输入错误密码时,系统会提示用户重新输入密码。rd 一段时间后,将采取行动,账户将被封禁。

状态转换图

状态转换图

在此图中,当用户输入正确的PIN码后,其状态将变为“已授权访问”。下表基于上述图表创建:

状态转换表

正确的 PIN PIN码不正确
S1)开始 S5 S2
S2)1st 尝试 S5 S3
S3)2nd 尝试 S5 S4
S4)3rd 尝试 S5 S6
S5) 已授予访问权限
S6) 账户被封锁

在上表中,当用户输入正确的PIN码时,状态会转换到“访问已授予”。如果用户输入错误的密码,则会进入下一个状态。如果他再次输入错误的密码,则状态会转换到下一个状态。rd 此时,他的账户就会进入被封锁状态。

错误猜测

错误猜测 是一种软件测试技术,测试人员利用经验和直觉来预测代码中可能存在的错误。该技术高度依赖经验,测试分析师通过经验来猜测被测应用程序中存在问题的部分。因此,测试分析师必须具备丰富的技能和经验才能更好地预测错误。

该技术会列出所有可能的错误或容易出错的情况。然后测试人员会编写一个 测试用例 为了发现这些错误。为了基于这种软件测试技术设计测试用例,分析人员可以利用过去的经验来确定相关条件。

错误猜测指南:

  • 测试应该利用以前测试类似应用程序的经验
  • 了解被测系统
  • 了解典型的实施错误
  • 记住以前遇到过的问题
  • 评估历史数据和测试结果

测试技术的优势和局限性

优点:

  • 提高测试覆盖率,确保对软件功能进行更广泛的验证。
  • 通过锁定高风险或易出错区域来增强缺陷检测能力。
  • Promo测试系统设计,减少冗余和重叠。
  • 有助于在软件开发生命周期早期发现问题,从而降低项目总成本。
  • 通过 BVA 和等价类划分等方法简化复杂的测试。
  • 提高软件可靠性,增强利益相关者对产品质量的信心。

限制:

  • 没有哪一种单一技术能够保证完全检测出缺陷。
  • 有些技术很大程度上依赖于测试人员的经验和判断。
  • 可能忽略集成性、可用性或实际性能问题。
  • 时间和资源的限制可能会限制其全面应用。
  • 某些方法提供的自动化支持有限,降低了可扩展性。

如何选择合适的测试方法?

选择合适的软件测试技术需要根据项目的具体情况进行调整,以确保效率和覆盖率。开发模型、风险和资源等因素都会影响选择过程。作为一名资深的软件测试人员,我始终建议结合多种技术以获得最佳效果。这可以避免过度依赖单一方法。

  • 与目标保持一致: 根据功能、性能或安全需求等目标来选择合适的技术。
  • 评估风险: 优先对高风险区域采用基于风险的方法进行针对性验证。
  • 合适的架构和模型: 在迭代式或多层系统中,选择敏捷友好的方法。
  • 平衡约束: 考虑时间、预算、技能和工具等因素,以确保方案的可行性。

常见问题

软件测试技术是一套结构化的方法,用于验证软件是否满足需求并能正确运行。常用的技术包括边界值分析、等价类划分、基于决策表的测试、状态转换和错误猜测,每种技术都侧重于系统行为和代码逻辑的不同方面。

四大类测试分别是单元测试、集成测试、系统测试和验收测试。每一种测试都以递增的复杂度验证软件功能,确保软件在部署前具备可靠性。

生成式人工智能通过模拟各种用户交互并利用历史缺陷数据,提出具有高影响力的探索性场景,从而发现脚本测试遗漏的可用性和集成缺陷。

质量保证技术包括代码审查、结对编程、静态分析、回归测试和性能基准测试。这些方法能够保持代码一致性,及早发现偏差,并确保符合既定的质量标准。

自动化测试能够加快测试执行速度、提高测试覆盖率并最大限度地减少人为错误。它能够跨各种环境和平台高效运行可重复、可扩展的测试,从而实现持续集成和交付流程。

总结一下这篇文章: