嵌入式Linux产品的测试方法、装置及系统与流程

文档序号:11154864阅读:2467来源:国知局
嵌入式Linux产品的测试方法、装置及系统与制造工艺

本发明涉及嵌入式技术领域,特别是涉及一种嵌入式Linux产品的测试方法、装置及系统。



背景技术:

嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统。一个嵌入式系统装置一般都由嵌入式计算机系统和执行装置组成,嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、系统软件层和应用软件层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。

Linux为一种基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统,Linux产品即运行Linux操作系统的产品。一般情况下,在嵌入式系统中,Linux产品的测试方法都是针对特定平台的特定硬件进行测试,对于一个拥有多种外设设备的嵌入式Linux产品来说,多个硬件设备就有多个对应的测试程序,需要分模块多次测试及控制。比如要测试某产品的LED和USB功能,两个测试程序只能分别地单独运行,并且只能按照固定的执行顺序逐项进行测试。然而嵌入式产品正常工作时都是多组硬件模块同时运行的,因此现有的嵌入式Linux产品测试方法无法排除硬件模块之间的相互干扰。



技术实现要素:

基于此,本发明实施例提供了嵌入式Linux产品的测试方法、装置及系统,能够有效测试嵌入式Linux产品中各个硬件模块间的相互影响。

本发明一方面提供嵌入式Linux产品的测试方法,包括:

检测到嵌入式Linux产品的系统启动,启动预设的服务器程序,通过所述服务器程序扫描预设的目录;所述目录下包含有预设的所述嵌入式Linux产品中各待测硬件设备对应的测试模块;

加载所述目录下的全部测试模块,并分别为各个测试模块分配一线程;

启动各测试模块对应的线程,以多线程方式对各待测硬件设备进行并发测试。

本发明另一方面提供一种嵌入式Linux产品的测试装置,包括:

扫描模块,用于检测到嵌入式Linux产品的系统启动,启动预设的服务器程序,通过所述服务器程序扫描预设的目录;所述目录下包含有预设的所述嵌入式Linux产品中各待测硬件设备对应的测试模块;

线程分配模块,用于加载所述目录下的全部测试模块,并分别为各个测试模块分配一线程;

测试控制模块,用于启动各测试模块对应的线程,以多线程方式对各待测硬件设备进行并发测试。

一种嵌入式Linux产品的测试系统,包括:测试服务器和测试模块管理单元,所述测试服务器和所述测试模块管理单元之间通过网络socket进行信息交换;

所述测试模块管理单元中包含有预设的所述嵌入式Linux产品中各待测硬件设备对应的测试模块;

所述测试服务器,用于若检测到嵌入式Linux产品的系统启动,启动预设的服务器程序,通过所述服务器程序扫描所述测试模块管理单元中的全部测试模块,并分别为各个测试模块分配一线程;以及用于启动各测试模块对应的线程,以多线程方式对各待测硬件设备进行并发测试。

基于上述实施例提供的嵌入式Linux产品的测试方法、装置及系统,在检测到嵌入式Linux产品的系统启动,启动预设的服务器程序,通过所述服务器程序扫描预设的目录;所述目录下包含有预设的所述嵌入式Linux产品中各待测硬件设备对应的测试模块;加载所述目录下的全部测试模块,并分别为各个测试模块分配一线程;启动各测试模块对应的线程,以多线程方式对各待测硬件设备进行并发测试,因此能更好地模拟产品的正常使用状态,有效地测试出各硬件设备间的耦合性,排除产品故障;并且与传统的测试方法相比,还增加了测试的灵活性,节省大量的测试时间。

附图说明

图1为一实施例的嵌入式Linux产品的测试方法的示意性流程图;

图2为一实施例的嵌入式Linux产品的测试方法的原理示意图;

图3为另一实施例的嵌入式Linux产品的测试方法的原理示意图

图4为一实施例的嵌入式Linux产品的测试装置的示意性结构图;

图5为一实施例的嵌入式Linux产品的测试系统的测试原理示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1为一实施例的嵌入式Linux产品的测试方法的示意性流程图;如图1所示,本实施例中的嵌入式Linux产品的测试方法包括步骤:

S11,检测到嵌入式Linux产品的系统启动,启动预设的服务器程序,通过所述服务器程序扫描预设的目录;所述目录下包含有预设的所述嵌入式Linux产品中各待测硬件设备对应的测试模块。

在一优选实施例中,在步骤S11之前,还包括以下步骤:获取待测硬件设备,预设各待测硬件设备对应的测试模块,将全部测试模块统一存放到一设定目录下。本实施例中,预先把每个待测硬件设备的测试程序设置为一个独立模块,将这些测试模块放在一个单独的目录下,通过将测试程序模块化,可以根增强测试的灵活性。

本实施例中每个测试模块中测试程序都包括初始化、测试执行、执行结束三个阶段。

S12,加载所述目录下的全部测试模块,并分别为各个测试模块分配一线程;

每次当Linux系统启动时,首先启动测试服务器,测试服务器中的服务器程序扫描对应目录下的测试模块并进行加载,并给各个测试模块分配一条线程任务。与进程方式相比,线程能节省系统资源。

在一优选实施例中,如图2所示,加载所述目录下的全部测试模块,并分别为各个测试模块分配一线程之后,先对各个测试模块中的测试程序进行初始化,初始化后控制各个测试模块对应的线程进入阻塞状态,当需启动对应的测试模块进行测试时,才可知对应的线程进入执行状态。

S13,启动各测试模块对应的线程,以多线程方式对各待测硬件设备进行并发测试。

本实施例中,可同时启动多线程,使得多个测试模块中的测试程序同时执行,每个测试模块各用一个线程,根据不同的时间片去执行各自的初始化、执行和结束操作。由于产品中的若干待测硬件设备可以同时处于工作状态,因此可有效测试出硬件设备之间的相互影响。

在一优选实施例中,参考图3所示,在启动各测试模块对应的线程之后,还将接收各测试模块返回的测试结果信息并进行显示,各测试模块的测试程序在执行结束时,返回对应的测试结果信息。

优选的,继续参考图3,采用网页形式对测试模块返回的测试结果信息进行显示。用户的所有操作均在网页上进行,并直观显示测试结果,简化了操作;通过网页框架还可以直接移植到其他Linux嵌入式平台,用户无需了解网页相关的知识,只需要编写简单的测试模块即可。

在一优选实施例中,还可从测试模块返回的测试结果信息中识别出测试异常信息,将所述测试异常信息存储到预设的异常记录文件,例如得到对应的log文件。由此可对测试出的错误状态log信息及时保存和查看,每次测试生成一个错误信息文件。

本实施例中,各测试模块的属性信息包括:单项单次测试、单次测试或者循环测试。其中单项单次测试针对的是蜂鸣器、LED、触摸屏等需要用户主观判断的硬件设备,对于这些硬件设备不适于采用连续的循环测试,为了避免用户在循环测试中过于频繁地“确认”这类硬件设备功能的完整性,可为此类设备设定了单项单次测试模式,即在测试中会弹出特定的确认信息,需要用户主观地判断测试现象,这种单项单次测试模式不能切换到多线程的循环测试中,即不会将该测试模块加入多线程测试,其屏蔽模式切换指令,且有独立的判断显示逻辑。若测试模块的属性信息为单次测试,则也不会将该测试模块加入多线程测试,但是用户可以对其模式进行切换,即若接收到对此类测试模块属性的第一切换指令,则为该测试模块分配一线程;若测试模块的属性信息为循环测试,则控制该测试模块初始化,将该测试模块加入多线程测试;当然用户也可对此类测试模块的属性进行切换,即若接收到第二切换指令,则关闭该测试模式,并撤销该测试模块对应的线程。

单次测试和循环测试的具体说明如下:

单次测试是为了兼容传统的普通设备测试,这是一种简单的测试方法。上文提到,所有的测试模块都放在同一个目录下,当服务器程序扫描该目录并加载测试模块时,服务器程序会根据测试模块加载的顺序分配id,并把测试模块信息保存在系统内部的全局测试模块链表中,当测试人员对所有测试项进行测试时,测试程序会根据全局测试模块链表中的测试顺序,即加载模块的先后顺序,对每个测试模块按照“初始化->测试执行->执行结束”的测试流程进行测试,实际上各个测试程序是按顺序先后执行的,不会并发执行,故难以测试出硬件设备之间的相互影响。

循环测试是在多线程模式下进行的连续不断的测试。然而在外设设备辅助测试硬件欠缺,需要对同一产品在不同时刻使用不同的外设进行测试的情况下,为了减少测试人员在操作测试中的嵌入式产品时出错,加入了“模式转换”的控制方法,即在不重启测试产品系统的情况下,停止所有多线程测试后,通过把应当需要进行单次测试的测试项的执行模式转为单次测试的测试项,使得该测试项从多线程循环测试中“剔除”,避免测试出错;当条件允许时再将对应测试模块“转换”成多线程循环测试项进行即可测试。同理,对于原本的单次测试项,当实际情况需要进行循环测试时,也可在不重启测试产品系统的情况下,停止所有多线程测试后,将对应的测试模块转换为循环测试,为其分配一线程即可。便于测试人员根据实际需求灵活调整测试策略。

相应的,在一优选实施例中,在分别为各个测试模块分配一线程之后,还包括:检测各测试模块的属性信息是否为循环测试,若否,删除该测试模块对应的线程。

上述实施例的嵌入式Linux产品的测试系统,采用“服务—模块”方式加载测试程序,把每个测试程序做成一个独立模块,这些测试模块会放在一个单独的目录下,每次系统启动时首先启动测试服务器,服务器程序再扫描对应目录下的测试模块进行加载,并给各个测试模块分配一条线程任务,与进程方式相比,线程能节省系统资源。

需要说明的是,对于前述的各方法实施例,为了简便描述,将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。此外,还可对上述实施例进行任意组合,得到其他的实施例。

基于与上述实施例中的嵌入式Linux产品的测试方法相同的思想,本发明还提供嵌入式Linux产品的测试装置,该装置可用于执行上述嵌入式Linux产品的测试方法。为了便于说明,嵌入式Linux产品的测试装置实施例的结构示意图中,仅仅示出了与本发明实施例相关的部分,本领域技术人员可以理解,图示结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

图4为本发明一实施例的嵌入式Linux产品的测试装置的示意性结构图;如图4所示,本实施例的嵌入式Linux产品的测试装置包括:扫描模块310、线程分配模块320以及测试控制模块330,各模块详述如下:

所述扫描模块310,用于检测到嵌入式Linux产品的系统启动,启动预设的服务器程序,通过所述服务器程序扫描预设的目录;所述目录下包含有预设的所述嵌入式Linux产品中各待测硬件设备对应的测试模块;

所述线程分配模块320,用于加载所述目录下的全部测试模块,并分别为各个测试模块分配一线程;

所述测试控制模块330,用于启动各测试模块对应的线程,以多线程方式对各待测硬件设备进行并发测试。

本发明还提供一种嵌入式Linux产品的测试系统,包括:测试服务器和测试模块管理单元,所述测试服务器和所述测试模块管理单元之间通过网络socket进行信息交换。其中,所述测试模块管理单元中包含有预设的所述嵌入式Linux产品中各待测硬件设备对应的测试模块;所述测试服务器,用于若检测到嵌入式Linux产品的系统启动,启动预设的服务器程序,通过所述服务器程序扫描所述测试模块管理单元中的全部测试模块,并分别为各个测试模块分配一线程;以及用于启动各测试模块对应的线程,以多线程方式对各待测硬件设备进行并发测试。

在一优选实施例中,参考图5所示,测试服务器与测试模块管理单元之间的通讯通过网络socket进行信息交换,测试服务器启动的时候建立了TCP/IP的socket服务,在加载模块的时候,测试服务器会把相关的socket信息传到测试模块上共同保存于全局的测试模块链表中,加载模块结束后,其控制由测试服务器中统一的测试控制模块去控制,测试控制模块会通过socket对测试模块管理单元中对应的测试模块发送单项单次测试、一键多项测试、循环测试、测试暂停、停止测试等指令信号,同时,测试模块管理单元中测试模块把执行过程中的测试状态(成功或失败)通过socket传到测试服务器,通过测试服务器进行网页显示。为了更好地追溯测试过程中硬件产生的问题,测试服务器中还添加了错误信息保存模块。例如,每次测试服务器启动时都会生成一个用于保存本次测试的错误信息的空log文件,而测试模块管理单元中每个测试模块都有“反馈问题”的能力,如果测试模块在运行过程中产生错误信息,测试模块管理单元将通过socket把该测试模块的错误信息返回到测试服务器,并写入到所述log 文件中,用户可通过服务器发起读取文件的指令,获取所述log文件中记录的信息,并将所述信息以网页形式进行显示。

本实施例的测试服务器中,控制模块和网页显示模块是基于开源的Web服务器—Goahead Webserver开发的,它是构建在设备管理框架之上的一种网络服务器,在Goahead上部署服务器框架,不需要额外地对网络服务器进行编程。

测试模块是与测试服务器相匹配的一种测试框架,能被测试服务器识别。测试服务器从网页上接受到相应命令后通过socket把相关的命令发送到测试模块管理单元中的测试模块,从测试模块处调用相应的操作函数。

在一优选实施例中,测试模块管理单元中各测试模块的接口信息如表1所示。

表1:

在上述实施例的嵌入式Linux产品的测试系统实施例中,测试模块管理单元中的每个测试模块中的测试程序都包括初始化、测试执行、执行结束三个阶段,且所述测试服务器和测试模块管理单元以及各测试模块之间也是相互独立的,即测试模块并不会影响测试服务器的运行,测试服务器扫描到对应的测试模块后,生成线程,加载测试模块并进行初始化,初始化后对应的线程会阻塞,等待测试模块管理单元进行控制。并且测试模块管理单元可以同时打开所有线程,让多个测试模块同时进入测试模式。使用这种方法测试,能更好地模拟产品的正常使用状态,有效地测试出各硬件设备间的耦合性,排除产品故障。与传统的测试方法相比,增加了测试的灵活性,节省大量的测试时间,增强测试效率。

需要说明的是,上述示例的嵌入式Linux产品的测试装置的实施方式中,各模块之间的信息交互、执行过程等内容,由于与本发明前述方法实施例基于同一构思,其带来的技术效果与本发明前述方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

此外,上述示例的嵌入式Linux产品的测试装置的实施方式中,各功能模块的逻辑划分仅是举例说明,实际应用中可以根据需要,例如出于相应硬件的配置要求或者软件的实现的便利考虑,将上述功能分配由不同的功能模块完成,即将所述嵌入式Linux产品的测试装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。其中各功能模既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,作为独立的产品销售或使用。所述程序在执行时,可执行如上述各方法的实施例的全部或部分步骤。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上所述实施例仅表达了本发明的几种实施方式,不能理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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