状态转换测试法(State Transition Testing)

 

状态转换测试法应用于以下模式:被测组件拥有多个状态(state)各个状态之间的转换(transition)由事件(event)来触发,各个状态之间的转换还可能导致一些动作(action)的产生

在该种模式下被测组件应该包括状态、转换、事件、动作及它们之间的联系。其中各个状态之间是正交(disjoint)的。各个状态是可以被明确识别的,而且其数量是有限的。事件用于触发各状态之间的转换。而事件的触发将由组件的输入产生。作为结果,状态的转换可能导致一些动作的产生,从而可能进一步产生输出

在该种模式下通常用状态转换图、状态转换模型或状态转换来描述被测组件各状态之间的转换。

在该种设计模式下测试用例将执行(覆盖)各个状态之间的转换。每条测试用例可以覆盖多个转换。但每条用例必须包括。

该组件的起始状态。

对该组件的输入。

期望输出。

期望的最终状态。

对于每条测试用例的期望状态,我们必须详细描述以下内容。

起始状态。

触发该状态转换至下一状态的事件。

该转换所产生的期望动作。

转换后的期望状态。

在这种模式下的测试用例可以被设计用来测试各状态之间的有效转换,还可以被设计用来测试那些未在组件测试文档中明示的转换。

该黑盒技术是基于被测组件涉及状态的转换为模式。


下图为一个组件由事件触发而从一个状态转换到另一个状态,并产生输出。


一个组件由事件触发而从一个状态转换到另一个状态

根据设计文档描述得出下图


转换后的表格

这一组7条用例覆盖了该组件设计文档中所描述的所有状态转换,但都只执行了一个状态,这一级别覆盖方式称为0-switch覆盖(最基础的覆盖),可以找出显而易见的错误转换或输出,但无法测试到需要进行一系列状态转换才能出现的问题。因此可以提高覆盖等级,把测试用例设计为1-switch覆盖以在一个测试用例中执行多个状态转换。

设计该组件的1-switch覆盖的测试用例时,从4个状态中的某一个状态出发,然后进行两次状态的转换并覆盖所有的可能路径,如下表:

进行再次状态的转换并覆盖所有可能的路径

依照上述方法可以的覆盖等级提高到n-switch覆盖,每个用例覆盖到n个状态的转换,可以测到一些更深层次,需要进行更多状态转换才能出现的问题。

0-switch覆盖的测试用例中的状态转换是所有n-switch覆盖测试用例的的状态转换的全集,但0-switch覆盖的测试用例仅限于组件设计文档的描述,组件设计文档不可能显示地描述一些隐藏的状态转换或无效的状态转换,也就是说0-switch乃至于n-switch覆盖都可能会遗漏这一类隐藏的状态转换或无效的状态转换。

利用状态表(State Table来实现找到组件设计文档未显示地描述一些隐藏的状态转换或无效的状态转换。

状态表(State Table)的表格


列出该组件的状态表

组件的状态表

上表中4个状态,5种输入,因此有20种组合,其中7种是在组件设计文档中被详细描述过的,正好对应于0-switch覆盖中测试用例中的所有状态转换。其余13NA,意味着其未在组件设计文档中描述或该状态无效。

NA-4,“暂停时显示正在播放帖的静止画面”状态下对其进行“屏蔽信号”,这时设计者可以选择“媒体播放软件的显示屏幕”显示“静止画面”或“无信号时显示‘无信号’提示画面”,但这并没有在文档中描述。

强调:NA-4属于本身可以有符合逻辑的解释,但由于并不属于显而易见的转换。因为行为定义容易被设计人员忽略。而对于软件测试人员我们就有义务把这些被忽略的点找出来,并将其交给设计保敦促其给出详细的定义,铂再对新的设计文档重新画出状态转换图,重新分析,并重新设计测试用例。

又如NA-13(“无信号状态”下“屏蔽信号”)等就属于无效状态变换,可以排除,不对其设计测试用例。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
autosar状态测试是验证autosar软件中状态机设计是否符合要求的一种测试方法。在软件开发过程中,状态机常常被用来描述软件的行为、状态迁移以及事件处理。而autosar作为一种标准化的软件架构,也要求状态机在其下使用。 autosar状态测试的目的是确保状态机在不同状态下能正确地进行状态迁移和事件处理,以及检测可能存在的错误和不一致性。测试过程通常包括以下几个步骤: 首先,需要对状态机的状态状态迁移进行建模。这可以通过绘制状态图或创建状态转换表来完成。建模时需要考虑所有可能的状态状态迁移,并定义事件使状态迁移发生。 接下来,需要进行功能测试,以验证状态机在不同事件触发下的行为是否符合预期。这包括测试不同的状态迁移路径、各种可能的事件序列和边界情况。 在功能测试的基础上,还需要进行边界测试和错误处理测试。边界测试用于测试状态机在边界情况下的行为,例如测试最小值、最大值和超出范围的情况。错误处理测试则是测试状态机在出现错误时的应对能力,是否能正确地处理异常情况并恢复正常工作。 最后,还需要进行性能测试和稳定性测试。性能测试用于评估状态机在处理大量事件时的响应时间和系统资源占用情况。稳定性测试则是测试状态机在长时间运行和连续事件触发下是否能保持稳定运行,是否会出现资源泄露或崩溃等问题。 综上所述,autosar状态测试是一项重要的测试活动,通过验证状态机的设计和实现是否符合要求,可以提高软件系统的可靠性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值