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

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

3天内不再提示

对FEY(Full-Expectation-Yet)方法的介绍

北汇信息POLELINK 2023-07-25 17:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

通过关注输出和行为验证,了解FEY(Full-Expectation-Yet)方法如何彻底改变软件测试。通过确保期望值的存在,这种方法提高了测试覆盖度、可靠性和整体软件质量。深入了解实现FEY方法的关键见解、挑战和好处,以释放测试工作的真正潜力。

在软件测试领域,一个常见的挑战是在测试创建期间对每个输入定义期望值的疏忽。这可能导致不完整或无效的测试覆盖,导致未检测到的问题从裂缝中溜走。在本文中,我们将探讨导致此情况的潜在问题,并介绍解决这些挑战的解决方案。

测试中的典型问题:

软件规范之间的差距:软件规范中不可能明确的描述每一种每个边界情况或场景,因此这些在测试创建过程中可能被忽视。

测试有效性的丧失:随着软件的变化,测试可能会过时并失去其相关性,仅通过视觉检查来确定其准确性是很困难的。

软件接口的复杂性:软件系统通常有许多接口,因此在每个时间点为每个输入定义清晰的期望值具有挑战性。

大型的自动化项目:在大规模的自动化项目中,测试人员可能会忽略没有定义期望值的情况或测试矢量,从而导致不完整的测试覆盖。

解决方案——增加一个额外的监控层

为了应对这些挑战,我们建议实现一个额外的监控层,以确保每个接口都有期望值。

这是通过为每个接口创建专用变量来实现的,该变量初始化为默认值“false”。然后,这个变量会在测试报告中显式地、自动地突出显示。如果在测试的任何给定点都没有定义期望值,那么测试将自动失败。这让测试人员能够在每次测试运行后快速识别未定义期望值的场景、输入或情况。

注重测试结果的方法特别适用于:

安全关键行业:诸如汽车、医疗、航空航天和其他安全关键领域的行业,在这些行业中,正确的行为和软件输出的准确性至关重要。

具有复杂软件的开发团队:开发具有复杂功能、众多接口和复杂计算的软件项目的团队,这些项目需要对输出进行彻底的测试和验证。

测试经理和工程师:通过有效的测试策略负责确保软件质量和可靠性的专业人员。这种方法为他们提供了一种系统的方法来监测和验证预期的输出。

质量保证团队:QA团队试图通过结合涵盖输入和输出的综合方法来增强他们的测试过程,从而提高整体测试的覆盖度和有效性。

测试自动化专家:测试自动化方面的专家,他们的目标是利用自动化工具和技术来简化和优化测试过程,并特别关注输出和行为验证。

应用该方法的领域

软件输出/计算的评估是测试的核心。测试用例是通过还是失败完全取决于期望值,因为这些值定义了软件的预期行为。因此,尽可能全面地描述这些期望值是至关重要的。

为了更好地理解这一事实,这里有一个简短的边注

测试自动化的基本原则:

  • 一个测试用例必须接受至少一个评估,以被评估为成功或失败。如果没有可用的评估,测试用例在TPT中被判定为无结果的(Inconclusive)
  • 如果所有的评估都通过了,那么测试用例就被认为是成功的(Passed)。
  • 如果至少有一个评估失败,那么测试用例被认为是失败的(Failed)。
  • 如果一个测试用例不能被执行,它会被标记为执行错误(ExecutionErrors)。

wKgaomS_l6iAbj5dAABUSH-m3ts852.png

用一个简短的例子说明这种合理逻辑的缺点。

给一个具有许多输出的测试对象创建一个测试用例。测试用例包含许多测试条件(步骤),并在许多情景下(高覆盖度)刺激测试对象。现在的问题是:测试用例只包含与行为无关的相关评估。因此,即使测试的含量很低或没有意义,也会被报告为成功。

这是非常不利的。但有解决办法。我们称这种方法为Full-Expectation-Yet。

简而言之,Full-Expectation-Yet(FEY)方法是:

为被测系统的每个输出创建一个检查变量。该变量的目的是在任何时候检查测试对象的输出是否存在预期值。

因此,对于每个样本(带有输入数据的测试向量),测试变量的默认值为false。只有当输出存在指定的期望值时,默认值才会设置为true。

注:在TPT中,评估可以定义为独立于测试数据的自定义实体。评估在测试执行后自动运行。

TPT将自动执行对变量的求值以生成报告。如果存在没有期望值的时间间隔(样本),则变量保留默认值(false),并且测试用例失败。在这种情况下,测试对象的期望值是缺失的,它可以由测试人员来补充。

实施FEY方法的3个步骤:

  • 步骤1 -为测试对象的每个输出创建一个变量
  • 步骤2 -定义每个变量,以值false开始
  • 步骤3 -在每次评估期望值时设置相应的变量值为true

结果

由于对于每个输出,变量的初始值为False,并且只有在对输出进行测试时才设置为true,因此,如果测试对象的刺激显示了测试中尚未指定的行为,则测试将失败。

为了检查尽可能多的情况,我们建议使用代码覆盖率指标MC/DC

举个例子

为了展示FEY方法的实用性和有效性,让我们举一个汽车行业的例子。想象一下,一个开发团队正在为自动驾驶汽车开发高级驾驶辅助系统(ADAS)。

通过实现FEY方法,团队可以为每个输出创建专用变量,例如碰撞检测、车道偏离警告和自适应巡航控制。通过为每个输出定义明确的期望值,团队可以全面测试这些关键功能的行为和准确性。

这确保了ADAS系统的可靠运行,为乘客和其他道路使用者提供了更高的安全性。这些例子突出了FEY方法在软件行为至关重要的行业中的实际好处和实际应用。

这种有条不紊的方法确保了:

  • 测试中会考虑所有情况/场景
  • 对于每种情况和每种结果,测试中都有一个期望值
  • 如果测试对象发生变化,可确保所有测试的有效性

注:在当前的实现中,输出和测试变量之间没有直接耦合。因此,必须在审查过程中检查实现是否使用错误。

需要什么来实现?

您所需要的只是一个具有以下功能的自动化测试:

  • 代码覆盖度的度量(至少是决策覆盖度,MC/DC更好)
  • 测试数据期望值独立定义
  • 离散时间评估(每个样本至少一次评估)
  • 每次测试运行的整体评估

逐步实现FEY方法(使用TPT)——参考实现灯控制的例子

  • 连接被测系统
    • 创建评估行为的评估
    • 创建测试数据(最好是基于需求)
    • 实现监控层
      • 记录测试对象的接口
      • 为每个输出创建检查变量
      • 通过检查变量扩展评估
    • 运行测试并检查覆盖度(决策或MC/DC) ->使用TPT的模块TASMO,您可以通过代码刺激所有路径和条件自动生成测试数据。
    • 添加测试数据以实现100%的代码覆盖度
    • 如果检查变量显示某些测试数据没有定义期望值,则创建额外的评估。

wKgaomS_l9-AKUCcAAEEyT1u7vQ212.pngwKgZomS_l9-ALcfQAACoSKQ9o84815.pngwKgZomS_l9-AKX39AAEKdFnjACE261.pngwKgaomS_l9-AXF8TAADgERupH9s074.pngwKgZomS_l9-AYj_KAACVhA85QDA438.pngwKgaomS_l9-AbPqaAACq2-opwXU999.pngwKgZomS_l9-AJGgJAAEDVk8_Yik437.pngwKgaomS_l9-APhT9AACG-TN6t4Y868.pngwKgZomS_l-CAKXGDAAClcuPW8GM141.png

FEY方法的优缺点

FEY方法的优势

  • 确保测试的有效性(对于每种情况,对测试项目都有明确的期望)
  • 通过结合覆盖测量检测规范差距来提高安全性,例如,对于具有大量变体的驾驶员辅助功能
  • 非常简单易懂的实现->易于验证的审查
  • 这种方法是兼容的,并且很好地补充了确保测试用例和需求可追溯性的方法

FEY方法的弱点

  • 如果实现被误用(通过审查实现进行保护),其重要性就会降低。
  • 未能发现相互矛盾的需求,例如,对于相同的情况,对于相同的结果,存在多个期望值(通过一般测试方法来保证——对于相同的测试向量,不同的期望值导致至少一次评估失败)
  • 如果代码的行为受到参数的影响,则不考虑参数化(通过多参数执行来保证)

总结

在本文中,我们探讨了与在软件测试中定义期望值相关的挑战,并介绍了一种称为Full-Expectation-Yet(FEY)方法的解决方案。测试的核心在于评估软件的输出和计算,而期望值的存在对于决定测试用例的成功或失败至关重要。

FEY方法通过增加一个额外的监控层来解决传统测试方法的缺点。它涉及到为被测系统的每个输出创建专用变量,初始化为默认值“false”。然后在测试执行期间评估这些变量,如果没有定义预期的值,测试用例就会失败。这种方法确保在测试中涵盖所有情况和结果,从而提供了一种系统的方法来监测和验证预期的输出。

FEY方法特别适用于具有安全关键开发的行业、从事复杂软件项目的开发团队、负责确保质量的测试经理和工程师,以及寻求增强其测试过程的质量保证团队。通过关注输出和行为验证,这种方法提高了整体的测试覆盖度、有效性和可靠性。

虽然FEY方法提供了几个优点,例如确保测试有效性和检测规范差距,但它也有缺点。实现的误用、检测矛盾需求的失败以及对参数化的有限考虑是需要解决的一些挑战。

通过实现FEY方法,软件测试可以发生革命性的变化,导致更全面和有效的测试实践,从而有助于提高软件质量和可靠性。

而TPT就是能使用FEY方法进行软件测试的嵌入式软件模型动态测试工具,如果您正苦于测试效率不高、测试过程冗杂的烦恼,欢迎联系北汇信息获取TPT试用,助力测试效率的提升。

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

    关注

    5212

    文章

    20763

    浏览量

    338764
  • 软件
    +关注

    关注

    69

    文章

    5388

    浏览量

    92068
  • 嵌入式软件测试

    关注

    2

    文章

    29

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FRDM-i.MX93:imx-image-full 构建在 onnxruntime_1.17.1.bb 处失败了,怎么解决?

    我正在构建imx-image-full(imx-图像满) for FRDM-I.MX93遵循本指南: https://www.nxp.com/document/guide
    发表于 04-16 07:23

    射频SMA安装方法

    本文详细介绍了射频SMA接口的安装方法、操作步骤及注意事项,帮助工程人员提升射频系统连接的稳定性。
    的头像 发表于 01-21 17:49 481次阅读
    射频SMA安装<b class='flag-5'>方法</b>

    SMA接口安装方法详解

    本文介绍了SMA接口的安装准备、连接步骤及注意事项,帮助用户掌握规范的SMA射频接口安装方法,提升系统稳定性。
    的头像 发表于 01-14 11:04 1034次阅读
    SMA接口安装<b class='flag-5'>方法</b>详解

    Q-DPAK Full Bridge V2.1评估板:解锁碳化硅MOSFET性能新可能

    Q-DPAK Full Bridge V2.1评估板:解锁碳化硅MOSFET性能新可能 在电力电子领域,评估板是验证和探索新型功率器件性能的重要工具。今天,我们就来深入了解一下英飞凌的Q-DPAK
    的头像 发表于 12-18 11:50 868次阅读

    C语言选择的几种不同方法介绍

    \'; else if ( queue == 1 ) letter = \'S\'; elseletter = \'U\'; 一种更简洁、更快的方法是使用数组下标获取字符数组的值。如下
    发表于 12-12 07:31

    GPIOB模拟spi的方法及lcd屏幕的接入

    本小组用到了spi接口的lcd屏幕,在此分享GPIOB模拟spi的方法及lcd屏幕的接入。 一、spi接口简介 如上图所示,SPI接口的典型时序是每一个时钟周期采集一个数据。时钟周期频率
    发表于 10-30 07:59

    移植 rt_vsnprintf_full.c 替换掉 原来的 rt_vsnprintf 之后 打印后出现死机,什么原因导致的?

    : 2.问题: 移植完 rt_vsnprintf_full.c 并 替换掉 原来的 rt_vsnprintf 之后 打印后出现 RTT系统线程未进入SUSPEND 导致死机 3.死机代码
    发表于 10-09 06:55

    Viztra-HE052F图像处理板,小尺寸、低功耗!CameraLink Full模式新选择

    ,每通道支持高达40位/像素的图像数据传输速率。Full模式在双通道配置下可以提供高达80位/像素的传输能力,通常用于从工业相机实时捕获视频数据。但是传统的Cam
    的头像 发表于 09-29 17:59 1504次阅读
    Viztra-HE052F图像处理板,小尺寸、低功耗!CameraLink <b class='flag-5'>Full</b>模式新选择

    ENV不能添加rt_vsnprintf_full软件包怎么解决?

    想在bsp工程打印浮点数,结果找不到rt_vsnprintf_full软件包 问题复现 使用env-windows-v2.0.0 执行pkgs --upgrade 打开menuconfig找不到rt_vsnprintf_full软件包 使用/搜索找到软件包但显示红色,不能
    发表于 09-24 06:04

    ANSA中CFD网格细化方法

    在上一篇文章中介绍了CFD网格细化方法之Size Field功能,在本篇文章中我们将继续介绍其他CFD网格细化方法
    的头像 发表于 08-06 15:07 4636次阅读
    ANSA中CFD网格细化<b class='flag-5'>方法</b>

    超级电容器能量密度测试方法

    本文介绍了超级电容器能量密度测试方法,包括原理、步骤及影响因素。
    的头像 发表于 07-19 09:24 1472次阅读
    超级电容器能量密度测试<b class='flag-5'>方法</b>

    浅谈半导体薄膜制备方法

    本文简单介绍一下半导体镀膜的相关知识,基础的薄膜制备方法包含热蒸发和溅射法两类。
    的头像 发表于 06-26 14:03 2037次阅读
    浅谈半导体薄膜制备<b class='flag-5'>方法</b>

    想在bsp工程打印浮点数,结果找不到rt_vsnprintf_full软件包,怎么解决?

    想在bsp工程打印浮点数,结果找不到rt_vsnprintf_full软件包 问题复现 使用env-windows-v2.0.0 执行pkgs --upgrade 打开menuconfig找不到rt_vsnprintf_full软件包 使用/搜索找到软件包但显示红色,不
    发表于 06-13 07:48

    开源鸿蒙开发必备!OpenHarmony替换Full SDK全攻略

    本文介绍开源鸿蒙OpenHarmony替换FullSDK的方法,演示设备为触觉智能PurplePiOH鸿蒙开发板获取FullSD
    的头像 发表于 06-06 18:11 1111次阅读
    开源鸿蒙开发必备!OpenHarmony替换<b class='flag-5'>Full</b> SDK全攻略

    数字IC设计:方法、技巧与实践

    设计的流程逐步介绍前端设计需要的知识。其中第3章为构架设计,比较详尽地介绍了构架设计的任务,一些应当考虑的问题和构架设计的方法。第4章是RTL设计与仿真。首先介绍的是一些RTL的设计规
    发表于 05-28 16:06