0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模型驱动测试如何生成基于代码的测试结果

星星科技指导员 ? 来源:嵌入式计算设计 ? 作者:Martin Bakal ? 2022-06-28 14:12 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

模型驱动测试可以将需求与设计联系起来,帮助开发人员以一种通用语言生成结果,将设计过程中的每个人联系起来。这改善了工作流程并清楚地传达了设计。

在系统和软件测试社区中,生成基于代码的结果被认为是软件测试的黄金标准。但是,软件复杂性的增加和上市时间的缩短迫使许多组织重新考虑他们如何处理测试过程。随着基于模型的测试 (MBT) 的引入,开发人员获得了更快的自动化流程,可以帮助他们获得完整的模型和代码覆盖率。

即便如此,一些开发人员认为 MBT 未能达到预期,因为它没有提供基于代码的结果。然而,随着 MBT 技术的最新进展,这种看法不再准确。新的 MBT 工具使测试人员能够通过基于代码的结果实现性能分析、内存分析和代码覆盖。

模型驱动测试 (MDT) 流程通过让开发人员在实际应用程序上执行场景并执行这些测试来增强此工作流程。但关键问题是开发人员在运行这些基于场景的测试时需要基于代码的测试结果。

入门

MDT 方法可以帮助组织满足紧缩的上市时间窗口,因为它允许开发人员使用他们设计时使用的相同语言进行测试,即统一建模语言 (UML)。除了节省时间之外,MDT 还提供了另一个优势,它以场景为需求,使测试与客户的规范保持一致。

尽管 MDT 提供了许多好处,但批评者强调它有一个弱点:缺乏基于代码的测试结果,这对于调试故障、泄漏和性能差距至关重要。

在深入探讨有关基于代码的测试的问题之前,让我们解释一下 MDT 过程。基于 UML 的测试用例可以用许多不同的格式编写,包括 UML 序列图、流程图,甚至代码(使用断言样式语句)。简而言之,MDT 流程迫使开发人员以上述格式之一阅读他们的需求并基于它们设计场景。接下来,将模型构建到满足这些场景的可执行文件中。然后将原始场景转变为测试。最后,在软件经过 MDT 过程之后,这些相同的场景可以作为测试执行。

使用传统代码和流程图来捕获测试用例行为

可以使用代码或流程图或序列图来描述测试用例行为,提供比传统编码更高的生产力。使用代码描述测试用例与目前描述测试用例的过程基本相同,不同之处在于,如图1所示,测试用例需要关注刺激和预期结果。测试用例执行的上下文是从模型中自动生成的。

图 1:开发人员可以使用代码来描述测试用例的纯粹行为。

pYYBAGK6nMCAcjlDAAYLmgrQwQQ517.png

捕获代码中的测试用例行为并让它执行是利用 MDT 的最直接方法,而且风险最小且几乎没有学习曲线。这种方法的另一个优点是它允许轻松重用现有的基于代码的测试用例。但是由于测试用例行为的逻辑通常很重要,开发人员倾向于将测试用例描绘成非正式的流程图。由于将流程图映射到代码相对简单,MDT 环境允许开发人员将测试用例行为捕获为流程图,从该流程图生成测试代码,将其链接到测试架构,然后运行测试。

将测试用例描述为流程图,如图 2 所示,具有与编码相同的表达能力,但它更容易捕获并与项目的所有利益相关者进行沟通。

图 2:在流程图/活动图中比在代码中更容易捕获测试用例行为。

pYYBAGK6nMmAS9prAAgS_jQjHW4426.png

用序列图描述测试用例行为

序列图提供了在基于代码的测试环境中很少使用的设计的独特视图。这些图可以描述整个系统和与之交互的参与者之间的操作场景。在其他情况下,它们可能包括有关内部设计组件之间消息的排序和交换的详细信息。

在系统级分析期间,设计人员确定了许多高级需求,并且大多数行为需求被描述为序列图。这构成了系统分析师创建基本要求的许多变体以及基本要求的“未雨绸缪”排列的过程的基础。此过程将作为序列图捕获的高级需求转换为具体的测试用例。

开发人员可以查看描述需求的序列图并将其作为测试用例以交互方式应用,将输入注入被测系统并检查输出以查看它们是否与序列图中定义的匹配。这些测试的来源包括记录应用程序的执行并手动编写它们。每个来源都有自己的好处。记录执行不测试需求,但有助于回归测试。手写序列在测试需求中很有用。无论如何创建测试,都需要基于代码的结果。

实现基于代码的结果

今天的开发人员可以通过多种方式获得基于代码的结果,所有这些都需要在某些工具中重写测试然后执行。完成后,团队将收到结果。

对某些人来说,这似乎是一种完全合乎逻辑的方法,但是在使用这种测试方法时会发现一些问题。首先,开发人员必须确定原始需求与软件可交付成果相匹配。要正确执行此操作,开发人员必须重写相同的基于场景的测试,否则代码结果可能无法映射到需求。开发人员需要能够编写符合其要求的测试并实现完整的基于场景和代码的结果。当前的测试工具使这成为可能,因为基于 MDT 的工具执行实际代码。

鉴于这些进步,为什么软件测试社区迟迟没有采用 MDT?这有几个原因,首先是早期基于模型的测试没有提供基于代码的测试结果。此外,许多开发人员需要代码覆盖率、内存分析和性能分析指标。当工具缺乏这些功能时,有些人会认为 MDT 是一种负担而不是解决方案,这是有道理的。

弥合这些差距是成功实施 MDT 的挑战。市场上有几种有效的基于代码的测试工具,重新创建此功能为开发人员喜欢的基于代码的结果样式提供了更少的选择。另一种选择是执行基于模型的测试并包含基于代码的结果。这是可能的,因为在运行基于模型的测试时,开发人员可以执行实际代码,而不是模拟。如果开发人员使用基于代码的测试工具来检测代码,则 MDT 可以运行,并且结果将在完成时出现。

分布式开发,更好的代码

寻找方法帮助分布式团队更好地协同工作,同时推动高质量的可交付成果是许多组织的首要任务。当开发过程采用 MDT 方法时,团队可以实现基于代码的测试结果。关键的支持技术是执行实际应用程序的 MDT 测试。这意味着使用可以直接提供测试结果的基于代码的测试工具运行 MDT 测试。基于代码的测试工具跟踪正在执行的应用程序,使其成为最佳方法。

MDT 在改进测试过程方面有着良好的记录,但它没有被广泛采用,因为它不会产生基于代码的测试结果。现在这是可能的,提供了两全其美的优势——在 MDT 流程中轻松创建和理解测试——以及开发人员可以使用的完整和彻底的测试结果。通过利用 MDT 方法的收益,开发人员也可以得到他们的蛋糕并吃掉它。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    5817

    浏览量

    129776
  • 代码
    +关注

    关注

    30

    文章

    4915

    浏览量

    71607
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    上海控安:基于模型测试用例生成

    在当今复杂多变的软件开发环境中,软件系统的规模和复杂度不断攀升,传统测试方法面临着诸多挑战。如何高效、准确地生成测试用例,以确保软件系统的质量和可靠性,成为软件测试领域的关键问题之一。
    的头像 发表于 08-28 14:30 ?150次阅读
    上海控安:基于<b class='flag-5'>模型</b>的<b class='flag-5'>测试</b>用例<b class='flag-5'>生成</b>

    AI生成测试用例真的靠谱吗?

    软件测试正经历一场深刻的技术革命。AI,尤其是以GPT、通义千问、文心一言、Claude等为代表的大语言模型(LLM),开始广泛介入测试流程:从需求分析、测试用例设计,到脚本
    的头像 发表于 08-01 10:02 ?864次阅读
    AI<b class='flag-5'>生成</b>的<b class='flag-5'>测试</b>用例真的靠谱吗?

    待机功耗测试的“隐秘陷阱”:为什么你的测试结果可能不准确?

    测试结果是否真实可信。测试前提要保证测试设备的精度,需从以下三个方面考虑:1、分辨率:测量的“放大镜”分辨率决定了设备对模拟信号的“分辨能力”,我们用它来量化刻度。
    的头像 发表于 07-22 11:37 ?266次阅读
    待机功耗<b class='flag-5'>测试</b>的“隐秘陷阱”:为什么你的<b class='flag-5'>测试</b><b class='flag-5'>结果</b>可能不准确?

    HarmonyOS AI辅助编程工具(CodeGenie)代码测试

    放置于方法名称上或框选完整的待测试方法代码块,右键选择CodeGenie > Generate UT,开始生成单元测试用例。 说明 最多支持解读20000字符以内的代码片段。Ar
    发表于 07-14 17:33

    模型捉虫行家MV:致力全流程模型动态测试

    动态测试通过模拟真实运行数据,对模型生成代码进行“全维度体检”。这一过程层层递进:从单元测试聚焦单个模块的精准性,到集成
    的头像 发表于 07-09 16:37 ?738次阅读
    <b class='flag-5'>模型</b>捉虫行家MV:致力全流程<b class='flag-5'>模型</b>动态<b class='flag-5'>测试</b>

    在橡胶体积表面电阻率测试过程中,电磁干扰对测试结果的影响,如何有效屏蔽

    的负面影响,使测量的电流出现波动,最终导致测试得到的电阻值偏离真实值。在强电磁干扰环境下,测试结果可能会出现大幅度的偏差,根本无法准确反映橡胶的电学性能,这对于依赖测试
    的头像 发表于 03-13 13:14 ?458次阅读
    在橡胶体积表面电阻率<b class='flag-5'>测试</b>过程中,电磁干扰对<b class='flag-5'>测试</b><b class='flag-5'>结果</b>的影响,如何有效屏蔽

    影响OTDR测试结果的因素

    光时域反射仪(OTDR)是光纤通信领域中不可或缺的测试工具。它通过发送光脉冲并测量反射回来的光信号,来确定光纤链路的长度、损耗和故障位置。然而,OTDR测试结果的准确性受到多种因素的影响。 1.
    的头像 发表于 12-31 09:22 ?1250次阅读

    电力驱动测试系统的技术原理和应用

    设备可能产生高次谐波和电波噪声,容易对电网和周边设备产生影响。因此,测试系统需要采用标准接地方式,并在驱动器前后端接入滤波装置,以消除干扰,确保测试结果的准确性。 二、应用
    发表于 12-19 14:54

    ESD HBM测试差异较大的结果分析

    ESD HBM测试结果差异较大的原因,通常包括设备/仪器差异、?校准和维护水平不同、?环境条件差异、?测试样本差异、?测试操作员技能和经验差异以及
    的头像 发表于 11-18 15:17 ?1488次阅读
    ESD HBM<b class='flag-5'>测试</b>差异较大的<b class='flag-5'>结果</b>分析

    阿里云开源Qwen2.5-Coder代码模型系列

    Qwen2.5-Coder-32B-Instruct,在代码生成领域取得了显著成就。据官方介绍,该模型在EvalPlus等十多个主流的代码生成
    的头像 发表于 11-14 11:28 ?1248次阅读

    ESD测试仪器的使用方法

    测试仪器概述 ESD测试仪器主要包括ESD发生器和测试系统。ESD发生器用于模拟静电放电,而测试系统则用于监测和记录测试
    的头像 发表于 11-14 11:10 ?2133次阅读

    Matlab/Simulink/Stateflow建模开发及仿真测试

    matlab 模拟仿真 熟悉Matlab/Simulink/Stateflow建模开发及仿真测试,熟悉V模型开发流程。 熟悉自动代码生成,能够编写或者配置自动
    发表于 10-24 17:23

    IC测试基本原理与ATE测试向量生成

    ,研究和发展IC测试,有着重要的意义。而测试向量作为IC测试中的重要部分,研究其生成方法也日渐重要。1IC测试1.1IC
    的头像 发表于 10-12 08:03 ?3002次阅读
    IC<b class='flag-5'>测试</b>基本原理与ATE<b class='flag-5'>测试</b>向量<b class='flag-5'>生成</b>

    ic测试原理和设备教程的区别

    涉及如何通过测试信号的生成与传输,对IC的性能、功能和可靠性进行全面评估。 测试原理包括测试信号的生成与传输、
    的头像 发表于 09-24 09:51 ?739次阅读

    TLV1805-Q1 EVM ISO测试结果

    电子发烧友网站提供《TLV1805-Q1 EVM ISO测试结果.pdf》资料免费下载
    发表于 09-19 12:43 ?0次下载
    TLV1805-Q1 EVM ISO<b class='flag-5'>测试</b><b class='flag-5'>结果</b>