APP下载

嵌入计算机软件测试所面临的问题及对策探析

2017-10-19邓祥麒

中国科技博览 2017年35期
关键词:测试程序软件测试内存

邓祥麒

[摘 要]本文结合武控计算机软件自身的特点,研究分析了软件内存缺陷测试的问题,找到嵌入式武控计算机软件内存泄漏的出处且分析出原因,提出了解决之法。内存使用缺陷测试一般是通过工具软件或者其他测试手段对被测试程序进行分析,从而找到内存上正当使用的测试。正确、合理的实施内存使用缺陷测试,可以更加全面的对软件进行测试,从而提高软件的质量,大大缩短软件产品的发布周期。

[关键词]计算机;软件测试;内存;测试程序

中图分类号:TP311.5,TP304 文献标识码:A 文章编号:1009-914X(2017)35-0332-01

1 引言

本文是以研制的武控计算机软件为背景,武控计算机软件运行在加固计算机上,采用Compact PCI总线,采用Vxworks实时操作系统,以满足高实时性、高可靠性的要求。为了更加有效的、充分的完成武控计算机软件的测试,提高软件的质量,搭建一套独立的第三方武控计算机软件测试台是必不可少的。在该测试环境下输入测试用例,对武控计算机软件的功能需求、性能需求、接口需求、安全性需求、边界需求及系统工作余量需求等进行测试,同时可直接观察测试结果并且进行覆盖率分析,找出软件的各种BUG,进而避免当系统交付使用后由于潜在的BUG而造成频繁的软件维护。

从目前国内外的研究现状来看,对于嵌入式软件的测试工作,大部分集中在关注嵌入式软件的调试工作或者是软件测试的某些方面等,很少有全面的、系统的进行相关测试测试研究。主要研究了通用平台的软件测试技术方法。介绍了关于软件静态测试方面的研究成果等。目前国内外软件测试技术领域内的研究热点有嵌入式软件测试、面向对象软件测试、软件测试过程模型、集成测试、单元测试充分性标准、软件质量和复杂度度量、自动化测试数据生成、选择性回归测试技术、自动化测试工具开发和测试管理工具开发等。国外的科研机构与大学在软件测试领域的研究相对于国内的科研机构一直处于领先地位,例如George Mosan的研究方向是基于规范的测试自动生成与面向对象的测试技术研究;Carnegie Mellon大学则侧重于C/S系统测试技术和回归测试的研究;而NSTL主要从事测试规范和标准的制定。

2 解决嵌入式计算机软件内存泄漏分析

在嵌入式武控计算机软件中,运行的内存是有限的,内存泄漏将对系统产生影响,最坏的情况导致系统崩溃。导致内存泄漏的源代码检查,仅僅依靠人工检查的方式进行,不但工作量非常大,而且不能动态监视内存分配,所以测试不充分。借助测试工具监视系统运行中的内存动态分配和释放。解决嵌入式武控计算机软件的静态测试难题,静态测试是对源代码进行规则性、各个度量元检查,经过静态分析软件产生的分析,结果可能存在一些误差,需要结合人一毛进行进一步的分析与确认。测试人员在这个过程中不断的积累典型案例,总结经验,对代码检查单进行进一步的完善与改进。解决武控计算机软件中数学模型验证难题,数学模型的验证一直以来都是软件测试验证的难题,数学模型中大量的使用复杂的数学公式与数值计算,而且定义大量的全局与局部变量,如何保证这些复杂运算的正确性及变量使用的合理性,是数学模型验证急需解决的一个难题。

解决武控计算机软件覆盖率测试难题,嵌入式武控计算机系统要求是一个高一可靠性、高安全性的系统。为了能够保障系统的高质量,就要求测试必须充分。怎么能保证测试的充分性,测试用例的用例的执行,保证尽可能多的程序语句与分支被执行,即保证软件测试的覆盖率。尽可能保证所有的代码都被执行过,最大限度的发现潜藏在软件中的BUG。如果存在某些源代码的语句或分支未被执行,则就可能存在一定的风险。要分析确定测试用例注入完成后软件的覆盖率,就要通过覆盖率测试工具软件来完成。首先,覆盖率是通过对源代码进行插装来实现的,但是通过人工手动对其插装工作量非常大,而且可能存在疏漏,同时覆盖率分析工作也存在巨大的困难,怎样借助覆盖率测试工具来实现代码的自动插装和覆盖率分析是问题的关键。其次,由于武控计算机软件源代码在插桩后程序膨胀,有一可能导致编译报错,插桩后的程序无法下载执行,如何解决程序插桩后膨胀也能正常编译运行也是研制测试平台关键要解决的问题。

3 嵌入式计算机软件内存泄漏原因探析

嵌入式武控计算机软件作为一个嵌入式系统,木身资源有限,如果软件中存在内存泄漏,会严重影响系统的'HI:能,甚至于造成整个系统崩溃死机。目前在嵌入式系实现对内存的动态监视的工具软件很少,至少我部门在这方面目前还是没有配置。内存泄漏分析,一般意义上的内存泄漏为堆内存的泄露。何为堆内存,即为程序可以自主任意分配、使用及使用完成后必须释放的堆空间。程序一般使用标滩库函数从堆内存中申请空间,使用完成后,必须调用free等标标雕库函数来释放此空间块,否则这个堆内存空间将被以土操作锁住不能再被申请使用,则出现内存泄漏。从以上分析来看在面向嵌入式软件的系统平台中,内存泄漏的主要原因有以下两点:内存空间块分配使用之后,没有进行相对应的空间块回收工作;程序代码设计本身就存在问题,致使申请的内存空间块无法正常回收。

了解了内存泄漏的前因后果,则就会有方法对其进分析处理。首先要对内存的使用进行监视,但在什么时候对内存活动进行监视,如果监视时一间段太短、频率太高,然可以尽可能的发现内存泄漏,其会抢占过多的本就稀缺的系统资源,导致系统运行的不稳定;如果监视时间段太长,就不能及时的发现内存活动的异常。在嵌入式软件应用领域,由于各个具体软件应用平台与环境的不同,对内存使用也不尽相同。通常情况下使用以下4个条件作为内存泄漏监视的触发条件:

根据时间周期性地对内存活动进行监视。因为软件系统中申请的内存空间块一般都有一定的有效使用时间,此时间过后,就要求对申请的内存空间块进行释放。因此可把内存空间块的最大使用时间作为对内存活动监视的时间周期。根据申请的内存空间块的进程的有效性对内存活动进行监视。这是因为软件系统对于内存空间块的申请同进程息息相关,当申请内存空间块的进程失效时,系统应该要求此内存空间块被安全释放。因此在申请内存空间块的进程释放时对内存活动进行监视,也应该是一种恰当的时机。

4 内存泄漏监视的基本思路对策

此方法基本方法就是对被测试程序进行插桩。程序插桩是一个静态的过程,即在被测试程序中写入测试人员所需求的代码(但不影响被测试程序本身实现的功能),在程序运行时可以动态的收集测试人员所需的信息。所以不管在软件开发工作还是在软件测试工作中它都具有非常重要的地位。因此,内存泄漏监视算法的实现要解决程序插桩的两个关键性问题:插桩的内容,即写入什么代码。插桩的位置,即在程序的什么位置写入的代码。在实时嵌入式操作系统软件进行插桩,则要求插桩程序简洁精干,而且收集信息全。首先解决插桩内容问题。为了能够动态监视内存申请分配与释放情况,需要向被测试软件写入些内存跟踪代码。需要监视的具体内容包括申请内存空间块所在的文件、函数、行号、申请空间的大小、申请的时间、释放时间、分配信息。再解决插桩位置问题。因为要监视内存泄漏情况,所以插桩的位置就应该在每个内存空间块申请和释放的地方。这样才‘能保证收集到的内存人工操作信息的全面性而且不会有多余监视操作。

参考文献

[1] “互联网+”背景下的软件测试课程教学体系构建[J].鞠小林,陈翔,文万志,张艳梅.计算机教育.2017(05).endprint

猜你喜欢

测试程序软件测试内存
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
基于OBE的软件测试课程教学改革探索
民用飞机喷气发动机排气物试验
“春夏秋冬”的内存
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
手机APP交互界面人因适合性测试程序的设计与实现
中心主导制订的《VHF/UHF频率范围内测向系统测向灵敏度的测试程序》等两项国际标准在ITU官网正式发布
软件测试工程化模型及应用研究
电气自动化控制设备可靠性测试探讨