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试用,助力测试效率的提升。

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

    关注

    5086

    文章

    19142

    浏览量

    305995
  • 软件
    +关注

    关注

    69

    文章

    4968

    浏览量

    87665
  • 嵌入式软件测试

    关注

    2

    文章

    26

    浏览量

    6117
收藏 人收藏

    评论

    相关推荐

    RK3568内置MCU开发介绍之二

    本文重点介绍RK3568内置的MCU与AP之间的通信功能,首先介绍RPMsg的框架,然后介绍MCU端RPMSG的构建方法,最后介绍AP端的R
    的头像 发表于 12-16 09:09 309次阅读
    RK3568内置MCU开发<b class='flag-5'>介绍</b>之二

    电机维修方法介绍 电机保养攻略分享

    作。下面小编介绍常见电机故障和电机维修方法以及电机保养方面的知识。 一、电机维修方法 1、出现电机异常发热怎么维修 维修处理的方法一般为更换电机,或进行维护保养。 2、电机的空载电流大
    的头像 发表于 11-26 01:08 329次阅读

    工控机重装系统的方法介绍

      工控机怎么重装系统,工控机重装系统的方法介绍攻略   首先看下自己购买的什么工控机,是工业平板电脑还是常规的工控主机,我们此篇介绍的是工控主机的装机办法,看下是什么时候出的工控主板,如果是比较
    的头像 发表于 10-23 17:11 347次阅读

    DC/DC模拟的基本使用方法和特性确认方法

    本篇介绍了DC/DC模拟的基本使用方法及确认基本特性的方法
    的头像 发表于 08-20 17:08 721次阅读
    DC/DC模拟的基本使用<b class='flag-5'>方法</b>和特性确认<b class='flag-5'>方法</b>

    使用THS6184做电流驱动输出发热严重有什么方法解决吗?

    使用THS6184做电流驱动输出,输入信号为四路方波正负500mV以内,频率为200Hz,THS6184使用Full Bias模式,同向方法,反馈端接入10K反馈电阻,正常输出电流达到30mA时,运放温度高达60摄氏度,请问有什么方法
    发表于 08-08 06:22

    对放大电路的分析方法介绍

    放大电路是电子威廉希尔官方网站 中非常重要的组成部分,它广泛应用于信号处理、通信、测量等领域。对于放大电路的分析,通常可以分为直流分析和交流分析两种情况。下面我们将介绍这两种分析方法。 直流分析 直流分析主要关注
    的头像 发表于 08-07 10:08 697次阅读

    ESP32在分段读写文件数据时触发UART_FIFO_OVF和UART_BUFFER_FULL的事件处理,是怎么回事?

    有一块SIM芯片,通过该芯片下载150KB左右的文件。 在分段读写文件数据时触发UART_FIFO_OVF和UART_BUFFER_FULL的事件处理,是怎么回事? 有没有好的方案稳定地分段读取完整的文件? 跪求大佬们答疑解惑!
    发表于 06-17 08:09

    CubeMx配置串口 “txfifo threshold 1 eighth full”的含义是什么?

    CubeMx 配置串口 “txfifo threshold 1 eighth full”的含义?
    发表于 04-08 08:24

    使用ST-LINK Utility进行编程勾选Full Flash Memory Checksum和设置读出保护后LSE不起振的原因?

    使用ST-LINK Utility对F105RB进行编程,在编程中勾选了Full Flash Memory Checksum,最后操作OP字节设置读出保护,发现LSE晶振不起振了,而没有勾选的全部
    发表于 03-12 06:35

    逆变器的分类介绍 逆变器应该怎么选择 逆变器的接线方法

    逆变器的分类介绍 逆变器应该怎么选择 逆变器的接线方法  逆变器是一种将直流电转换为交流电的设备。它的主要作用是将太阳能电池板、风能发电机或电力电池等直流电源所产生的电能,转换为交流电以供家庭、商业
    的头像 发表于 02-01 09:45 3290次阅读

    锂电池充电方法介绍以及注意事项

    锂电池是目前最常见和使用最广泛的电池之一,具有高能量密度、轻巧、无记忆效应等优点。充电是锂电池的一项重要操作,正确的充电方法和注意事项能够有效延长锂电池的寿命,保持其性能稳定。下面将详细介绍锂电池
    的头像 发表于 01-22 17:42 1.1w次阅读

    介绍6种常见的反调试方法

    开发相应的安全措施来保护系统,这时,恶意软件开发人员就会使用反调试威廉希尔官方网站 阻碍逆向人员的分析,以达到增加自己恶意代码的存活时间。此外,安全人员也需要了解反调试威廉希尔官方网站 ,当遇到反调试代码时,可以使用相对应的反反调试。在反调试威廉希尔官方网站 上中,我们介绍了9种常见的反调试方法,本篇继续
    的头像 发表于 01-15 09:53 3979次阅读
    <b class='flag-5'>介绍</b>6种常见的反调试<b class='flag-5'>方法</b>

    霍尔开关的原理和应用方法

    霍尔开关的介绍以及如何应用方法
    的头像 发表于 01-11 14:29 8266次阅读
    霍尔开关的原理和应用<b class='flag-5'>方法</b>

    pcb走线的规则设置方法介绍

    随着电子产品的迅速发展,PCB(Printed Circuit Board)在电子设计中扮演着重要的角色。设计PCB走线时,合理设置规则是确保电路在安全、稳定、高效工作的基础。本文将详细介绍PCB走
    的头像 发表于 01-09 10:45 2649次阅读

    详细介绍电流探头测量小电流的方法和技巧

    详细介绍电流探头测量小电流的方法和技巧  电流探头是广泛应用于电子测试和测量的一种设备,其主要作用是测量电路中的电流大小。在许多情况下,我们需要测量的是小电流,因此掌握电流探头测量小电流的方法
    的头像 发表于 01-08 16:09 1006次阅读