基于Testbed/Tbrun的嵌入式软件单元测试

摘 要针对嵌入式软件单元测试,开展了一定的工程实践,明确了单元测试的要求,介绍了如何达到覆盖率测试的充分性以及结合工具开展单元测试的方法,有利于提高软件单元测试的有效性。

【关键词】Testbed/Tbrun 软件单元测试 嵌入式

单元测试是保障软件质量的重要技术手段,其过程十分复杂,如果不借助辅助工具,仅靠人工处理,则不仅效率低下,工作量巨大,而且可能出现无法解决的问题。因此,利用一套好的单元测试工具帮助测试人员提高工作效率、工作质量是非常必要的。

1 单元测试的定义

单元测试(***1和***2)是一个在隔离状态下测试单个***软件单元的过程,而集成测试(***3)允许好几个单元的同时分析,是多单元测试。因此,在单元测试时,需要模拟被测单元与其他模块之间的交互,开发驱动模块和桩模块构建一个可执行的环境。

2 单元测试的要求

单元测试重点要考虑的测试类型有:

2.1 功能测试

根据需求的关键成都选取相应单元开展单元测试(建议需求的关键程度为关键、重要的单元应100%开展单元测试,需求的关键程度为一般的单元可以通过代码审查验证其功能)。

2.2 覆盖率测试

根据软件等级确定覆盖率测试(见表1)。

3 如何达到充分的覆盖率测试

3.1 根据对被测程序的期望实现的功能来构造最有可能的功能测试

这些功能从软件需求说明书或用户文档获得。在加载测试数据的情况下,应该能够通过测试工具监控源代码的执行。当实现功能测试的数据用完后,检查覆盖率来发现程序中的哪些部分仍然没有被测到。应该进一步的构造测试数据并进行执行、分析。一直持续到进行功能测试的数据被执行完或者达到所需的测试度量标准。如果测试数据执行完那么进行(3.2);否则的话(达到测试度量标准的要求)那么任务就完成了。

3.2 检查测试覆盖度量指标

如果语句覆盖率没有达到完全覆盖,那么可能是由于某个特殊的用例运行失败,错误退出等造成的。为了将代码中的每一行都执行到,将程序执行多次通常是必须的。通常功能测试只能覆盖程序中40%到60%的可执行语句。当语句覆盖达到完全,每一条语句都被执行时,便可进行(3.3)。

3.3 检查所有没有被执行的分支

通常这些分支中的一部分可以通过构造专门的用例实现对它们的测试。找出程序中未执行分支,将分支测试充分实施后再进行(3.4)。

3.4 有些没有执行到的分支和路径,是由于相关的测试用例只有在程序执行出错或者计算出错的错误状态下才能实现

这些通常是和程序的冗余保护设计相关,这样的路径应该完整的保留。一旦不可行测试路径被去掉,那么源代码将会更加有效、健壮并且占用更少的空间。

4 Testbed/Tbrun在单元测试中的应用

使用/Tbrun可自动产生软件测试的驱动、桩模块,从而节省时间,测试人员可将重点放在设计测试用例上,提高软件测试效率。使用Testbed/Tbrun的基本方法:

(1)在已集成了开发环境的Testbed中加载被测软件单元。

(2)创建并设计测试用例。设置输入变量值。Testbed/Tbrun创建的测试用例,初始默认的输入变量有时可能不满足实际执行路径的要求,也有可能存在当前执行路径不需要的输入变量,可将多余的输入变量删除掉,输入变量选择完成之后,根据希望被测函数执行的路径,设置各输入变量的值;设置桩函数。Testbed/Tbrun能够通过对被测函数的分析自动为被测函数生成桩函数,在桩函数管理界面,选择需要进行设置的桩函数,分析判断是否需要设置桩函数的返回值,还是需要通过调用桩函数改变某些全局变量的值;执行测试用例。设置完成输入变量和桩函数之后,就可以开始执行测试用例了。

(3)查看覆盖率信息。每成功执行一个测试用例后,Testbed/Trbun都会统计当前测试用例执行的路径以及相应的覆盖率,其中“S”表示语句覆盖率,“B”表示分支覆盖率,“MCDC”表示MC/DC覆盖率,即修正条件/判定覆盖率。

(4)动态覆盖率报告的保存。动态覆盖率报告以.c文件为基本单元,包含当前.c文件中所有函数的动态执行情况,建议每执行完成一个函数的单元测试之后,为各被测函数单独保存动态覆盖率报告,在该报告中找到被测函数的具体动态执行信息。

在实际应用中,需要注意以下几个方面:

(1)main函数的测试。Testbed/Tbrun不支持直接对名称为main的函数进行单元测试,可通过修改main函数的名称后再进行单元测试,如将main函数名称修改为testmain等。

(2)指针变量的测试。Testbed/Tbrun不支持直接对指针进行引用的操作,容易跑飞,需要将指针映射到相应的变量,Testbed/Tbrun支持对指针进行映射。

(3)指针指向绝对的内存地址。在头文件中,代码可能包含下列风格,用#define来引入绝对内存地址。例如:#define CONGIG_PAGE_1_ADDR 0x418000,然后在函数中直接从绝对地址中写入和读出数据。当在一个主机/主机的测试环境中运行这个函数时,内存访问违反将发生,易出现程序跑飞的现象。

5 结论

相对于完全人工测试,使用Testbed/Tbrun工具测试提高了工作效率、工作质量。因此,Testbed/Tbrun可以较好地支持嵌入式软件单元测试的开展。

参考文献

[1]GlenfordJ.Myers.软件测试的艺术[M].北京:机械工业出版社,2006.

基于Testbed/Tbrun的嵌入式软件单元测试

转载请注明出处学文网 » 基于Testbed/Tbrun的嵌入式软件单元测试

学习

与韩荆州书

阅读(27)

本文为您介绍与韩荆州书,内容包括与韩荆州书全文朗读,与韩荆州书全文多少字。白闻天下谈士相聚而言曰:“生不用封万户侯,但愿一识韩荆州。”何令人之景慕,一至于此耶!岂不以有周公之风,躬吐握之事,使海内豪俊,奔走而归之,一登龙门,则声誉十倍。

学习

中国航天第一港

阅读(26)

本文为您介绍中国航天第一港,内容包括最新中国航天感悟,中国航天第一港。自汉朝设河西四郡以来,"酒泉"这个富有诗意的名字,就与响彻千年的"丝绸之路"驼铃声联系在了一起。今天,一座屡创辉煌的卫星发射中心又使她名扬四海,这就是中国第一个卫

学习

“脚色”与“角色”

阅读(22)

一、引言“脚色”与“角色”之辨,既是一个“个案”,又是一桩“公案”。说它是“个案”,因为它只是现代汉语中的一对普通词汇;说它是“公案”,因为现代戏剧戏曲学领域人人都在为“脚色”正名,都为“脚色”被“规范”而喊冤(据不完全统计,新中国成

学习

鲁迅当年怎样做父亲

阅读(25)

本文为您介绍鲁迅当年怎样做父亲,内容包括鲁迅如何做父亲,鲁迅如何做父亲原文。“自己背着因袭的重担,肩住了黑暗的闸门,放他们到宽阔光明的地方去;此后幸福的度日,合理的做人。”世间有些人,在还没有做父亲之前,就敢于对“怎样做父亲”发言。

学习

劳动争议仲裁时效与诉讼时效

阅读(258)

本文为您介绍劳动争议仲裁时效与诉讼时效,内容包括劳动仲裁有时效补缴社保没时效,仲裁时效和诉讼时效的区别和联系。仲裁时效的制约在劳动争议案件中的作用是非常明显的。诉讼时效必须受,到仲裁的时效制约,因为无限制的放纵劳动争议纠纷案

学习

光周期对春石斛假鳞茎生长与开花的影响

阅读(25)

本文为您介绍光周期对春石斛假鳞茎生长与开花的影响,内容包括春石斛花期管理方法,节茎石斛开花时间。研究了短日照(10h)和长日照(暗中断4h)2种光周期处理对春石斛(Dendrobiumnobile)3个品种(G1、G2、G3)假鳞茎的伸长和增粗以及对品种G1的开花时

学习

关于高校电子文档管理

阅读(31)

本文为您介绍关于高校电子文档管理,内容包括高校常用的电子文档,高校学生管理手册电子版。随着高新科技的发展,文档的管理已经步入现代化、电子化,为了更好地进行电子文件的归档操作,我们从宏观角度对电子文件管理的意义、特点进行把握,以期

学习

根源分析法(RCA)在防止患者跌倒事件中的应用

阅读(28)

本文为您介绍根源分析法(RCA)在防止患者跌倒事件中的应用,内容包括患者跌倒的rca分析,洗澡时患者跌倒的rca分析。目的通过采用RCA法对跌倒事件进行原因分析,找出解决问题的方法和措施,及时加以改进,可以有效防止类似事件的再次发生。方法通

学习

何为“物联网”时代

阅读(39)

本文为您介绍何为“物联网”时代,内容包括什么叫做物联网时代,物联网时代的巨大商机。中国移动王建宙在台湾之行中阐述了自己对“物联网”的理解后,“物联网”一下子就成为热门关键词。但是,根据工信部总工程师朱宏的介绍来看,物联网仍然是

学习

我为他人做嫁衣

阅读(26)

本文为您介绍我为他人做嫁衣,内容包括为他人作嫁衣裳全文阅读,替别人做嫁衣全文免费。“爱和承诺,像指环和花朵,我用一生守候,等待幸福的结果……”每个女孩都有着关于婚姻的美妙憧憬,谁都希望,自己最美的姿态在婚礼当天尽情绽放。“恭贺新郎

学习

动物特征的进化性浅析

阅读(22)

本文为您介绍动物特征的进化性浅析,内容包括动物的进化历程文献,动物演化的飞跃性。生物的进化,是一个从简单到复杂、从低等到高等的过程,各个时期的动物有自己的起源与发展,不同动物之间有不同的亲缘关系和进化历程。按一定层次一步步演化

学习

人是一棵会思想的芦苇

阅读(43)

本文为您介绍人是一棵会思想的芦苇,内容包括人是一根会思想的芦苇原文,人是一棵有思想的苇草原文。1帕斯卡尔说,人是一棵会思想的芦苇。一个会思想的人,是不会被这个世界轻易左右了的。真正意义上的活过,其实,不是跟着别人走了多久,而是独自

学习

德国功能翻译理论概论

阅读(26)

本文为您介绍德国功能翻译理论概论,内容包括功能翻译理论研究背景,功能学派翻译理论的背景。本文介绍了德国功能翻译理论学派的特征及其相关理论,并时其代表人物费米尔和诺德的观点作了分析,以帮助读者了解此学派的观点并做出评价。关键词

学习

共业 第2期

阅读(19)

本文为您介绍共业 第2期,内容包括工商银行发行价,叶曼先生谈共业。就像绝美伶人在最好的年华,却没等到能够欣赏赞叹她的观众。所以我不知道,没有被人类亲身感知到的美,还有没有意义?很长一段时间,都记不清涨潮和退潮,究竟哪一个是在清晨,哪一

学习

PhET互动式仿真模拟实验软件在小学科学教学中的应用初探

阅读(98)

1应用背景随着信息技术的到来,现代教育技术已经深入小学科学课堂,并为教育的发展带来了深刻的变革。《科学课程标准》指出:“现代教育技术的运用不是为用而用,首先必须是为教学内容服务的,是教学过程与方式的有机成分。”科学课是一门“以探

学习

软件系统分析的方法和策略浅谈

阅读(22)

本文为您介绍软件系统分析的方法和策略浅谈,内容包括软件系统分析的方法,软件系统分析师。[摘要]对一个软件项目进行系统分析首当其冲。随着信息化产业的发展、软件企业的增多,尤其是当面对一些大中型的软件项目,对软件生命周期的各个环节

学习

QAM信号在软件无线电中实现调制解调

阅读(26)

本文为您介绍QAM信号在软件无线电中实现调制解调,内容包括qam信号是幅度调制信号吗,5g中的qam调制解调技术。[摘要]在当今的通信领域中,通信信号的种类如过江之鲫,而且软件无线电自身的特点又使得它对信号的调制和解调信号的实现更加困难

学习

软件开发中的嵌入式软件开发

阅读(39)

本文为您介绍软件开发中的嵌入式软件开发,内容包括嵌入式系统开发和嵌入式软件开发,成都嵌入式软件开发大概要多少钱。软件开发中的嵌入式软件开发在一般应用软件系统开发时,程序员只需论文联盟要考虑软件系统的功能设计,硬件部分直接根据

学习

SOA在软件工程开发中的应用

阅读(24)

摘要随着软件工程的应用和普及,许多行业引入了先进的分布式管理系统,这些应用软件的功能越来越多,因此开发工作规模也迅速增加。软件工程开发过程中,已经诞生了许多模式,比如快捷程序模式、组件开发模式、MVC模式等,随着面向对象软件编程思想

学习

软件开发技术范文精选

阅读(54)

本文为您介绍软件开发技术范文精选,内容包括软件开发流程设计报告范文,软件开发周期范文。软件开发技术篇1当今社会,SOA、Web服务快速发展,软件开发技术已经得到了广泛应用,Web服务形式被大量的软件所应用,从而更好地服务于广大用户。随着当

学习

利用Scratch软件打造交互式课件

阅读(24)

随着信息技术的快速发展,课堂教学与之整合的效率也在不断提高。信息技术与教学整合的方式表现最多的就是多媒体课件的应用。但是对于交互式课件的制作,很多制作软件(如Flash等)都要求教师具有一定的代码编程基础,这就给广大教师带来了一定的

学习

国际软件外包(GSO)分析

阅读(27)

本文为您介绍国际软件外包(GSO)分析,内容包括软件外包风险投资,软件研发中的市场风险规避。国际的软件外包业务来源于价值链的分解,来源于比较优势产生的产业分工,这些业务一般而言处于价值链的低端,缺乏创新活动的。尽管印度也在谋求核心