APP下载

基于嵌入式计算机软件测试关键性技术研究

2021-08-31姜琼妃

电子测试 2021年17期
关键词:宿主机嵌入式软件软件测试

姜琼妃

(中国船舶重工集团公司第七一五研究所,浙江杭州,310023)

0 引言

嵌入式计算机系统是由移动通信模块、应用软件、数据库以及操作系统等共同构成,具体应用过程中,可将目标机与宿主机通过嵌入的方式联结起来,具有良好的兼容性、稳定性和可靠性,且适用性也比较强,可应用于OS-9、Linux以及Windows等,在软件测试工作中发挥着关键性的作用,值得推广。

1 嵌入式计算机软件测试概述

软件测试主要目的是为了对代码中的错误进行捕捉,并对其进行执行和分析,通过这一测试,能够大幅度提高软件的可靠性和稳定性,为产品设计提供参考和依据[1]。相比于其他的软件,嵌入式软件的专用性较强,因而必须要在特定的硬件平台上进行。嵌入式软件在运行以及开发的过程中常呈现出分离交叉的特征,需要在宿主机上对相关开发工具进行编译,交叉开放方式具体如下图1。

图1 嵌入式交叉开放方式

此外,在处理器体系结构、操作系统等方面,目标机和宿主机常存在差异性,从而也决定了嵌入式软件开发的复杂性,这里所提到的宿主机主要是指通用性计算机,具体如工作站、微机等等,而目标机的主要功能在于严格区分嵌入式系统的宿主机。就目前实际发展现状来看,嵌入式计算机软件测试技术已经被广泛应用于自动化、空导弹、工业等多个领域之中,随着技术应用范围的不断扩大,其测试功能也会逐渐增多[2]。

2 计算机嵌入式软件测试重点和难点

在嵌入式软件系统测试和开发过程中,由于嵌入式底层驱动程序和网络操作系统与应用程序间界限不清晰,因此只有对被测软件运行环境进行精准模拟,才能顺利完成故障检测和程序测试工作。

首先,在网络系统当中,嵌入式软件主要是面向特定任务进行算法执行和资源分配,因此通常都会被加载至计算机系统上,对相关测试项目需要完全确定。但要注意的问题是,嵌入式软件自身算法继承性差、复杂程度高,在进行任务处理的过程中,很容易出现资源消耗量大、测试时间长的问题,因此难免会对软件分析测试产生影响。

其次,嵌入式软件测试难度大,规模小,正常情况下,嵌入式软件开发都保持在几百MB之内,同时还要围绕测试程序以及应用驱动程序等,对相关测试软件作出响应,并进行全面分析,但在这一过程中,却很容易因为需要测试的项目过多而出现软件错误甚至是死机的问题。

最后,嵌入式软件的数据输出与输入情况比较复杂。在计算机软件测试过程中,传输数据信号一般需要涉及到很多专业的交联设备,在嵌入式软件设施和硬件辅助设备没能完全准备好的情况下,被测试软件通常很难捕获输出和输入测试用例,因此,最终所获得的测试结果也会有失精准性和客观性。

3 宿主机软件测试关键性技术

3.1 静态测试技术

静态测试技术需要严格按照特定的逻辑关系和软件编译标准,对嵌入式计算机软件中的错误代码信息进行识别,即便是功能复杂的嵌入式计算机也同样适用,它能够在第一时间发现问题,并对错误代码进行定位,其特征分析如下:第一,审查体系比较规范,随着科学技术的不断发展,静态测试技术的代码审查功能越来越强大,这与强大的宿主机扫描功能相关,宿主机通过对静态测试技术进行应用,能够审查和验证计算机软件代码,审查内容主要包括逻辑关系、语法、词法等等,可在第一时间发现代码问题,使软件测试的规范性和可靠性得到了大幅度提升[3]。第二,软件测试速快,相比于传统的动态测试技术和人工测试技术,静态测试技术的软件测试速度较快,每秒钟能够扫描代码上万行,因而可在较短的时间内完成受试计算机的扫描工作,目前在代码行数多、功能复杂的计算机软件中应用十分广泛。第三,较高的误报率,静态测试技术主要是通过扫描的方式对计算机软件进行测试,因此很容易受到算法、语法词义等因素的影响,从而出现误报率升高的问题[4]。

静态测试技术运行的关键性技术包括代码控制流分析技术、代码污点分析技术、代码语法分析技术、代码词法分析技术等等,具体分析如下:代码词法分析技术,通过静态测试技术可对计算机软件源代码逐字符、逐行的扫描,在扫描过程中,以代码词法基本逻辑为参照进行对比,之后对错误代码的位置进行精准定位。代码词语分析技术,通过该技术能够判断代码是否与计算逻辑结构要求相符合,保证上下行代码之间逻辑关系的正确性,借助Yacc将语法错误的代码找出。代码控制流分析技术,通过静态测试技术可对计算机软件的目标机、宿主机进行全方位扫描,并对计算机软件代码节点进行确定,之后根据这些节点对控制流路径进行检测,及时找出控制流图中的错误代码。代码污点分析技术,污点分析技术主要目的是为了找出计算机软件的薄弱点,并对那些易成为软件漏洞的代码找出,以免遭受黑客的侵害和攻击,在第一时间采取加强保护措施[5]。

静态测试技术在实施的过程中,主要就是借助嵌入式软件的自动扫描功能,对存在对于不同网络软件中的运行逻辑漏洞、代码错误等扫描出来,与传统的人工测试相比工作效率更高,操作过程成也比较便捷。但要注意的问题是,该技术在实施的过程中,很容易出现语法测试、词法测试的误报问题,在对宿主计算机网络软件测试时,必须要合理设置软件代码测试节点,之后再进行扫描,以便于在第一时间发现软件代码漏洞和错误问题。

3.2 动态测试技术

动态测试技术运行主要应用了如下关键性技术:第一,单元测试技术,主要检测受测计算机软件结构,以便于及时发现各基本单元、程序路径的问题。第二,集成测试技术,它主要是在完成单元测试之后开展目的在于确保计算软件各部分之间联系正确,及时找出连接端口、逻辑路径等方面的问题。第三,系统测试技术,需要全面测试计算机软件,具体内容包括软件输入和输出、逻辑路径、系统结构以及软件功能等等。开展系统测试,通常对工作人员的实践经验和业务水平具有较高要求。第四,验收测试,软件系统测试完成之后,还需要对其进行验收测试,主要就是通过实际应用的方式测试软件各个功能能否正常应用,以确保软件处于最佳工作状态。通过动态测试技术,能够对嵌入式计算机软件进行更加实际和全面的检测,但要想最大限度发挥出该技术应用价值,通常对工作人员专业素质具有较高要求,同时还需要对测试过程进行全面细化,这样才能充分发挥出动态测试技术的作用和价值。

动态测试技术在实施的过程中,通过上述提到的集成测试技术、单元测试技术、系统测试技术等,能够对相关应用程序软件执行路径以及运行逻辑等进行测试,之后通过符号、字符等指令的离散测试,对计算机软件逻辑错误以及开发结构等进行审查。

3.3 仿真机测试技术

在宿主机上开展仿真测试,即便是在复杂的数据环境中,依然能够确保软件测试的精准性。通过仿真测试技术的应用,还能模拟测试复杂计算机软件代码,将一些无法直接进行测试的软件代码置于严格的测试环境中开展模拟测试,这样就能确保测试数据的真实性[6]。计算机软件的工程测试和数据传输,从本质上来看,就是对软件代码逻辑实现以及排列方式的测试。基于嵌入式技术的仿真监测,能够将传统软件代码测试的局限性打破,之后结合计算机系统中不断发展和变化的代码数据,对代码资源进行仿真模拟,与此同时,还能对这些数据进行统一化管理,使软件的开发者和检测者可以更加清晰、直观的看到软件功能实现以及逻辑执行的过程。

4 目标机软件测试关键性技术

目标机测试属于计算机嵌入式软件测试的终极环节,具体流程包括内存分析、故障注入以及性能分析等环节。在计算机被测试软件还未能正式工作的情况下,测试数据会从宿主机发出并到达目标机,通过目标机软件测试技术,能够快速检测软件模块的功能实现和数据处理,即故障注入测试、目标机软件运行测试的等。在内存分析环节,主要就是对系统内存资源的调用和分配情况进行分析,选取某一特定时间段,通过优化运行内存,确保计算软件的流程性。

4.1 故障注入技术

在嵌入式计算机软件测试的过程中,宿主机主要是通过移动通信技术将相关测试数据发送至目标机。为保障测试的准确性,通常可在目标机中输入一些故障,之后针对个别模块展开测试,例如,可针对计算软件的信息处理功能、图片识别功能进行常见故障分析,在目标机中观察故障信息的运行状况,同时进行妥善记录。

4.2 内存分析技术

为了能够大量、快速的处理信息,在嵌入式计算机软件测试过程中,通常会对计算机硬件提出更高要求,因此相关工作人员必须要重点考虑这一问题,实践过程中,必须要对计算机软件内存进行严格分析,包括其对于内存的需求,以确保内存的合理调用和分配,避免产生内存不足、软件卡顿的问题,保证计算机软件运行的流畅性[7]。

4.3 性能分析技术

在目标机上开展性能分析技术,需要借助宿主机发送数据至目标机,之后再让受测嵌入式计算机软件在目标机上运行。通过这种方式,能够对计算机运行流畅度加以检验,观察嵌入式计算机在极限压力下的运行上限、常用功能的性能以及单位时间内软件处理信息的能力等,从多方面入手检验计算机软件的性能,并能在第一时间发现软件存在的问题,及时解决和调整。

5 结语

本文首先对嵌入式计算机软件测试进行了简要概述,之后分析了宿主机和目标机软件测试的关键性技术。总之,在嵌入式计算机软件测试工作中,只有将动态测试技术和静态测试技术进行联合应用,并确保测试环境的严苛性,才能保障测试数据的精准性,必要情况下,还需要仿真测试技术的支持和辅助,以实现对计算机软件的全面检测,从而能够在第一时间发现计算机软件中的错误代码,及时采取相应的强化保护措施,最大限度提高计算机软件开发质量。

猜你喜欢

宿主机嵌入式软件软件测试
基于OBE的软件测试课程教学改革探索
EXCEL和VBA实现软件测试记录管理
实时嵌入式软件的测试技术
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
关于软件测试技术应用与发展趋势研究
全景相机遥控器嵌入式软件V1.0 相关操作分析
嵌入式计算机软件测试关键技术的思考
软件测试工程化模型及应用研究
嵌入式计算机软件测试关键技术研究
航天嵌入式软件浮点运算误差分析与控制