乐于分享
好东西不私藏

汽车嵌入式软件黑盒测试你知道是怎么设计测试用例的吗?快来看看.

汽车嵌入式软件黑盒测试你知道是怎么设计测试用例的吗?快来看看.

这些年,信息技术发展太快了,咱们已经一脚踏进了数字化时代。跟着计算机技术一起火起来的嵌入式技术,也渗透到了日常生活的方方面面。嵌入式系统作为提升国民经济和生产力的重要手段,在通信、高铁、工业控制、汽车制造、航空航天这些对安全性和可靠性要求很高的领域,用得越来越多。不过,随着应用场景和需求不断增多,嵌入式软件的规模和复杂程度也跟着暴涨,由嵌入式软件出问题导致的故障比例也越来越大。所以,怎么把嵌入式软件的质量搞上去,已经成了眼下必须解决的事儿。大家都知道,软件测试是保证软件高质量、高可靠性的重要手段,嵌入式软件尤其如此。实践证明,在开发过程中,通过测试来发现软件本身的缺陷,是提高软件质量和可靠性非常有效的方法。

1 嵌入式软件黑盒测试技术是啥

嵌入式软件测试常用的技术分两类:黑盒测试和白盒测试。黑盒测试也叫数据驱动测试或基于规格说明的测试,说白了就是站在最终用户的立场上,看输入输出信息和系统性能指标符不符合规格说明书里对功能和性能的要求。在某些情况下,黑盒测试也被叫作功能测试。这类方法根据软件的功能和外部表现来找缺陷,不需要了解程序内部是怎么写的。

黑盒测试技术主要包括场景法、等价类划分法、边界值分析法、因果图法这些测试用例设计方法。本文以某款新能源汽车整车控制策略里的空调控制模块为例,重点说说怎么把不同类型的黑盒测试技术有机融合到嵌入式软件测试中,具体操作步骤见图1。

图1 黑盒测试技术融合应用操作步骤图

在设计空调模块测试用例之前,得先梳理清楚两样东西:一是空调模块的控制需求(见图2),二是空调模块的输入输出关系(见图3)。然后先用场景法搭出测试的框架(也就是测试路径/场景),把基本测试路径设计好之后,针对每条路径里具体的输入输出,再用等价类、边界值和因果图法去设计对应的测试用例。

图2 空调模块控制需求思维导图

图3 空调模块输入输出关系图

1.1 场景法

场景法由两部分组成:基本流和备选流。它的作用是用来描述测试用例走过的路径,从用例开始到结束,把这条路径上所有基本流和备选流都遍历一遍。拿空调控制模块里“放电模式空调使能”这个测试需求来举例,咱们看看场景分析法具体怎么用。根据对这个需求的分析,基本流和备选流是这样的:

  • 基本流
    :空调是关着的,并且满足放电模式下空调使能的条件。
  • 备选流
    :不满足放电模式下空调使能的条件。

根据上面这些,可以生成两个不同的测试场景:

  • 场景1
    :空调关闭 → 满足放电模式空调使能条件 → 空调使能。
  • 场景2
    :空调关闭 → 不满足放电模式空调使能条件 → 空调保持关闭。

1.2 等价类划分法

等价类划分法就是把程序的输入范围划分成几块,然后从每一块里挑出少数有代表性的数据作为测试用例。等价类分两种:有效等价类和无效等价类。

通过场景法分析,我们得到了“放电模式空调使能”这个测试需求的两条场景——使能和不能使能。接下来,针对具体的输入输出关系,用等价类划分法来梳理设计。表1就是放电模式空调使能的等价类划分表,里面各个输入信号的有效等价类组合起来,就是实现场景1的逻辑跳转条件;而各个输入信号的无效等价类组合起来,就是实现场景2的逻辑跳转条件。

表1 放电模式空调使能等价类划分表

输入条件
有效等价类
无效等价类
动力电池SOC
大于3%
小于等于3%
高低压上下电状态
放电模式高压
其他状态
互斥模块空调转速请求输出
大于0
等于0
风扇故障输入信号(两个风扇)
至少一个没故障
两个都故障

1.3 边界值分析法

边界值分析法是一种典型且重要的测试方法,专门用来测输入或输出的边界值。它算是对等价类划分法的补充,选的是输入输出等价类的边界值。以上面那张等价类划分表为基础,对已经分好的有效等价类和无效等价类进行边界值分析,就得到了表2——“放电模式空调使能”边界值分析表。

表2 放电模式空调使能边界值分析表

输入条件
等价类型
边界范围
取值
动力电池SOC
有效
[4、100]
4、20、100
无效
[0、3]
0、3
高低压上下电状态
有效
[0、3]
8
无效
[0、7]或[10、16]
2、10、16
互斥模块空调转速请求输出
有效
(0、6000]
20、6000
无效
0
0
风扇故障输入信号(两个风扇)
有效
0
0
无效
1
1

1.4 因果图法

用等价类和边界值分析法,基本上把“放电模式空调使能”测试项里各个输入条件的取值都理清楚了,但有一个问题没考虑到——各个输入条件之间的各种组合,以及组合之间的相互制约关系。这时候就得用因果图法来分析多个输入条件之间的关联了。这个方法先根据软件需求找出各个输入条件(也就是“因”)和输出条件的改变(也就是“果”),然后用图解法把各种输入条件组合之间的相互关系(比如“与(∧)”、“或(∨)”)分析清楚。图4和图5分别是放电模式空调使能和不使能的因果关系图。

图4 放电模式空调使能因果关系图

图5 放电模式空调不使能因果关系图

2 嵌入式软件黑盒测试用例长啥样

把上面几种黑盒测试技术综合分析和相互融合之后,就得到了“放电模式空调使能”的功能测试用例,具体见表3。

表3 放电模式空调使能的功能测试用例

用例描述
输入数据
预期结果
空调使能测试1
动力电池SOC=4%;高低压上下电状态=8;互斥模块空调转速请求=20;风扇1故障信号=0;风扇2故障信号=0
空调使能
空调使能测试2
动力电池SOC=100%;高低压上下电状态=8;互斥模块空调转速请求=6000;风扇1故障信号=0;风扇2故障信号=1
空调使能
空调使能测试3
动力电池SOC=4%;高低压上下电状态=8;互斥模块空调转速请求=20;风扇1故障信号=1;风扇2故障信号=0
空调使能
空调不使能测试4
动力电池SOC=0%;高低压上下电状态=8;互斥模块空调转速请求=0;风扇1故障信号=0;风扇2故障信号=0
空调不使能
空调不使能测试5
动力电池SOC=3%;高低压上下电状态=8;互斥模块空调转速请求=0;风扇1故障信号=0;风扇2故障信号=0
空调不使能
空调不使能测试6
动力电池SOC=4%;高低压上下电状态=2;互斥模块空调转速请求=6000;风扇1故障信号=1;风扇2故障信号=0
空调不使能
空调不使能测试7
动力电池SOC=4%;高低压上下电状态=10;互斥模块空调转速请求=6000;风扇1故障信号=1;风扇2故障信号=0
空调不使能
空调不使能测试8
动力电池SOC=4%;高低压上下电状态=16;互斥模块空调转速请求=6000;风扇1故障信号=1;风扇2故障信号=0
空调不使能
空调不使能测试9
动力电池SOC=4%;高低压上下电状态=8;互斥模块空调转速请求=0;风扇1故障信号=0;风扇2故障信号=0
空调不使能
空调不使能测试10
动力电池SOC=4%;高低压上下电状态=8;互斥模块空调转速请求=20;风扇1故障信号=1;风扇2故障信号=1
空调不使能

3 最后说几句

黑盒测试技术是一种非常有效且容易上手的测试用例设计方法。本文针对嵌入式软件测试的特点,选了空调控制模块里的“放电模式空调使能”这个测试点作为对象,把不同的黑盒测试方法融合在一起用。实践证明,这样做可以有效、有序地设计出一组可靠性高、执行性强的功能测试用例,既提高了测试效率,也保证了测试的置信度和软件质量。

加入群聊可获得

面试

资料

100+企业面试案例

学习

路线

汽车开发学习路线

学习

指导

多名10年+大厂经验

工程师在线指导

学习

交流

众多开发者一起交流

助力你提升技能

王老师的小程序👇👇点击即达!!!
扫码直接进入汽车嵌入式交流群