状态转换测试示例

⚡ 智能摘要

状态转换测试是一种黑盒测试技术,用于验证应用程序如何根据输入条件的变化在不同状态之间转换。本教程解释了状态图的四个组成部分、状态图和状态表的区别,并为测试人员提供了ATM和登录示例。

  • 🔄 核心理念: 该技术检查当相同输入根据先前事件产生不同输出时(有限状态系统)的系统行为。
  • 🧩 四个基本组成部分: 每个模型都是由状态、转换、事件和动作构建而成的。
  • 🗺️ 图表与表格: 图表揭示有效转换;表格揭示无效转换。
  • 🏧 实际例子: ATM 密码锁定和航班预订登录功能证明了其真正的覆盖范围。
  • 🤖 人工智能赋能: AI 工具可根据需求自动生成状态模型,并标记缺失或无效的转换。

州过渡测试 — 州

什么是状态转换测试?

状态转换测试 黑盒测试是一种黑盒测试技术,其中输入条件的变化会导致被测应用程序 (AUT) 的状态或输出发生变化。它有助于分析应用程序在不同输入条件下的行为,测试人员可以在记录系统行为的同时提供正负输入值。

它基于系统和测试所构建的模型。任何对于相同的输入,根据之前发生的事情而产生不同输出的系统都是有限状态系统。状态转换测试技术在需要以下情况时非常有用: 测试不同的系统转换.

何时使用状态转换测试

  • 当测试人员使用有限的一组输入值测试应用程序时。
  • 当测试人员测试 AUT 中发生的一系列事件时,允许检查应用程序针对一系列输入值的行为。
  • 当被测系统依赖于过去的事件或值时。

何时不应依赖状态转换测试

  • 当没有对连续输入组合进行测试时。
  • 当测试针对不同功能时,例如探索性测试。

状态转换图的四个组成部分

状态转换模型主要由以下四个部分组成。

1)各州 软件可能达到的程度。

州过渡测试 — 州

2)过渡 从一个州到另一个州。

状态转换测试——转换

3)活动 触发转换的操作,例如关闭文件或取款。

状态转换测试 — 事件

4)行动 因转换而产生的结果,例如错误消息或获得现金。

状态转换测试——操作

状态转换图与状态转换表

表示或设计状态转换主要有两种方法:状态转换图和状态转换表。

方面 状态转换图 状态转换表
也叫 状态图/图表 状态表
代表性 Boxes 表示状态,箭头表示状态转换 状态(行)和事件(列)网格
最适合识别 有效转换 无效转换
每个单元格显示 - 事件发生后所达到的状态

如何实现状态转换(示例)

示例 1:ATM 密码锁定

考虑一个 ATM 系统功能,如果用户连续三次输入错误密码,则账户将被锁定。

在这个系统中,如果用户在前三次尝试中输入了有效的密码,则登录成功。如果用户在第一次或第二次尝试中输入了无效密码,系统会提示用户重新输入密码。最后,如果用户第三次输入错误密码,账户将被冻结。

状态转换图(示例 1)

ATM PIN 状态转换图

如图所示,每当用户输入正确的PIN码,系统就会进入“访问已授予”状态。如果用户输入错误的密码,系统会进行下一次尝试;如果第三次仍然输入错误密码,系统则会进入“账户已锁定”状态。

状态转换表(示例 1)

正确的 PIN PIN码不正确
S1)开始 S5 S2
S2)第一次尝试 S5 S3
S3)第二次尝试 S5 S4
S4)第三次尝试 S5 S6
S5) 已授予访问权限
S6) 账户已封禁

在表格中,当用户输入正确的PIN码时,状态会转换到S5(已授权访问)。如果用户输入错误的密码,则会进入下一个状态,第三次输入错误后,状态会变为“账户已冻结”。

示例 2:航班预订登录

在航班预订登录界面,您必须输入正确的代理名称和密码才能访问。 航班预订申请.

航班预订状态转换图

状态转换图

该应用程序允许三次尝试;如果用户在第四次尝试中输入错误的密码,系统将自动关闭应用程序。

状态图可以帮助您确定要测试的有效转换。使用正确密码和错误密码进行测试是强制性的,并且对于 测试场景可以分别测试第二次、第三次或第四次登录尝试。您可以使用状态表来确定无效的系统转换。

航班预订状态转换表

在状态表中,所有有效状态列在左侧,触发这些状态的事件列在顶部。每个单元格显示事件发生时系统进入的状态。例如,在状态 S1 中,输入正确的密码会进入状态 S6(已授权访问);第一次输入错误的密码会进入状态 S3(第二次尝试)。同样,您也可以确定所有其他状态。

此方法会突出显示两种无效状态。假设您处于状态 S6(已登录),然后打开另一个航班预订实例,并为同一客服人员输入密码。需要测试系统对此场景的响应。

状态转换技术的优点和缺点

优势 缺点
提供系统行为的图形或表格表示,帮助ping 测试人员能够有效覆盖并理解系统。 并非每次都适用——例如,它不适用于非有限或非顺序的系统。
让测试人员验证所有条件是否都已涵盖,并且结果是否已记录。 需要定义所有可能的状态。这种方法适用于小型系统,但对于大型系统则失效,因为状态数量呈指数级增长。

常见问题

状态转换测试是一种黑盒技术,用于验证系统如何随着输入条件的变化而在不同状态之间转换。它适用于有限状态系统,在有限状态系统中,相同的输入可以根据先前的事件产生不同的输出。

这四个部分分别是:状态(软件可以处于的条件)、转换(状态之间的移动)、事件(引起转换的触发器)和操作(转换的结果,例如消息或输出)。

状态转换图使用方框和箭头,最适合识别有效转换。状态表以网格形式列出状态和事件,最适合发现无效转换。

当输入数据并非顺序排列,或者需要对各种功能进行探索性测试时,应避免使用此方法。此外,对于非常大的系统,由于状态数量呈指数级增长,此方法也会失效。

0 开关覆盖率测试每个有效转换一次。1 开关覆盖率测试每对连续转换。更高的开关覆盖率可以发现更多与顺序相关的缺陷,但需要更多的测试用例。

这是一种黑盒测试技术。测试用例源自状态和转换的预期外部行为,无需了解应用程序的内部源代码。

AI 工具读取需求并自动构建状态模型,然后生成涵盖有效路径和边转换的测试用例。这减少了人工建模工作量,并提高了对复杂序列的覆盖率。

是的。人工智能可以分析状态模型,并通过将其与预期行为模式进行比较,标记缺失、不可达或无效的转换。ping 测试人员能够发现人工审核表格时经常忽略的漏洞。

总结一下这篇文章: