嵌入式软件覆盖率测试的研究与应用

上传人:I*** 文档编号:227138424 上传时间:2021-12-19 格式:DOCX 页数:16 大小:33.58KB
返回 下载 相关 举报
嵌入式软件覆盖率测试的研究与应用_第1页
第1页 / 共16页
嵌入式软件覆盖率测试的研究与应用_第2页
第2页 / 共16页
嵌入式软件覆盖率测试的研究与应用_第3页
第3页 / 共16页
嵌入式软件覆盖率测试的研究与应用_第4页
第4页 / 共16页
嵌入式软件覆盖率测试的研究与应用_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《嵌入式软件覆盖率测试的研究与应用》由会员分享,可在线阅读,更多相关《嵌入式软件覆盖率测试的研究与应用(16页珍藏版)》请在金锄头文库上搜索。

1、 嵌入式软件覆盖率测试的研究与应用 孙陇平摘 要: 覆盖率测试是检验软件测试完整性、充分性的重要方式,这里介绍了覆盖率测试基础理论、覆盖率的测试类型、覆盖率测试工作流程、比较了覆盖率测试工具Bullseye Coverage、LDRA TestBed。并通过LDRA Testbed测试工具对被测软件程序插装,分析插装程序输出的结果得到语句覆盖率、分支覆盖率等数据,以达到对软件问题的查找和对测试充分性、全面性的验证。同时给出了Turbo C开发环境下DOS操作系统的嵌入式软件,利用LDRA Testbed进行覆盖率分析和通过查看未覆盖的代码定位软件问题、测试用例覆盖情况的详细步骤。关键词: 嵌入

2、式软件; 覆盖率测试; 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

3、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 a

4、nd 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

5、, 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随着嵌入式设备在越来越多的领域中得到使用,与之相依附的嵌入式软件也得到了快速的发展。面对日益复杂的嵌入式软件,如何进行快速、全面、有效地测试已经成为当前测试工作的焦点。嵌入式软件通常与硬件联系紧密,常规的测试方法和技术难以对软件

6、进行全面测试。因此,必须采用基于对软件程序进行插装的覆盖率测试技术,实现对嵌入式软件的测试,以达到降低测试难度,提高测试效率。1 覆盖率测试1.1 覆盖率测试概念覆盖率测试(也称逻辑测试)是度量测试完整性和查找软件问题的必要手段,是测试有效性的度量。覆盖率测试的目的是确保软件所有的程序至少被执行一次,尽可能全的覆盖软件程序的各个语句及其分支结构,所以设计测试用例要尽可能多地覆盖软件程序的内部逻辑结构,以便发现软件中的错误和问题。覆盖率测试的类型如下:语句覆盖率,被测软件程序中每行语句至少执行一次,语句覆盖率=至少被执行一次的语句数量/可执行的语句总数;判定覆盖率,被测软件程序中每个判定表达式至

7、少获得一次“true”值和“false”值,以确保程序的每一个分支至少都通过一次,判定覆盖率=判定结果被评价的次数/判定结果的总数; 条件覆盖率,确保判定表达式中每个条件的各种可能的值至少出现一次,条件覆盖率=条件操作数值至少被评价一次的数量/条件操作数值的总数;判定/条件覆盖率,确保判定表达式的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次,判定/条件覆盖率=条件操作数值或判定结果至少被评价一次的数量/(条件操作数值总数+判定结果总数);路径覆盖率,测试用例覆盖被测程序中所有可能的路径,路径覆盖率=至少被执行到一次的路径数/总的路径数。1.2 覆盖率测试方

8、法覆盖率测试通过对被测软件程序进行插装,并对插装后的被测软件程序编译生成可执行程序。然后在软件运行的实际环境中运行该可执行程序,同时执行功能、性能、接口、人机交互界面、强度、安全性、边界、恢复性测试等测试用例和测试数据。如果覆盖率没有到软件规定要求,分析原因后,必要时补充软件的功能、性能、接口、人机交互界面等测试类型的测试用例,保证覆盖率测试指标满足软件要求。覆盖率测试的工作流程如图1所示。覆盖率测试的关键是对软件程序进行插装,插装是在保证软件程序逻辑完整的基础上,插入一些探针,通过分析探针执行抛出的特征数据,达到对软件覆盖情况的测试。1.3 覆盖率测试工具 由于当前潜入式软件开发语言多为C/

9、C+,而针对C/C+做覆盖率常用的工具有Bullseye Coverage和LDRA TestBed。Bullseye Coverage是Bullseye公司支持Unix,Windows操作系统和Boland C+,Gun C+,Inter C+等开发环境,提供的覆盖率是分支覆盖率而不是一般的覆盖率。图1 覆盖率测试工作流程LDRA TestBed是LDRA公司研发的一款成熟的软件测试商用工具,包括以下多个功能:按照编码规则对代码评审;分析代码的复杂度、密度和可测试性,达到对软件质量的评审;分析接口,变量使用,控制流,识别隐藏的错误变量;对软件代码进行单元测试;对软件代码进行插装,并分析软件的

10、语句、分支等覆盖率;对测试过程中的用例、文档等进行管理。LDRA Testbed提供了BitMap插桩技术来解决覆盖率测试。BitMap是一种位图技术,插装后的软件在实际环境运行时将探针的特征值信息存放到一个固定大小的数组中,当需要对代码覆盖率进行分析时,通过Testbed提供的get_history命令得到历史文件,再将该内容提供给Testbed进行覆盖率分析。TestBed作为覆盖率测试工具,具有以下特性:(1) 能够与被测软件编译器相结合对源程序进行自动插装,被插装的程序即可以是平台软件也可以是嵌入式软件;(2) 根据插装软件输出的覆盖数据,能够快速、清晰的分析出软件总体、每个函数的语句

11、覆盖率、分支覆盖率等;(3) 根据分析出的函数覆盖率数据,帮助测试人员快速定位未覆盖的软件程序,便于改进测试用例没计的缺陷,进而提高软件的覆盖率。2 基于LDRA TestBed的覆盖率测试应用2.1 被测软件概况被测软件是基于Turbo C开发环境的嵌入式软件,运行于微机板上TF存储卡的DOS系统,通过接收上位机的控制参数及获取外部导航设备的导航信息、传感器的传感器数据后,经数据处理后向外部设备发送控制命令,达到对外部设备的控制。图2 软件运行连接图2.2 覆盖率测试应用被测软件通过以下步骤实现覆盖率测试:(1) 在Testbed中新建一个Coverage Test的工程,并将被测软件的程序

12、文件test.c(不需要程序的.h文件)加入工程中。(2) 选中Configure菜单下的Instrumentation Option选项,去掉:Instrumentation for MC/DC Coverage;选中:Compress Execution History Bitmap;在edit Instrument SourceFile Name(s):inszt_name.c中Name不能超过8个字符。然后在Analysis菜单点击Start Analysis进行插装,Testbed在和test.c同目录下产生inszt_test.c文件该文件为经过插装后的程序文件。(3) 在insz

13、t_test.c文件中查找“static unsigned int bitmaparr”,去掉其中的static;查找qqqbranches,将bitmaparrqqqbranches/8+1数据填入该数组;在main函数中添加覆盖数据输出到test.txt代码,如下所示:char strsizeof(bitmaparr);FILE *dfile=fopen(c:test.txt,wt);int j=sizeof(bitmaparr)/sizeof(int);for (int i=0;isprintf(str,%dn,bitmaparri);fprintf(dfile, str);fclose

14、(dfile);(4) 将inszt_test.c文件,删除前面的“inszt_”标识后,拷贝到TF卡中,替换未插装的test.c,启动Turbo C跟其他的源文件一起编译,产生可执行的目标文件test.exe;(5) 启动软件并执行功能、性能、接口、边界、性能、安全性、恢复性等测试类型,将软件输出的test.txt(文件中的数字内容为186个大于等于0,小于等于255的整型数字)文件修改为history.exh(分析后该文件会被删除,注意备份),使用Testbed进行分析,即可获得相应的程序或分支覆盖率。分析后找到test.dyn.htm文件就可以看到覆盖率分析数据如图3所示。图3 软件覆盖

15、率分析数据(6) 如某一个函数覆盖率没有达到100%,需要进入函数具体分析界面,如图4所示。其中线框起来的是未执行到的部分,需要查找原因,如果是用例设计不够充分,需要添加设计测试用例,执行插装软件后再分析覆盖数据,直到覆盖率指标达到要求为止。图4 软件程序覆盖执行情况3 结 语通过嵌入式软件覆盖率测试研究与应用,发现LDRA TestBed不仅能够快速地对软件程序进行插装、覆盖数据分析,而且根据覆盖率结果的函数覆盖情况,快速定位到未执行的程序。针对开发人员可以定位软件错误,针对测试人员,根据代码覆盖情况可以梳理、优化、减少冗余的测试用例,争取达到对程序的全覆盖。覆盖率测试工具在嵌入式软件测试中广泛应用,能够大幅度提高覆盖水平,规避嵌入式软件难于测试的缺点,帮助测试人员大幅提高测试效率。参考文献1 范勇,兰景英,李绘卓.软件测试技术M.西安:西安电子科技大学出版社,2009.2 郑人杰.软件工程M.北京:清华大学出版社,1999.3 上海创景计算机系统有限公司.LDRA Testbed中文技术说明EB/OL.2007?11?04.http:/.4 朱红军.一种嵌入式软件覆盖和分析测试方法J.航空计算技术,2009(5):65?67.5 流萤,王英,刘漫丹.嵌入式软件的覆盖测试J.自动化仪表,2012(6):63?66.6 金维佳,施小敏.基于嵌入式软件的覆盖测试问题研究J.信

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 调研报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号