嵌入式软件黑盒自动化测试系统及测试方法

文档序号:6548040阅读:496来源:国知局
嵌入式软件黑盒自动化测试系统及测试方法
【专利摘要】本发明涉及计算机领域,公开了一种嵌入式软件黑盒自动化测试系统及测试方法。该测试系统包括:上位机用于自动生成测试脚本,建立与被测系统交联的系统的仿真模型,通过下位机将仿真模型与被测系统连接起来,在接收到测试指令后,将与测试指令对应的测试脚本调用至下位机;下位机用于根据测试脚本对被测系统进行测试,并将被测系统的测试数据发回给上位机。该测试系统能够自动生成测试脚本,提高了测试效率,同时将被测系统纳入到一个真实的系统环境中,将被测系统与其交联的系统相连,采用闭环测试方法对其进行整体的功能测试,测试结果真实、准确。
【专利说明】嵌入式软件黑盒自动化测试系统及测试方法
【技术领域】
[0001]本发明涉及计算机领域,特别涉及一种嵌入式软件黑盒自动化测试系统及测试方法。
【背景技术】
[0002]由于嵌入式系统自身具有如下特点,如实时性高、内存不丰富、I/O通道少、开发工具昂贵、并且与硬件紧密相关等等,所以嵌入式系统的测试与一般的商用软件的测试策略有了很大的不同。特别的,单个嵌入式系统需要通过各种现场总线(如CAN、1553B、429等)或I (Input,输入)/0 (Output,输出)接口与其它的子系统进行交联组成一个大的可实际工作的系统。传统对于嵌入式系统的测试方法是利用开环测试及手工测试方法进行测试。开环测试是将被测嵌入式系统当成一个孤立的子系统,被测系统和上位机通过板卡相连,通过上位机上的人机界面发送手工编写的Python语言或者C++语言的脚本代码至被测系统,对其进行相应的输入输出测试,这样的测试没有把被测的嵌入式系统纳入到一个真实的系统环境中。若被测嵌入式系统作为一个大系统中的子系统,采用开环测试无法对其进行整体的功能测试,这样的测试方法得到的测试结果不准确。
[0003]此外,手工测试要求测试人员非常熟悉相关的脚本语言,使用脚本语言手工编写相关的用例脚本,极大的降低了测试效率,而且无法达到嵌入式软件要求的实时性、安全性及可靠性。测试人员还需要根据测试结果手工编写测试报告,这也在一定程度上降低了工作效率。

【发明内容】

[0004]本发明的目的在于提供一种嵌入式软件黑盒自动化测试系统及测试方法,能够自动生成测试脚本,提高了测试效率,同时将被测系统纳入到一个真实的系统环境中,将被测系统与其交联的系统相连,采用闭环测试方法对其进行整体的功能测试,测试结果真实、准确。
[0005]为解决上述技术问题,本发明的实施方式提供了一种嵌入式软件黑盒自动化测试系统,包含上位机、下位机及被测系统,包含:
[0006]所述上位机用于自动生成测试脚本,建立与被测系统交联的系统的仿真模型,通过所述下位机将所述仿真模型与所述被测系统连接起来,在接收到测试指令后,将与所述测试指令对应的测试脚本调用至所述下位机;
[0007]所述下位机用于根据所述测试脚本对所述被测系统进行测试,并将所述被测系统的测试数据发回给所述上位机。
[0008]本发明的实施方式还提供了 一种嵌入式软件黑盒自动化测试方法,包含以下步骤:
[0009]按照测试需要生成满足在所述下位机上运行所需的测试脚本;
[0010]在所述上位机中创建与所述被测系统交联的系统的仿真模型;[0011]通过所述上位机向所述下位机发送测试指令;
[0012]所述下位机接收所述上位机的测试指令,根据所述测试指令启动对应的仿真模型和测试脚本对所述被测系统进行测试,得到所述测试数据。
[0013]本发明实施方式相对于现有技术而言,在上位机中自动生成测试脚本,并在上位机中建立了与被测系统交联的系统的仿真模型,通过下位机将仿真模型与被测系统相连,在测试时,测试人员通过上位机向下位机发送测试指令,下位机接收到测试指令后,自动运行对应的仿真模型和脚本对被测系统进行测试,从而构建了一个闭环的全自动的黑盒测试系统。测试数据也能够实时的被发送给上位机展示给测试人员。将被测系统纳入到一个真实的系统环境中,测试结果真实、准确,使得测试人员从繁琐的手工测试中解放出来,提高了测试效率。
[0014]优选的,所述上位机包含人机交互模块、仿真建模模块及仿真管理模块;
[0015]所述人机交互模块用于将测试人员编写的测试任务及测试用例转换成满足预设条件的脚本、向所述被测系统发送测试指令及分析所述被测系统返回的测试数据;
[0016]所述仿真建模模块用于建立与所述被测系统交联的系统的仿真模型;
[0017]所述仿真管理模块用于将所述仿真模型编译成满足在所述下位机上运行的文件并控制所述仿真模型的运行。
[0018]通过人机交互模块实现测试人员对整个测试过程的控制及对测试数据的处理;仿真建模模块建立了与被测系统相交联的系统的模型,再通过下位机将该模型与被测系统连接起来,实际上就是将被测系统置于真实的工作环境中,这样保证了测试到的被测系统的测试数据真实可靠;仿真管理模块保证了仿真建模模块建立的仿真模型具有可用性。
[0019]优选的,所述人机交互模块还包含测试报告生成子模块,所述测试报告生成子模块用于根据所述测试数据自动生成符合预设格式的测试报告。
[0020]上位机的人机交互模块还可以自动生成满足预设格式的测试报告,与现有技术中需要人工生成测试报告的方法相比,减少了测试人员的工作量,提高了测试效率。
[0021 ] 优选的,所述下位机包含:
[0022]自动测试内核,用于提供加载及运行满足在所述下位机运行所需的脚本语言的执行环境;
[0023]实时仿真内核,用于提供加载及运行所述仿真模型的执行环境;
[0024]异步程序模块,用于在所述测试脚本和所述仿真模型之间传输激励数据和响应数据;
[0025]驱动模块,用于所述仿真模型和所述被测系统进行通讯;
[0026]下位机通讯模块,用于所述下位机和所述上位机进行通讯。
[0027]下位机运行时通过加载仿真内核,仿真内核启动相应的仿真模型,异步程序模块保证了测试脚本和仿真模型之间的通信,自动测试内核保证测试脚本正常的被加载和运行,通过仿真模型调用驱动模块,通过驱动模块调用的接口与被测系统相连,下位机通讯模块保证了仿真模型与被测系统的数据交互。
[0028]优选的,所述上位机的操作系统为视窗Windows,所述下位机的操作系统为红帽RedHat或实时操作系统QNX。
[0029]上位机运行具有用户图形界面的Windows(视窗)系统,图形界面比较人性化,方便测试人员创建仿真模型、发送测试指令、设计测试用例及测试任务;下位机运行QNX (Quick Unix,实时操作系统)或RedHat实时系统,可以满足被测嵌入式系统所要求的实时性。
【专利附图】

【附图说明】
[0030]图1是根据本发明第一实施方式的嵌入式软件黑盒自动化测试系统的结构示意图;
[0031]图2是根据本发明第二实施方式的嵌入式软件黑盒自动化测试系统中上位机的结构示意图;
[0032]图3是根据图2的人机交互模块的结构示意图;
[0033]图4是本发明第二实施方式中嵌入式软件黑盒自动化测试系统中上位机中各个模块的连接结构示意图;
[0034]图5是根据本发明第二实施方式的嵌入式软件黑盒自动化测试系统中下位机的结构示意图;
[0035]图6是根据本发明第三实施方式的嵌入式软件黑盒自动化测试系统中上位机的结构示意图;
[0036]图7是根据本发明第三实施方式的嵌入式软件黑盒自动化测试系统实际连接结构示意图;
[0037]图8是根据本发明第四实施方式的嵌入式软件黑盒自动化测试方法的流程示意图;
[0038]图9是根据本发明第五实施方式的嵌入式软件黑盒自动化测试方法的流程示意图。
【具体实施方式】
[0039]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0040]本发明的第一实施方式涉及一种嵌入式软件黑盒自动化测试系统,该测试系统采用模块化的设计思想、上位机和下位机分层实现测试功能的结构模式来设计。
[0041]如图1所示,该测试系统包含上位机、下位机及被测系统。需要说明的是,本发明中的被测系统均为嵌入式系统。该测试系统是使用软件编程及与硬件结合的方式来实现的。本发明的实施例中均是以该系统对一个模拟的基于TCP(Transmission ControlProtocol,传输控制协议)通讯的被测嵌入式系统为例来说明该系统是如何工作的,但不代表本测试系统只能对该模拟的基于TCP通讯的被测嵌入式系统进行测试,特此声明。
[0042]总体来说,上位机用于自动生成测试脚本,建立与被测系统交联的系统的仿真模型,通过下位机将仿真模型与被测系统连接起来,在接收到测试指令后,将与测试指令对应的测试脚本调用至下位机。具体地说,上位机运行Windows系统,用于测试人员创建仿真模型和测试用例,仿真模型为模拟的与被测系统交联的外部系统的模型,测试用例则自动转换成用例脚本,不同的用例脚本和测试逻辑组合成测试任务。上位机还负责接收测试人员的操作指令,把仿真模型和测试任务装载到下位机上运行,这样就相当于构建了一个被测整体系统,将被测系统置于一个真实的系统环境中进行测试。
[0043]下位机用于根据测试脚本对被测系统进行测试,并将被测系统的测试数据发回给上位机。
[0044]上位机和下位机之间通过网络相连。上位机和下位机可以通过以太网连接,其通信协议为 TCP/IP (Transmission Control Protocol/Internet Protocol,传输控制协议/ 因特网互联协议)。下位机主板上插有总线或I/O板卡,通过相应的连接线与被测嵌入式系统相连。下位机接收到上位机的操作指令运行相应的仿真模型和用例脚本,用例脚本运行时,通过给被测嵌入式系统注入激励数据,并收集从被测嵌入式系统输出的数据自动完成测试工作。
[0045]本发明实施方式相对于现有技术而言,在上位机中自动生成测试脚本,并在上位机中建立了与被测系统交联的系统的仿真模型,通过下位机将仿真模型与被测系统相连,在下位机主板上插入了被测系统和被测整体系统中的其它系统之间的接口板卡(包括现场总线和I/o接口板卡),这些板卡通过对应的连接线缆将仿真模型与被测嵌入式系统进行连接。在测试时,测试人员通过上位机人机界面向下位机发送测试指令,下位机接收到测试指令后,自动运行对应的仿真模型和测试任务,对被测嵌入式系统进行测试,从而构建了一个闭环的全自动的黑盒测试系统。测试数据也能够实时的被发送给上位机展示给测试人员。将被测系统纳入到一个真实的系统环境中,测试结果真实、准确,使得测试人员从繁琐的手工测试中解放出来,提高了测试效率,可以对嵌入式系统进行非侵入式的各种功能和性能测试,也由于对和被测嵌入式系统交联的外部环境进行了模拟构建了闭环的测试环境,因而也能对整个系统(包括被测嵌入式系统以及与其交联的其它系统)进行测试。测试数据也能够实时的被发送给上位机展示给测试人员。
[0046]本发明第二实施方式涉及一种嵌入式软件黑盒自动化测试系统,第二实施方式为第一实施方式的具体实施例,如图2所不,上位机包括:人机交互模块、仿真建模模块及仿
真管理模块。
[0047]其中,人机交互模块用于将测试人员编写的测试任务及测试用例转换成满足预设条件的脚本、向被测系统发送测试指令及分析被测系统返回的测试数据。
[0048]具体地说,人机交互模块可以做成通过一个软件平台来实现,这个软件平台可以称为测试系统人机界面,该测试系统人机界面为面对测试人员的直接交互界面,通过该人机界面,测试人员给下位机发送测试指令提供了一个图形化的交互界面,同时能对测试数据进行实时的监视。测试人员还可以对被测嵌入式系统的功能和性能进行分析,然后在人机界面上对这些功能和性能分别建立相应的测试用例,并按照调度关系组织成测试任务;要进行测试时,测试人员在人机界面上选择定义好的测试任务并点击运行菜单,测试执行指令连同测试用例和测试脚本将被发送到下位机,由下位机接受测试执行指令并把相应的测试用例和测试脚本装载到内存中运行;人机界面还对测试数据进行实时的在线监视。人机界面可以采用Visual Studio(视觉工作室)开发,其只负责用户的响应,具体功能模块的实现则由其它模块负责。[0049]进一步的,如图3所示,人机交互模块包含以下子模块:
[0050]第一转换子模块,用于自动将测试任务转换成满足在下位机上运行所需的任务脚本。
[0051]具体地说,满足在下位机上运行所需的任务脚本可以为基于Python语言的任务脚本。因此,本实施方式为基于Python语言的嵌入式软件黑盒自动化测试系统。该第一转换子模块用于把测试人员设计的测试任务连同任务调度自动转换成可在下位机实时系统中运行的基于Python语言的任务脚本。具体的,测试任务由一系列的测试用例和内部调度逻辑所组成,测试是以测试任务为最小单位进行的。在具体的实施方式上,系统内建了一个生成基于Python语言的任务脚本模板,测试人员使用图形化的方式创建的测试任务被存成XML (Extensible Markup Language,可扩展标记语言)格式,而要生成Python任务脚本时,系统从该XML文件读取相应的元素填充到任务脚本模板中,从而生成Python语言的测试任务脚本,测试任务脚本包括:数据信息脚本、事件脚本、动作脚本及测试流程脚本。也就是说,系统从XML文件中提取输入的数据、输出的数据填充到数据信息脚本模板中,从而自动生成数据信息脚本;提取XML文件中事件的相关数据填充到事件脚本模板中,从而自动生成事件脚本;提取XML文件中动作的相关数据填充到动作脚本模板中,从而自动生成动作脚本;然后再根据数据信息脚本、事件脚本和动作脚本生成测试流程脚本。
[0052]第二转换子模块,用于自动将测试用例转换成满足在下位机上运行所需的用例脚本。
[0053]具体地说,满足在下位机上运行所需的用例脚本可以为基于Python语言的用例脚本。该第二转换子模块用于把测试人员设计的测试用例自动转换成可在下位机实时系统中运行的基于Python语言的用例脚本。用例脚本本身不自动运行,需要加入到任务脚本中,由任务脚本调度执行。在具体的实施方式上,系统内建了一个生成基于Python语言的用例脚本模板,测试人员使用图形化的方式创建的测试用例被存成XML格式,而要生成Python用例脚本时,系统从该XML文件读取相应的元素填充到用例脚本模板中,从而自动生成可在下位机实时系统中运行的Python脚本语言文件。
[0054]上位机通讯子模块,用于上位机和下位机进行通讯。
[0055]具体地说,通过此通讯子模块,测试人员能把用例脚本和测试任务装载到下位机上运行,并且从人机界面传送过来的测试指令通过此模块发送给下位机,同时测试数据从下位机经由此模块传送给人机界面进行显示。
[0056]仿真建模模块用于建立与被测系统交联的系统的仿真模型。
[0057]具体地说,仿真建模模块用于测试人员对与被测嵌入式系统交联的外部环境使用数学模型进行模拟。仿真建模工具采用Matlab (MATrix LABoratory,矩阵实验室)或可视化仿真工具(Simulink), Matlab或Simulink能使用图形化的方式提供给建模人员把与被测嵌入式系统交联的外部环境进行形象化的模拟,还可以使用Opal-RT (0PAL-RTTechnologies, OPAL-RT技术)提供的用于实时仿真的总线或10接口 Simulink模块库以图形化的方式对与被测嵌入式系统交联的外部环境进行仿真建模;并能使用下位机中的总线、10接口驱动模块创建与被测嵌入式系统交联的仿真模型的连接,实现仿真模型与被测嵌入式系统的数据收发工作。
[0058]仿真管理模块用于将仿真模型编译成满足在下位机上运行的文件并控制仿真模型的运行。
[0059]具体地说,仿真管理模块用于测试人员把仿真模型编译成可在下位机运行的二进制文件并装载到下位机运行并对其进行运行控制。仿真管理工具可以采用RT-LAB实时仿真管理工具平台,RT-LAB是一款拥有强实时内核的仿真管理工具,其CPU(CentralProcessing Unit,中央处理器)仿真步长可以精确到20微秒,足以对真实系统进行逼真仿真,在【具体实施方式】上,在人机界面里集成调用RT-LAB API (RT-LAB ApplicationProgramming Interface,分布式仿真测试平台对外部程序提供的应用程序编程接口)的功能,可以实现对仿真模型的编译、下载、运行控制等功能。当测试人员进行测试时,首先调用RT-LAB API把仿真模型编译成可在下位机实时系统中运行的二进制文件,然后调用RT-LAB下载API把二进制文件装载到下位机实时系统中,最后调用RT-LAB运行控制API把下位机中的仿真模型二进制文件装载的内存中运行,这样就创建了一个与被测嵌入式系统周边交联的外部模拟环境。从而可以对嵌入式系统进行闭环测试。这使得仿真模型能非常精确的模拟与被测嵌入式系统交联的外部真实环境。
[0060]上位机的操作系统可以为Windows, Windows具有用户图形界面,图形界面比较人性化,方便测试人员创建仿真模型、发送测试指令、设计测试用例及测试任务。
[0061]上位机中各个模块的连接关系如图4所示。
[0062]再进一步的,如图5所示,下位机包含:
[0063]自动测试内核,用于提供加载及运行满足在下位机运行所需的脚本语言的执行环境。
[0064]具体地说,自动测试内核为自动测试提供了一个加载运行基于Python语言的用例脚本和测试任务的环境。通过运行测试任务来调度用例脚本的执行,用例脚本加载预先定义的激励数据通过仿真模型传给总线/10接口驱动传送给被测嵌入式系统,并经由总线/10接口驱动收集从被测嵌入式系统的响应测试数据与用例脚本中预先定义的期望输出数据进行比较完成自动化的测试。在具体的实施方式上,下位机通过下位机通讯模块接收到测试指令之前,上位机在后台通过上位机通讯模块把基于Python语言的用例脚本和任务脚本上传到下位机的指定目录下,随后下位机通讯模块接收到测试执行指令,从该目录下加载相应的任务脚本和用例脚本,通过调用自动测试内核的Python脚本语言执行器把任务脚本加载到内存中运行,任务脚本根据内部调度关系加载相应的用例脚本到内存中运行;
[0065]实时仿真内核,用于提供加载及运行仿真模型的执行环境。
[0066]具体地说,实时仿真内核为仿真模型提供了一个实时运行的环境。在具体的实施方式上,实时仿真内核采用RT-LAB实时内核,在实时系统启动的时候,RT-LAB实时内核守护进程被加载到内存中运行,在守护进程接收到仿真运行指令之前,上位机通过RT-LAB把相应的仿真模型上传到下位机的指定目录下,随后守护进程接收到仿真运行指令,从该目录下加载相应的仿真模型到内存中运行;其强实时性保证了模拟与被测嵌入式系统交联的外部环境的真实性。
[0067]异步程序模块,用于在测试脚本和仿真模型之间传输激励数据和响应数据。
[0068]具体地说,异步程序模块用来在测试脚本和仿真模型之间传输激励数据和响应数据。激励数据即测试时输入的数据,响应数据即测试后输出的数据。在【具体实施方式】上,异步程序模块做为一个单独的进程运行。当测试脚本需要向仿真模型传输激励数据时,测试脚本通过共享内存的方式把激励数据传给异步程序,异步程序则通过调用RT-LAB API的方式把激励数据传给仿真模型,由仿真模型调用相应的总线/10接口驱动传给被测嵌入式系统,让被测嵌入式系统作出一定的响应。而当仿真模型需要把从被测嵌入式系统采集到的响应数据传送给测试脚本时,异步程序内部维护了一个循环调用RT-LAB API获取仿真模型信号的程序片段,当异步程序内部读取到响应数据后,通过共享内存的方式把响应数据传送给测试脚本,测试脚本最终把响应数据和预先定义的预期输出数据进行比对,从而完成自动化的测试。
[0069]驱动模块,用于仿真模型和被测系统进行通讯。
[0070]具体地说,驱动模块主要是总线或IO接口的驱动模块,因此,驱动模块也可以称为总线或IO接口驱动模块。在【具体实施方式】上,在【具体实施方式】上,由于被测嵌入式系统通常会通过各种总线或I/o接口与其它子系统进行交联,为了模拟这种环境,在下位机的主机插槽中插入了相应的这些总线或I/o板卡,而要使用这些板卡,就必须要有相应的驱动程序,同时要能够在Simulink创建的仿真模型中使用,Opal-RT本身提供了很多的这些板卡驱动的Simulink封装,另外如果Opal-RT如果没有提供相应的板卡驱动的Simulink封装则需要自行封装这些板卡驱动的Simulink封装。由于本发明理论上可以对任意的被测嵌入式系统进行闭环的自动化测试,因此在实际应用中,需要视具体被测嵌入式系统使用的总线或IO接口来定驱动模块。
[0071 ] 下位机通讯模块,用于所述下位机和所述上位机进行通讯。
[0072]具体地说,通过此通讯模块,下位机能接受来自上位机的测试指令并加载运行相应的用例脚本和测试任务,同时测试数据经由此模块传送给上位机的通讯模块进行后续处理。在实际实施中,基于客户端/服务端的模式,上位机通讯模块做为客户端连接到下位机通讯模块并收发数据。
[0073]测试系统下位机运行时通过加载仿真内核,仿真内核启动相应的仿真模型,通过仿真模型调用总线或IO接口驱动,通过总线或IO接口与被测嵌入式系统相连,实现仿真模型与被测嵌入式系统的数据交互;同时,下位机运行时通过加载测试内核,测试内核启动相应的任务脚本,任务脚本通过内部调度逻辑加载相应的用例脚本,把用例脚本中预先定义好的激励数据发给异步进程模块,异步进程模块通过调用仿真API把激励数据发给仿真模型,由仿真模型进行后续的处理,仿真模型接收到被测嵌入式系统的响应数据后,响应数据可以理解为输出数据,由异步进程模块实时的进行采集,采集到的响应数据发给用例脚本,用例脚本把响应数据和预先定义的期望数据进行比对,以此来实现用例脚本与仿真模型的数据交互。
[0074]下位机的操作系统为RedHat或QNX,RedHat和为QNX实时性很强的操作系统,使用该操作系统能够满足被测嵌入式系统所要求的实时性。
[0075]本发明实施方式相对于现有技术而言,由于本发明的测试系统将与被测嵌入式系统交联的其它系统进行了仿真建模而把被测嵌入式系统纳入到了一个虚拟的真实环境当中从而构成了一个闭环的测试系统,而且模型的运行基于强实时的RT-LAB仿真管理平台,能更加真实的对被测嵌入式系统进行测试。本发明成功的采用了一种图形化的方式让测试人员进行测试用例和测试任务的设计,而相应的脚本则是全自动的,而不需要测试人员手工去编写,这样使得测试人员只需关心被测嵌入式系统的功能和性能,不需要去学习Python语言,提高了效率,减少了编写脚本的出错可能,大大提高了测试效率。
[0076]值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑模块可以是一个物理模块,也可以是一个物理模块的一部分,还可以以多个物理模块的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,但这并不表明本实施方式中不存在其它的模块。
[0077]本发明第三实施方式设计一种嵌入式软件黑盒自动化测试系统,第三实施方式在第二实施方式的基础上做了进一步改进,改进之后的测试系统具有自动生成测试报告的功能。该测试系统的改进之处主要在与上位机中的人机交互模块,如图6所示,该人机交互模块包含第一转换子模块、第二转换子模块、上位机通讯子模块及测试报告生成子模块,其中,第一转换子模块、第二转换子模块及上位机通讯子模块与第二实施方式中的第一转换子模块、第二转换子模块及上位机通讯子模块对应相同,该测试报告生成子模块用于根据测试数据自动生成符合预设格式的测试报告。本领域技术人员可以理解,该测试系统中其他模块的组成及功能与第二实施方式中想对应,在此不作赘述。
[0078]具体的,测试报告生成子模块接收下位机的实时测试数据,通过图形化的方式进行实时监控,并根据测试数据自动生成指定格式的测试报告。示例的,此模块可以提供一套符合国军标的测试报告模板,能自动把测试数据填充到此模板,从而自动生成测试报告,节省了人工编写测试报告的时间,提高了测试效率。
[0079]该自动化测试系统的实际连接结构如图7所示,工作原理说明如下:
[0080]首先,测试人员需在实际测试前按照被测嵌入式系统的功能和性能在上位机人机界面上进行测试用例和测试任务的设计并把其转换成基于Python语言的用例脚本和任务脚本,另外还需要对与被嵌入式系统交联的其它子系统使用Matlab/Simulink进行仿真建模并使用RT-LAB把其编译成可在下位机实时系统运行的二进制文件;测试开始,测试人员在人机界面上选择预先定义好的测试任务并点击开始测试,系统通过调用RT-LAB API把仿真模型的二进制文件下载到下位机上运行以启动与被测嵌入式系统交联的其它子系统的虚拟环境,并且系统自动在后台通过上位机通讯模块和下位机通讯模块的配合把用例脚本和任务脚本下载到下位机上,随后,下位机通讯模块接收到上位机的测试指令把任务脚本加载到内存中运行,同时下位机通讯模块把相应的异步程序模块加载到内存中运行;在测试执行阶段,任务脚本根据预先定义好的内部调度逻辑把相应的用例脚本加载到内存中运行,用例脚本把预先定义好的激励数据通过共享内存的方式发送给异步进程,异步进程通过调用RT-LAB API把激励数据传送给仿真模型,仿真模型则通过总线/10接口驱动把激励数据传送给被测嵌入式系统,被测嵌入式系统对激励做出响应后把响应数据通过总线/10接口传送给仿真模型,异步进程则在内部通过调用RT-LAB API的方式维护一个获取仿真模型中相关的信号的循环程序片段,异步进程把周期性收到的响应数据通过共享内存的方式发送给用例脚本,用例脚本把其与预先定义的期望输出数据进行比对,并通过下位机通讯模块把其发送给上位机进行实时监控,从而完成自动化的测试。
[0081]由上所述,此发明搭建了一个基于Python语言的嵌入式软件黑盒自动化测试系统,成功的建立一套功能全、性能好、自动化程度高、扩展性强、具有一定通用性的嵌入式软件的自动化测试系统。
[0082]本发明的第四实施方式提供一种基于Python语言的嵌入式软件黑盒自动化测试系统的测试方法,应用于第一实施方式所述的基于Python语言的嵌入式软件黑盒自动化测试系统中,如图8所示,该方法包括:
[0083]801、按照测试需要生成满足在下位机上运行所需的测试脚本。
[0084]具体的,首先,测试人员根据被测系统的功能和性能编写测试用例和测试任务;上位机分别将测试用例和测试任务转换成满足在下位机运行所需的用例脚本和任务脚本。上位机人机界面提供了一套图形化向导界面,测试人员在上面可以根据被测嵌入式系统的功能和性能按照图形化向导的方式进行相应的测试用例和任务脚本的设计,测试用例和任务脚本设计好后存成XML格式的文本文件,而系统在后台根据相应的模板可以把其转换成可执行的Python脚本语言。
[0085]802、在上位机中创建与被测系统交联的系统的仿真模型。
[0086]测试人员通过分析与被测嵌入式系统交联的其它子系统,并根据其特性使用Matlab/Simulink对其进行仿真建模,设计好的仿真模型可以使用RT-LAB把其编译成可在下位机实时系统中运行的二进制文件。
[0087]803、通过上位机向下位机发送测试指令。
[0088]当准备好了仿真模型和测试用例、测试任务后,测试人员可以在上位机人机界面上通过选择相应的任务脚本进行执行,系统在后台把相应的仿真模型、测试用例和测试任务发送到下位机,由下位机把它们加载到内存中运行。
[0089]804、下位机接收上位机的测试指令,根据测试指令启动对应的仿真模型和测试脚本对被测系统进行测试,得到测试数据。
[0090]下位机接收到上位机的测试指令,根据测试指令启动相应的仿真模型和任务脚本,任务脚本根据其内部调度逻辑关系启动相应的用例脚本,用例脚本发送激励数据给仿真模型,由仿真模型再把相应的激励数据发送给被测嵌入式系统,被测嵌入式系统做出响应并把响应数据发送给仿真模型,用例脚本从仿真模型中获取响应数据与预期数据进行比较从而完成自动化测试,并把测试结果发送给上位机。
[0091]本发明实施方式相对于现有技术而言,在上位机中自动生成测试脚本,并在上位机中建立了与被测系统交联的系统的仿真模型,通过下位机将仿真模型与被测系统相连,在测试时,测试人员通过上位机向下位机发送测试指令,下位机接收到测试指令后,自动运行对应的仿真模型和脚本对被测系统进行测试,从而构建了一个闭环的全自动的黑盒测试系统。测试数据也能够实时的被发送给上位机展示给测试人员。将被测系统纳入到一个真实的系统环境中,测试结果真实、准确,使得测试人员从繁琐的手工测试中解放出来,提高了测试效率。
[0092]不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
[0093]本发明第五实施方式涉及一种嵌入式软件黑盒自动化测试方法,第五实施方式在第四实施方式的基础上做了进一步改进,改进之后能够实现测试报告自动生成的功能,如图8所示,该方法包括步骤901至步骤905,其中步骤901至步骤904与第五实施方式中的步骤801至步骤804对应相同,在此不做赘述。
[0094]步骤905为:上位机接收下位机发送的测试数据,并根据测试数据自动生成符合预设格式的测试报告。
[0095]上位机实时接收下位机在测试过程中的测试结果予以显示进行监控,在测试结束时,测试人员根据测试结果把其自动的转换成一定格式的测试报告。
[0096]与现有技术中测试人员还需要根据测试数据手工编写测试报告相比,在一定程度上提高了工作效率,也提高了测试人员的工作积极性。
[0097]由于第三实施方式与本实施方式相互对应,因此本实施方式可与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然有效,在第三实施方式中所能达到的技术效果在本实施方式中也同样可以实现,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第三实施方式中。
[0098]需要说明的是,本发明中的测试系统及测试方法适用于任意通过各种总线或IO接口与其它子系统进行通讯的被测嵌入式系统。
[0099]值得一提的是,关于方法的实施方式中所涉及到的具体的工作原理可以参考系统实施例中的叙述,本发明在此不再赘述。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的模块引入,但这并不表明本实施方式中不存在其它的模块。
[0100]本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
[0101]上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
【权利要求】
1.一种嵌入式软件黑盒自动化测试系统,包含上位机、下位机及被测系统,其特征在于, 所述上位机用于自动生成测试脚本,建立与被测系统交联的系统的仿真模型,通过所述下位机将所述仿真模型与所述被测系统连接起来,在接收到测试指令后,将与所述测试指令对应的测试脚本调用至所述下位机; 所述下位机用于根据所述测试脚本对所述被测系统进行测试,并将所述被测系统的测试数据发回给所述上位机。
2.根据权利要求1所述的嵌入式软件黑盒自动化测试系统,其特征在于,所述上位机包含人机交互模块、仿真建模模块及仿真管理模块; 所述人机交互模块用于将测试人员编写的测试任务及测试用例转换成满足预设条件的脚本、向所述被测系统发送测试指令及分析所述被测系统返回的测试数据; 所述仿真建模模块用于建立与所述被测系统交联的系统的仿真模型; 所述仿真管理模块用于将所述仿真模型编译成满足在所述下位机上运行的文件并控制所述仿真模型的运行。
3.根据权利要求2中任一项所述的嵌入式软件黑盒自动化测试系统,其特征在于,所述人机交互模块包含以下子模块: 第一转换子模块, 用于自动将所述测试任务转换成满足在所述下位机上运行所需的任务脚本; 第二转换子模块,用于自动将所述测试用例转换成满足在所述下位机上运行所需的用例脚本; 上位机通讯子模块,用于所述上位机和所述下位机进行通讯。
4.根据权利要求3所述的嵌入式软件黑盒自动化测试系统,其特征在于,所述人机交互模块还包含测试报告生成子模块,所述测试报告生成子模块用于根据所述测试数据自动生成符合预设格式的测试报告。
5.根据权利要求1所述的嵌入式软件黑盒自动化测试系统,其特征在于,所述下位机包含: 自动测试内核,用于提供加载及运行满足在所述下位机运行所需的脚本语言的执行环境; 实时仿真内核,用于提供加载及运行所述仿真模型的执行环境; 异步程序模块,用于在所述测试脚本和所述仿真模型之间传输激励数据和响应数据; 驱动模块,用于所述仿真模型和所述被测系统进行通讯; 下位机通讯模块,用于所述下位机和所述上位机进行通讯。
6.根据权利要求1所述的嵌入式软件黑盒自动化测试系统,其特征在于,所述上位机的操作系统为视窗Windows,所述下位机的操作系统为红帽RedHat或实时操作系统QNX。
7.—种如权利要求1所述的嵌入式软件黑盒自动化测试系统中的测试方法,其特征在于,包含以下步骤: 按照测试需要生成满足在所述下位机上运行所需的测试脚本; 在所述上位机中创建与所述被测系统交联的系统的仿真模型; 通过所述上位机向所述下位机发送测试指令;所述下位机接收所述上位机的测试指令,根据所述测试指令启动对应的仿真模型和测试脚本对所述被测系统进行测试,得到所述测试数据。
8.根据权利要求7所述的测试方法,其特征在于,所述按照测试需要生成满足在所述下位机上运行所需的测试脚本包括: 测试人员根据所述被测系统的功能和性能编写测试用例和测试任务; 所述上位机分别将所述测试用例和所述测试任务转换成满足在所述下位机运行所需的用例脚本和任务脚本。
9.根据权利要求7所述的测试方法,其特征在于,在得到所述测试数据之后,所述方法还包括: 所述上位机接收所述下位机发送的测试数据,并根据所述测试数据自动生成符合预设格式的测试报告。
10.根据权利要求7所述的测试方法,其特征在于,与所述被测系统交联的系统的仿真模型是通过矩阵实验室Matla b或可视化仿真工具Simulink进行仿真建模得到的。
【文档编号】G06F11/36GK103995777SQ201410234262
【公开日】2014年8月20日 申请日期:2014年5月29日 优先权日:2014年5月29日
【发明者】李胜, 夏佳佳 申请人:上海科梁信息工程有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1