大数跨境
0
0

电子产品白盒测试方法及案例

电子产品白盒测试方法及案例 企业培训咨询服务李正华
2024-04-11
0
导读:白盒测试又称为透明盒测试、结构测试,它基于程序内部结构进行测试,而不是测试应用程序的功能(黑盒测试)。

白盒测试又称为透明盒测试、结构测试,它基于程序内部结构进行测试,而不是测试应用程序的功能(黑盒测试)。因此,测试人员需要了解程序内部逻辑结构,从编程语言的角度设计测试用例。白盒测试可用于单元测试、集成测试和系统测试。

白盒测试又称为透明盒测试、结构测试,它基于程序内部结构进行测试,而不是测试应用程序的功能(黑盒测试)。因此,测试人员需要了解程序内部逻辑结构,从编程语言的角度设计测试用例。白盒测试可用于单元测试、集成测试和系统测试。

一、概述:

白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。

白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。但即使每条路径都测试过了,仍然可能存在错误。因为:

穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序。

穷举路径测试不可能查出程序因为遗漏路径而出错。

穷举路径测试发现不了一些与数据相关的错误。

二、方法

白盒测试主要是检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有:

逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖等。

基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

逻辑覆盖 vs. 路径覆盖:

逻辑覆盖:以程序或系统的内部逻辑结构为基础,分为语句覆盖、判定覆盖、判定-条件覆盖、条件组合覆盖等。

基本路径测试:在程序或业务控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

2.1 语句覆盖:

语句覆盖(Statement Coverage)又称行覆盖、段覆盖、基本块覆盖,它是最常见的覆盖方式。语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。

下面结合一段小程序介绍语句覆盖方法的执行,程序伪代码如下所示。

if a>0 and y<0:
z=z-(x-y)
if x>2 or z>0:
z=z+(x+y)

在上述代码中,AND表示逻辑运算&&,OR表示逻辑运算||,第1~2行代码表示如果x>0成立并且y<0成立,则执行z=z-(x-y)语句;第3~4行代码表示如果x>2成立或者z>0成立,则执行z=z+(x+y)语句。

该段程序的流程图如图所示

在图中,a、b、c、d、e表示程序执行分支,在语句覆盖测试用例中,使程序中每个可执行语句至少被执行一次。根据图3-1程序流程图中标示的语句执行路径设计测试用例,具体如下。

Test1:x=1 y=-1 z=2

执行上述测试用例,程序运行路径为acd。可以看出程序中acd路径上的每个语句都能被执行,但是语句覆盖对多分支的逻辑无法全面反映,仅仅执行一次不能进行全面覆盖,因此,语句覆盖是弱覆盖方法。

语句覆盖虽然可以测试执行语句是否被执行到,但却无法测试程序中存在的逻辑错误,例如,如果上述程序中的逻辑判断符号“AND”误写成了“OR”,使用测试用例Test1同样可以覆盖acd路径上的全部执行语句,但却无法发现错误。同样,如果将x>0误写成x>=0,使用同样的测试用例Test1也可以执行acd路径上的全部执行语句,但却无法发现x>=0的错误。

语句覆盖无须详细考虑每个判断表达式,可以直观地从源程序中有效测试执行语句是否全部被覆盖,由于程序在设计时,语句之间存在许多内部逻辑关系,而语句覆盖不能发现其中存在的缺陷,因此语句覆盖并不能满足白盒测试的测试所有逻辑语句的基本需求。

2.2 判定覆盖

判定覆盖(Decision Coverage)又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。以2.1里的图及其程序为例,设计判定覆盖测试用例,如表所示。

由表可以看出,这4个测试用例覆盖了acd、abd、ace、abe 4条路径,使得每个判定语句的取值都满足了各有一次“真”与“假”。相比于语句覆盖,判定覆盖的覆盖范围更广泛。判定覆盖虽然保证了每个判定至少有一次为真值,有一次为假值,但是却没有考虑到程序内部的取值情况,例如,测试用例test4,没有将x>2作为条件进行判断,仅仅判断了z>0的条件。

判定覆盖语句一般是由多个逻辑条件组成的,如果仅仅判断测试程序执行的最终结果而忽略每个条件的取值,必然会遗漏部分测试路径,因此,判定覆盖也属于弱覆盖。

2.3 条件覆盖

条件覆盖(Condition Coverage)指的是设计足够多的测试用例,使判定语句中的每个逻辑条件取真值与取假值至少出现一次,例如,对于判定语句IF(a>1 ORc<0)中存在a>1、c<0 2个逻辑条件,设计条件覆盖测试用例时,要保证a>1、c<0的“真”“假”值至少出现一次。下面以2.1里的图及其程序为例,设计条件覆盖测试用例,在该程序中,有2个判定语句,每个判定语句有2个逻辑条件,共有4个逻辑条件,使用标识符标识各个逻辑条件取真值与取假值的情况,如表所示

在表中,使用S1标记x>0取真值(即x>0成立)的情况,-S1标记x>0取假值(即x>0不成立)的情况。同理,使用S2、S3、S4标记y<0、x>2、z>0取真值,使用-S2、-S3、-S4标记y<0、x>2、z>0取假值,最后得到执行条件判断语句的8种状态,设计测试用例时,要保证每种状态都至少出现一次。设计测试用例的原则是尽量以最少的测试用例达到最大的覆盖率,则该段程序的条件覆盖测试用例如表所示


2.4 判定条件覆盖

判定-条件覆盖(Condition/Decision Coverage)要求设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次。例如,对于判定语句IF(a>1 AND c<1),该判定语句有a>1、c<1两个条件,则在设计测试用例时,要保证a>1、c<1两个条件取“真”“假”值至少一次,同时,判定语句IF(a>1 AND c<1)取“真”“假”值也至少出现一次。这就是判定-条件覆盖,它弥补了判定覆盖和条件覆盖的不足之处。根据判定-条件覆盖原则,设计判定-条件覆盖测试用例,如表所示

在表中,条件1是指判定语句“IF x>0 AND y<0”,条件2是指判定语句“IFx>2 OR z>0”,条件判断的值0表示“假”,1表示“真”。表3-4中的3个测试用例满足了所有条件可能取值至少出现一次,以及所有判定语句可能结果也至少出现一次的要求。

相比于条件覆盖、判定覆盖,判定-条件覆盖弥补了两者的不足之处,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖更全面,判定-条件覆盖也没有覆盖acd路径,因此判定-条件覆盖仍旧存在遗漏测试的情况。

2.5 条件组合覆盖

条件组合(Multiple Condition Coverage)指的是设计足够多的测试用例,使判定语句中每个条件的所有可能至少出现一次,并且每个判定语句本身的判定结果也至少出现一次,它与判定-条件覆盖的差别是,条件组合覆盖不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次。

以上面程序为例,该程序中共有4个条件:x>0、y<0、x>2、z>0,我们依然用S1、S2、S3、S4标记这4个条件成立,用-S1、-S2、-S3、-S4标记这些条件不成立。由于这4个条件每个条件都有取“真”“假”两个值,因此所有条件结果的组合有24=16种,如表所示

列出了4个条件所有结果的组合情况,经过分析可以发现,第2、6、8、13这4种情况是不存在的,这几种情况要求x>0不成立,x>2成立,这2种结果相悖,因此最终图3-1的所有条件组合情况有12种。根据这12种情况设计测试用例,具体如下表所示:

有12个测试用例,这12个测试用例覆盖了4个条件结果的所有组合,与判定-条件覆盖相比,条件组合覆盖包括了所有判定-条件覆盖,因此它的覆盖范围更广。但是当程序中条件比较多时,条件组合的数量会呈指数型增长,组合情况非常多,要设计的测试用例也会增加,这样反而会使测试效率降低。

2.6 路径覆盖

给定一段程序流程图

对上述程序进行分析,程序的执行路径可用下图表示

图中的数字是代码行号,当执行程序输入数据时,程序根据条件判断沿着不同的路径执行。如果使用判定覆盖,使程序中每个判定语句至少有一次“真”值,至少有一次“假”值,根据上面两图可设计4个测试用例,如表所示:



## 2.7 逻辑覆盖总结

根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。

语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。

判定覆盖:通过执行足够的测试用例,使得程序中的每个判定至少都获得一次“真”值和“假”值, 也就是使程序中的每个取“真”分支和取“假”分支至少均经历一次,也称为“分支覆盖”。

条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的可能取值(真/假)都至少满足一次。

判定/条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。

——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。

组合覆盖:通过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。

——满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。

路径覆盖:设计足够多的测试用例,要求覆盖程序中所有可能的路径。

三.基本路径测试

3.1流程

1.依据代码绘制流程图

2.确定流程图的圈复杂度(cyclomatic complexity )

3.确定线性独立路径的基本集合( basis set )

4.设计测试用例覆盖每条基本路径

3.2 示例:

Path1: 1-2-3-6-7-9-10-1-11

Path2: 1-2-3-6-8-9-10-1-11

Path3: 1-2-3-4-5-10-1-11

Path4: 1-11P

基本路径测试并不是测试所有路径的组合,仅仅保证每条基本路径被执行一次

电子产品白盒测试项目

1、目标

电子产品的质量问题,是由其中不到5%的设计隐患和特定工况下的应力组合激发导致的。白盒测试的目的就是通过测试用例的激发来发现这两大类问题。

2、测试用例设计方案与步骤

注释要点说明:

(*)找应测点

以活动分解为基本思想确定应测点;

对整机系统找接口应测点;

对板卡的接口找应测点;

板内以功能划分模块,对模块的接口找应测点;

模块内关键信号和TP点为应测点;

将以上应测点列出清单。

(**)在应测点上分析应测项

对每一个应测点设计应测项目,应测项目的选择涵盖但不限于如下几大类:标准工况测试、边缘工况测试、变化率测试、时序测试、过渡过程测试、超限测试、单一故障测试、偶发故障测试与概率分析、数据端口波形诊断测试、关键信号波形质量测试等。

(***)测试用例做分级

对第2)条的测试项进行分类分级,分成高、中、低三个级别:

涉及安全性、基本功能、与单一故障容错机制的测试项目为高级;

用户能够感知到的功能为中级;

其它为低级。

根据资源分配情况,决策分析确定测试侧重点。

3、重点测试内容(仅为示例)

包括但不限于以下重点内容:

1)能量异常输入测试:电压超限输入、电源线单一故障、电源输入波动

2)输出能量异常状态测试:Vinmin+PLoadmax组合工况测试、抛负载测试

3)多电源系统的各电源上电掉电时序、电源与reset时序、接口状态与电源时序

4)IGBT控制与驱动测试:开通门电压、开通时序、损耗测试

5)常规测试波形:负载调整率、输入电压调整率、纹波噪声、供电回路电流测试(电流波动、FFT频率分析)

6)单一故障测试:传感器故障、关键信号故障、存储数据错误

7)与Layout布线有关的信号串扰

8)共用电源的A、B功能模块,A、B启停状态过程互扰测试

9)高危、易失效器件的针对性测试和分析

10)电压信号前后级阻抗匹配误差分析与测试

11)热测试与热判据(功率器件,含开关管、整流管、功率电阻、高集成IC)

......

4、历史业绩

直流转换储能白盒测试项目;

超声波电机驱动硬件白盒测试;

核酸检测仪器白盒测试;

铁路信号控制通用核心板白盒测试

深圳威硕咨询公司技术服务业务项目清单

序号 过程活动主题 过程活动内容 输出物
1. 培训 硬件可靠性设计 可靠性白盒测试 器件选型与替换
电磁兼容设计 容差分析 DFMEA(故障模式与失效分析)
器件选型与工程计算 嵌入式软件可靠性设计 通用质量特性设计(七性设计)
讲义
考试题
2. 网络课程 电路设计隐患故障案例集 电磁兼容设计规范 电子工艺规范设计
电路设计工程计算 电子系统架构设计
反碎片化学习,将过去碎片化的时间用于随时随地的网络学习(手机电脑听课)
3. 硬件可靠性审核 客户输入:整机布局图、原理图、PCB图、BOM单、datasheet、开发任务书、项目建议书、检验作业指导书、工程计算书、接地图、结构图等设计文件(不一定全需要);
审核内容:降额、热设计、电磁兼容、环境适应性、安规、DFM、DFT、参数容差、设计规范符合性、器件选型可靠性评估、信号质量仿真、布局布线、工艺可靠性等设计及生产易发问题点
评审会议记录
评审报告
4. 故障排查与失效分析 针对客户产品具体问题的整改措施,过程活动包括:问询现场工况、器件失效分析、模拟测试、试验数据分析、故障机理与整改措施建议、验证、总结报告 方案报告(含技术措施与验证结果)
5. 测试方案制定 与 测试实施 制定测试用例:确定应测点、确定应测点的应测项、确定测试应力、设计测试方法和测试用例、测试项目分级、测试结果分析、整改措施。测试用例的设计包括但不限于标准工况测试、边缘工况测试、变化率测试、前后级模块间匹配影响、时序、启停过渡过程、超限、单一故障测试、波形诊断、潜通路分析、偶发故障工程计算、批次一致性测试、热测试等。

测试实施:客户提供样品,我司测试团队依据制定的测试用例进行测试,并提供测试结果、原因分析、改进建议措施。
测试用例方案
测试总结报告
6. 嵌入式软件代码静态扫描测试服务 用软件静态分析工具,依据可靠性规范进行源代码检查,专门针对程序员易犯错误的设计环节或特定软件可靠性设计标准,包括但不限于数据溢出、逻辑死锁、数组越界、数据类型赋值不匹配等,检查项可依据需求通过工具选择设定,依据规范可达2283条,静态分析后可生成问题风险清单;
再由测试人员逐项分析,确认问题的后果和容错机制,对确认存在隐患且无防护措施的问题点,记录问题报告单并说明机理,给出修改建议,
静态扫描分析报告
7. 信号完整性仿真 针对告诉电路,客户提供电路图、PCB、器件模型,我司工程师完成信号仿真和审核 仿真总结报告
8. 年度顾问 签约成为年度技术顾问后,约定每月度的工作内容,可由客户自行选择如上的任何项目内容,进行有机组合,另增加日常随机答疑指导服务

推荐阅读

1.值得收藏的电子产品20多种认证;

2.环境及可靠性试验设备选择的基本原则;

3.电阻器常见的失效模式与失效机理;

4.LCD屏的电磁兼容整改及设计技术分析;

5.工程师必读:如何在型号研制过程中控制电子元器件的可靠性;

6.给企业带来巨额损失的PCB“黑盘”,可以规避;

7.EMC整改分析—散热结构引起的ESD问题

8.电子元件的可靠性与可靠性试验;

9.LED驱动电源如何进行EMC整改?;

10.信号完整性100条经验规则;

11.滤波器选择需注意的十个问题;

12.产品EMC辐射发射超标原因有哪些?

13.浅谈HALT(高加速寿命筛选试验)在可靠性设计中的应用......

直接在公众号(需先关注)对话框回复序列号即可查看,例如“1”。


中国电子标准协会培训中心(http://www.ltke.cn)专业提供可靠性设计、热设计、EMC培训、SMT工艺、电路设计、架构设计、研发管理、嵌入式软件测试、软件技术等课程及服务。欢迎来电来函咨询:0755-26506757 13798472936 706008@163.com
喜欢本文请點個贊并分享到您朋友圈哦!

【声明】内容源于网络
0
0
企业培训咨询服务李正华
提供可靠性设计/SI/PI/高速电路设计/EMC/热设计/ESD/SMT/UI/需求分析/Hadoop/架构/重构/Android/Linux/产品中试管理/研发团队管理/IPD/研发质量管理等等电子技术、软件技术及研发管理相关的培训和咨询
内容 464
粉丝 0
企业培训咨询服务李正华 提供可靠性设计/SI/PI/高速电路设计/EMC/热设计/ESD/SMT/UI/需求分析/Hadoop/架构/重构/Android/Linux/产品中试管理/研发团队管理/IPD/研发质量管理等等电子技术、软件技术及研发管理相关的培训和咨询
总阅读263
粉丝0
内容464