一种评估单体均衡控制测试效率的方法及其装置与流程

文档序号:16244547发布日期:2018-12-11 23:26阅读:252来源:国知局
一种评估单体均衡控制测试效率的方法及其装置与流程

本申请涉及航天器电源分系统的锂电池单体均衡控制测试技术领域,并且更具体地,涉及一种评估单体均衡测试效率的方法及其装置。

背景技术

由于单节锂离子蓄电池的容量有限,电源分系统中往往会采用多节蓄电池进行串联的方式。如果不进行均衡充电控制,随着充放电循环次数的增加,各个锂离子单体电压会逐渐分化。由于一组电池串联在一起,充电电压将由最小的单体电压来决定,所以当一个电池单体电压下降时,整个电池组的使用效率会随之降低,整个电池组的寿命也会大大缩减。

为了保证锂离子蓄电池单体间的电压均一性,电源控制器采取旁路电阻分流充电电流的均衡控制策略。由电源下位机软件提供锂离子蓄电池单体均衡控制功能来实现此控制策略:在光照期的充电过程中,当满足均衡接通条件时,电源下位机接通电压较高单体的均衡电路,旁路掉部分电流,从而减缓该蓄电池单体电压的上升速度,达到均衡充电的目的;当卫星工作于阴影期时,断开均衡电路,防止蓄电池单体的过放电。

基于锂电池单体均衡控制的重要性,需要对电源下位机软件的锂离子蓄电池单体均衡控制功能进行严格的动态测试,动态测试效率的评估就成为一个很重要的问题。动态测试是在测试数据上运行程序并全面分析输出以发现错误的过程,动态测试方法一般采用黑盒方法和白盒方法。黑盒方法是一种按照需求规格说明设计测试数据的测试方法,用于验证程序的功能、性能、边界处理等是否满足需求规格说明的要求。白盒测试方法是一种按照程序内部的逻辑结构和编码结构设计测试数据的方法,在基于程序控制流结构的充分性覆盖准则中,较为常见的包括语句覆盖准则,分支覆盖准则,路径覆盖准则等等。

一个测试用例集t满足语句覆盖,要求对于控制流图上的所有节点nodei,至少存在一个测试用例t∈t,使得nodei包含于t的执行路径。语句覆盖要求被测单元中每条可执行语句或指令、每个软件特性都必须被测试用例或被认可的异常覆盖,语句覆盖率要达到100%。由于语句覆盖仅考虑单条语句的覆盖情况,无法有效的区分测试用例在控制流图上的行为,也被认为是较弱的一种测试覆盖准则。

一个测试用例集t满足分支覆盖,要求对于控制流图上的所有边ei,至少存在一个测试用例t∈t,使得ei包含于t的执行路径。分支覆盖要求必须在每个分支点上进行测试,要求分支覆盖率达到100%,错误处理路径覆盖率达到100%。显然,如果一个控制流图上的所有边都被覆盖,则所有节点也都被覆盖,反之则不成立。因此,分支覆盖的要求强于语句覆盖。但是,即使所有的分支方向都被执行了,也并不表示程序中所有可能的分支组合都已经经过测试。

基本路径覆盖要求比语句覆盖更强。一条基本路径pi是控制流图上由入口节点到出口节点的路径,且路径上的循环仅执行一次。一个测试用例集t满足基本路径覆盖,要求对于控制流图上的所有基本路径pi,至少存在一个测试用例t∈t,使得pi等价于或包含于t的执行路径。

路径覆盖:一个测试用例集t满足路径覆盖,要求对于控制流图上的所有由入口节点到出口节点的路径pi,至少存在一个测试用例t∈t,使得pi等价于t的执行路径。

基本路径覆盖和路径覆盖能够更好的反映程序的行为。但是,随着程序规模的增大,程序中的分支数量的增加,使得程序中的基本路径和路径的数量也呈现指数级增长的趋势。同时,由于程序中循环、递归的存在,使得实际的路径数量有可能达到无穷大。因此,在实际应用中,要满足基本路径覆盖或路径覆盖需要大量的测试用例,这表示满足这两种控制流覆盖准则的测试可能无法在合理的时间内完成。

x.yang,y.chen,e.eide,andj.regehr利用随机c程序生成工具csmith产生了一系列测试用例,这些测试用例发现了主流c语言编译器(例如gcc和clang/llvm)中的数百个新的错误。但是将这些测试用例加入gcc和clang/llvm自带的测试用例集后,新生成的测试用例集在语句覆盖度和分支覆盖度上几乎没有提高。这也说明了语句覆盖和分支覆盖对于程序行为的捕获和理解的粒度不够细致。另一方面,路径覆盖准则能够保障所有控制转换的组合都能被考虑,也被认为是粒度最细,要求最高的覆盖准则之一,但是,由于程序中分支组合、循环、迭代的存在导致的大量路径数的问题,要达到路径覆盖,需要大量的测试用例,这也使得路径覆盖在大部分程序中难于实际使用或度量。

综上所述,在实际运用中,针对航天器电源分系统的锂电池单体均衡控制功能,需要寻找合适的测试准则和测试效率评估方法,能够比语句覆盖和分支覆盖更好的理解程序的行为,并且相对于路径覆盖更易于度量和达成。



技术实现要素:

本申请提供一种评估单体均衡控制测试效率的方法,能够高效的评估单体均衡控制测试效率。

第一方面,该方法包括:根据待测单体的代码信息,确定所述待测单体的k个功能分支和所述待测单体的复杂度向量ω=(ω1,……,ωi,……,ωk),其中,ωi为所述k个功能分支中的第i个功能分支的复杂度计数,k为正整数;根据所述k个功能分支,统计待测单体的第一测试用例集的执行计数向量e1=(e11,……,e1i,……e1k),以及第二测试用例集的执行计数向量e2=(e21,……,e2i,……e2k),其中,e1i为所述第一测试用例集在所述k个功能分支中第i个分支的执行次数,e2i为所述第二测试用例集在所述k个功能分支中第i个功能分支的执行次数;根据所述第一测试用例集的执行计数向量e1和所述待测单体的复杂度向量ω确定所述第一测试用例集的测试密度向量

dc1=(dc11,……,dc1i,……dc1k),根据所述第二测试用例集的执行计数向量e2和所述待测单体的复杂度向量ω确定所述第二测试用例集的测试密度向量

dc2=(dc21,……,dc2i,……dc2k),其中,计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率。

结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述待测单体的代码信息,确定所述待测单体的k个功能分支和所述待测单体的复杂度向量ω=(ω1,……,ωi,……,ωk),包括:根据所述单体均衡控制模块的源代码,列出所述k个功能分支,所述k个分支中的每个分支对应该功能分支的功能定义;根据所述k个功能分支,利用统计谓词节点的方法计算第i个功能分支的复杂度计数ωi。

结合第一方面及其上述实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:确定所述复杂度向量ω与所述第一测试用例集的执行计数向量e1的内积[ω,e1];确定所述复杂度向量ω与所述第二测试用例集的执行计数向量e2的内积[ω,e2];当所述内积[ω,e1]大于或等于所述内积[ω,e2]时,所述第一测试用例集的测试效率不低于所述第二测试用例集的测试效率;当所述内积[ω,e1]小于所述内积[ω,e2]时,所述第一测试用例集的测试效率低于所述第二测试用例集测试效率。

结合第一方面及其上述实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:确定所述第一测试用例集的测试密度向量dc1的平均测试密度d1,所述第一测试用例集的平均测试密度d1为所述测试密度向量dc1的期望其中,表示dc1i的概率;确定所述第二测试用例集的测试密度向量dc2的平均测试密度d2,所述第二测试用例集的平均测试密度d2为所述测试密度向量dc2的期望其中,表示dc2i的概率;当所述平均测试密度d1大于或等于所述平均测试密度d2时,确定所述第一测试用例集的测试强度不小于第二测试用例集的强度;当所述平均测试密度d1小于所述平均测试密度d2时,确定所述第一测试用例集的测试强度小于第二测试用例集的强度。

结合第一方面及其上述实现方式,在第一方面的第四种可能的实现方式中,所述计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率,包括:确定二维随机变量(dc1,dc2)的联合概率函数,其中,当m等于n时,概率pmn值为1/k;当m不等于n时,概率pmn值为0,pm.表示所述测试密度向量dc1的边缘概率,p.n表示所述测试密度向量dc2的边缘概率;根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc1,的期望值e(dc12)、e2(dc1),所述测试密度向量dc1的标准差其中,根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc2,的期望值e(dc22)、e2(dc2),所述测试密度向量dc2的标准差其中,计算所述测试密度向量dc1和所述测试密度向量dc2的相关系数ρ(dc1,dc2);其中,

cov(dc1,dc2)=e{[dc1-e(dc1)][dc2-e(dc2)]}=e(dc1*dc2)-e(dc1)*e(dc2),其中,|ρ(dc1,dc2)|的值越小,所述待测单体的均衡控制测试效率评估值越高。

结合第一方面及其上述实现方式,在第一方面的第五种可能的实现方式中,所述计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率,包括:当所述相关系数ρ(dc1,dc2)的绝对值|ρ(dc1,dc2)|小于相关系数阈值l_ro时,终止测试;当|ρ(dc1,dc2)|大于或等于l_ro时,继续根据第三测试用例集的测试密度向量dc3和所述第四测试用例集的测试密度向量dc4的相关系数ρ(dc3,dc4)确定所述待测单体的均衡控制测试效率。

第二方面,提供一种评估单体均衡控制测试效率的装置,包括:确定单元,所述确定单元用于根据待测单体的代码信息,确定所述待测单体的k个功能分支和所述待测单体的复杂度向量ω=(ω1,……,ωi,……,ωk),其中,ωi为所述k个功能分支中的第i个功能分支的复杂度计数,k为正整数;所述确定单元还用于根据所述k个功能分支,统计待测单体的第一测试用例集的执行计数向量e1=(e11,……,e1i,……e1k),以及第二测试用例集的执行计数向量e2=(e21,……,e2i,……e2k),其中,e1i为所述第一测试用例集在所述k个功能分支中第i个分支的执行次数,e2i为所述第二测试用例集在所述k个功能分支中第i个功能分支的执行次数;所述确定单元还用于根据所述第一测试用例集的执行计数向量e1和所述待测单体的复杂度向量ω确定所述第一测试用例集的测试密度向量dc1=(dc11,……,dc1i,……dc1k),根据所述第二测试用例集的执行计数向量e2和所述待测单体的复杂度向量ω确定所述第二测试用例集的测试密度向量dc2=(dc21,……,dc2i,……dc2k),其中,处理单元,所述处理单元用于计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率。

结合第二方面,在第二方面的第一种可能的实现方式中,所述确定单元用于:根据所述单体均衡控制模块的源代码,列出所述k个功能分支,所述k个分支中的每个分支对应该功能分支的功能定义;根据所述k个功能分支,利用统计谓词节点的方法计算第i个功能分支的复杂度计数ωi。

结合第二方面及其上述实现方式,在第二方面的第二种可能的实现方式中,所述确定单元还用于:确定所述复杂度向量ω与所述第一测试用例集的执行计数向量e1的内积[ω,e1];确定所述复杂度向量ω与所述第二测试用例集的执行计数向量e2的内积[ω,e2];当所述内积[ω,e1]大于或等于所述内积[ω,e2]时,所述第一测试用例集的测试效率不低于所述第二测试用例集的测试效率;当所述内积[ω,e1]小于所述内积[ω,e2]时,所述第一测试用例集的测试效率低于所述第二测试用例集测试效率。

结合第二方面及其上述实现方式,在第二方面的第三种可能的实现方式中,所述确定单元用于:确定所述第一测试用例集的测试密度向量dc1的平均测试密度d1,所述第一测试用例集的平均测试密度d1为所述测试密度向量dc1的期望其中,表示dc1i的概率;确定所述第二测试用例集的测试密度向量dc2的平均测试密度d2,所述第二测试用例集的平均测试密度d2为所述测试密度向量dc2的期望其中,表示dc1i的概率;当所述平均测试密度d1大于或等于所述平均测试密度d2时,确定所述第一测试用例集的测试强度不小于第二测试用例集的强度;当所述平均测试密度d1小于所述平均测试密度d2时,确定所述第一测试用例集的测试强度小于第二测试用例集的强度。

结合第二方面及其上述实现方式,在第二方面的第四种可能的实现方式中,所述确定单元用于:确定二维随机变量(dc1,dc2)的联合概率函数,其中,当m等于n时,概率pmn值为1/k;当m不等于n时,概率pmn值为0,pm.表示所述测试密度向量dc1的边缘概率,p.n表示所述测试密度向量dc2的边缘概率;根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc1,的期望值e(dc12)、e2(dc1),所述测试密度向量dc1的标准差其中,根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc2,的期望值e(dc22)、e2(dc2),所述测试密度向量dc2的标准差其中,计算所述测试密度向量dc1和所述测试密度向量dc2的相关系数ρ(dc1,dc2);其中,

cov(dc1,dc2)=e{[dc1-e(dc1)][dc2-e(dc2)]}=e(dc1*dc2)-e(dc1)*e(dc2),其中,|ρ(dc1,dc2)|的值越小,所述待测单体的均衡控制测试效率评估值越高。

结合第二方面及其上述实现方式,在第二方面的第五种可能的实现方式中,所述处理单元用于:当所述相关系数ρ(dc1,dc2)的绝对值|ρ(dc1,dc2)|小于相关系数阈值l_ro时,终止测试;当|ρ(dc1,dc2)|大于或等于l_ro时,继续根据第三测试用例集的测试密度向量dc3和所述第四测试用例集的测试密度向量dc3的相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率。

第三方面,提供了一种装置,包括接收器、发送器、存储器和处理器,该存储器用于存储计算机程序,该接收器用于受处理器控制接收信号,该发送器用于受处理器控制发送信号,该处理器用于从存储器中调用并运行该计算机程序,使得该设备执行上述各方面所述的方法。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。

因此,本申请实施例提供了基于协方差的单体均衡控制测试效率评估方法,它能够比语句覆盖和分支覆盖更好的理解程序的行为,并且相对于路径覆盖更易于度量和达成,可以为单体均衡控制的可靠性分析和度量提供依据,测试效率更高。

附图说明

图1是本申请一个实施例的方法的示意性流程图。

图2示出了本申请一个实施例的控制流图及谓词节点的示意图。

图3示出了本申请一个实施例复合条件“逻辑与”的分解的示意性流程图。

图4示出了本申请一个实施例复合条件“逻辑或”的分解的示意性流程图。

图5示出了本申请一个实施例的装置的示意性结构框图。

图6示出了本申请另一实施例的装置的示意性结构图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

图1是本申请一个实施例的方法的示意性流程图。如图1所示,该方法100包括:

步骤110,根据待测单体的代码信息,确定所述待测单体的k个功能分支和所述待测单体的复杂度向量ω=(ω1,……,ωi,……,ωk),其中,ωi为所述k个功能分支中的第i个功能分支的复杂度计数,k为正整数。

步骤120,根据所述k个功能分支,统计待测单体的第一测试用例集的执行计数向量e1=(e11,……,e1i,……e1k),以及第二测试用例集的执行计数向量e2=(e21,……,e2i,……e2k),其中,e1i为所述第一测试用例集在所述k个功能分支中第i个分支的执行次数,e2i为所述第二测试用例集在所述k个功能分支中第i个分支的执行次数。

步骤130,根据所述第一测试用例集的执行计数向量e1和所述待测单体的复杂度向量ω确定所述第一测试用例集的测试密度向量dc1=(dc11,……,dc1i,……dc1k),根据所述第二测试用例集的执行计数向量e2和所述待测单体的复杂度向量ω确定所述第二测试用例集的测试密度向量dc2=(dc21,……,dc2i,……dc2k),其中,

步骤140,计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率。

在步骤110中,可选地,作为本申请一个实施例,所述根据所述待测单体的代码信息,确定所述待测单体的k个功能分支和所述待测单体的复杂度向量ω=(ω1,……,ωi,……,ωk),包括:

根据所述单体均衡控制模块的源代码,列出所述k个功能分支,所述k个分支中的每个分支对应该功能分支的功能定义;根据所述k个功能分支,利用统计谓词节点的方法计算第i个功能分支的复杂度计数ωi。

具体地,如果待测单体为锂电池,那么针对待测试的锂电池单体均衡控制模块的源代码,列出所有的分支,并说明所列出的分支的功能定义。

表1为本申请一个实施例的功能分支及对应复杂度计数的表,如表1所示,k=34,代表34个功能分支。

表1

对单体均衡控制模块所有的分支,利用统计谓词节点的方法计算出该分支的复杂度,得到复杂度向量ω;尤其是针对功能比较复杂的几个分支,需要认真计算该分支的复杂度。功能比较复杂的几个分支包括:光照期、均衡时间未超过指定值、对所有的单体进行均衡接通判断、单体i处于正常电压范围内且处于均衡断开状态。

例如,针对待测试的锂电池单体均衡控制模块的源代码,识别出所有的分支,包括if-else语句;for循环;while循环;switch语句等;列出所有的分支所在的行号;统计分支总个数,示例模块中分支总个数为34;并说明所列出的分支的功能定义;根据锂电池单体均衡控制的性质,识别出复杂度有可能比较高的几个分支,包括:“光照期”分支、“均衡时间未超过指定值,进行均衡接通判断”分支、“对所有的单体进行均衡接通判断”分支、“单体i处于正常电压范围内且处于均衡断开状态”分支等。

某分支的复杂度等于该分支所包含的控制流图中谓词节点的数量加1。谓词节点指包含单个判断条件的节点。图2示出了本申请一个实施例的控制流图及谓词节点的示意图,如图2所示,若图2中节点2、3、4、7中都为单个判断条件,则图2的谓词节点为4个,相应地,图2的复杂度为5。

进一步地,识别出待测试的单体均衡控制模块程序中有无复合条件;当判定条件为复合条件时,应将复合条件分解成单个条件,再构成控制流图,进行复杂度计算。复合条件包括逻辑与、逻辑或、多分支的switch-case语句等。复合条件的分解按照下列步骤进行:

1.按照基本路径测试方法,复合条件“逻辑与”应分解为两个谓词节点。举例来说,图3示出了本申请一个实施例复合条件“逻辑与”的分解的示意性流程图,a和b均为单个条件时,分支块if(a&&b)应该按照图3进行分解。

2.按照基本路径测试方法,复合条件“逻辑或”应分解为两个谓词节点。举例来说,图4示出了本申请一个实施例复合条件“逻辑或”的分解的示意性流程图,a和b均为单个条件时,分支块if(a||b)应该按照图4进行分解。

3.按照基本路径测试方法,复合条件switch-case语句,统计谓词节点的个数时,要求必须统计全部实际的谓词节点数,也即每个case语句都应该算为一个谓词节点。

4.所有分支的复杂度都计算完成后,即可得到锂电池单体均衡控制模块的复杂度向量ω。复杂度向量ω的维数由锂电池单体均衡控制模块的分支数决定。由于附录a1的单体均衡控制模块的分支数为34,复杂度向量ω为34维向量。计算得到表1示出的单体均衡控制模块的复杂度向量:

ω=(17,5,3,14,2,1,2,1,14,1,14,2,3,2,2,2,1,3,2,2,2,1,4,1,2,1,3,1,2,1,2,1,2,1)。

在步骤120中,举例来说,根据锂电池单体均衡控制模块的功能描述,设计测试用例集set1,也就是对应于步骤120中的第一测试用例集;测试用例集set1包含5个测试用例,5个测试用例的标识为set1tc1~set1tc5;同样地,根据锂电池单体均衡控制模块的功能描述,设计测试用例集set2,也就是对应于步骤120中的第二测试用例集;测试用例集set2包含5个测试用例,5个测试用例的标识为set2tc1~set2tc5。

进一步地,执行set1的用例set1tc1,统计set1tc1的“执行计数向量”e_set1tc1。e_set1tc1为34维向量,对应单体均衡控制模块的34个分支。e_set1tc1初始为0向量。set1tc1执行完毕,e_set1tc1为(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,2,16,1,0,16,1)。

进一步地,执行set1的用例set1tc2,统计set1tc2的“执行计数向量”e_set1tc2。e_set1tc2向量维数同e_set1tc1。e_set1tc2初始为0向量。set1tc2执行完毕,e_set1tc2为(1,0,1,0,16,1,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)。

进一步地,执行set1的用例set1tc3,统计set1tc3的“执行计数向量”e_set1tc3。e_set1tc3向量维数同e_set1tc1。e_set1tc3初始为0向量。set1tc3执行完毕,e_set1tc3为(1,0,0,1,0,0,0,0,1,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,16,1,0,0,0,0,0,0,0,0)。

进一步地,执行set1的用例set1tc4,统计set1tc4的“执行计数向量”e_set1tc4。e_set1tc4向量维数同e_set1tc1。e_set1tc4初始为0向量。set1tc4执行完毕,e_set1tc4为(1,0,0,1,0,0,0,0,16,1,1,15,1,0,0,1,1,0,0,1,0,1,1,0,16,1,0,0,0,0,0,0,0,0)。

进一步地,执行set1的用例set1tc5,统计set1tc5的“执行计数向量”e_set1tc5。e_set1tc5向量维数同e_set1tc1。e_set1tc5初始为0向量。set1tc5执行完毕,e_set1tc5为(1,0,0,1,0,0,0,0,16,1,1,15,0,1,0,0,1,1,0,0,1,1,1,0,16,1,0,0,0,0,0,0,0,0)。

进一步地,统计set1的“执行计数向量”e1;e1向量维数同e_set1tc1。e1=e_set1tc1+e_set1tc2+e_set1tc3+e_set1tc4+e_set1tc5。测试用例集set1中所有用例执行完毕后,e1为(4,1,1,3,16,1,16,1,33,3,3,30,2,1,0,2,3,1,0,2,1,3,3,0,48,3,16,1,2,16,1,0,16,1)。

同样地,对于第二测试用例集,执行set2的用例set2tc1,统计set2tc1的“执行计数向量”e_set2tc1。e_set2tc1为34维向量,对应单体均衡控制模块的34个分支。e_set2tc1初始为0向量。set2tc1执行完毕,e_set2tc1为(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,16,0,1,0,0)。

进一步地,执行set2的用例set2tc2,统计set2tc2的“执行计数向量”e_set2tc2。e_set2tc2向量维数同e_set2tc1。e_set2tc2初始为0向量。set2tc2执行完毕,e_set2tc2为(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,1,16,1,0,16,1)。

进一步地,执行set2的用例set2tc3,统计set2tc3的“执行计数向量”e_set2tc3。e_set2tc3向量维数同e_set2tc1。e_set2tc3初始为0向量。set2tc3执行完毕,e_set2tc3为(0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,16,16,1,0,16,1)。

进一步地,执行set2的用例set2tc4,统计set2tc4的“执行计数向量”e_set2tc4。e_set2tc4向量维数同e_set2tc1。e_set2tc4初始为0向量。set2tc4执行完毕,e_set2tc4为(1,0,0,1,0,0,0,0,8,1,7,1,1,0,6,1,7,0,0,7,0,7,1,6,16,1,0,0,0,0,0,0,0,0)。

进一步地,执行set2的用例set2tc5,统计set2tc5的“执行计数向量”e_set2tc5。e_set2tc5向量维数同e_set2tc1。e_set2tc5初始为0向量。set2tc5执行完毕,e_set2tc5为(1,0,0,1,0,0,0,0,16,1,7,9,1,4,2,1,7,1,2,4,1,7,1,6,16,1,0,0,0,0,0,0,0,0)。

进一步地,统计set2的“执行计数向量”e2;e2向量维数同e_set1tc1。e2=e_set2tc1+e_set2tc2+e_set2tc3+e_set2tc4+e_set2tc5。测试用例集set2中所有用例执行完毕后,e2为(2,3,0,2,0,0,0,0,24,2,14,10,2,4,8,2,14,1,2,11,1,14,2,12,32,2,48,3,17,48,2,1,32,2)。

具体地,对于步骤130,测试密度向量定义为对单体均衡控制模块中复杂度向量ω进行测试的强度的度量。测试密度向量的维数与复杂度向量ω一致。设dc1=(dci1d2dc13…dc134)是对应于复杂度向量ω的测试密度向量,则dc1i定义为:其中,ei为测试用例集的“执行计数向量”的第i个分量;ωi为复杂度向量ω的第i个分量。

根据上述方法,单体均衡控制测试密度向量dc1的第i个分量由此可以计算出对应于用例集set1的测试密度向量:

dc1=(0.235294,0.2,0.333333,0.214286,8,1,8,1,2.357143,3,0.214286,15,0.666667,0.5,0,1,3,0.333333,0,1,0.5,3,0.75,0,24,3,5.333333,1,1,16,0.5,0,8,1)。

同样地,,单体均衡控制测试密度向量dc2的第i个分量由此可以计算出对应于用例集set2的测试密度向量:

dc2=(0.117647059,0.6,0,0.142857143,0,0,0,0,1.714285714,2,1,5,0.666666667,2,4,1,14,0.333333333,1,5.5,0.5,14,0.5,12,16,2,16,3,8.5,48,1,1,16,2)。

可选地,作为本申请一个实施例,确定所述复杂度向量ω与所述第一测试用例集的执行计数向量e1的内积[ω,e1];确定所述复杂度向量ω与所述第二测试用例集的执行计数向量e2的内积[ω,e2];当所述内积[ω,e1]大于或等于所述内积[ω,e2]时,所述第一测试用例集的测试效率不低于所述第二测试用例集的测试效率;当所述内积[ω,e1]小于所述内积[ω,e2]时,所述第一测试用例集的测试效率低于所述第二测试用例集测试效率。

具体地,计算复杂度向量ω与“执行计数向量”e1的内积[ω,e1];本申请例中内积[ω,e1]的计算结果为993。可以作为单体均衡控制测试用例集1的测试效率评估的依据之一;同样地,计算复杂度向量ω与“执行计数向量”e2的内积[ω,e2];本申请实施例中内积[ω,e2]的计算结果为1110,同样可以作为单体均衡控制测试用例集2的测试效率评估的依据之一;最后,比较内积[ω,e1]和内积[ω,e2]的大小。本例中[ω,e1]<[ω,e2],说明测试用例集1的测试效率低于测试用例集2的测试效率。

可选地,作为申请一个实施例,所述方法还包括:确定所述第一测试用例集的测试密度向量dc1的平均测试密度d1,所述第一测试用例集的平均测试密度d1为所述测试密度向量dc1的期望其中,表示dc1i的概率;确定所述第二测试用例集的测试密度向量dc2的平均测试密度d2,所述第二测试用例集的平均测试密度d2为所述测试密度向量dc2的期望其中,表示dc2i的概率;当所述平均测试密度d1大于或等于所述平均测试密度d2时,确定所述第一测试用例集的测试强度不小于第二测试用例集的强度;当所述平均测试密度d1小于所述平均测试密度d2时,确定所述第一测试用例集的测试强度小于第二测试用例集的强度。

具体地,把测试密度向量dc*(本例中,*代表1或2)看作一个离散型随机变量,根据实际应用,给随机变量的各个值赋予概率,即可计算出此随机变量的期望。

根据单体均衡控制模块的性质,认为dc*(*代表1或2)服从均匀分布。即是dc*(*代表1或2)中各个值的概率为1/k。其中,k为dc*向量的维数。本例中,k为34。dc*(*代表1或2)的概率函数见表2,表2示出了本申请一个实施例的概率函数。

表2

进一步地,根据平均测试密度定义为离散型随机变量dc*的期望。按照公式计算dc1的期望。计算结果即为平均测试密度d1。本例中,dc1向量的平均测试密度d1=3.239。

同理,根据表2,计算dc2的平均测试密度d2。本例中,dc2向量的平均测试密度d2=5.282。比较d1和d2的大小。本例中,d1<d2,说明测试用例集2的测试强度大于测试用例集1。

可选地,作为本申请一个实施例,所述计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率,包括:确定二维随机变量(dc1,dc2)的联合概率函数,其中,当m等于n时,概率pmn值为1/k;当m不等于n时,概率pmn值为0,pm.表示所述测试密度向量dc1的边缘概率,p.n表示所述测试密度向量dc2的边缘概率;根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc1,的期望值e(dc12)、e2(dc1),所述测试密度向量dc1的标准差其中,根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc2,的期望值e(dc22)、e2(dc2),所述测试密度向量dc2的标准差其中,计算所述测试密度向量dc1和所述测试密度向量dc2的相关系数ρ(dc1,dc2);其中,cov(dc1,dc2)=e{[dc1-e(dc1)][dc2-e(dc2)]}=e(dc1*dc2)-e(dc1)*e(dc2),其中,|ρ(dc1,dc2)|的值越小,所述待测单体的均衡控制测试效率评估值越高。

具体地,按照概率统计理论中的联合概率函数的定义,结合单体均衡控制模块的性质,制定二维随机向量(dc1,dc2)的联合概率函数。当m等于n时,概率pmn值为1/k,其中,k为dc1向量的分量个数,本例中k为34。当m不等于n时,概率pmn值为0。表3示出了随机向量(dc1,dc2)为联合概率函数。表3中pm.及p.n为边缘概率。

表3

进一步地,按照表3中的dc1向量的边缘概率pm.统计e(dc1);按照表3中的dc2向量的边缘概率p.n统计e(dc2);按照表3中的随机向量(dc1,dc2)的联合概率pmn统计e(dc1*dc2);运用概率统计论,按照公式cov(dc1,dc2)=e{[dc1-e(dc1)][dc2-e(dc2)]}=e(dc1*dc2)-e(dc1)*e(dc2),计算测试密度向量dc1和dc2之间的协方差cov(dc1,dc2)。

因此,通过计算,得到本申请实施例中cov(dc1,dc2)的值为28.8747905。协方差cov(dc1,dc2)在一定程度上说明了单体均衡控制模块的两个测试密度向量dc1与dc2之间的相互联系,但是它有两个缺点:(1)它的大小依赖于计量单位;(2)它的数值不仅与dc1与dc2本身的取值有关,而且还与各随机变量关于它们的数学期望的偏差有关。如果随机变量dc1或dc2中的任何一个与其数学期望的偏差很小,那么无论dc1、dc2之间联系如何密切,它们的协方差也会很小。为了克服这两个缺点,需要进行dc1和dc2的相关系数ρ(dc1,dc2)的计算。

因此,进一步地,针对单体均衡控制模块的测试密度向量dc1,计算的期望值e(dc12),采用表3中的dc1向量的边缘概率pm.进行计算;运用步骤k1中的e(dc1)的计算结果,计算e2(dc1);运用概率统计论,统计dc1的标准差计算公式为通过计算,本例中的值为

同理,针对单体均衡控制模块的测试密度向量dc2,计算的期望值e(dc22),采用表3中的dc2向量的边缘概率p.n进行计算;根据上述得到的e(dc2)的计算结果,计算e2(dc2);运用概率统计论,统计dc2的标准差计算公式为通过计算,本例中的值为

最后,运用概率统计论,计算测试密度向量dc1和dc2的相关系数ρ(dc1,dc2);计算公式为通过计算,得到ρ(dc1,dc2)的值为0.5913389。

可选地,作为本申请一个实施例,所述计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率,包括:当所述相关系数ρ(dc1,dc2)的绝对值|ρ(dc1,dc2)|小于相关系数阈值l_ro时,终止测试;当|ρ(dc1,dc2)|大于或等于l_ro时,继续根据第三测试用例集的测试密度向量dc3和所述第四测试用例集的测试密度向量dc3的相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率。

也就是说,当|ρ(dc1,dc2)|大于或等于l_ro时,需要继续使用两个新的测试用例集之间的相关系数,判定是否满足上述待测单体的均衡控制测试效率。

具体地,根据概率统计论中相关系数的性质,|ρ(dc1,dc2)|≤1。单体均衡控制测试密度向量dc1和dc2之间的线性联系的程度随着|ρ(dc1,dc2)|的减小而减弱。当|ρ(dc1,dc2)|=0时,称dc1与dc2不相关。|ρ(dc1,dc2)|的值越小,单体均衡控制测试效率的评估值越高。|ρ(dc1,dc2)|的值越接近1,说明单体均衡控制测试用例集set1和set2在测试结果上基本呈线性相关关系,这时需要增加异常用例;

由用户提供固定的相关系数阈值l_ro,当步骤n中计算出的相关系数ρ(dc1,dc2)的绝对值|ρ(dc1,dc2)|小于l_ro时,认为在测试设计中,异常用例的设计比较充分,可以终止测试;当|ρ(dc1,dc2)|大于等于l_ro时,认为异常用例的设计不足,需要设计两个新的测试用例集,对锂电池单体均衡控制模块进行测试;测试用例执行完成后,按照上述过程进行迭代。迭代过程终止准则为|ρ(dc1,dc2)|小于相关系数阈值l_ro。新的测试用例集的设计重点针对此类分支进行:测试密度向量dc1和dc2的同一分量都小于1.0,则需要加强此分支的测试。另外,新的测试用例集的设计可以参考已有的内积较大的测试用例集。

如何得到第一测试用例集和第二测试用例集,根据单体均衡控制的功能要求,制定测试目的;针对单个测试目的,按照步骤a及步骤b的先后顺序生成测试用例;则满足第j个测试目的的测试用例总数为aj*bj。满足所有的测试目的的测试用例总数由于测试输入的放电电流值、单体电压值、单体号组合、均衡时间值等可以为多种不同的值,所以测试用例总数total的值很大。从total个测试用例中任意选择5个,即可得到第一测试用例集;从total个测试用例中任意选择5个,即可得到第二测试用例集。两个测试用例集可以完全相同,可以部分相同,也可以完全不同。如果两个测试用例集完全相同,则计算出来的相关系数ρ(dc1,dc2)必定等于1。所以在生成第一测试用例集、第二测试用例集时,应考虑测试目的的多样性。

测试用例的生成步骤表

因此,本申请实施例提供了基于协方差的单体均衡控制测试效率评估方法,它能够比语句覆盖和分支覆盖更好的理解程序的行为,并且相对于路径覆盖更易于度量和达成,可以为单体均衡控制的可靠性分析和度量提供依据,测试效率更高。

应理解,本发明基于协方差的单体均衡控制测试效率评估方法适用的电源下位机软件开发/调试/测试环境需要有下面条件:

由电源下位机软件对电源分系统的锂离子蓄电池单体实施均衡控制;电源下位机软件作为嵌入式软件,烧录到电源控制器cpu板的eeprom中;具备matlab计算机辅助分析设计工具,对测试结果进行自动统计和分析;具备仿真器,该仿真器除了提供完全硬件仿真以外,还必须提供一个软件模拟器,该软件模拟器能代替仿真器进行无目标机的虚拟调试,还应提供windows环境下的全中文集成开发平台,可以提供以下操作:编辑-汇编/编译-连接/定位-调试-装入目标系统;全屏幕编辑,就地修改,所见即所得;跨文件整块剪贴技术;彩色识别正文等;使用工程技术:一次性将工程的全部源文件、头文件、用户库文件送入工程管理器,统一管理“汇编/编译”和“连接/定位”,无须人工干预;使用make技术:自动辨用汇编器/编译器;每次调试循环仅做增量“汇编/编译”和“连接/定位”;错误和警告自动定位,明确的错误自动修正;多种运行模式,全数据类型的查看和修改。

鉴于上述条件一般电源下位机软件开发/调试/测试环境都能满足,故本申请前述基于协方差的单体均衡控制测试效率评估方法可以应用到大多数的电源下位机软件进行单体均衡控制测试效率评估。

图5示出了本申请一个实施例的装置的示意性结构框图。如图5所示,该装置包括:确定单元510,所述确定单元510用于根据待测单体的代码信息,确定所述待测单体的k个功能分支和所述待测单体的复杂度向量ω=(ω1,……,ωi,……,ωk),其中,ωi为所述k个功能分支中的第i个功能分支的复杂度计数,k为正整数;所述确定单元510还用于根据所述k个功能分支,统计待测单体的第一测试用例集的执行计数向量e1=(e11,……,e1i,……e1k),以及第二测试用例集的执行计数向量e2=(e21,……,e2i,……e2k),其中,e1i为所述第一测试用例集在所述k个功能分支中第i个分支的执行次数,e2i为所述第二测试用例集在所述k个功能分支中第i个功能分支的执行次数;所述确定单元510还用于根据所述第一测试用例集的执行计数向量e1和所述待测单体的复杂度向量ω确定所述第一测试用例集的测试密度向量dc1=(dc11,……,dc1i,……dc1k),根据所述第二测试用例集的执行计数向量e2和所述待测单体的复杂度向量ω确定所述第二测试用例集的测试密度向量dc2=(dc21,……,dc2i,……dc2k),其中,处理单元520,所述处理单元520用于计算所述第一测试用例集的测试密度向量dc1和所述第二测试用例集的测试密度向量dc2的相关系数ρ(dc1,dc2),并根据所述相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率。

可选地,作为本申请一个实施例,所述确定单元用于:根据所述单体均衡控制模块的源代码,列出所述k个功能分支,所述k个分支中的每个分支对应该功能分支的功能定义;根据所述k个功能分支,利用统计谓词节点的方法计算第i个功能分支的复杂度计数ωi。

可选地,作为本申请一个实施例,所述确定单元还用于:确定所述复杂度向量ω与所述第一测试用例集的执行计数向量e1的内积[ω,e1];确定所述复杂度向量ω与所述第二测试用例集的执行计数向量e2的内积[ω,e2];当所述内积[ω,e1]大于或等于所述内积[ω,e2]时,所述第一测试用例集的测试效率不低于所述第二测试用例集的测试效率;当所述内积[ω,e1]小于所述内积[ω,e2]时,所述第一测试用例集的测试效率低于所述第二测试用例集测试效率。

可选地,作为本申请一个实施例,所述确定单元用于:确定所述第一测试用例集的测试密度向量dc1的平均测试密度d1,所述第一测试用例集的平均测试密度d1为所述测试密度向量dc1的期望其中,表示dc1i的概率;确定所述第二测试用例集的测试密度向量dc2的平均测试密度d2,所述第二测试用例集的平均测试密度d2为所述测试密度向量dc2的期望其中,表示dc2i的概率;当所述平均测试密度d1大于或等于所述平均测试密度d2时,确定所述第一测试用例集的测试强度不小于第二测试用例集的强度;当所述平均测试密度d1小于所述平均测试密度d2时,确定所述第一测试用例集的测试强度小于第二测试用例集的强度。

可选地,作为本申请一个实施例,所述确定单元用于:确定二维随机变量(dc1,dc2)的联合概率函数,其中,当m等于n时,概率pmn值为1/k;当m不等于n时,概率pmn值为0,pm.表示所述测试密度向量dc1的边缘概率,p.n表示所述测试密度向量dc2的边缘概率;根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc1,的期望值e(dc12)、e2(dc1),所述测试密度向量dc1的标准差其中,根据所述二维随机变量(dc1,dc2)的联合概率函数,确定所述测试密度向量dc2,的期望值e(dc22)、e2(dc2),所述测试密度向量dc2的标准差其中,计算所述测试密度向量dc1和所述测试密度向量dc2的相关系数ρ(dc1,dc2);其中,cov(dc1,dc2)=e{[dc1-e(dc1)][dc2-e(dc2)]}=e(dc1*dc2)-e(dc1)*e(dc2),其中,|ρ(dc1,dc2)|的值越小,所述待测单体的均衡控制测试效率评估值越高。

可选地,作为本申请一个实施例,所述处理单元用于:当所述相关系数ρ(dc1,dc2)的绝对值|ρ(dc1,dc2)|小于相关系数阈值l_ro时,终止测试;当|ρ(dc1,dc2)|大于或等于l_ro时,继续根据第三测试用例集的测试密度向量dc3和所述第四测试用例集的测试密度向量dc3的相关系数ρ(dc1,dc2)确定所述待测单体的均衡控制测试效率。

图6示出了本申请另一装置的示意性结构图,该装置600能够执行本申请实施例提供的评估单体均衡控制测试效率的方法。其中,该装置600包括:处理器601、接收器602、发送器603、以及存储器604。其中,该处理器601可以与接收器602和发送器603通信连接。该存储器604可以用于存储该装置600的程序代码和数据。因此,该存储器604可以是处理器601内部的存储单元,也可以是与处理器601独立的外部存储单元,还可以是包括处理器601内部的存储单元和与处理器601独立的外部存储单元的部件。

可选的,装置600还可以包括总线605。其中,接收器602、发送器603、以及存储器604可以通过总线605与处理器601连接;总线605可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。所述总线605可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

处理器601例如可以是中央处理器(centralprocessingunit,cpu),通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。

接收器602和发送器603可以是包括上述天线和发射机链和接收机链的电路,二者可以是独立的电路,也可以是同一个电路。

应理解,图5或图6示出的实施例可以实现上述实施例的一个或多个有益效果,为了简洁起见,在此不再赘述

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者第二设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1