发明内容
针对现有技术存在的不足,本发明提出一种基于总线注入的测试系统、方法及计算机设备,
以解决现有技术中存在的故障注入异常情况构造不全或是实现复杂度高的技术问题。
一种基于总线注入的测试系统,包括,测试系统用户交互软件,包括用户界面操作与显示模块、总线测试数据组包模块、测试结果数据解析比对模块、以及数据收发模块,其中所述用户界面操作与显示模块分别与所述总线测试数据组包模块、所述测试结果数据解析比对模块相连,所述数据收发模块分别与所述总线测试数据组包模块、所述测试结果数据解析比对模块相连;测试代理软件,包括测试数据收发模块、测试数据解析模块、测试数据组包模块、写总线输入缓存模块、读写数据时刻控制模块、以及读总线输出缓存模块,其中所述测试数据解析模块分别与所述测试数据收发模块、所述写总线输入缓存模块、读写数据时刻控制模块相连,所述读总线输出缓存模块分别与所述写总线输入缓存模块、所述读写数据时刻控制模块、所述测试数据组包模块相连,所述测试数据组包模块与所述相连;所述测试系统用户交互软件与所述测试代理软件之间采用总线连接,所述数据收发模块与所述测试数据收发模块通过所述总线进行数据交互。
一种基于总线注入的测试方法,包括:获取总线测试数据,所述总线测试数据分为总线注入数据和总线验证数据,所述总线注入数据中携带有注入时刻和故障信号值,所述总线验证数据携带有读取时刻;采用数据收发模块选择对应的总线将所述总线测试数据发送至测试数据收发模块;测试数据解析模块从测试数据收发模块接收的所述总线测试数据中分别解析出总线注入数据和总线验证数据,并分别加入输入信息列表和输出信息列表;读写数据时刻控制模块逐一读取出输入信息列表中的每条总线注入数据,根据携带的注入时刻,在被测控制系统软件运行到注入时刻所对应周期时,将所述总线注入数据注入对应总线的总线输入缓存中;读写数据时刻控制模块逐一读取出输出信息列表中的每条总线验证数据,根据携带的读取时刻,在被测控制系统软件运行到读取时刻所对应周期时,从对应总线的总线输出缓存中读取被测控制系统软件的总线输出数据;采用测试数据组包模块将读取的所述总线输出数据按照预设格式进行组包,得到测试输出数据;将所述测试输出数据通过测试数据收发模块发送至数据收发模块;测试结果数据解析比对模块将数据收发模块接收的所述测试输出数据进行解析,并将解析后的数据与预设阈值进行比较,得到测试结果。
在一个实施例中,所述获取总线测试数据步骤,包括:获取用户界面操作与显示模块接收的初始信息,所述初始信息包括初始输入信息和初始输出信息;基于总线测试数据组包模块,将所述初始信息生成总线测试数据。
在一个实施例中,所述初始输入信息包括需要构造的总线输入故障信号值。
在一个实施例中,所述初始输出信息包括期望获得的总线输出信号值。
在一个实施例中,基于总线测试数据组包模块,将所述初始信息生成总线测试数据步骤,包括:采用总线测试数据组包模块对所述期望获得的总线输出信号值进行组包,得到所述预设阈值。
在一个实施例中, 所述总线注入数据的格式中包括包头、总线状态字、注入时刻,以及总线输入协议数据,其中所述总线状态字和所述总线输入协议数据至少一个内包含有故障信号值。
在一个实施例中,所述测试数据解析模块从测试数据收发模块接收的所述总线测试数据中分别解析出总线注入数据和总线验证数据,并分别加入输入信息列表和输出信息列表步骤,包括:测试数据解析模块从测试数据收发模块接收的所述总线测试数据中解析出总线注入数据,将所述总线注入数据加入输入信息列表;将所述输入信息列表中的总线注入数据按照携带的注入时刻进行先后排序;测试数据解析模块从测试数据收发模块接收的所述总线测试数据中解析出总线验证数据,将所述总线验证数据加入输出信息列表;将所述输出信息列表中的总线验证数据按照携带的读取时刻进行先后排序。
在一个实施例中,所述测试结果数据解析比对模块将数据收发模块接收的所述测试输出数据进行解析,并将解析后的数据与预设阈值进行比较,得到测试结果步骤之后,还包括:采用用户界面操作与显示模块对所述测试结果进行显示。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述各个实施例中所述的一种基于总线注入的测试方法的步骤。
由上述技术方案可知,本发明的有益技术效果为:将获取的总线测试数据通过对应的总线,从测试系统用户交互软件发送至测试代理软件中,在测试数据解析模块中对总线测试数据进行解析处理,并采用读写数据时刻控制模块对解析处理后的总线测试数据进行注入和读取处理,得到总线输出数据,采用测试数据组包模块对总线输出数据进行组包得到测试输出数据,并通过测试数据收发模块将测试输出数据发送至测试系统用户交互软件中,采用测试结果数据解析对比模块将测试输出数据与预设阈值进行比较,得到测试结果,从而可以在简单快捷的部署下进行控制系统软件的高效全面测试,解决了软件方式的编译时故障注入的测试不方便问题,调试暂停时故障注入的测试效率低问题,运行时动态变量故障注入的注入不全面问题,以及硬件故障注入的系统复杂度高问题。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
在一个实施例中,如图1所示,提供了一种基于总线注入的测试系统,其特征在于,包括,测试系统用户交互软件,包括用户界面操作与显示模块、总线测试数据组包模块、测试结果数据解析比对模块、以及数据收发模块,其中用户界面操作与显示模块分别与总线测试数据组包模块、测试结果数据解析比对模块相连,数据收发模块分别与总线测试数据组包模块、测试结果数据解析比对模块相连;测试代理软件,包括测试数据收发模块、测试数据解析模块、测试数据组包模块、写总线输入缓存模块、读写数据时刻控制模块、以及读总线输出缓存模块,其中测试数据解析模块分别与测试数据收发模块、写总线输入缓存模块、读写数据时刻控制模块相连,读总线输出缓存模块分别与写总线输入缓存模块、读写数据时刻控制模块、测试数据组包模块相连,测试数据组包模块与相连;测试系统用户交互软件与测试代理软件之间采用总线连接,数据收发模块与测试数据收发模块通过总线进行数据交互。
具体的,一种基于总线注入的测试系统主要分为测试系统用户交互软件和测试代理软件两部分,测试系统用户交互软件运行于测试上位机中,测试代理软件运行于被测控制系统软件运行的测试下位机中,测试系统用户交互软件和测试代理软件之间为相应的总线连接线缆,测试代理软件与被测控制系统软件之间为内存数据交互。
测试系统用户交互软件提供测试人员的操作界面和测试结果的显示界面,并根据被测控制系统软件的外总线类型提供总线测试数据组包模块和测试结果数据解析对比模块以及总线数据收发模块。测试代理软件根据接收的测试系统用户交互软件测试数据具体完成测试故障信息的准确注入和测试执行结果数据的收集。
其中,图1中的被测控制软件,则是需要测试的软件,被测控制软件中设有原始的总线缓存数据,这里的总线缓存数据包括输入的和输出的,由于被测控制软件与测试代理软件之间可以进行数据交互,因此测试代理软件能够获取被测控制软件中原始的总线缓存数据,故在图1中采用虚线画出,以体现系统运行时数据交互的方向。在进行基于总线注入的测试时,首先是需要在测试系统用户交互软件的用户界面操作与显示模块填入“需要构造的总线输入故障信号值等输入信息以及期望获得的总线输出信号值等输出信息”,这些信息通过组包、处理,会形成总线测试数据,总线测试数据需要经过处理和传输,以纳入到原始的总线缓存数据中,形成新的总线缓存数据,并根据自身的执行时间,进行相应的执行动作,最后得到测试输出数据,将测试输出数据与预设的阈值进行比较,则得到测试结果。从而可以在简单快捷的部署下进行控制系统软件的高效全面测试,解决了软件方式的编译时故障注入的测试不方便问题,调试暂停时故障注入的测试效率低问题,运行时动态变量故障注入的注入不全面问题,以及硬件故障注入的系统复杂度高问题。
在一个实施例中,如图2、图3所示,提供了一种基于总线注入的测试方法,包括:
S101获取总线测试数据,总线测试数据分为总线注入数据和总线验证数据,总线注入数据中携带有注入时刻和故障信号值,总线验证数据携带有读取时刻。
在其中一个实施例中,步骤S101中的获取总线测试数据步骤,包括:获取用户界面操作与显示模块接收的初始信息,初始信息包括初始输入信息和初始输出信息;基于总线测试数据组包模块,将初始信息生成总线测试数据。
在其中一个实施例中,初始输入信息包括需要构造的总线输入故障信号值,初始输出信息包括期望获得的总线输出信号值。
具体地,测试人员根据被测试的软件在测试系统用户交互软件的界面中填入需要构造的总线输入故障信号值等输入信息以及期望获得的总线输出信号值等输出信息;测试系统用户交互软件的总线测试数据组包模块根据测试人员的输入信息,生成总线测试数据。
在其中一个实施例中,基于总线测试数据组包模块,将初始信息生成总线测试数据步骤,包括:采用总线测试数据组包模块对期望获得的总线输出信号值进行组包,得到预设阈值。具体地,步骤S108中的预设阈值即为本步骤的期望获得的总线输出信号值组包所得到的。
在其中一个实施例中,总线注入数据的格式中包括包头、总线状态字、注入时刻,以及总线输入协议数据,其中总线状态字和总线输入协议数据至少一个内包含有故障信号值。具体地,总线测试数据分为总线注入数据和总线验证数据,总线注入数据的格式为包头+总线状态字+注入时刻+总线输入协议数据(总线输入协议数据中即含有测试人员构造的故障信号值),总线验证数据的格式为包头+读取时刻+总线ID号(ID号通常占4字节);
S102采用数据收发模块选择对应的总线将总线测试数据发送至测试数据收发模块。
具体的,测试系统用户交互软件的数据收发模块将组包完成的总线测试数据通过对应的总线发往测试代理软件(常用的通信总线均支持,如:1553、1394、422、CAN等);测试代理软件的数据收发模块从总线上接收测试系统用户交互软件发送过来的总线测试数据。因为测试系统用户交互软件与测试代理软件是通过总线交互连接,因此,总线测试数据也是通过总线进行传输。
S103测试数据解析模块从测试数据收发模块接收的总线测试数据中分别解析出总线注入数据和总线验证数据,并分别加入输入信息列表和输出信息列表。
在其中一个实施例中,步骤S103包括:测试数据解析模块从测试数据收发模块接收的总线测试数据中解析出总线注入数据,将总线注入数据加入输入信息列表;将输入信息列表中的总线注入数据按照携带的注入时刻进行先后排序;测试数据解析模块从测试数据收发模块接收的总线测试数据中解析出总线验证数据,将总线验证数据加入输出信息列表;将输出信息列表中的总线验证数据按照携带的读取时刻进行先后排序。
具体的,测试代理软件的测试数据解析模块从接收的总线测试数据中解析出总线注入数据并加入输入信息列表;测试数据解析模块从接收的总线测试数据中解析出总线验证数据并加入输出信息列表;这里的输入信息列表和输出信息列表用于便于将总线测试数据按照注入时刻和读取时刻进行排序。输入信息列表和输出信息列表共同构成一个完整的测试用例。
另外,测试系统用户交互软件在向测试代理软件发送总线测试数据时已将数据分为总线注入数据和总线验证数据两种,并分别对其根据注入时刻和读取时刻进行排序,一条测试用例中通常包含了若干条总线注入数据和总线验证数据。
因为被测控制系统软件通常为周期性任务软件,故有在第几周期注入故障以及在第几周期读取测试输出的特性。上文中提到的注入时刻以及读取时刻即为第几周期的意思。
S104读写数据时刻控制模块逐一读取出输入信息列表中的每条总线注入数据,根据携带的注入时刻,在被测控制系统软件运行到注入时刻所对应周期时,将总线注入数据注入对应总线的总线输入缓存中。
具体的,读写数据时刻控制模块逐一取出输入信息列表中的每一条总线注入数据,并根据其注入时刻在被测控制系统软件运行到对应周期时将数据注入对应总线的总线输入缓存。
S105读写数据时刻控制模块逐一读取出输出信息列表中的每条总线验证数据,根据携带的读取时刻,在被测控制系统软件运行到读取时刻所对应周期时,从对应总线的总线输出缓存中读取被测控制系统软件的总线输出数据。
具体的,读写数据时刻控制模块逐一取出输出信息列表中的每一条总线验证数据,并根据其读取时刻在被测控制系统软件运行到对应周期时从对应总线的总线输出缓存中读取被测控制系统软件的总线输出数据。
S106采用测试数据组包模块将读取的总线输出数据按照预设格式进行组包,得到测试输出数据。
具体的,对于读取到的每一条总线输出数据,都按照包头+总线输出数据的格式组包,这样的设置,有助于后续进行数据读取。
S107将测试输出数据通过测试数据收发模块发送至数据收发模块。
具体的,将组包后的测试输出数据通过数据收发模块发送给测试系统用户交互软件。
S108测试结果数据解析比对模块将数据收发模块接收的测试输出数据进行解析,并将解析后的数据与预设阈值进行比较,得到测试结果。
具体的,测试系统用户交互软件解析接收到的测试输出数据,从中提取出需要判断的总线输出信号的值并与测试人员设置的预期值情况进行比较以得出测试结果。
在其中一个实施例中,步骤S108之后,还包括:采用用户界面操作与显示模块对测试结果进行显示。
具体的,测试系统用户交互软件将测试结果显示在界面上,便于及时查看测试效果。
在一个实施例中,提供一种计算机设备,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储配置模板,还可用于存储目标网页数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于总线注入的测试方法。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
显然,本领域的技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。