嵌入式软件覆盖率测试的研究与应用
摘 要: 覆盖率测试是检验软件测试完整性、充分性的重要方式,这里介绍了覆盖率测试基础理论、覆盖率的测试类型、覆盖率测试工作流程、比较了覆盖率测试工具Bullseye Coverage、LDRA TestBed。并通过LDRA Testbed测试工具对被测软件程序插装,分析插装程序输出的结果得到语句覆盖率、分支覆盖率等数据,以达到对软件问题的查找和对测试充分性、全面性的验证。同时给出了Turbo C开发环境下DOS操作系统的嵌入式软件,利用LDRA Testbed进行覆盖率分析和通过查看未覆盖的代码定位软件问题、测试用例覆盖情况的详细步骤。
关键词: 嵌入式软件; 覆盖率测试; LDRA Testbed; 测试方法
中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2014)18?0067?03
随着嵌入式设备在越来越多的领域中得到使用,与之相依附的嵌入式软件也得到了快速的发展。面对日益复杂的嵌入式软件,如何进行快速、全面、有效地测试已经成为当前测试工作的焦点。嵌入式软件通常与硬件联系紧密,常规的测试方法和技术难以对软件进行全面测试。因此,必须采用基于对软件程序进行插装的覆盖率测试技术,实现对嵌入式软件的测试,以达到降低测试难度,提高测试效率。
1 覆盖率测试
1.1 覆盖率测试概念
覆盖率测试(也称逻辑测试)是度量测试完整性和查找软件问题的必要手段,是测试有效性的度量。
覆盖率测试的目的是确保软件所有的程序至少被执行一次,尽可能全的覆盖软件程序的各个语句及其分支结构,所以设计测试用例要尽可能多地覆盖软件程序的内部逻辑结构,以便发现软件中的错误和问题。覆盖率测试的类型如下:语句覆盖率,被测软件程序中每行语句至少执行一次,语句覆盖率=至少被执行一次的语句数量/可执行的语句总数;判定覆盖率,被测软件程序中每个判定表达式至少获得一次“true”值和“false”值,以确保程序的每一个分支至少都通过一次,判定覆盖率=判定结果被评价的次数/判定结果的总数; 条件覆盖率,确保判定表达式中每个条件的各种可能的值至少出现一次,条件覆盖率=条件操作数值至少被评价一次的数量/条件操作数值的总数;判定/条件覆盖率,确保判定表达式的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次,判定/条件覆盖率=条件操作数值或判定结果至少被评价一次的数量/(条件操作数值总数+判定结果总数);路径覆盖率,测试用例覆盖被测程序中所有可能的路径,路径覆盖率=至少被执行到一次的路径数/总的路径数。
1.2 覆盖率测试方法
覆盖率测试通过对被测软件程序进行插装,并对插装后的被测软件程序编译生成可执行程序。然后在软件运行的实际环境中运行该可执行程序,同时执行功能、性能、接口、人机交互界面、强度、安全性、边界、恢复性测试等测试用例和测试数据。如果覆盖率没有到软件规定要求,分析原因后,必要时补充软件的功能、性能、接口、人机交互界面等测试类型的测试用例,保证覆盖率测试指标满足软件要求。覆盖率测试的工作流程如图1所示。覆盖率测试的关键是对软件程序进行插装,插装是在保证软件程序逻辑完整的基础上,插入一些探针,通过分析探针执行抛出的特征数据,达到对软件覆盖情况的测试。
1.3 覆盖率测试工具
由于当前潜入式软件开发语言多为C/C++,而针对C/C++做覆盖率常用的工具有Bullseye Coverage和LDRA TestBed。Bullseye Coverage是Bullseye公司支持Unix,Windows操作系统和Boland C++,Gun C++,Inter C++等开发环境,提供的覆盖率是分支覆盖率而不是一般的覆盖率。
图1 覆盖率测试工作流程
LDRA TestBed是LDRA公司研发的一款成熟的软件测试商用工具,包括以下多个功能:按照编码规则对代码评审;分析代码的复杂度、密度和可测试性,达到对软件质量的评审;分析接口,变量使用,控制流,识别隐藏的错误变量;对软件代码进行单元测试;对软件代码进行插装,并分析软件的语句、分支等覆盖率;对测试过程中的用例、文档等进行管理。
LDRA Testbed提供了BitMap插桩技术来解决覆盖率测试。BitMap是一种位图技术,插装后的软件在实际环境运行时将探针的特征值信息存放到一个固定大小的数组中,当需要对代码覆盖率进行分析时,通过Testbed提供的get_history命令得到历史文件,再将该内容提供给Testbed进行覆盖率分析。
期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。
【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
投稿辅导服务咨询与期刊合作加盟
陆老师联系QQ: 913775405(普刊)
蒋老师联系QQ: 867306987(核心)
刘老师联系QQ: 271374912(核心)
联系电话:18015016272
17327192284
投稿辅导投稿邮箱:zgqkk365@126.com
期刊推荐
- 《课程教育研究》 旬刊 国家级
- 《网络空间安全》(信息安全与技术)月刊 国
- 《价值工程》旬刊 国家级 科技统计源期刊
- 《高教论坛》 月刊 省级
- 《法制与社会》旬刊 省级
- 《中国教育学刊》月刊 14版北大核心
- 《语文建设》 旬刊 14版北大核心
- 《中国绿色画报》 月刊 国家级
- 《社科纵横》季刊 社科类优秀期刊
- 《求索》月刊 14版北大核心期刊
- 《财会月刊》旬刊 14版北大核心
- 《艺术品鉴》 月刊 省级
- 《中华建设》月刊 国家级 建设类优秀期刊
- 《教学与管理》旬刊 北大核心
- 《当代经济》 旬刊 省级
- 《新课程研究》旬刊 省级 教育类优秀学术期
- 《文教资料》 旬刊 省级
- 《学术界》 月刊 双核心
- 《吉林教育》旬刊 省级 教育类学术期刊
- 《中国农业资源与区划》 月刊 14版北大核心
- 《继续教育研究》月刊 北大核心期刊
- 《财经界(学术版)》半月刊 国家级
- 《电影评介》半月刊 14版北大核心
- 《公路交通科技》 月刊 北大核心
- 《新闻传播》月刊 省级 新闻类优秀期刊