APP下载

基于K—V模型集成测试工具的设计与实现

2017-06-05熊梦刘小同阳小华刘杰

电脑知识与技术 2017年10期

熊梦 刘小同 阳小华 刘杰

摘要:随着核电国产化率的不断提高,核电软件的开发也在不断的进行。而软件测试作为软件生命周期中一个必要的环节,对于保证软件的质量与可靠性有着重要的意义。在核电软件中,部分软件系统需要使用包含大量参数名与参数值的文件作为输入卡进行测试。在针对该类软件的集成测试中,主要使用非渐增式测试方法,通过对输入卡进行参数值替换来生成相应的测试用例,从而进行测试。因此存在人工测试时工作量大、效率低、准确性低等问题。对于此类的集成测试工作,由于输入卡中参数多、参数可选值多、系统输出文件对比困难等原因,笔者提出了基于K-V(Key-Value)模型的集成测试工具,以解决测试过程人工测试所面临的问题。

关键词:软件测试自动化;集成测试工具;K-V模型;非渐增式测试;替换输入卡值

中图分类号:TP311文献标识码:A

文章编号:1009-3044(2017)10-0230-03

1.背景

核电国产化正在持续进行,核电软件也随之在一步步的开发。而软件测试作为软件开发的重要有机组成部分,在软件开发的系统工程中占据着相当大的比重。集成测试作为软件测试的一个重要环节,其充分性、高效性在测试过程中尤为重要。如何高效地完成集成测试,并且在确保其充分性基础下减少测试成本,提高测试效率,成为集成测试的一个重要研究方向。

对于集成测试,通常有非渐增式组装测试和渐增式组装测试两种不同的组装方式。非渐增式组装测试是指一次性将所有模块按照设计要求组装成完整的系统,然后将庞大的系统作为一个整体来进行测试。渐增式组装测试是指先将某个模块作为系统的基础开始测试,之后每次将测试过的单个模块组装到系统中进行测试,直到整个系统组装完成。对于核电软件来说,在单元测试完成的情况下,所有计算代码集成的系统可能具有许多未知的缺陷。所以使用非渐增式组装测试方法,根据系统需求经过分析生成测试用例,使用黑盒测试对整个软件系统进行集成测试,发现集成后的系统中不可预知的缺陷。从而修复软件系统缺陷,完善整个系统。

集成测试是在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试,从而确保各单元在组合之后能够按照要求正常的协作运行。而测试用例的设计原理作为软件测试必须遵守的准则,是软件测试质量最根本的保障。好的测试用例应该具有如下特点:有效性、可复用性、易组织性、可评估性和可管理性。因此,有一个好的用例设计原理,能够让测试人员设计出更加优秀的测试用例,从而降低测试成本,并得到准确的测试结果。

核电类计算软件,数值计算过程复杂,中间过程不透明,运算结果的正确性判定使用一个分析程序进行分析判断。通过输出结果中相应参数的值与分析程序得到的值的对比得到相关信息,所以此类软件的集成测试方法主要是非渐增式组装测试,属于黑盒测试。黑盒测试将软件作为一个黑盒子,不考虑内部程序结构,只检查程序功能是否按照需求规格说明书与软件设计文档上的规定正常使用,程序是否能接受输入并产生正确的输出。因此,黑盒测试只着眼于程序外部的结构,主要针对软件的功能进行测试。

基于K-V模型测试的集成测试的工作内容主要是在提供的base算例基础上,根据需求中输入参数生成测试用例。Base算例即为软件运行所需要的输入数据构所成的输入卡,base算例中的数据来自于核电软件所运行的环境中具有的各种环境数据以及其他相关参数。本文主要针对基于K-V模型的集成测试工具如何解决基于K-V模型的核电软件在软件集成测试-过程中出现的耗时高、工作量大、容易出现误差等问题,提出合理的工具设计与实现方案,并在此研究方案的可靠性、高效性与实用性。

2.基于K-V模型的集成测试

对于核电数值类计算软件系统,其运算是基于一组输入卡参数。大量的输入卡以参数名(key)与参数值(value)的组合作为基础输入元素输入到软件系统中。依据Key与Value的对应关系构建测试用例生成模型,生成测试用例。在其集成测试过程中将输入参数以K-V模型的形式存入输入卡中,作为软件的输入。在K-V模型中,K指的是Key,代表输入卡中的参数名;v指的是Value,代表输入卡中的参数值。Key与Value为——对应的关系。设计测试用例过程中,我们需要考虑的Key,来自可变参数对应表,可变参数表中包含了需要测试的所有参数的参数名。参数值可能是单个数值,也可能是一个数组。在测试用例设计过程中,如果参数值为单个数值,则将生成的测试用例值直接替换base输入卡中的值,生成测试用例输入卡。如果参数值为数值数组,那么要将测试用例值逐个替换数组中的值,对应一组测试用例,生成一组测试用例输入卡。

针对K-V模型,我们对其进行总结分类,划分出四个类别:1)Key为边界值类时,我们对其Value取上下边界值以及上下边界外的值作为测试用例。2)Key为枚举类时,对其Value取值域集合中的每个值作为测试用例。3)Key为数值类时,对其Value取默认值的上下一个数量级的值作为测试用例。4)Key为组合数据类时,对其Value值进行便利替换,将所要取得值便利替换默认值中的每一个数据,得到多个测试用例。

根据K-V模型得到测试用例后,根据每个测试用例,改变且仅改变Base算例中测试用例对应的变量,未改变变量值与Base算例中的变量值保持一致,以此生成测试用例输入卡,用于后续测试工作

3.基于K-V模型的集成测试工具結构设计

基于K-V模型的集成测试工具,主要用于生成测试用例,执行测试用例,比较输出文件并提取其中的差异项,生成误差报表以提高人工走查的效率。该工具在结构设计上,采用三层结构,分为输入层、处理层、数据层。1)10层包括整个工具对外的输入输出接口,包括BASE算例、参数约束、调用驱动、BUG清单等模块。2)处理层连接10层与数据层,根据10层的输入输出以及调用命令,进行相应的操作,包括用例生成、驱动程序、差异分析等模块。3)数据层包括对整个工具的数据存取,包含测试用例、待测程序、分析程序以及输出文件等模块。

根据各层各模块间的调用关系,整个工具主要分为三个功能块:测试用例生成;调用驱动程序;分析输出文件。

1)测试用例生成

测试用例生成模块根据Base算例和参数约束表,生成测试用例与测试用例输入文件,主要包括CaseVariableToDict类、GenenrateCases类和CopyTestCaseInput类。CaseVariableToDict类对Base算例、参数约束表进行解析,生成相应的数据字典;GeneragCases依据测试用例生成规则将Base算例和参数约束表的数据字典生成测试用例字典;CopyTestCaseInput类将测试用例字典中的数据逐个替换Base算例输入卡,生成测试用例输入卡。

2)调用驱动程序

调用驱动程序模块,主要为CallDriver类,通过调用驱动程序驱动待测程序与分析程序运行测试用例,生成相应的输出文件。

3)分析输出文件

分析输出文件模块,主要为AnalyseOutputFiles类,对待测程序与分析程序所生成的输出文件进行对比并进行误差分析后,得最终差异信息,生成BUG清单。

4.基于K-V模型的集成测试工具运行实例

根据初步的工具设计与实现,我们取某软件部分内容作为待测软件用于对工具进行初步验证,并讲述具体文件格式(验证具体流程如图5)。

该待测软件用于实时监测某种仪器的状态,包含四个输入参数,分别为:状态state、温度temp、速度speed、加速度accel。状态表示当前仪器的状态,-1为异常,0为未启动,1为正常启动;温度表示仪器所处环境温度;速度表示仪器当前速度;加速度表示仪器水平四个方向的受力情况。

表2中,“变量名”表示待测软件的输入参数名,“分析程序变量名”表示分析程序中所對应的输入参数的参数名,类型为参数值的类型,含义为参数的具体含义,默认值为默认状态下参数的取值,值域为参数的取值范围。

3)根据base算例以及参数约束表,可以生成测试用例设计表如图7上。

其中,“name=xxx”表示测试用例编号,name为测试用例编号名,用于与参数名做区分,可取任意非参数名的单词作为编号名,默认为name。用例编号下对应为测试用例所取参数的取值。

4)根据测试用例设计表,逐个将base算例中的相应参数替换,即可生成对应的测试用力输入文件,用于对待测程序进行测试。其中部分测试用例输入文件图7下。

根据上述过程生成测试用例后,调用驱动程序执行测试用例得到输出文件,对待测程序与分析程序的输出文件进行差异分析,得到差异报表,生成BUG清单,完成集成测试的初步任务。

5.结束语

针对基于K-V模型的核电软件的集成测试进行了讨论,目的是研究其测试过程由测试工具来自动化完成的可行性,阐述了工具的设计与实现等相关内容。

在工具的设计过程中,测试用例设计原理作为重点内容,使用了黑盒测试的有关测试用例设计原理,有效地提高了测试用例可靠性与充分性。在实际应用试验中,该工具解决了人工测试过程中容易出现的用例设计不完整、结果对比不准确等问题,有效地降低了测试周期,提高了测试效率。但是仍存在不足的地方,输入卡解析模块只能适配固定格式的输入卡,遇到格式略有改变的输入卡需测试人员修改解析模块来适配新的格式,有待后续进一步研究改进。