本发明专利技术适用于软件测试领域,提供了一种基于嵌入式软件的测试分析系统和方法,该方法包括以下步骤:对经过编译器预编译的源代码进行插桩;根据所述预编译的源代码的插桩结果生成插桩标识数据库;监控并采集目标板上可执行目标代码的运行结果,对所述可执行目标代码的运行结果进行处理生成测试数据,所述可执行目标代码由插桩后的源代码经过所述编译器编译、链接生成;对所述插桩标识数据库和所述测试数据进行关联对比和分析,得到测试分析结果。本发明专利技术较好的解决了纯软件测试工具的存在的膨胀率过高等问题,且测试分析对象多样化。
【技术实现步骤摘要】
本专利技术属于软件测试领域,尤其涉及一种基于嵌入式软件的测试分析方法及系统。
技术介绍
随着计算机硬件技术的进步和元件质量逐步提高,元件的集成量也大大增加,从而使嵌入式设备的硬件性能得到了极大的提高;与此同时,通过采用成熟的商用嵌入式操作系统,使整个系统运行在一个高性能的、可靠的软件平台上,为实现各种大型的复杂的应用打下了良好的基础。面对系统复杂性的增加,自然需要功能强大、性能稳定的嵌入式应用软件与之相适应。所以,在嵌入系统开发中软件的代码量也越来越大,电子类产品的代码量以每两年就翻一翻的速度增长。同时,系统又要求应用要精简高效、稳定可靠,这使得软件的开发在整个系统开发中所占的重要性越来越高,开发时间也越来越长,软件的质量对产品的最终质量起到了决定性的作用。因此,迫切需要一种工具能够在软件开发的单板阶段、 集成阶段、系统阶段等各阶段,对嵌入式系统的软件进行实时在线的测试与分析,以保证系统的性能和稳定可靠性。市面上流行的测试工具大致分为普通纯软件的测试工具和纯硬件的测试工具。其中,普通纯软件的测试工具采用的是软件打点技术,即在被测代码中插入一些函数,主要在函数的入口、出口处,以及分支等地,插入特定的函数,以便计算函数执行的时间,利用这些函数来实现测试数据的生成,同时将测试数据送到目标板系统的共享内存中。并在目标系统中运行一个预处理任务,完成这些测试数据的预处理,然后将处理后的数据,通过目标机的网口或串口上送回到主机上,进行后续的分析。通过这个过程,测试者得以知道程序当前的运行状态。从此分析可知,纯软件的测试工具,需借助于用户的目标处理器来完成,即需要占用目标板上的资源。同时,纯软件的测试工具的测试原理,有两个必然存在的特点——插桩函数和预处理任务。分析由于插入了插桩函数和预处理任务的存在,使系统的代码增大, 更严重的是这些代码会对系统的运行效率有很大的影响(超过50% )。同时,函数本身要有它的实现过程,它要完成数据的生成和暂存,而且这些函数在它的实现过程中,还可能被其他优先级更高的中断程序所中断。预处理任务需要占用目标系统CPU处理时间、共享内存和通信通道完成数据的处理、数据的上送。由于这些弊端的存在,当采用纯软件测试工具对目标系统进行测试时,用户目标系统是在一种不真实的环境下运行的,我们所捕获的数据也是不够精确的。采用纯软件的测试工具有以下不足缺陷1 插入的是函数,本身要有实现过程,同时需要完成测试数据的生成和暂存,而且实现过程中,还易被其他优先级更高的中断程序所中断。缺陷2 做覆盖率分析的时候,因为要大量打点,而打点过多就会影响系统的运行,所以只能做单元覆盖率分析且单元的程序量不能太大。缺陷3 没有对内存分配进行分析和检查的能力。纯硬件测试工具以逻辑分析仪为例,逻辑分析仪通过双端口标志寄存器,当代码执行时,双端口标志寄存器同时对执行的代码置1,通过对代码是否置1,来判断程序当前运行的状况。分析当系统打开缓存(CACHE)时,取一条指令则对此代码置1。而这条指令并不一定执行。采用纯硬件的测试工具有以下不足缺陷1 当CACHE打开我们会采用指令预取技术,从外存中读取一段代码到一级 CACHE中,这时逻辑分析仪就会报告这些代码已经被执行了,但实际上被送到CACHE中的代码可能根本没有被命中。为了避免这种误差必须把CACHE关闭掉,而CACHE关掉就不是系统真实的运行环境了,有时甚至会由于CACHE关闭而导致系统无法正常运行。缺陷2 没有对内存分配进行分析和检查的能力。综上,现有技术通过软件或硬件测试工具进行嵌入式软件测试时,存在着代码膨胀率过高、容易被中断,占有的硬件板资源较多,测试精度和准确率不高,测试分析对象不够多样化等等的问题。
技术实现思路
本专利技术实施例的目的在于提供一种基于嵌入式软件的测试分析方法,旨在解决现有技术进行嵌入式软件测试分析时,膨胀率过高,容易被中断,占有的硬件板资源较多,测试精度和准确率不高,测试分析对象不够多样化的问题。本专利技术实施例是这样实现的,一种基于嵌入式软件的测试分析方法,包括以下步骤对经过编译器预编译的源代码进行插桩;根据所述预编译的源代码的插桩结果生成插桩标识数据库;监控并采集目标板上可执行目标代码的运行结果,对所述可执行目标代码的运行结果进行处理生成测试数据,所述可执行目标代码由插桩后的源代码经过所述编译器编译、链接生成;对所述插桩标识数据库和所述测试数据进行关联对比和分析,得到测试分析结果。进一步地,所述对源代码进行插桩的步骤具体为确定插桩位置和插桩内容,根据所述插桩位置在完成预编译的源代码中插入插桩内容;所述插桩位置包括至少一个插桩点,所述插桩内容为赋值语句,所述根据所述预编译的源代码的插桩结果生成插桩标识数据库的步骤具体为根据所述插桩点和赋值语句生成对应的插桩标识信息;根据所述插标识信息生成插桩标识数据库。进一步地,所述监控并采集所述目标板上所述可执行目标代码的运行结果步骤具体为当监控到所述目标板上的信号时,通过捕获所述目标板可执行目标代码的运行结果并保存;所述对可执行目标代码的运行结果进行处理生成测试数据的步骤具体为对所述可执行目标代码的运行结果进行保存,预处理,生成测试数据上传。进一步地,所述插桩内容为赋值语句。进一步地,当所述源代码为程序文件时,所述程序文件至少为一个,程序文件为多个时程序文件的保存路径至少为一个;所述插桩标识信息包括覆盖率标识信息、内存标识信息、代码流标识信息、测试报告标识信息;所述测试分析结果包括以下内容覆盖率分析结果、内存调用信息、代码流跟踪结果、测试报告。本专利技术实施例的另一目的在于提供基于嵌入式软件的测试分析系统,包括插桩器,用于对经过编译器预编译的源代码进行插桩;插桩标识数据库生成单元,用于根据所述插桩器对所述预编译的源代码的插桩结果生成插桩标识数据库;软件探针及采集单元,用于从目标板上监控并采集可执行目标代码的运行结果, 对所述可执行目标代码的运行结果进行处理生成测试数据并保存,所述可执行目标代码由插桩后的源代码经过所述编译器编译、链接生成;结果分析器,根据所述插桩标识数据库生成单元生成的插桩标识数据库和软件探针及采集单元保存的测试数据对源代码的测试结果进行关联对比和分析,得到测试分析结果。进一步地,所述插桩标识数据库包括标识信息,所述标识信息包括覆盖率标识信息、内存标识信息、代码流标识信息、测试报告标识信息,所述测试分析结果包括以下内容 覆盖率分析结果、内存调用信息、代码流跟踪结果、测试报告。进一步地,所述插桩器进一步包括驱动模块,用于调用所述编译器进行编译处理;执行模块,用于确定插桩位置和插桩内容,根据所述插桩位置在所述编译器完成预编译的源代码中插入插桩内容;所述插桩位置包括至少一个插桩点,所述插桩内容为赋值语句,所述插桩标识数据库生成单元进一步包括第一处理模块,根据所述执行模块确定的插桩位置和插值内容生成对应的插桩标识信息;第二处理模块,根据所述第一处理模块生成的插桩标识信息生成插桩标识数据库。进一步地,所述软件探针及采集单元进一步包括监控模块,用于监控所述目标板的信号;采集模块,用于在所述监控模块监控到所述目标板的信号时,捕获所述目标板上可执行目标代码的运行结果并保存。进一步地,所述当所述源代码为程序文件时,所本文档来自技高网...
【技术保护点】
1.一种基于嵌入式软件的测试分析方法,包括以下步骤:对经过编译器预编译的源代码进行插桩;根据所述预编译的源代码的插桩结果生成插桩标识数据库;监控并采集目标板上可执行目标代码的运行结果,对所述可执行目标代码的运行结果进行处理生成测试数据,所述可执行目标代码由插桩后的源代码经过所述编译器编译、链接生成;对所述插桩标识数据库和所述测试数据进行关联对比和分析,得到测试分析结果。
【技术特征摘要】
【专利技术属性】
技术研发人员:黄梅,张哲辉,
申请(专利权)人:惠州运通信息技术有限公司,
类型:发明
国别省市:44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。