嵌入式软件语句覆盖率测试插桩技术
- 格式:pdf
- 大小:401.07 KB
- 文档页数:4
基于多维度覆盖率的嵌入式软件测试分析方法软件程序规模与复杂程度的增长增加了软件应用的不确定性。
为有效保证软件质量,软件测试逐渐成为软件研发中成本最高的项目。
软件测试能力、测试效率及测试特点的动态跟踪与定量分析,以及软件测试的持续优化成为目前软件研发中最为迫切需要解决的问题。
目前软件测试的研究侧重于如何开展测试过程组织、具体测试方法等,测试评价主要围绕软件缺陷报告、缺陷跟踪与测试进度评价等方面,缺少对软件的动态跟踪及在线评价。
导致软件测试中经常出现测试过程按照测试计划开展,但由于测试用例较大导致测试执行有效性缺失的问题,很难在测试过程中发现测试软件薄弱点。
根据这一问题,提出基于多维度覆盖率的嵌入式软件测试分析方法。
多维度覆盖率的度量方法主要以各种覆盖率分别统计,充分度量测试软件,满足测试充分性原则的同时,综合利用多维度测试覆盖率动态变化特征,对测试方法与测试用例效果及薄弱点进行动态跟踪。
多维度覆盖指标以分支覆盖、条件覆盖、语句覆盖及c-use覆盖等十余种测试覆盖度量为指标,根据测试覆盖的不同,从多角度反映软件测试条件。
利用多维度覆盖率做出软件测试,试图从多方面阐述软件应用情况。
1 基于多维度覆盖率的嵌入式软件测试分析方法1.1 软件测试多维度覆盖率软件测试覆盖率作为度量软件测试程度的主要手段,其计算公式为覆盖率(1)式中:item为测试因子实例数。
根据式(1),若要对item覆盖情况进行计算,为从不同角度度量软件测试的充分程度,提出多维度测试覆盖指标,用以表示度量测试充分程度[7]。
根据覆盖率指标,提取其特征属性与度量参数,设覆盖率维度为m,则有m 种测试覆盖率[8]。
由于测试成本与时间的限制,软件测试通常无法达到全覆盖率,根据软件安全关键等级、测试覆盖率难易程度、测试阶段以及开发方法等[9],在软件测试中,当执行完第n item个测试用例后,为表现实际测试覆盖率所达到的期望值,当前满意度可表示为Sat j(m)=(C j(m)/C j)×100%.(2)式中:C j为软件测试覆盖率;C j(m)为当前测试覆盖率C j的当前值,且j=1,…,m。
嵌入式软件覆盖率测试的研究与应用作者:孙陇平来源:《现代电子技术》2014年第18期摘要:覆盖率测试是检验软件测试完整性、充分性的重要方式,这里介绍了覆盖率测试基础理论、覆盖率的测试类型、覆盖率测试工作流程、比较了覆盖率测试工具Bullseye Coverage、LDRA TestBed。
并通过LDRA Testbed测试工具对被测软件程序插装,分析插装程序输出的结果得到语句覆盖率、分支覆盖率等数据,以达到对软件问题的查找和对测试充分性、全面性的验证。
同时给出了Turbo C开发环境下DOS操作系统的嵌入式软件,利用LDRA Testbed进行覆盖率分析和通过查看未覆盖的代码定位软件问题、测试用例覆盖情况的详细步骤。
关键词:嵌入式软件;覆盖率测试; LDRA Testbed;测试方法中图分类号: TN911⁃34 文献标识码: A 文章编号: 1004⁃373X(2014)18⁃0067⁃03Research and application of embedded software coverage rate testingSUN Long⁃ping(Jiangsu Automation Research Institute, Lianyungang 222061, China)Abstract: Coverage testing is an important method to check software integrity and adequacy. This article introduces cover testing theories, testing methods, testing process and compares testing tools, Bullseye Coverage and LDRA TestBed Use testing tool,LDRA Testbed, to instrument tested program, analyze the output of instumentation software to get the data of Statement coverage and branch coverage, and find out the software int question, to check coverage testing adequacy and comprehensiveness. At the same time, it provides the following steps:Embedded software, which running under Turbo developement environment and DOS system, use LDRA Testbed to analyze software coverage, through viewing the code of uncovered prograss to position software problem and check testcase coverage.Keywords: embedded software; coverage rate testing; LDRA Testbed; testing method随着嵌入式设备在越来越多的领域中得到使用,与之相依附的嵌入式软件也得到了快速的发展。
2009年5月第35卷第5期北京航空航天大学学报Journal of Beijing University of Aer onautics and A str onautics M ay 2009Vol .35 No 15 收稿日期:2008208210 基金项目:国家自然科学基金资助项目(60633010) 作者简介:李跃飞(1984-),男,山西太原人,硕士生,yuefei_17@.飞行控制软件测试中的插桩技术李跃飞 郭君红 白成刚 蔡开元(北京航空航天大学自动化科学与电气工程学院,北京100191) 摘 要:插桩技术是软件测试中常用的关键技术之一.插桩技术应用在飞行控制软件测试中所遇到的一个严重的问题是其带来的额外开销将导致原程序的实时性下降甚至软件的失效.针对该问题,提出了一种基于布尔型存储数组的新的插桩方法.与传统方法相比,该方法优化了插桩的内容,降低了插桩对程序实时性的影响.搭建了一个仿真测试平台并以某型飞行控制软件为实验对象验证了该方法的有效性.实验结果表明该方法大大减少了插桩后程序的运行时间,保证了飞控软件的实时性要求.关 键 词:插桩;软件测试;飞行控制软件;实时性中图分类号:TP 311文献标识码:A 文章编号:100125965(2009)0520580204I n stru m en t a ti on i n fli ght 2con trol software testi n gL i Yuefei Guo Junhong Bai Chenggang Cai Kaiyuan(School of Aut omati on Science and Electrical Engineering,Beijing University of Aer onautics and A str onautics,Beijing 100191,China )Ab s trac t:I nstrumentati on is one of the i m portant techniques in the s oft w are testing .W hen instru menta 2ti on was app lied in the flight 2contr ol s oft w are testing,the real 2ti m e perfor mance of the original s oft w are be 2comes bad even lead t o failure of the s oft w are,due t o the extra s pending on the instrumentati ons .I n vie w of this p r oble m ,a ne w instru mentati on method which is based on the BOOL array used t o st orage the code inf or 2mati on was p resented .Co mpared with traditi onal methods,this ne w method not only op ti m izes the instrumen 2tati on contents but als o reduces the real 2ti m e influence of the instru mentati on on the original s oft w are .A si m u 2lati on test p latf or m was been set up and a certain type of flight contr ol s oft w are was used as the test object .Then,p lenty of ex peri m ents have been done t o de monstrate the effect of the ne w instru mentati on method .The result show that the method greatly reduces the run ti m e of the instru mented p r ogra m which t o ensure the real 2ti m e require ments of the flight 2contr ol s oft w are .Key wo rd s:instrumentati on;s oft w are testing;flight 2contr ol s oft w are;real 2ti m e 飞行控制软件(下文简称飞控软件)是飞行控制系统中最重要的部分之一,飞控软件的质量直接影响着飞机运行的安全和性能.对飞控软件进行严格的测试是保证其质量的必要手段.白盒测试是基于程序源代码级的测试,可以发现在黑盒测试中无法测出的逻辑问题.因此,目前在军工软件、航天航空软件、工业控制软件等具有高可靠性要求的软件领域都需要使用白盒测试的方法对软件进行完整详细的测试.覆盖率和性能是衡量软件质量的重要指标,也是白盒测试的主要内容[1].而程序插桩是实现覆盖率测试的一种重要方法.通过插桩对程序进行动态测试,可以获得程序的覆盖率、运行剖面等信息.插桩技术应用在一些结构简单的规模较小的软件的测试过程中对软件运行的性能的影响不大,但是当面临复杂的软件或恶劣的测试环境时,插桩技术对软件性能的影响将尤为突出[2].程序插桩应用在飞行控制系统这类实时性要求比较高的嵌入式软件测试中一个严重的问题是,由于程序插桩带来的额外开销将增加程序的运行时间,降低程序的实时性,甚至造成系统的失效.其实这个问题不只存在于实时系统中,对于普通软件来说,如果程序规模较大,逻辑复杂,它的插桩点必然很多,导致对软件性能的影响也是无法忍受的,只不过对于实时软件来说,影响要更严重一些.如何降低插桩对原程序运行造成的影响是一个很有意义的问题.目前国内外的一些研究人员已经在做这方面的研究与实验,也提出了一些优化插桩过程的方法,例如文献[3]提出的在可以良好分割的程序的插桩过程中使用探针优化器的方法;文献[4]中提出的在利用支配树的方法分析程序结构的基础上进行插桩优化的方法;文献[5]中提出的动态插桩技术.这些研究的对象都是普通软件,并没有考虑到飞控软件所具有的嵌入式特性和较强的信息交互的特点.本文首先分析了飞控软件的特点,介绍了程序插桩的基本概念.并针对飞控软件所具有的强实时性要求以及飞行控制系统资源相对短缺的特点,研究一种在测试飞控软件时适用的插桩方法.提出了一种基于布尔型信息存储数组的插桩方法,有效的降低了由于程序插桩对原程序的执行效率的影响.并通过进行实验对比的方式验证了该方法的可行性.1 飞行控制软件的特点分析飞行控制软件是典型的嵌入式实时软件,其具体的特性如下:1.1 实时性所谓实时性,即必须满足时间约束的特性.软件的实时性并不是要求处理速度特别的快,关键是准时和及时.对实时性软件而言,其正确性不仅由系统的功能和行为特性决定,还依赖于系统的时间特性.与普通软件相比,时间特性是决定实时软件质量的关键.而飞行控制系统是一个典型的硬实时系统,即处理请求的时间约束异常关键,只要没有满足时间的约束条件就认为系统是失败的.因此飞行控制系统对时间特性的要求很高. 1.2 嵌入特性嵌入式软件系统的一个突出特点在于嵌入式软件的开发环境和运行环境是不一致的.另外,一般的嵌入式系统还都存在资源短缺的问题.正是由于这些原因,给嵌入式软件的测试带来了很多问题.因为即使在宿主机环境下测试再充分,也不能说明在目标机环境下该软件运行不出问题.因而,嵌入式软件还面临着目标环境的测试[6].1.3 复杂性飞行控制软件作为飞行控制系统的核心,在强调安全性的同时,软件中存在大量错误处理与应用级的容错特性,使软件的复杂程度大大提高,其可测性也随之大大降低.软件的容错机制主要出现在例外事件处理、状态恢复、数据的边界值与意外数据处理等部分,在一般的测试过程中很少被执行.很多系统软件缺陷或硬件故障、操作失误等都被软件的大量容错机制所掩盖,导致测试过程中软件缺陷的传播、作用均难以跟踪定位.因此在对飞行控制软件的测试过程中进行覆盖测试是必不可少的.1.4 时序性飞控软件对系统的控制有很强的时序性.是有限状态机系统,即当前的输出控制不仅与当前的输入有关,而且和过去的输入和状态有关.在这样的情况下,系统的实时性达不到要求的话就可能导致一些严重的事故.2 插桩技术程序插桩(p r ogra m instrumentati on),由文献[7]于1978年首次提出.简单的说,插桩方法是借助向被测程序中插入操作来实现测试目的的方法.常常要在程序中插入一些打印语句,其目的在于,希望执行程序时,打印出测试者最为关心的信息.通过这些信息进一步了解执行过程中程序的一些动态特性[7].例如,程序的实际执行路径,特定变量在特定时刻的取值等.程序插桩技术能够按照用户的要求,获取程序的各种信息,称为测试工作的有效手段.在整个这个过程中,插桩的过程是静态的,而数据的收集过程是动态的.基于插桩的动态测试主要有以下3步:①对程序进行静态分析,找出相应的插桩点并插入适当的桩函数;②编译执行插桩后的程序,输出预期的动态测试数据;③对运行时得到的动态数据进行分析计算,例如程序的覆盖率等.程序插桩在实践中的应用非常广泛,主要可以应用在以下这些方面:测试覆盖率和测试用例的有效性度量;断言检测;数据流异常检测;内存使用错误检测;路径智能分解.插桩的关键技术包括确定要获取的信息内容、具体的插桩点位置、桩函数的设计和捕获数据的编码与解码.在软件工程的测试中有一颇为实用的覆盖准则,即当语句覆盖率100%,分支覆盖率≥85%时,认为测试是理想的,软件错误可查出近90%,日本日立公司185 第5期 李跃飞等:飞行控制软件测试中的插桩技术和美国空军均采用此标准.程序插桩是一个联系静态分析与动态测试的关键纽带,在软件测试中占有非常重要的地位.因此,程序插桩在飞控软件这类高可靠性的软件测试过程中是必不可少的.3 飞控软件测试的插桩方法对源程序进行程序插桩必然会对程序的运行造成一定的影响.首先,添加桩程序造成了代码膨胀,增大了执行程序的规模,插桩程序的运行本身有一定的时间消耗;同时插桩程序捕获的数据信息要存入缓存区,对系统的内存也进行了一些消耗,也会影响到系统的性能.这些因素直接导致了程序运行时间的增长.而实时性是实时软件的最重要的特征,对实时软件进行插桩测试则很可能导致软件的失效,那么这样的测试是失败的.所以如何降低程序插桩导致的源程序执行效率的影响,研究一种在实时软件测试中适用的插桩方法是必要的.降低插桩对程序性能的影响,主要可以从以下两个方面着手:优化插桩点的个数;优化桩函数的内容.文献[3-5]中的所提出的方法均是对插桩点的位置和数量进行优化,而本文提出一种在对航天嵌入式软件这一类信息交互量比较大的实时软件进行软件测试时适用的插桩方法.主要是通过对插桩内容的优化来降低插桩对程序执行效率的影响.在飞行控制软件的仿真测试中,主要采用的是Host2Target的测试模式.其中主机(Host)上包括主控平台和信号仿真平台,目标机(Target)上则是飞行控制软件的运行平台.主控平台主要进行测试运行管理、数据分配以及测试后的评估工作.考虑到目标机环境紧凑、资源紧张而主机上资源相对丰富的特点.优化插桩过程的主导思想是尽量减少在目标机上的额外开销,把覆盖率的计算等转移到主机上进行计算.首先,分别在被测的飞控软件和主控程序中声明并初始化两个信息存储数组,其中飞控软件中的数组为布尔型,主控程序中的数组为整形.在飞控软件源程序中插桩点添加信息存储数组中相应元素的赋值语句.并在主控程序中添加整形存储数组的更新函数、程序动态分析和覆盖率的计算等函数.然后在每次信息传送出去后重新初始化该数组.运行程序进行动态测试将得到程序的动态信息,对该数据进行分析并计算程序的实时覆盖率显示直到程序运行结束.整个过程如图1所示.图1 改进后的插桩方法传统的插桩方法都是在插桩点插入事先写好的桩函数,而本方法将插入的是简单的布尔型变量的赋值语句,它不仅本身的运行时间很短,而且还减少了由于函数调用带来的开销.另外,本方法声明的存储数组是布尔型的,与整形数组相比减少了75%的内存占用.当程序规模比较大,插桩点很多的时候,本方法对内存的节省将会降低由于插桩带来的对系统性能的影响.同时,由于存储数组的内容也是要通过网络协议进行传输,使用布尔型存储数组的话可以减少传送的数据量,避免出现因为传送的信息量过大出现的时延现象而导致系统出错.最后,对布尔数组的重新初始化语句放在了控制指令传送语句后面,由于信息传送有一定的时间消耗,因此数组的再次初始化过程将不会对源程序的执行效率产生影响.4 实验对比在这一部分中,将对上一部分提出的插桩方法进行验证评估.4.1 实验内容实验对象为某型飞机的控制软件.在某型飞机的飞行控制软件系统飞行仿真过程中,控制律的程序和全量方程的计算分别运行在目标机的Vx Works操作系统和宿主机的W indows操作系统中.它们之间的相互联系在于控制律程序根据宿主机传来的状态信息产生控制指令,然后把控制指令传送到宿主机,最后经全量方程的计算得出飞行过程中的状态信息,该系统的一个周期为50m s,由这个过程可看出该系统是一个交互性很强的系统.该实验过程中目标机于宿主机之间的285北京航空航天大学学报 2009年 通信采用网络套接字的方式实现.实验平台见图2.图2 仿真实验平台首先,采用上一部分内容所述的插桩方法对控制律程序以及宿主机中的主控程序进行修改.在主控程序中添加一个整型的信息存储数组H [i ],设初值为0;在控制律程序中声明一个布尔型的信息数组T [i ],并设初值为false .其中,H [i]和T [i ]维数相同,均为插桩点的个数;然后修改由目标机向宿主机传送数据的套接字的内容,使其包含目标机存储数组,并在主机程序中添加信息存储数组的更新以及各种覆盖率的运算程序.f or (i =0;i <count;i ++){ H [i ]=H [i ]+T [i ]; if (H [i ]!=0) Coverlines +=L [i ];}CoverageRate =Coverlines/T OT ALL I N ES 将修改后的控制律程序重新编译并下载到Vx Works 操作系统的目标机中运行,主机控制界面将得到覆盖率的实时变化曲线以及各模块的执行次数等动态数据.4.2 实验结果通过3组实验的数据来进行对比、验证本文提出的插桩方法应用在飞行控制软件的测试过程中的时效性.第1组运行的是没有经过插桩的程序;第2组是使用传统插桩方法对源程序进行插桩后的程序;第3组按照前一部分内容对源程序进行插桩后的程序.在主控程序的开始和结束的部分添加获取时间的函数,记录程序运行的总时间.同时,为了更好的体现在实时性上的优势,在试验过程中将注释掉控制程序中的休眠语句,不是50m s 发送一次数据,而是算完以后立刻发送数据.每组实验进行了20轮.试验结果见表1.从上述试验结果可知,使用了本文所提出的插桩方法进行测试的程序运行时间与用传统插桩方法进行测试的程序的运行时间相比,由于程序插桩导致的运行时间的额外开销降低了21.2%.这说明了本文所提出的插桩方法在降低对程序实时性影响的方面是有效的.另外,由于飞控软件的实时性要求,在程序运行过程中某一次运算的超时就将导致实时性的失效.从试验所得的数据可以看出,在一共20轮的实验中,使用本文插桩方法的程序的运行时间标准差相对较小,说明该方法产生的开销相对稳定,出现上述问题的几率较小.这也就从另一方面说明该插桩方法比传统方法更适用于飞控软件的测试过程中.表1 试验数据插桩类型平均运行时间/m s标准差无插桩程序177877.9572.9411传统插桩方法179813.2606.8614本文插桩方法179402.6344.34145 结 论本文首先分析了飞行控制软件所具有的特点,介绍了插桩技术的基本理论和基本方法.然后指出了插桩应用在飞控软件测试中所面临的实时性方面的问题,针对飞控软件的信息交互量比较大的特点,在Host 2Target 仿真测试模式下,提出了一种新的插桩方法,优化了插桩过程,进而降低插桩给源程序带来的实时性方面的影响.最后通过具体的仿真实验验证了该方法的有效性.当然,本文对插桩过程的优化尚需进一步的研究,本文只是在优化插桩内容方面做了一些工作,今后可以在优化插桩数量方面做进一步的研究.参考文献(References )[1]Chen Ts ong Yueh,Kuo Fei Ching,RobertM.On the statisticalp r operties of testing effectiveness measures[J ].Journal of Sys 2te m s and Soft w are,2006,79(5):591-601[2]A rnold M,Ryder B G .A fra mework for reducing the cost of in 2strumented code[J ].Ac m Sigp lan Notices,2001,36(5):168-179[3]Pr obert R L.Op ti m al inserti on of s oft w are p r obes in well 2deli m i 2ted p r ogra m s[J ].I EEE Transacti ons on Soft w are Engineering,1981,8(1):34-42[4]Agrawal H.Dom inat ors,super bl ocks and p r ogra m coverage[C ]//Princi p les of Pr ogra mm ing Languages .Portland:Acm Press,1994:25-34[5]TikirM,Hollings worth J.Efficient instrumentati on f or code cov 2erage testing [J ].Acm Sigs oft Soft w are Engineering Note,2002,27(4):86-96[6]孙昌爱,靳若明,刘超,等.实时嵌入式软件的测试技术[J ].小型微型计算机系统,2000,21(9):920-924Sun Changai,Jin Ruom ing,L iu Chao,et al .Test technol ogy of real 2ti m e and e mbedded s oft w are [J ].M ini 2M icr o Syste m,2000,21(9):920-924(in Chinese )[7]Huang J C .Detecti on of data fl ow anomaly thr ough p r ogra m in 2strumentati on[J ].I EEE Transacti ons on Soft w are Engineering,1979,SE5(3):226-236385 第5期 李跃飞等:飞行控制软件测试中的插桩技术。
科技与创新┃Science and Technology&Innovation ·108·2023年第21期文章编号:2095-6835(2023)21-0108-03通用嵌入式测试平台技术研究范义杰1,赵昶宇2(1.陆装驻天津地区军代室,天津300240;2.天津津航计算技术研究所,天津300308)摘要:为了快速构建嵌入式系统的测试平台,并提高嵌入式系统测试平台的通用性、可维护性和可扩展性,提出一种嵌入式系统分层结构的测试平台,将测试平台分为GUI(Graphical User Interface,图形用户接口)层、XML(Extensible Markup Language,可扩展标记语言)层和通信层,利用XML脚本技术的平台及编程语言无关性,建立了嵌入式系统的通用测试平台,提高了嵌入式系统的测试效率和测试准确率。
该方法已在某地面监控设备中得到应用和验证,不仅降低了开发成本,而且提高了代码的通用性和重用率。
关键词:嵌入式系统;软件测试;配置文件;XML脚本技术中图分类号:TP311.52文献标志码:A DOI:10.15913/ki.kjycx.2023.21.032随着当下信息化技术的飞速发展和进步,嵌入式系统的种类日益增多,嵌入式设备的复杂程度也在不断地增长。
由于嵌入式软件一般具有内存空间不够富裕、实时性要求较高、研发专用的测试工具价格昂贵以及与硬件密切相关等特性,目前大多数嵌入式系统都根据本系统中的硬件配置定制专门的测试工具和平台。
这样一来,就会出现不同硬件的嵌入式设备需要开发不同的测试平台,导致测试成本和人力资源的极大浪费。
为快速构建嵌入式系统的测试平台,并提高嵌入式系统测试平台的通用性、可维护性和可扩展性,本文提出一种嵌入式系统分层结构的测试平台,将测试平台分为GUI层、XML层和通信层,利用XML脚本技术的平台及编程语言无关性,建立了嵌入式系统的通用测试平台,提高了嵌入式系统的测试效率和测试准确率。
嵌入式软件覆盖测试罗西;殷静;王川【摘要】当前,嵌入式软件的应用越来越广泛,人们对嵌入式软件的质量要求也不断提高.通过覆盖测试可以有效验证嵌入式软件测试过程中的功能完好性以及软件存在的相关问题.在进行覆盖测试时,需要借助一定的工具来完成,避免人工作业出现工作量大的问题.通常覆盖测试使用的辅助工具为LDRA Testbed,这种测试工具可以对软件的动态覆盖信息进行有效获取,从而提高软件测试的覆盖率.【期刊名称】《数字技术与应用》【年(卷),期】2017(000)008【总页数】3页(P142-144)【关键词】嵌入式系统;软件测试;覆盖测试【作者】罗西;殷静;王川【作者单位】中国电子科技集团公司第三十二研究所,上海201808;中国电子科技集团公司第三十二研究所,上海201808;中国电子科技集团公司第三十二研究所,上海201808【正文语种】中文【中图分类】TP311.53对软件进行测试时,测试软件的完备性是表征软件质量的重要方面。
所谓测试的完备性不仅包括对任务书和需求规格中的性能和功能进行覆盖,还应该涉及到软件代码的全部语句和所有分支。
其中,覆盖测试就是对软件代码覆盖情况测试的一种有效方式。
这种测试方式在嵌入式软件测试工作中,可以有效避免代码未执行造成的软件问题。
1.1 覆盖测试概念通常也可以把覆盖测试称作逻辑测试。
这种测试方式需要对测试代码本身进行访问,同时对代码进行插桩处理,再根据程序的内部结构完成案例的测试工作。
从原理上将,覆盖测试是一种白盒测试手段。
覆盖测试通常会在软件测试的早期阶段进行,也就是单元测试过程中。
覆盖测试的过程中就是将软件程序的所有代码执行的过程,并且还应该有效覆盖程序的语句以及分支结构,尽量在测试过程中发现隐藏的软件缺陷,从而保证软件的质量。
覆盖测试的基本准则是要求测试用例要尽可能多的覆盖程序的内部逻辑结构,并发现其中存在的错误和问题。
为保证测试工作的充分性和全面性,必要时应该进行补充测试,保证测试效果。
gcc 覆盖率原理GCC 覆盖率原理什么是覆盖率测试?覆盖率测试是一种用于衡量软件测试质量的度量指标,用于测量测试过程中涉及到的代码行、分支、函数和语句的执行情况。
覆盖率测试可以帮助开发人员了解测试的覆盖程度,发现代码中的潜在问题和漏洞。
GCC 的基本原理GCC(GNU Compiler Collection)是一套开源的编译器工具集,覆盖率测试是其中的一个功能。
GCC 的覆盖率测试原理主要包括两个步骤:插桩和收集。
插桩插桩是在源代码中注入一些代码或指令,用于记录程序运行时每个代码块是否被执行过。
GCC 使用特殊的编译选项来进行插桩,这些选项会在编译过程中自动将插桩代码添加到可执行文件中。
收集收集是在程序运行过程中,通过执行插桩代码来收集程序的执行信息。
GCC 使用一些技术手段来收集这些信息,比如在插桩代码中使用计数器来统计代码块的执行次数。
收集的信息可以保存在内存中,也可以保存到文件中供后续分析使用。
使用 GCC 进行覆盖率测试使用 GCC 进行覆盖率测试的基本步骤如下:1.首先,需要在编译选项中添加覆盖率测试的相关选项。
比如,可以使用-fprofile-arcs选项来启用代码块的执行计数器,使用-ftest-coverage选项来启用覆盖率计数器。
2.编译和链接源代码时,使用上述的编译选项来开启覆盖率测试。
3.运行可执行文件,执行覆盖率测试。
4.测试结束后,GCC 会生成一些覆盖率测试的报告或日志文件,包含了代码块的执行情况和覆盖率信息。
覆盖率测试的局限性虽然覆盖率测试是一种有效的测试手段,但仍然存在一些局限性:•覆盖率测试只能检测到代码是否被执行过,无法检测代码执行的正确性。
•覆盖率测试只能检测到已知的代码路径,无法检测到未知路径或未预料到的错误情况。
•覆盖率测试需要运行大量的测试用例才能得到较准确的结果,执行时间可能较长。
总结GCC 的覆盖率测试功能是一种有用的测试工具,可以帮助开发人员了解代码的测试覆盖程度,找出潜在问题和漏洞。
嵌入式软件测试技术研究摘要:随着嵌入式软件结构的日益复杂,嵌入式软件的测试也越来越重要。
在对嵌入式软件的特点以及嵌入式软件测试环境和策略分析的基础上,对嵌入式软件基本测试方法进行了研究。
关键词:嵌入式软件;软件测试技术;静态测试;动态测试0引言随着信息技术的不断发展,与硬件发展日益稳定相比,软件故障却日益突出,因此软件测试的重要性已经越来越被人们所重视。
嵌入式软件有着开发工具昂贵、内存较小、实时性要求较高、CPU种类繁多、I/O通道较少等特点,为此,嵌入式软件的测试也与一般PC 应用软件的测试有很大的差异。
1嵌入式软件测试概述1.1嵌入式软件特点分析嵌入式软件测试的主要目的在于验证软件的可靠性,与通常的PC应用软件相比,嵌入式软件的测试有如下几个特点:①嵌入式软件是针对在特定硬件环境下开发的,其运行和测试也需要依据特定的硬件环境;②实施性要求较高,除了要求有正确的输出结果以外,还需要考虑是否能够在规定的时间内得到运行结果。
1.2嵌入式软件测试环境分析一般采用交叉开发环境来搭建嵌入式软件的测试环境。
例如单元测试、集成测试等可以在PC机上完成的测试,通常都在PC机上进行测试,从而可以避免硬件环境的影响,提高测试效率。
在后期的集成测试中,需要在具体的嵌入式软件硬件环境中,搭建交叉测试环境来完成嵌入式软件的测试。
交叉测试环境的搭建需要注意以下几个方面的内容:(1)主机与目标机之间的通信问题。
可以通过以太网或者串口进行主机与目标机之间的物理连接,主机与目标机之间的数据格式可以预先进行定义。
(2)主机对目标机的测试控制。
主要包括主机如何向目标机发送测试用例,如何跟踪目标机的测试,查看是否正常进行。
(3)目标机测试结果的反馈。
通常运行嵌入式系统的目标机没有视频显示等便利的测试结果输出端口,因此目标机上的异常、错误信息和正常响应信息等测试结果都需要返回到主机上进行显示和输出。
在嵌入式软件测试环境的搭建过程中,需要测试嵌入式系统与已建设备是否协调,硬件设备电气特征是否正常,以及主机与目标机之间的物理信道是否通畅等,从而保证测试结果不受到嵌入式软件以外其它因素的影响。
嵌入式软件的覆盖测试
摘要覆盖测试是验证软件功能结构正确性以及查找问题的非常重要的方法和手段,它要借助一定的工具才能取得较好的效果,满足软件在质量和时间上的双重要求纯粹的人工测试工作量大、不方便、周期长。
如何利用好这方面比较成熟的工具,对其机理的研究及适应性改造是很重要。
本文着重描述这类工具的工作机理,以及对嵌入式软件测试的特殊要求,并以对自主知识产权嵌入式操作系统的测试为例进行说明。
关键词嵌入式操作系统覆盖测试软件测试工具
1概述
软件测试是很广的概念。
从其贯穿软件生命周期全过程来看,测试可分为模块测试、集成测试、系统测试等阶段。
测试还可分为静态检查和动态运行测试两大类。
在动态运行测试中,又可有基于程序结构的白盒测试或称为覆盖测试和基于功能的黑盒测试。
测试不仅关注程序的功能,还有性有测试、强度测试等等。
要达到比较好的测试效果,除了要有周全的测试计划、可控的测试过程、测试人员丰富的经验外,还需要借助一些行之有效的辅助工具,尤其在当今软件规模日益庞大、测试工作量成倍增加的情况下。
对应上述的测试分类情况,测试工具可划分为支持对程序源代码进行静态规则检查和质量评估的静态分析工具、支持对程序单元进行动态覆盖测试的工具、对软件系统的整体运行性能进行测试的工具。
另外,还有一些特殊用途的或专用工具,如协议测试仪、内存检测工具等。
这些工具都有较为成熟的商业化产品,也可通过自行开发的方式获得。
本文具体讨论了对一类特殊的系统软件——嵌入式实时操作系统——进行覆盖测试的情况。
内容涉及对这类软件特性的研究、测试的难点和特点、对现有测试工具的适应性改造和测试实例说明。
2软件覆盖测试。