• 0
  • 0
分享
  • 汽车ECU测试中的几个共性问题——软件测试圈
  • 橙子 2024-05-30 16:12:45 字数 2697 阅读 837 收藏 0

  最近的工作需要经常和测试打交道,但我并非这个细分领域的行家,看着几千条测试用例和五花八门的测试设备与工具,以及工程师展示的繁复曲线与图表,着实有些眼花缭乱,没太看懂,不由得陷入了深深的思索......

  1 T型人才与焦利氏称

  陷入思索有两个原因:一是确实没跟上节奏,只能佯装沉思,以掩饰尴尬,保持风度;二是汽车领域的知识太多了,没能力是一说,但也实在没必要事事跟上节奏,守好自己碗里的饭就不错了。

  可是,我们不是要构建T型知识结构,成为综合性人才嘛。那怎么办呢?

  写到这里,想到多年前的大学物理实验课,绝大多数课意料之内地忘得干干净净,但倒是记住了一堂——焦利氏称,原因是老师说的一句话,“话我照讲,实验你们照做,但你们多年后肯定记不住我们今天做了什么,只要记住一点,焦利氏称是测微小力的......”老师的反向操作倒也是6,不肖弟子把老师是谁都忘了,还记着这句话。

  这堂课的这部分,于我,是最有价值的内容,但凡我遇到测微小力的场景,我就可以快速收集整理焦利氏称的信息......否则,这么冷门的东西有几个人晓得呢?

1-1.jpg

  回到我们的T型人才,这涉及一个知识结构搭建的问题,我们得把T这一横里的那些原则性、策略性、共性的东西提炼出来,完善自己的知识和认知框架,细节嘛,择需而取。

  下面开始正题,概要讲几个ECU测试的小点。

  2 系统与软件测试的区别

  在ECU开发测试中,通常会把二者区分开来,我们从以下几个角度来看差异点:

  测试对象:软件测试是面向集成在芯片上的软件;系统测试是针对包含软件、硬件与标定的ECU。

  测试目的:软件测试是来寻找软件中的错误,证明软件本身符合软件需求;系统测试是寻找软件、硬件与标定以及结构件共同组成的ECU中的错误,证明系统符合系统需求。

  测试环境:软件测试要尽量独立于硬件,要通过诸如CANoe发送信号的模拟方式进行,尽量模拟;系统测试要尽量真实,真实的线束,真实的负载等。

1-2.jpg

  3 测试的次序

  最好呢,从V模型的最底层按次序逐层测上来,但最好的东西一般不容易得到,我们基本没有那么多时间来进行这样的瀑布式开发。

1-3.jpg

  所以得考虑一些大的原则,然后,适当地并行。

  单元级测试这种非典型测试,最好首先完成,甚至要通过工具链和代码生成进行绑定,即不达到一定的条件无法生成代码,早期一些代码逻辑的覆盖测试会极大地减少后期痛苦的返工。

  冒烟或基本功能测试是第二优先级的测试,基本可用也是开发人员基本素养的要求。

  软件功能、系统集成、系统测试可以在架构变化、接口历史问题等现实项目情况的考虑下,进行适当的并行。

  4 测试准入条件

  测试并不是想测就能测的,需要达到一定的条件才能交给测试团队,这就是测试准入条件。这些规则对于大团队协作非常重要。

  首先要看前面讲的必要测试次序及测试结果是不是满足进行更高层级测试要求。

  硬件设备已就位,比如,ECU工程样件、线束、外围传感器、对手件等。

  测试台架可用,并已经过校准。

  测试信息输入完成,比如,软硬件版本、配置参数、测试计划、交付信息等。

  标定已到位。

  文档(需求、测试规范等)完成review与基线化。

  软件交付按流程完成评审。

  5 测试准出条件

  测试不是想来就来,也不是想走就走的,我们还需要准出条件。

  准出其实是有两层含义的,第一层是正常结束,第二层是异常终止。

  5.1 正常结束

  一般,我们要同时满足以下条件,才可进行正常结束。

  所有计划的测试均已按计划执行。

  测试结果的异常项完成了分析与评审。

  发现的bug录入相应ALM工具。

  5.2 异常终止

  除了流程强制外,终止的大部分原因是考虑到成本与时间,有些情况下,测试没必要继续进行。

  软件或ECU质量太差,不足以支撑测试。

  测试开始后,发现没有满足准入条件。

  如果发现的bug会影响到某些测试的有效性,则这些测试要停下来。

  如果修复某些bug后还需要重测某些case,则这些case在修复后再进行。

  如果新的硬件或软件很快就可用(很快是多快要具体定义了),所有的测试就可停下来,等待新的软硬件。

  6 测试用例的选择

  开始测试之前,我们多数会有一个测试用例库,每版本都全测自然是带来高成本和长周期,因此,用例是需要被选择的,也就是我们总说的Delta测试。

  产品本身的风险高低,对于ASIL等级较高的产品,要强制做一些关键功能测试。

  feature的实现情况。

  已知的软硬件变化。

  工作量评估。

  前序版本、相关版本的测试状态。

  变更对未更改部分的影响。

  不同项目变体之间的调度策略。

  对于这类主观及经验属性较大的决策,每个未执行的测试用例最好都有一个的记录下来的理由。

  除了Delta测试,全功能测试的策略也应被制定出来,比如,一年至少一次全功能,SOP前完成一次全功能,平台软件升级后进行一次全功能,发版超过5版之后进行一次全功能,硬件有变化时要进行一次全功能......

  7 测试管理

  测试是一项复杂冗长的工作,必要的管理是必要的。

  7.1 测试管理

  测试管理的目标是,根据测试计划获取相应的测试交付物(例如,测试规范、测试执行、测试报告、测试评审、缺陷提交等),并且要保证交付能满足项目进度中定义的里程碑。

  7.2 测试资源

  交付物能够及时获取的一个大前提是测试资源能够得到满足,而测试资源包括人员的能力、测试设备、测试样件等。

  7.3 测试调度

  为了尽早确定可能的退出条件,必须首先执行失败概率更高的测试,比如,依次按照以下次序进行。

  ·bug重新测试

  · 测试新功能

  · 测试修改或优化的功能

  · 未改变feature的测试(回归测试)

  7.4 测试计划和监控

  基于项目进度要求以及“测试评估”和“测试调度”的结果,我们就能够给出测试阶段完成的截止日期,从而得出详细的计划。

  计划所需的详细程度取决于项目的复杂性和所涉及的测试人员的数量。

  8 双向追溯性和测试覆盖率

  每一条系统或软件的可测试需求都需要被至少一个测试用例强制覆盖。为了检查测试覆盖率,测试报告、测试规范和相应需求之间的可追溯性可借助相应的需求覆盖率工具,如Reqtify。

1-4.jpg

  如果测试覆盖不完整,则需要将信息暴露给项目层面,并完成风险评估与偏差许可。

  9 写在最后

  测试是个非常庞杂的课题,值得反复研究,限于精力与时间,本文简单总结,点到为止。


作者:佚名    

来源:http://www.51testing.com/html/36/n-7797336.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 自 5 月 9 日 Cloud 版正式上线,Dify.AI  受到广大开发者们的喜爱与分享传播。在不到一周时间内,创建的应用数已超过 4000+,甚至在只有一个 README 的情况下,GitHub Star 数已超过 700+,这让我们深切感受到社区力量的强大!同时,也为 Dify 能给开发者们带来如此强大的创造力而感到无比荣幸和激动。现在,万众期待的开源版本来了!3 月 1 日写下第一行代码至今 2 个多月,共计 46,558 行代码,已完全开源在 GitHub。(值得一提的是,其中大约 30% 的代码是由 GPT 生产。)GitHub 项目地址:https://github.c...
            0 0 1364
            分享
          • 敏捷质量实践中提倡测试左移,测试人员要尽早介入需求阶段,越早越好。测试人员需要关注需求的有效性,以及在需求产生和传递的过程中,交付价值是否被准确的描述、理解和对齐。在这个过程中很容易遇到一个常见问题:验收标准是验收测试要测的吗?验收标准到底是不是测试用例?这两者之间有什么区别和联系?本文主要想解决的就是这个具体的困惑。验收标准是确保需求实现的最小集合验收标准是什么回顾一下需求由厚厚的《软件需求规格说明书》演化为一张用户故事卡片的过程,在这个过程中我们舍弃了大量的细节描述,突出了需求需要交付的客户/用户价值。在需求交付的过程中,我们会一直关注价值,在保证价值的前提下,实现方式和技术细节都是可以讨...
            0 0 1114
            分享
          • 概述做压力测试的时候,我们经常会关注两个指标,CPU利用率和CPU负载Linux中,进程分为三种状态:阻塞的进程blocked process可运行的进程runnable process正在运行的进程running process当进程处于不可中断时,进程会等待I/O设备的数据或者系统调用;进程处于可运行状态时,它处在一个运行队列中,与其他可运行进程争夺CPUCPU使用率CPU使用率指的是程序在运行期间实时占用的CPU百分比,这是对一个时间段内CPU使用状况的统计。通过这个指标可以看出在某一个时间段内CPU被占用的情况load-average 它指的是正在运行(running)和不可...
            0 1 2431
            分享
          •   功能   · 红包金额只能输入数字   · 红包金额最小为0.01元,最大为200元   · 红包金额超过最大范围是否会有相应的提醒   · 发红包余额不足时,发红包失败   · 在红包金额中直接输入小数点“.”,小数点之前应该有个0   · 红包的输入金额是否有小数位数限制   · 红包的金额、个数和描述是否支持复制粘贴操作   · 红包描述中是否可以输入汉字,英文,符号,表情,数字,中文英文符号      - 是否可以输入他们的...
            0 0 707
            分享
          •   1、${__counter(,)} 计数器-加1的功能  疑问:假如加2,使用计数器 -计数器超过最大值后重新开始计数  重点:最大值, 如果运行结果超过最大值时,又会从起始值开始循环每个  用户独立计数器:多线程时,每个用户都是从起始值开始计数,跟线程号有关(${__threadNum} 获取线程号函数)  计数器注意事项如图显示:  2、时间相关的几个函数  ${__time(,)} 默认获取当前时间戳函数,但可以设置格式,比如yyyy-MM-dd 年月日的格式 HHmmss 时分秒 S毫秒   ${__dateTimeConvert(...
            0 0 939
            分享
      • 51testing软件测试圈微信