沈鹏,李利,胡晓燕,金媛媛
(中航工业洪都,江西南昌,330024)
基于国内某技术标准总线数据的通用解析方法研究
沈鹏,李利,胡晓燕,金媛媛
(中航工业洪都,江西南昌,330024)
国内某技术标准数据总线在我国航空航天、武器平台等方面的应用十分广泛,该标准对总线数据格式要求严格。在型号软件测试中,由于接口控制数据数量非常多,若采用普通的数据解析方法将带来很大的工作量,因此需要一种高效的数据解析方法以提高测试效率。本文针对该标准总线数据的特点,结合某型号接口控制数据文件的若干数据类型,研究了基于该标准总线数据的测试通用解析方法。
国内某技术标准;总线数据;数据解析;软件测试
航空电子设备软件关系着飞机的飞行安全,由此对航空电子软件的测试工作提出了非常高的要求。国内某技术标准数据总线在我国航空电子设备的应用越来越广泛,该标准对总线数据格式要求严格。在国内进行航电总线测试时,会针对该项目进行专用的测试工具开发,用来进行总线数据分析测试工作,在分析过程中,对于数据的解析是一个重点。但由于一般测试数据解析工具是针对固定的型号软件进行开发的,如果设备型号的变更导致软件相关数据项的变更,这种测试数据解析工具可能就无法满足要求,因此需要一种通用的总线数据测试解析方法来进行测试数据的解析。一方面可以在处理大量的数据项解析时,节约测试工作量;另一方面,当型号软件发生变更时,只需要进行很小的数据项配置工作,即可继续进行数据测试解析,大大节约了测试的时间和成本。
在型号软件测试中,对于接口控制数据文件中总线数据的测试是十分重要的,但由于数据项数量多,这就需要工具进行总线数据的测试解析。基于国内某技术标准总线的数据在标准中有着严格的要求,针对该标准总线数据的特点,结合某型号接口控制数据文件的若干数据类型,研究基于国内某技术标准总线数据的测试通用解析方法,以提高型号软件的测试效率。
国内某技术标准总线全称是数字式时分制指令/响应型多路传输数据总线,总线上传输的数字数据采用标准中定义的消息和字的格式。该标准中规定,消息是包括一个指令字、一个状态字和若干数据字及状态响应间隔在内的传输序列[1]。字是一个信息序列,包括指令字、状态字和数据字三种类型的字[1]。每个字的字长为20位,由16位有效位加同步头和奇偶校验位组成。
该标准总线数据的一个重要特点是位优先权。也就是说,在总线上传输的数据字,总是每个字的最高有效位在先,按数值递减的次序跟着较低有效位[1]。如果在总线上发送的信息,其精度或分辨率超过16位,也应先发送最高有效位。超过16位的再按数据递减的次序组成第二个字发送,允许将多个参数信息的位合并成一个数据字。
在型号软件测试中,通过总线数据采集模块采集到国内某技术标准总线数据,测试解析工具获取采集到的总线数据,在工具进行初始化时,能从数据库中取得相应的数据项配置信息,然后根据数据项的配置信息对此总线数据的数据项进行解析,并能通过选择已配置的数据项信息,自动根据配置信息调用相应的算法进行解析,得到最终的目标数据。由于在目前实际的测试工作中,常用的测试分析工具,如BusTools,在进行数据字的解析时,会自动处理同步头和奇偶校验位,并在接口控制数据文件中仅对有效数据位进行定义。因此,对于20位的数据字,本文只对其中16位的有效数据位进行分析。测试解析工作的工作模式如图1所示。
通过对某型软件接口控制数据文件中所有数据进行分析整理,得出主要有五种数据类型,以下是对此五种数据类型数据特点的分析。
3.1需进行十进制转换的普通数据
图1 测试解析工作模式
需进行十进制转换的普通数据主要是在单个数据字内,指定了该数据二进制表示形式的起始位和结束位,若为有符号数,则需要指定符号位。然后,根据起始位、结束位和符号位信息截取目标数据段,并进行二进制向十进制的转换,将转换的十进制结果与单位量进行换算,即可得到这种类型数据的目标值,数据处理过程如图2所示。
图2 需进行十进制转换的普通数据类型
在对这种类型的数据处理时,需要注意区分有符号数据和无符号数据。由于二进制数据在计算机中存储的是数据的补码,正数的补码就是其原码,而负数的补码则是其原码按位取反再加1。
3.2 枚举型数据
枚举型数据包括十进制匹配和二进制匹配两种类型。枚举型数据主要是在单个数据字内,指定了该数据二进制表示形式的起始位和结束位,根据起始位和结束位信息截取目标数据段,枚举型数据的目标值采用键-值对的形式进行匹配,数据处理过程如图3所示。
若为十进制匹配数据,则将目标数据段进行二进制向十进制的转换,并进行键-值对的匹配,找到目标数据。
若为二进制匹配数据,则将目标数据段直接进行键-值对的匹配,找到目标数据。
图3 枚举型数据类型
3.3 需进行十进制转换的复合型数据
图4 需进行十进制转换的复合型数据类型
需进行十进制转换的复合型数据主要是通过将多个需要进行十进制转换的普通数据类型进行拼接得到目标结果,数据处理过程如图4所示。
常见的该类型数据如日期,需要得到年月日时分秒的数据信息,通过将若干数据字中的若干目标数据段进行截取,并采用第一种数据类型的转换方式进行十进制转换,最后将所有的转换结果进行拼接得到最终的目标数据。
3.4 需进行十进制转换的三十二位型数据
需进行十进制转换的三十二位型数据主要是指在总线上发送的信息超过16位,而超过16位的按数据递减的次序组成第二个字发送。该目标数据段分隔在两个数据字中,需要分别将两个数据字中的有效数据段进行拼接,再进行二进制向十进制的转换,最终得到目标数据,数据处理过程如图5所示。
3.5 常量型数据
图5 需进行十进制转换的三十二位数据
常量型数据是在单个数据字中,指定了该数据的起始位和结束位,但目标数据段对应的目标值是一个常量,无需进行转换。
4.1 普通数据算法设计
假设数据块的十六进制数据字符串为S,目标数据在数据块中的字号为m,通过目标数据字在该数据块中的字号可以得到目标数据字的十六进制字符串,目标数据字的十六进制数据为SHex,通过字符串截取方法Substring获取目标数据字的十六进制数据字符串SHex,则:
目标数据字二进制表示形式为SBinary,经过方法HexToBinary(SHex)将十六进制字符串SHex转换成二进制表示形式SBinary。得到目标数据字的二进制字符串后,根据数据项的起始位、结束位信息,获得目标数据段的二进制字符串Starget。
若目标数据符号位为正,假设Starget的位数为n,单位量的值为u0。遍历目标数据段的二进制字符串,则目标数据计算公式f(n)为:
若目标数据符号位为负,先对目标数据段二进制字符串末位减1,再对所有数据位取反,得到负数的原码二进制字符串Snew,假设Snew的位数为n,单位量的值为u0。遍历目标数据段的二进制字符串,则目标数据计算公式f(n)为:4.2枚举型数据算法设计
枚举型数据的算法与普通数据算法是一致的,通过数据项所在的字号、起始位、结束位、符号位等信息计算得到目标数据段所对应的数据后,需要根据枚举配置项的键值对数据,匹配得到目标数据。
4.3 复合型数据算法设计
复合型数据是由多个普通数据组合而成,假设复合型数据是由n个普通数据构成,第i个普通数据的位数为length(i),则复合型数据的目标数据计算公式f(n)为:
4.4 三十二位型数据算法设计
三十二位型数据是由两个数据字组成,假设数据块的十六进制数据字符串为S,第一个数据字字号为m,第二个数据字字号为n,且m<n,第一个数据字的起始位为s1,结束位为e1;第二个数据字的起始位为s2,结束位为e2。第一个数据字的有效二进制数据段为S1,第二个数据字的有效二进制数据段为S2,则:
目标二进制数据段Starget则为S1和S2的连接字符串,目标数据的计算公式与普通数据的计算公式一致。
4.5 常量型数据算法设计
常量型数据的目标数据值是一个常量,假设常量为C0,则目标数据计算公式f(n)为:
本文根据国内某技术标准总线数据的特点,结合某型号接口控制数据文件中的接口数据信息,提取通用的数据类型并进行了分析。再根据各数据类型的特点进行算法设计,得到通用的几种测试数据类型的解析公式。在测试工作中,只需要完善各个数据项相应的配置信息,在获取总线数据中的数据块后,可以按照相应的配置信息进行数据解析,并自动得到解析结果。此解析方法在用于该标准总线数据的解析时可以较小地受型号变更的影响,只需对配置信息进行修改,即可进行总线数据的解析工作。
[1]数字式时分制指令/响应型多路传输数据总线.GJB289A-97.1998,5.
[2]布朗,等.软件测试.原理与实践(英文版).北京:机械工业出版社,2012.
[3]刘振宇,王恒.基于形式化方法的测试驱动开发研究.计算机工程与设计,2008.
[4]程烨,高建华.与设计模式相结合的测试驱动开发方法.计算机工程与设计,2006.
>>>作者简介
沈鹏,男,1988年出生,2013年毕业于北京航空航天大学,工程师,现从事软件工程专业工作。
Research on General Analytical Method of Bus Data Based on Domestic Technical Standard
Shen Peng,Li Li,Hu Xiaoyan,Jin Yuanyuan
(AVIC-HONGDU,Nanchang,Jiangxi,330024)
A domestic technical standard for bus data is widely applied in Chinese aerospace,weapon platform,etc. The standard strictly limits the format of bus data.Since the interface control data is enormous and normal data analytical method will cause tremendous workload during the test of software,a effective data analytical method to increase test efficiency is needed.Base on the characteristics of standard bus data and certain data types of interface control document,a research on the general analytical method is performed based on the standard bus data.
A domestic technical standard;Bus data;Data analysis;Software test
2016-10-19)