随着嵌入式技术的不断发展,嵌入式软件的规模也越来越大,因此需要对嵌入式软件进行系统测试。
嵌入式软件的测试遵循软件测试的基本原则,但是由于嵌入式软件在开发过程、性能要求方面的特殊性,嵌入式软件测试也有其独有的特点。全面介绍嵌入式软件测试的相关概念、测试技术、测试过程、测试环境以及相关的自动化测试工具及管理工具。
从普通软件测试入手,揭示嵌入式软件测试与通用软件测试的相似点及独特之处,有利于读者深入理解嵌入式软件测试的相关知识。
辅以实例,从工程的角度帮助读者了解嵌入式软件测试的具体实施过程。
无
嵌入式系统技术已被广泛地应用于工业控制系统、信息家电、通信设备、医疗仪器、智能仪器仪表等众多领域,如手机、PDA、MP3、手持设备、智能电话、机顶盒等,可以说嵌入式系统无处不在。
市场对嵌入式系统的需求在飞速增长,企业在努力使开发嵌入式系统的速度跟上市场与竞争的需要。但是,与此同时,嵌入式系统开发的基础理论与方法的研究却严重滞后,这与嵌入式系统的特点有关。嵌入式系统与其他系统的差别主要体现在以下方面:
跨学科性:嵌入式系统融合了微电子、计算机硬件、通信、电子工程、软件工程与系统工程等多种技术。
非功能性需求要求更高:如近乎最优的运行效率、强实时性、稳定性、更高的可靠性与安全性、并发性、移动性等要求。
资源约束:如有限的CPU、内存、电源、显示窗口、按钮或键盘等。
面向应用:无论是软硬件的设计,还是系统的规模、开发过程等都与应用领域密切相关。
相应地,嵌入式系统设计开发的方法、技术、过程以及工具也都与通用计算机系统的开发设计不同。但由于其面向应用、跨学科等特点,相关研究成果也分散在各个学科中,没有系统、完整的集成跨学科成果的理论与方法来指导嵌入式系统的开发。
由于市场对嵌入式系统开发人员的大量需求,自2006年以来,许多学校期望设置嵌入式专业,现在都处于探索阶段,主要存在以下问题:
(1)课程体系不健全。如果课程设置只是将现有不同专业的相关课程拼凑在一起,那么是不可能成为体系的。
(2)没有教材。教材是支撑课程体系的基础,作为一个专业须有系统的教材,这些教材应将分散在各个学科的一些研究成果、理论与技术进行梳理整合。
目前对嵌入式软件开发人员的需求远远大于硬件系统开发人员的需求,这是因为嵌入式系统的功能越来越复杂,嵌入式软件是实现嵌入式系统功能的关键,是嵌入式系统设计创新和增值的关键因素。2005年,北航软件学院成立了嵌入式软件专业,主要是培养嵌入式软件工程硕士,为嵌入式软件产业输送软件开发人员。由于嵌入式系统开发人员必须有一定的硬件基础,所以嵌入式软件工程硕士要求学生本科是电子工程、通信、自动控制、仪器仪表和机电一体化等专业。经过两届嵌入式软件工程硕士的培养,我们总结出一套针对嵌入式软件人才的培养方案,并在教学实践中逐渐完成这套教材的编写。
下面分别简单介绍其中几本主要教材。
《嵌入式系统概论》是一本最基本的关于嵌入式系统开发的教材,这本书结合32位嵌入式微处理器和实时操作系统,介绍了嵌入式系统设计的基本原理与方法。主要内容包括实时系统基本原理、嵌入式系统的设计方法与开发工具、嵌入式微处理器体系结构、嵌入式操作系统基本原理、嵌入式系统软件编程和嵌入式系统应用等知识,每一部分都有相应的实验环节相配合,着重培养学生的实际动手能力,充分体现了嵌入式系统设计“软硬结合,面向应用”的特点。
《嵌入式软件设计》首先从系统的角度出发,介绍在系统分析设计中的系统思想,以及嵌入式系统的软硬件协同设计方法。然后,针对嵌入式软件开发,按照软件开发过程,介绍嵌入式软件需求分析、系统设计和详细设计。书中全面介绍了嵌入式软件设计可能涉及的各种问题及解决方法,如BSP、可靠性、资源管理、界面等的设计与开发环境选择等。本书力图结合嵌入式系统的特点,将软件工程领域成熟的分析设计方法引入到嵌入式软件的分析设计中。由于嵌入式软件设计方面现有的研究成果较少,大多还不是很深入,本书主要是希望向读者传授一种能够全面考虑问题,尽可能利用各个学科已有的设计思想解决问题的思维方式。
《嵌入式软件测试》主要从嵌入式软件测试方法、测试管理和测试工具三个方面介绍嵌入式软件测试。嵌入式软件测试与通用软件测试有相通之处,也有很大差异。嵌入式系统测试与系统软硬件平台关系密切,测试环境的搭建、测试方法都有其特殊要求。本书将主要介绍软件测试的基本理论,嵌入式软件测试方法,嵌入式软件测试环境,嵌入式软件测试过程管理,嵌入式软件测试工具等。
《移动通信技术与嵌入式应用》以信息论为基础,以移动通信系统的3个主要问题——有效性、可靠性和安全性为主线,紧密结合移动通信的特点,系统介绍移动通信基本理论和定性分析结论,目前第二代(2G)和第三代(3G)移动通信技术体制和网络的结构与组成,移动通信系统的开发方式,以及移动通信系统网络各部分与用户终端处嵌入式软件的特点与应用。本书内容主要包括多址技术与扩频通信,无线信道与调制理论,信源编码与信道编码,第三代(3G)移动通信技术体制,移动网络的结构与组成,移动通信(GSM、CDMA2000与WCDMA等)系统通信协议,移动通信系统的解决方案与开发。
这套教材不仅仅面向软件工程硕士,还可作为本科相关专业的教材,以及有志于从事嵌入式软件开发、维护的专业技术人员的参考书。
这套教材的主要作者都是多年从事相关领域研究、开发的专业技术人员,但是由于嵌入式系统的开发涉及跨学科的知识与技术,将嵌入式系统作为独立学科进行的研究还很少,又受到时间和精力的限制,这套书在深度与广度方面有一定局限性,不当及谬误之处,恳请读者批评指正,帮助我们改进、完善这套书。
下表是北航软件学院嵌入式软件专业的主要课程,这些课程可以作为硕士阶段或本科三四年级学习嵌入式软件开发的课程参考。
嵌入式专业课程嵌入式系统概论
嵌入式操作系统
嵌入式软件设计
嵌入式软件测试
DSP嵌入式软件开发技术
嵌入式应用算法基础
移动通信技术与嵌入式应用
嵌入式数据库
Windows CE与嵌入式软件开发
VxWorks与嵌入式软件开发(续)嵌入式专业课程基于J2ME架构的嵌入式软件开发
可编程器件应用
工业数据通信与控制网络工程与管理软件工程
项目管理
软件开发过程实践课程设计
C/C++程序设计实训
团队项目设计
康一梅
2007年5月于北京
早期的嵌入式软件规模较小, 嵌入式软件测试基本上是在软件调试中完成,在包括软硬件的整个系统调试与系统测试中进一步发现错误,然后修正错误,完善软件。随着嵌入式软件的规模越来越大,嵌入式软件也需要进行系统化的测试。
嵌入式软件测试也遵循软件测试的基本原则,但由于在嵌入式系统的开发过程中,软件与硬件始终相互依赖,且嵌入式系统对性能的要求较高,其开发模式、调试方法与桌面软件的开发模式、调试方法都有所不同,因此嵌入式软件测试也有其自己的特点。
本书第1章将介绍嵌入式软件及其质量保证的基本概念。测试是软件质量保证,尤其是软件的产品质量保证的重要手段。第2章和第3章将分别介绍软件测试与嵌入式软件测试的基础知识,说明嵌入式软件测试的特点。第4章讨论嵌入式软件测试的生命周期,包括嵌入式软件开发测试的V模型和多V模型,分别说明在嵌入式软件开发的各个阶段的测试重点和主要工作。第5章则详细介绍嵌入式软件测试技术,包括静态测试技术、动态测试技术,以及嵌入式软件特有的一些测试技术,并通过实例来说明各种测试技术的具体应用。第6章从工程的角度完整地说明嵌入式软件测试的过程,以及每个阶段的任务、文档模板等,这一章将测试的具体实施、过程管理与前面介绍的测试技术相结合,通过实例让读者掌握如何在工程中管理、实施测试工作。第7章详细介绍嵌入式软件测试的环境搭建,这是嵌入式软件测试中非常关键的工作。第8章会给出几种常用的嵌入式软件自动化测试工具及测试管理工具。
本书的读者对象主要定位于高等院校嵌入式软件、计算机及相关专业的硕士研究生与高年级本科生,还可作为有志于从事嵌入式软件开发、维护的专业技术人士的参考书。
本书由康一梅主笔,张永革参与了第2章、第4章、第6章的编写,李志军参与了第3章、第4章、第5章、第7章、第8章的编写。中国兵器工业集团公司软件评测中心的胡江、吴伟研究员对本书进行了审阅和修改,杨波同学在示例方面做了一些工作,在此谨表示诚挚的感谢。
由于时间和精力的限制,本书在深度与广度方面有一定局限性,不当及谬误之处,恳请读者批评指正,以帮助我们改进并完善本书。
随着嵌入式技术的不断发展,嵌入式软件的规模也越来越大,因此需要对嵌入式软件进行系统测试。
嵌入式软件的测试遵循软件测试的基本原则,但是由于嵌入式软件在开发过程、性能要求方面的特殊性,嵌入式软件测试也有其独有的特点。全面介绍嵌入式软件测试的相关概念、测试技术、测试过程、测试环境以及相关的自动化测试工具及管理工具。
从普通软件测试入手,揭示嵌入式软件测试与通用软件测试的相似点及独特之处,有利于读者深入理解嵌入式软件测试的相关知识。
辅以实例,从工程的角度帮助读者了解嵌入式软件测试的具体实施过程。
二十世纪,以量子物理、信息科学、计算数学、控制科学等为基础的信息技术的迅速发展,对全世界的政治、经济、军事、科研、教育等领域都产生了巨大和深远的影响。其中,离散数字式计算、控制装置和各种通用工具性计算机商品是其杰出代表。随着技术的不断进步,应用领域的日益广泛,以及实际需求的不断扩大,以体积小、功耗低、可按需定制等特点为主的嵌入式系统被应用到越来越多的领域。从数控机床到航空航天,从汽车电子到智能家电,随处可见嵌入式系统的身影,嵌入式系统正在不断起到名符其实的嵌入作用。
在信息科学技术领域,我国和发达国家相比还存在着一定的差距,而嵌入式产品和技术的广泛应用,为我们提供了一个“嵌入”发展的机会。从嵌入式技术的发展趋势来看,32位、64位微处理器的出现、嵌入式操作系统的广泛应用、硬件技术的不断进步……极大地推动着嵌入式系统朝着运行速度更快、功能更强大、开发方式更便利快捷等方向不断发展。同时,我国庞大的消费人群也为嵌入式技术的应用提供了广阔的市场空间;汽车、通信、智能家电等领域竞争的不断加剧,极大地激发了嵌入式技术的研发和创新能力;而传统产业的转型和提升也对嵌入式领域提出了更高的要求。因此,我国嵌入式系统的发展应着眼于科学技术并应用多层次并进的方针。
一切事业的发展除了其推动的必然因素和机遇外,人才因素是重要的基础条件,对高等学校而言,培养人才更是其本质工作,因此嵌入式领域人才的培养尤为重要和紧迫。作为肩负人才培养重任的国内各高等院校已经充分的认识到,在完善已有课程体系及授课内容的同时,还要时刻关注科学技术和相关产业的发展趋势,充分利用优秀的教学资源,力争培养出更多中华复兴所需要的优秀人才。正是在这种思想的指导下,北京航空航天大学软件学院结合实际教学及产业发展趋势,在总结已有教学经验及科研成果的基础上,邀请了国内众多嵌入式领域的专家,共同编写了此套嵌入式系统系列教材。本套教材的推出,在嵌入式技术普及和推广、相关人才培养及教学、科研体系建立等方面进行了有益的探索和尝试,同时也必将对国内嵌入式产业的发展起到积极的推动作用。
信息与通信系统专家
中国科学院院士
中国工程院院士
康一梅 张永革 李志军 胡江 吴伟:康一梅: 康一梅博士 目前是北京航空航天大学软件学院嵌入式软件专业主任。1994年她于中国科学院自动化研究所获得工学博士学位,曾任北京首创前锋信息科技有限公司技术总监、北京成康科技发展有限公司总经理、亚讯数码电子有限公司研发部经理、北京金益康新技术有限公司技术总监兼研发中心总经理等职,负责设计开发过二十多个产品,还参与了多个大中型软件项目的研发,拥有两项软件知识产权。
丛书序
丛书前言
前言
教学建议
第1章嵌入式软件概述
11嵌入式系统概述
111嵌入式系统的组成
112嵌入式系统的特点
113嵌入式系统的分类
12嵌入式系统硬件基础知识
13嵌入式系统软件基础知识
131嵌入式软件的分类
132嵌入式操作系统
14嵌入式软件工程
141可行性分析和需求分析阶段
142设计阶段
143实现阶段
144测试阶段
145维护阶段
146嵌入式软件的开发
15嵌入式软件设计的质量
151嵌入式软件开发的质量问题
152嵌入式软件的质量模型
153提高嵌入式软件的质量
第2章软件测试基础
21软件测试的历史
22软件测试的基本概念
23软件测试的对象
24软件测试的信息流
25软件测试的目的和作用
251质量改进
252验证和确认
253可靠性评估
26软件测试的特点
27软件测试原则
28软件测试的分类
29软件测试技术
291静态测试
292动态测试
210软件测试的级别
2101单元测试
2102组件测试
2103集成测试
2104确认测试
2105系统测试
2106验收测试
第3章嵌入式软件测试基础
31嵌入式软件测试的特点
32嵌入式软件统一测试模型
33嵌入式软件目标机环境测试和宿主机
环境测试
34嵌入式软件的测试步骤概述
341系统平台测试
342单元模块测试
343集成测试
344系统测试
345确认测试
35嵌入式软件测试和普通软件测试的
区别
第4章嵌入式软件测试的生命周期
41V模型和多V模型
411软件开发V模型
412嵌入式软件开发V模型
413嵌入式软件开发多V模型
42需求分析阶段
43概要设计阶段
44详细设计阶段
45编码和测试执行阶段
451单元/模块测试阶段
452集成/系统测试阶段
453确认测试阶段
46迭代模型
47嵌入式软件的测试步骤
471单元测试
472集成测试
473确认测试
474系统测试
48嵌入式软件测试策略总结
第5章嵌入式软件测试技术
51软件静态测试
511代码检查
512静态分析
52软件系统测试
521等价类划分
522边界值分析
523因果图法
524猜错法
525系统测试的策略
53软件动态测试
531典型的白盒测试技术
532典型的黑盒测试技术
54嵌入式软件的特殊测试技术
541状态转换测试
542控制流测试
第6章软件测试过程管理与实践
61测试需求分析
611原始需求提取
612产品测试规格说明分析
613测试规格说明分配分解
62测试计划
621任务分解与工作量估计
622软件测试计划
623测试计划制定
63测试设计
631软件设计评审
632测试设计
633测试方案设计
64测试用例设计
641编写测试用例的步骤
642测试用例的编写要求
643测试用例编写/设计技术
644测试用例模板
65测试执行
651编码阶段
652稳定阶段
653发布和验收阶段
654测试执行日志
655测试执行报告
656测试总结报告
66软件测试缺陷管理
661软件缺陷跟踪过程
662软件缺陷报告
第7章嵌入式软件测试环境
71嵌入式软件测试环境综述
711嵌入式软件仿真测试环境
712嵌入式软件测试环境的体系
结构
713交叉测试方式
714插桩技术
72各测试阶段需要的测试环境
721模型阶段
722原型阶段
723临近生产阶段
724开发后阶段
73嵌入式软件测试环境的建立
74嵌入式软件测试环境建立实例
第8章软件测试自动化
81LOGISCOPE
811LOGISCOPE概述
812LOGISCOPE的优点
813LOGISCOPE的使用
82CodeTest
821CodeTest概述
822CodeTest Native
823CodeTest SoftwareInCircuit
824CodeTest HardwareInCircuit
825CodeTest的功能
826Tornado环境中CodeTest的使用
83CRESTS/ATAT
831CRESTS/ATAT概述
832CRESTS/ATAT的功能
833CRESTS/ATAT的设计原理
834CRESTS/ATAT的使用
835其他支持测试软件的介绍
84TestManager
841TestManager概述
842TestManager的使用
参考文献