首页/文章/ 详情

Squish IDE中基于模型的测试实践

2月前浏览2533

本文翻译自:Model-Based Testing in Practice with the Squish IDE

原文作者:Qt Group质量保证高级解决方案工程师Katarina Behrens

审校:Jinjing Li

在我们之前对基于模型的测试(MBT)的介绍的基础上,本文深入探讨了MBT的原理和最佳实践,并展示了其在Squish GUI Tester 8.0版本中的实际应用。

基于模型的测试概述    

基于模型的测试是一种系统化的测试设计和执行方法,它利用模型作为被测系统(SUT)的抽象表示。与传统测试不同,基于模型的测试无需经常仔细检查系统的细节,而是采用了一种更概括性的方法,通过抽象的部分模型来反映SUT的预期行为并指导整个测试过程。

SUT的模型可以是一个利用方框和箭头表示状态和状态转换的状态图(其他可用于呈现系统抽象的图表包括:活动图、业务流程建模标注(BPNM)图、统一建模语言(UML)图等)。基于模型的测试方法的核心思想是,利用这种系统抽象来创建或生成测试用例。

选择合适的抽象层次

用于软件开发和测试的模型涉及不同层次的抽象。选择合适的抽象层次至关重要,因为它允许我们仅选择有意义的、覆盖所需内容的测试用例,并帮助我们专注于测试工作。

在最高抽象层次上,用例图或行为模型提供了系统行为的概述。当需要捕捉系统的更多具体层面时,用于描述状态和状态转换的状态图或反映交互情况的序列图是一个不错的选择。在最低抽象层次上,有高度具体的模型,其中各个状态或交互将分解成更多细节;也有复杂的多层次模型,其中个别组件可以是至少两个基本子组件的组合。

Squish IDE中的基于模型的测试编辑器

Squish GUI Tester 8.0版本为Squish IDE中基于模型的测试首次引入了全套工具集,并推出了易于使用的图形化MBT模型编辑器和MBT测试用例(路径)编辑器。

MBT模型和MBT测试用例完全集成到了现有测试项目中:可与其他资源和脚本或行为驱动(BDD)的测试用例共存,同时MBT的步骤实现可以利用共享的测试脚本。此外,还提供了步骤骨架生成、代码补全和面向支持的所有脚本语言的脚本API。

在我们基于模型的测试的具体演示中,SUT模型是一个简化的活动图,定义了可按何种顺序在系统上执行的操作/步骤(方框)。各个步骤之间的连接(箭头)反映了哪些步骤必须在某一步骤之前执行,哪些步骤可在某一步骤之后执行。通过该图的任何路径均被视为一个可能的测试场景。

第一个基于模型的测试用例

我们的待测应用(AUT)通常在咖啡机界面上运行,用户可选择一种含咖啡 因的饮品,调整糖和奶的添加量,最后完成冲泡过程。AUT的欢迎界面及其行为模型可能如下所示:

我们从两个简单的测试用例开始演示,每个测试用例以活动图表的一个路径表示。在第一个测试用例中,我们简单地冲泡了一杯不添加任何配料的浓缩咖啡。

在第二个测试用例中,咖啡机冲泡了一杯拿铁咖啡,同时我们调整了奶和糖的添加量。

执行测试用例时,Squish GUI Tester会启动AUT,并按照活动图表的路径中指定的顺序回放即定的步骤。每个步骤都与所谓的实现建立了关联:在测试用例执行到该特定步骤时,会执行对应的一个用脚本语言(在本示例中为Python)编写的函数,。该函数可以实现用户与AUT交互的自动化,或者验证应用对象的属性。以下代码片段展示了我们的示例模型中几个步骤的实现:

















@mbt.step("Click on Macchiato")def step():    mouseClick(waitForObject(names.macchiato_button))    test.vp("VP_macchiato")
# -------- Setting milk and sugar --------
@mbt.step("Set milk")def step():    mousePress(waitForObject(names.milk_slider_handle))    slider = waitForObject(names.coffee_sugarSlider_Slider)    x = builtins.int(slider.width * random.random())    y = builtins.int(slider.height * 0.5)           mouseMove(slider, x, y)    mouseRelease()    snooze(0.5)
   

在MBT测试用例中添加步骤

然而,我们的模型和上述两个简单测试用例中还缺少一个功能:从“给我冲一杯咖啡”界面返回,选择其他饮品。为了能够测试这一场景,我们使用Squish IDE中的MBT模型编辑器扩展了我们的模型,具体如下:

1. 在添加步骤模式下,我们添加了一个表示“返回”操作的步骤

2. 在连接步骤模式中,我们将其连接到图表中的其余步骤

3. 借助生成缺失步骤实现功能,我们为新步骤生成了一个空模板实现

4. 最后,我们利用点击或触碰“返回”按钮的实际功能来替换空实现:




@mbt.step("Go back")def step():    mouseClick(waitForObject(names.back_button))
   

现在我们来创建一个新的基于模型的测试用例,以执行返回更改选择界面并冲泡其他饮品的功能。工作流程以活动图中的路径(即我们的 SUT 模型)表示,其中包含我们刚添加到模型中的步骤:

我们在 Squish IDE 中执行了我们的 MBT 测试用例,这与脚本或行为驱动的任何其他测试用例的执行方式一致。至于MBT 测试用例编辑器右侧边栏中的步骤列表以及测试结果视图,将以醒目的颜色和/或图标显示是否成功执行了即定的步骤。

总结    

基于模型的测试提供了一种策略性方法来实现自动化测试。它有助于早期缺陷检测,并增进开发团队内部的沟通。对于希望实现井然有序的系统化测试方法的测试工程师来说,Squish GUI Tester 8.0提供了一套全新的强大工具,可将基于模型的测试纳入到软件开发生命周期中。



深圳市优飞迪科技有限公司,成立于2010年,是一家矗立于工业数字化时代的国家级高新技术和专精特新企业。公司专注于工业仿真软件和产品开发平台解决方案,并提供基于仿真与物联网技术的数字孪生解决方案,高质量助力企业实现孪生预演驱动决策优化的工业数字化目标。

十多年来,优飞迪科技专注于工业仿真软件及数字孪生关键技术的研究与应用,尤其在基于仿真与AI技术的数字模型生成算法、基于物联网技术的数据采集与处理、三维可视化呈现等方面,积累了丰富的技术储备与项目经验。公司拥有三十多项独立自主的知识产权,以及二十多篇软件专著。同时,优飞迪科技也与国际和国内的主要头部工业软件厂商建立了战略合作关系,能够为客户提供完整的工业仿真软件和产品开发平台解决方案。

优飞迪拥有一支高学历、高水平的工程师团队,团队成员普遍为硕士及博士毕业,部分为海外留学归来人员,具备非常丰富的行业经验。公司建立了完善的技术服务体系,长期合作的客户包括中国航天、工信部电子五所、中广核、华为、中兴、中车、三一、格力、华星光电等,与国内大型央企及军工企业也都有非常丰富的合作经验。


来源:IFD优飞迪
ACT航天电子UGpythonUM数字孪生
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-15
最近编辑:2月前
优飞迪科技
赋能新仿真,创优新设计
获赞 309粉丝 280文章 386课程 4
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈