什么是状态转换测试?(技术、示例)
状态转换测试
状态转换测试是一种黑盒测试,可用于测试“有限状态机”。
“有限状态机 (FSM)”是一个系统,根据输入或刺激,将处于多个离散状态(例如“就绪”、“未就绪”、“打开”、“关闭”等)。
系统达到的离散状态由系统的转换规则决定。有限状态系统是指根据其先前状态对相同输入产生不同输出的系统。
当系统中每个事务都经过测试时,它也称为“0-开关”覆盖率。如果测试涵盖了两对合法事务,则为“1-开关”覆盖率,依此类推。
什么是状态转换测试以及它是如何工作的?
当系统以有限数量的状态来指定,并且状态之间的转换由系统的规则引导时,就会应用状态转换方法。
换句话说,当系统的某些方面表示为相互转换的状态时,就会应用此方法。程序的规则决定了转换。
举个例子,考虑以下情况:
“您去自动取款机取款 1000 美元。您将收到您的钱。现在您没钱了,并发出相同的 1000 美元取款请求。这次,自动取款机因资金不足而拒绝给您钱。因此,之前的取款是触发状态变化的转换。”
状态转换测试的定义
在了解了状态转换是什么之后,我们现在可以得出状态转换测试更相关的定义。因此,它是一种黑盒测试,其中测试人员必须评估 AUT(被测应用程序)响应一系列输入情况的行为。
对于正负测试结果,都会记录系统的行为。
何时适合使用状态转换测试?
以下场景可以从状态转换测试中受益:
当被测应用程序是具有多个状态和转换的实时系统时。
当应用程序依赖于先前的事件、值或情况时。
当需要对事件序列进行测试时。
当必须根据一组有限的输入值来评估程序时。
何时应避免使用状态转换测试?
在以下情况下不应使用状态转换测试:
当不需要测试连续的输入组合时。
当需要测试应用程序的多种功能时(更像是探索性测试)。
有状态功能测试的方法
实施步骤:
执行“有状态功能测试”的第一步是识别可以分类为 FSM 的应用程序的不同组件/部分。仔细记录这些 FSM 中的每一个的输入、状态和输出。
下一步是根据这些 FSM 的转换规则、输入、输出和转换状态创建测试用例。
最后一步将是将这些组件的测试与其他接口组件的测试相结合,以便从头到尾验证应用程序。
这可以通过名为“房屋项目”的应用程序的示例来说明,该应用程序跟踪房屋的建造,并包括诸如批准房屋的建筑设计、登记地块和房屋、选择建筑承包商、批准住房贷款等组件。
**示例**:我们将评估“房屋项目”应用程序的一个 FSM 组件“住房贷款批准”。
住房贷款批准 (HLA) 申请
单独的贷款处理用户将运行 HLA 应用程序并处理贷款申请。以下是应用程序处理中涉及的步骤:
步骤 1:收集文件是第一步
第一步是收集申请贷款所需的必要文件,如下表所示。它们是提交成功申请的要求。申请人收集相关文件并将其与住房贷款申请一起提交。
贷款处理用户确认收到文件并将贷款申请的状态(即 HLA 应用程序组件的状态)更改为“已申请”。
步骤 2:贷款评估
贷方此时评估贷款申请,以查看它是否符合其信贷标准。此时,会检查支持文件。
评估文件,即此步骤必须认证的“条件”,已得到验证。每个条件都关联一个关键性(在上表中显示为“Y”)。在满足所有必需的关键条件后,应用程序将进入“已确认”状态,即 HLA 应用程序组件处于“已确认”状态。
请注意以下几点:
此概念为系统的测试条件和“状态”定义提供了结构和客观性。此外,并非所有验证系统的“标准”都需要它才能达到此“已确认”状态。为了使应用程序达到“已确认”级别,上表中将四个要求突出显示为“非关键”。
根据每个状态所需的规则的风险或关键性,可以理想地减少验证次数。这将大大减少运行测试所需的时间,同时保持相同的测试质量水平。
这不仅对测试单个组件很有价值,还可以用于测试整个系统。
也可用于创建回归测试套件。因此,此时它是一种 0-开关类型的测试。另一方面,审批的后续阶段可能具有 1-开关或 2-开关验证。例如,“结婚证”在此阶段可能不太相关,但在审批流程的后期,当考虑申请人偿还 EMI 的能力时,“结婚证”可能会变得相关,即如果配偶也受雇,风险降低,否则风险增加。
根据组件当时的要求,可以应用上述技术来增加测试情况。
步骤 3:有条件批准
应用程序的当前状态为“已确认”。为了使贷款流程进一步进行,贷方将提供“有条件批准”。将 HLA 申请移至“已批准”级别将需要进一步的验证。
步骤 4:批准
此时,将执行关键验证:
贷款人抵押保险 (LMI) 评估:这将需要对财产的真实性进行两次或多次验证。贷款人有权要求在“确认”步骤中未提供的信息。
满足上述先决条件后,应用程序将移至“已批准”状态。负责审批流程的最终权限可能会要求贷款申请提供更多信息,或者可能不会询问申请人的其他文件是否具有决定性。为了建立正确性,将需要来自主应用程序的其他组件的更多输入。
换句话说,根据来自应用程序其他组件的组件的输入情况,可能需要(或减少)其他验证才能过渡到新状态。
风险和障碍
对于大型应用程序,需要深入的应用程序知识才能将其分解成逻辑组件,这些组件可以分类为 FSM 或普通组件。这可能需要 SME 投入大量时间。
对于许多应用程序,这种 FSM 分类将不可行。
由于 FSM 组件与其他应用程序组件交互,因此必须仔细规划和执行来自其他组件到 FSM 的输入。
状态转换测试的好处
使用这种方法,测试人员可以更轻松地了解应用程序设计,并更有效、更快速地覆盖和创建测试。该方法涉及使用视觉或表格方式来描述系统行为。
使用此方法,系统未计划或无效的状态也会得到覆盖。
使用状态转换图,可以轻松检查所有需求是否得到满足。
状态转换测试的缺点
此方法无法解决非有限状态系统。
对于大型和复杂的系统,定义所有可能的状态是一项艰巨的任务。
结论
对于有限状态系统,当需要检查替代系统转换时,状态转换测试是一种有用的技术。
使用“有状态功能测试”的概念来测试复杂的系统,可以为测试组织提供一种独特的测试方法,以提高测试执行效率,同时不牺牲测试覆盖率。
状态转换测试是一种测试复杂系统的新方法,它可以提高测试执行效率,同时保持测试覆盖率。
该技术的局限性在于,只有在被测系统状态有限的情况下才能使用。