软件单元测试要点的一些理解

以转向系统为例,软件单元测试要点

 

MBD建模,就是子系统subsystem;C这种面向过程测试中的单元测试就是函数Function;C++这种面向对象编程语言就是功能块(类)中的方法,属性;

 

测试方法:

  1. 基于需求的测试:转向系统的功能需求就是根据侧向偏差PID计算出期望转角,作侧向偏差闭环,这是第一层PID,对应的需求就是 给一个阶跃信号观察系统响应时间,超调量,稳态误差;第二层PID就是根据期望转角和实际转角误差PID调整转角,实现预瞄跟随控制。同样地,这一层控制算法需求也是一样
  2. 故障注入测试:在测试之前,要先做急停功能算法验证测试。根据需求,急停时需要保持当前转角,不能说直接将转角置为0,因为制动时的逻辑是驱动系统不输出电流不作动,制动系统给最大PWM值抱死制动,如果前轮急速打为0,会直接失稳!

②转向系统中有传感器,对于传感器的失效监控验证。传感器有两种失效方式,第一种就是零漂:如果理论上应该在中间值附近时,他一直不在,并且此时offseterror标志位是false,那么就累加ounter,程序循环周期是10ms,这个counter大于200,也就是说2秒钟时间一直保持零漂状态了,那么标志位就置为true;第二种失效就是传感器损坏,用到的逻辑是上一时刻与当前时刻值完全相等,判定为损坏,如果2s内一直一样,那肯定坏了

③整车集成测试功能安全也是如此,各大子系统的monitor方法给出的值,很多都是布尔量,通过位运算,计算出故障码,首先测试这个

  1. 接口测试:对应的输入输出是不是Main函数里需要的,一般来讲,上一个方法的输出值传到全局变量里被下一个方法或函数功能块所调用,如果传出来的输出量没用,哪一次那个是接口需求定义有误,或者软件开发有误
  2. 背靠背测试:如果是基于模型开发MBD建模,还要验证MIL仿真结果与SIL仿真结果一致性,从而判断模型和代码的一致性
  3. 资源使用测试:占CPU,内存百分比不能太高

 

 

测试用例:

  1. 功能需求测试用例:直接验证功能是不是符合要求
  2. 边界值分析:根据需求书上的输入接口边界值,测试功能模块在边界输入下的情况来反映整个范围内的情况。一般三个值,边界值和较大/小值,取决于输入量的类型,Int类型最小增量就是1

 

评估对需求的覆盖程度,也就是结构覆盖度

语句覆盖程度:是不是每个语句都执行到?编程规范问题。有的时候发现CPU占用率变化不大,很可能是因为添加进去的进程并没有执行到,有可能是语法错误,有可能是逻辑错误,。举个例子,无人车下位机与上位机或者遥控器UDP通信过程中,很明显发现回传数据的Counter不做累加运算,说明该段线程没有被执行,究其原因,可能是指针数组语法使用错误,说明该段代码没有被执行,CPU占用率当然不会有变化!

 

软件单元测试还要关注环境,单元测试的环境应该和实际环境保持一致,是在不能保证的,应该要放到后面集成测试或者需求验证可行性分析中进行补充验证,基于目标环境测试内容!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值