1、1毕业设计开题报告电子信息科学与技术嵌入式软件测试和软件质量评估一、选题的背景与意义嵌入式系统出现至今已经有30多年的历史了,嵌入式技术也经历了几个发展阶段。20世纪70年代,嵌入式系统开始应用于工业控制领域。随着国防、工业、医疗等部门对智能控制需求的不断增长和计算机技术、微电子技术的飞速发展,嵌入式微处理器在运算速度、可扩展能力、可靠性、功耗和集成度等方面都得到了显著提高,从而使得嵌入式系统的应用领域不断扩展。进入21世纪后,多媒体技术与INTERNET的应用迅速普及,消费电子、计算机、通信一体化日趋明显,嵌入式技术再次成为一个研究热点,嵌入式技术不再简单的被用于功能控制,随着集成电路工艺技
2、术的不断发展和集成度的大幅度提高,将操作系统集成到单一芯片中,实现单硅片嵌入式系统已成为现实,嵌入式系统凭借着自身的许多优点已经被应用到人类生活的各个领域,如金融、国防、航天等,并且将向网络化、智能化继续发展。信息化社会的建设对嵌入式系统市场提出巨大需求,商业、工业、航天等领域对嵌入式设备的需求与日俱增,嵌入式系统产业在国内外的市场上拥有着广阔的天地。然而由于嵌入式设备的特殊性,对嵌入式系统及软件的可靠性、有效性和稳定性有着比普通设备更高的要求,嵌入式设备故障往往会导致灾难性的后果,即使是在对安全性要求不高的领域,由于大批量生产也会导致严重的经济损失。因此,嵌入式软件质量、嵌入式操作系统的性能
3、等对嵌入式设备来说至关重要,也越来越受到人们的重视。二、研究的基本内容与拟解决的主要问题本课题通过对嵌入式软件特点及其测试策略的深入分析和对LINUXTESTPROJECT(简称LTP)、IOZONE、NETWORK等相关测试套件的研究,实现三个专业的、完善的用于CPU、I/O、NETWORK性能测试的工具并用于评估嵌入式平台性能。主要研究内容包括21对LTP、IOZONE、NETWORK等相关测试集的研究与分析;2测试用例、测试脚本的编写;3测试代码移植到平台上的运行;4嵌入式平台性能评估。以上四方面的内容包含了我的课题所要解决的四个主要问题。第一,对LTP、IOZONE、NETWORK等相
4、关测试集的详细研究与分析,研究这些测试集所包含的测试用例的整体构架,分析测试用例代码的数据结构和测试具体的实现过程;第二,借鉴LTP、IOZONE等测试集研究所得编写完善的、专业的主要用于NETWORK、I/O、CPU相关性能测试的测试用例及测试脚本;第三,代码在测试平台上的运行主要包含在虚拟机和FREESCALE7448平台上运行测试;第四,运用编写的测试用例测试嵌入式操作系统的性能,根据测试结果评估嵌入式平台性能。三、研究的方法与技术路线1,研究嵌入式LINUX系统的功能特性嵌入式LINUX操作系统包括LINUX内核,完整的网络支持,强大的文件系统,I/O管理功能模块。嵌入式LINUX操作
5、系统的内核是基于LINUX的最新稳定发布版加上硬实时调度器构成的,支持最新的LINUX特性,它是源代码级可配置的,提供了源码配置工具,以使内核根据相应的应用进行必要的裁剪与组合。2,实现完善的、专业的用于测试CPU、I/O、NETWORK性能的工具。通过对LTP、IOZONE等相关测试集的研究与分析,对他们的优缺点进行总结,取长补短,对它们进行改进,实现三个完善的、专业的由于测试CPU、I/O、NETWORK性能的工具。3,交叉(CROSSTEST)测试31,构建宿主环境测试在嵌入式软件测试中,常采取折衷,基于目标的测试消耗较多的经费和时间,而基于宿主的测试代价较小,目前的趋势是把更多的测试转
6、移到宿主环境中进宿主环境目标环境SERIALNET3行,但毕竟是在模拟环境中进行的,目标环境的复杂性和独特性不可能完全模拟。本课题在测试过程中搭建基于X86处理器上虚拟机宿主环境,用于测试一些单元、模块等底层测试。32,目标环境与宿主环境对比测试由于目标环境的复杂性和独特性在宿主环境中无法完全模拟,所以在宿主环境中一边进行软件的单元、模块等底层测试,然后将系统移植到目标环境中进行集成、系统、基础软/硬件、性能等测试。这样既避免了底层测试环境搭建难得问题,同时又能验证系统在向目标环境移植的过程中可能出现的不知名的错误,做到测试的高效和有效性。宿主环境测试完成后,测试代码将会被移植到FREESCA
7、LE7448平台上运行测试,该平台是基于POWERPC处理器上的测试平台。如此,可以做到在不同处理器环境中的对比测试。四、研究的总体安排与进度1、201010201012查阅文献,做英文翻译;2、201012201101完成开题报告,熟悉嵌入式环境下的编程;3、201101201103完成在虚拟机和FREESCALE7448平台上运行测试;4、201104撰写毕业论文,准备答辩。五、主要参考文献1美GLENFORDJMYERS等著,王峰,陈杰译THEARTOFSOFTWARETESTINGSECONDEDITIONM北京机械工业出版社,20062RONPATTONSOFTWARETESTING
8、2NDEDITIONSAMSPUBLISHING,20063WANGLISSUESONSOFTWARETESTINGFORSAFETYCRITICALREALTIMEAUTOMATIONSYSTEMSTHE23RDDIGITALAVIONICSSYSTEMSCONFERENCE20044范永开,杨爱林LINUX应用开发技术详解M北京机械工业出版社,20035朱少民软件测试方法和技术M北京清华大学出版社6(美)KURTWALL等著,张辉译GNU/LINUX编程指南(第二版)M清华大学出版社47微软工程师微软的软件测试之道机械工业出版社8朱少民全程软件测试M北京电子工业出版社,20079郭群嵌入式
9、软件测试设计技术J微型处理机,2008810张丹青,陈云秋,王继红基于LTP的LINUX内核测试方法研究J计算机与数字工程,2008,36811朱岩应用LINUXTESTPROJECT组件测试LINUX内核的研究J中国测试术,2009,35512吕雪峰,宋泽宇嵌入式LINUX软件测试框架的研究J软件导刊,2009,81113张阳,程杰基于SEP4020的嵌入式LINUX系统移植J电子技术研发14杨雪,罗贤全,马俊涛基于嵌入式LINUX的测试系统软件实现研究J现代电子技术,200765毕业设计文献综述电子信息科学与技术嵌入式软件测试和软件质量评估嵌入式系统出现至今已经有30多年的历史了,嵌入式技
10、术也经历了几个发展阶段。20世纪70年代,嵌入式系统开始应用于工业控制领域。随着国防、工业、医疗等部门对智能控制需求的不断增长和计算机技术、微电子技术的飞速发展,嵌入式微处理器在运算速度、可扩展能力、可靠性、功耗和集成度等方面都得到了显著提高,从而使得嵌入式系统的应用领域不断扩展。进入21世纪后,多媒体技术与INTERNET的应用迅速普及,消费电子、计算机、通信一体化日趋明显,嵌入式技术再次成为一个研究热点,嵌入式技术不再简单的被用于功能控制,随着集成电路工艺技术的不断发展和集成度的大幅度提高,将操作系统集成到单一芯片中,实现单硅片嵌入式系统已成为现实,嵌入式系统凭借着自身的许多优点已经被应用
11、到人类生活的各个领域,如金融、国防、航天等,并且将向网络化、智能化继续发展。信息化社会的建设对嵌入式系统市场提出巨大需求,商业、工业、航天等领域对嵌入式设备的需求与日俱增,嵌入式系统产业在国内外的市场上拥有着广阔的天地。然而由于嵌入式设备的特殊性,对嵌入式系统及软件的可靠性、有效性和稳定性有着比普通设备更高的要求,嵌入式设备故障往往会导致灾难性的后果,即使是在对安全性要求不高的领域,由于大批量生产也会导致严重的经济损失。因此,嵌入式软件质量、嵌入式操作系统的性能等对嵌入式设备来说至关重要,也越来越受到人们的重视。目前,国内外对嵌入式软件测试的研究重点已经转移,单元测试、集成测试等常规的测试技术
12、已经比较成熟,软件可靠性测试正在成为业界的热点。国内在软件可靠性测试方面研究成绩比较突出,北航嵌入式软件测试小组开发的嵌入式软件可靠性测试平台已经投入使用。但在嵌入式软件常规测试领域,由于国内起步比较晚,成熟的测试工具比较少,一些在用的成熟的测试工具都属于国外公司拥有。可以说嵌入式软件测试在我国尚处于起步阶段。出现这种状况与我国的嵌6入式软件发展现状有关第一,国内甚至国际上对软件测试存在着误区和不重视;第二,国内大部分嵌入式软件直接运行在硬件之上,而国内外嵌入式测试工具一般都是针对特定的嵌入式操作系统,测试运行在特定嵌入式操作系统之上的软件;第三,由于国内嵌入式系统很少使用操作系统,许多国外的
13、测试工具很难由于测试,而单元测试费用太高,同时许多软件开发的周期也不允许,测试常常是走走过程。这样国内的嵌入式软件的发展受到了很大的限制。本课题主要研究目的是用于嵌入式测试平台选型,平台选型在工程运用中有着无比重要的意义。随着嵌入式技术的发展,嵌入式设备运用越来越广泛,用户对于设备的功能要求也日益繁杂,一些用于指定功能途径的设备相继被开发出来,比如,专门用于计算、存储的设备,对CPU运算性能、硬盘的读写速度有很高的要求,而基于各种用途的嵌入式系统和软件的测试平台也是五花八门,并且缺少一些表完善、全面体现各个方面性能的测试软件。现阶段虽然很多开源社区提供了可供选择的很多开源测试软件,但它们都是针
14、对于某一方面的性能测试,不能用于完整的性能测试。本课题主要通过研究一些开源LINUX系统性能测试软件,实现三个专业、完善的由于CPU、I/O和NETWORK的性能测试软件。由于传统的“重开发,轻测试”的思维弊端,使得软件测试不被重视,残留下很多类似于测试时间不足、测试人员技术的不高等诟病。未来的嵌入式软件测试行业主要重在于提高测试人员的地位、技术水平;测试与开发并举;规范测试的流程,寻找高效、自动、高质量的测试策略和方法;开发完善的、专业的测试工具。4、主要参考文献1美GLENFORDJMYERS等著,王峰,陈杰译THEARTOFSOFTWARETESTINGSECONDEDITIONM北京机
15、械工业出版社,20062RONPATTONSOFTWARETESTING2NDEDITION,SAMSPUBLISHING,20063WANGLISSUESONSOFTWARETESTINGFORSAFETYCRITICALREALTIMEAUTOMATIONSYSTEMSTHE23RDDIGITALAVIONICSSYSTEMSCONFERENCE20044范永开,杨爱林LINUX应用开发技术详解M北京机械工业出版社,20035朱少民软件测试方法和技术M北京清华大学出版社76(美)KURTWALL等著,张辉译GNU/LINUX编程指南(第二版)M清华大学出版社7微软工程师微软的软件测试之道机
16、械工业出版社8朱少民全程软件测试M北京电子工业出版社,20079郭群嵌入式软件测试设计技术J微型处理机,2008810张丹青,陈云秋,王继红基于LTP的LINUX内核测试方法研究J计算机与数字工程,2008,36811朱岩应用LINUXTESTPROJECT组件测试LINUX内核的研究J中国测试术,2009,35512吕雪峰,宋泽宇嵌入式LINUX软件测试框架的研究J软件导刊,2009,81113张阳,程杰基于SEP4020的嵌入式LINUX系统移植J电子技术研发14杨雪,罗贤全,马俊涛基于嵌入式LINUX的测试系统软件实现研究J现代电子技术,200768本科毕业设计(20届)嵌入式软件测试与
17、软件质量评估9摘要【摘要】随着嵌入式技术由简单的工业控制发展到现今的单硅片化,使得嵌入式系统硬件性能和规模有了极大的提高,嵌入式设备越来越多的进入到人们的生活当中,测试嵌入式系统和运行在它上面的应用软件的可靠性、健壮性和稳定性变得越来越重要,但由于嵌入式系统的实时性和嵌入性,导致嵌入式软件测试很难执行开发与测试并行的测试策略。本课题首先从软件测试着手,介绍软件测试的基本理论和基本概念,研究软件测试的基本方法、策略,并引入嵌入式系统的概念,分析嵌入式软件测试的特性,引入嵌入式软件测试。然后主要通过对嵌入式软件测试方法和策略的分析研究,并且借鉴一些开源测试软件实现了三个比较专业的、完善的CPU、N
18、ETWORK、I/O性能测试工具,用于测试嵌入式LINUX系统和评估嵌入式平台的性能。【关键词】嵌入式系统;软件测试;软件集成;平台选型。ABSTRACT【ABSTRACT】WITHTHEEMBEDDEDTECHNOLOGYDEVELOPMENTFROMTHESIMPLETOTHEPRESENTINDUSTRIALCONTROLASINGLESILICONCHIP,MAKINGTHEEMBEDDEDSYSTEMHARDWAREPERFORMANCEANDSCALEHASBEENGREATLYIMPROVED,MOREANDMOREEMBEDDEDDEVICESINTOPEOPLESDAILYL
19、IVES,THETESTEMBEDDEDSYSTEMSANDRUNAPPLICATIONSONITSRELIABILITY,ROBUSTNESSANDSTABILITYBECOMEINCREASINGLYIMPORTANT,BUTBECAUSEOFREALTIMEEMBEDDEDSYSTEMSANDEMBEDDED,LEADINGTOTHEIMPLEMENTATIONOFEMBEDDEDSOFTWAREDEVELOPMENTANDTESTINGOFTHETESTISDIFFICULTTOPARALLELTESTSTRATEGYTHESUBJECTOFTHEFIRSTSETFROMTHESOFT
20、WARETESTING,SOFTWARETESTINGINTRODUCEDTHEBASICTHEORYANDBASICCONCEPTS,BASICMETHODSOFSOFTWARETESTING,STRATEGIES,ANDINTRODUCESTHECONCEPTOFEMBEDDEDSYSTEMS,ANALYZETHECHARACTERISTICSOFEMBEDDEDSOFTWARETESTING,THEINTRODUCTIONOFEMBEDDEDSOFTWARETESTINGANDTHENMAINLYTHROUGHTHEEMBEDDEDSOFTWARETESTINGMETHODSANDANA
21、LYSISSTRATEGIES,ANDLEARNFROMSOMEOPENSOURCESOFTWAREIMPLEMENTATIONOFTHETESTTHREEMOREPROFESSIONAL,COMPREHENSIVECPU,NETWORK,I/OPERFORMANCETESTINGTOOLFORTESTINGEMBEDDEDLINUXSYSTEMANDASSESSTHEPERFORMANCEOFEMBEDDEDPLATFORMS【KEYWORDS】EMBEDDEDSYSTEMSSOFTWARETESTINGSOFTWAREINTEGRATIONPLATFORMSELECTION10目录1绪论1
22、11研究背景112研究内容及国内外的现状113文章结构12嵌入式系统概述321嵌入式系统的发展道路322嵌入式系统特性323嵌入式系统的定义43软件测试631软件测试的概念632软件测试的步骤633软件测试的分类6331以功能为依据分类73311黑盒测试BLACKTEST73312白盒测试WHITETEST73313灰盒测试8332以时间为依据的分类83321单元测试(UNITTEST)83322集成测试INTEGRATETEST83323功能测试FUNCTIONTEST93324系统测试SYSTEMTEST9333以运行状态为依据的分类103331静态测试STATICTEST103332动态
23、测试(DYNAMICTEST)1034软件测试的原则1135嵌入式软件测试11351嵌入式软件测试的独特性11352嵌入式软件测试的环境12353嵌入式软件测试的重点和难点12354嵌入式软件测试的方法134测试工具集成1341集成环境1342CPU性能测试工具集成14421CPU性能测试工具的设计目的14422CPU性能测试工具编程实现1411423CPU性能测试过程1543NETWORK性能测试工具集成18431性能测试工具的设计目的18432NETWORK测试工具编程实现19433NETWORK性能测试过程2244NETWORK性能测试工具集成27441I/O性能测试工具的设计目的274
24、42I/O性能测试工具编程实现27443I/O性能测试过程315测试结果及分析3551CPU测试结果及分析3552NETWORK测试结果及分析3653I/O测试结果及分析4254小结436结束语44参考文献45致谢错误未定义书签。附录4611绪论11研究背景嵌入式系统出现至今已有30多年的历史,嵌入式技术也经历了几个发展阶段。20世纪70年代,嵌入式系统首先被应用到工业控制领域。随着科学技术的不断发展,各行各业对智能控制需求不断增长以及计算机技术、微电子技术飞速发展,嵌入式微处理器技术逐渐的成熟,从而使嵌入式系统的应用领域更加的广发。进入21世纪后,多媒体技术与INTERNET的迅速普及,消费
25、电子、计算机、通信一体化日趋明显,嵌入式技术再次成为研究热点,嵌入式技术不再简单的被用于功能控制,随着集成电路工艺技术的不断发展和集成度的大幅度提高,将操作系统集成到单一芯片中,实现单硅片嵌入式系统已成为现实,嵌入式系统凭借着自身的许多优点已经被应用到人类生活的各个领域,如金融、国防、航天等,并且将向网络化、智能化继续发展。信息化社会的建设对嵌入式系统提出巨大的市场需求。航天、工业、商业等领域对嵌入式设备的需求与日俱增,嵌入式系统产业在国内外市场上拥有着广阔的天地。然而由于嵌入式设备的特殊性,对嵌入式系统及应用软件的可靠性、有效性和稳定性有着比普通设备更高的要求,嵌入式设备故障往往会带来灾难性
26、的后果,即便是在对安全性要求不高的领域,由于批量生产也会直接导致严重的经济损失。因此,嵌入式软件质量、嵌入式操作系统的性能等对嵌入式设备来说至关重要,也越来越受到人们的重视。12研究内容及国内外的现状本课题通过对嵌入式软件测试策略的深入分析,并借鉴LINUXTESTPROJECT(简称LTP)、IOZONE、NETWORK等相关测试套件,实现三个专业的、完善的用于CPU、I/O、NETWORK性能测试的工具,用于评估嵌入式平台性能。主要研究内容包括5对LTP、IOZONE、NETWORK等相关测试集的研究与分析;6测试用例、测试脚本的编写;7测试代码移植到平台上的运行;8嵌入式平台性能评估。以
27、上四方面的内容包含了我的课题所要解决的四个主要问题。第一,对LTP、IOZONE、2NETWORK等相关测试集的详细研究与分析,研究这些测试套件所包含的测试用例的整体构架,分析测试用例代码的数据结构和测试具体的实现过程;第二,借鉴LTP、IOZONE等测试集研究所得编写完善的、专业的主要用于NETWORK、I/O、CPU相关性能测试的测试用例及测试脚本;第三,代码在测试平台上的运行,主要包含在虚拟机和FREESCALEMPC7448平台上运行测试;第四,运用编写的测试用例测试嵌入式操作系统的性能,评估嵌入式平台性能。目前,国内外对嵌入式软件测试的重点已经从底层的单元测试转移到软件可靠性测试,软
28、件的稳定性和健壮性逐渐成为业界的热点。国内在嵌入式软件可靠性测试方面有比较突出的研究,如北航嵌入式软件测试小组研发的嵌入式软件可靠性测试平台已投入使用,但由于国内嵌入式软件测试起步比较晚,一些常规测试还是处于初级阶段并且缺少成熟的测试工具,测试大多使用国外的工具,可以说嵌入式软件测试在我国还处于初级阶段9。出现这种种状况与我国的嵌入式软件发展现状有关第一,国内外对软件测试存在着误区和不重视;第二,国内嵌入式软件测试的对象有些偏差;第三,由于国内嵌入式设备很少使用操作系统,很难用一些国外的专业测试工具测试,而单元测试耗费太高,同时大多数软件开发的周期也不允许,测试常常是走走过程。这样使国内嵌入式
29、软件测试的发展受到了很大的限制。由于传统的“重开发,轻测试”的思维弊端,使得软件测试不被重视,残留下很多类似于测试时间不足,测试人员技术水平低等诟病。未来嵌入式软件测试行业主要重在于提高测试人员的地位、技术水平,测试与开发并举,规范测试的流程,寻找高效、自动、高质量的测试策略和方法,开发完善的、专业的测试工具。13文章结构按照论述的内容,本文分为六章,具体安排如下第一章主要介绍本课题的研究背景和研究内容,对课题所研究的问题和主要方法进行概括性说明。第二章主要介绍嵌入式系统概念。主要包括嵌入式系统的定义、道路和特性。第三章论述软件测试的基本原理,主要包括软件测试的概念、步骤、分类和原则。引入嵌入
30、式软件测试,主要介绍嵌入式软件测试的测试方法,测试的独特性和测试环境。第四章主要介绍CPU、NETWORK、I/O三个测试工具的集成。本章主要说明CPU、NETWORK、I/O三个测试工具的实现和测试功能,并阐述它们用到的关键技术。第五章主要进行宿主机和目标机对比测试,测试结果的记录与分析。第六章主要对本课题做最后总结。32嵌入式系统概述21嵌入式系统的发展道路目前,嵌入式系统广泛应用到各个领域,然而,人们对嵌入式系统还是不甚了解,不知道手机智能化、家电网络化等都与嵌入式技术息息相关。人们对嵌入式系统的解释基本都是列举嵌入式系统的一些特点,不是从定义出发,往往不知所云。因此,有必要了解嵌入式系
31、统的背景,总结出嵌入式系统较为精准的定义。1嵌入式技术首用于微机时代人类早在1946年就发明了计算机,但是在其后相当长的发展历程中,计算机作为一个庞然大物被供养在特殊的机房中,用于数值计算。20世纪70年代,微型处理器的出现,带来计算机变革式的发展。以微处理器为核心的微型计算机凭借其优异的性能和合理的价格慢慢的走进了人们的生活。基于高速数值计算能力的微型机逐渐的被嵌入到大型设备当中,实现设备的自动化化控制。为了区别于最初的通用计算机,把嵌入到对象当中,实现对象自动化控制的计算机,称作嵌入式计算机系统。因此,嵌入式系统的嵌入式特性是将一个计算机嵌入到一个对象中去,这是理解嵌入式系统最根本的出发点
32、。2计算机技术的两大分支由于嵌入式计算机系统的嵌入特性,它有着与通用计算机系统完全不同的技术要求和发展方向。通用计算机系统的技术要求是海量、高速的数值计算;向着总线速度无限提升,存储容量无限扩大的技术方向发展。而嵌入式计算机系统的技术要求则是对象体系的智能化控制能力;向着体积小、可裁剪、可靠性好、控制能力强等技术方向发展。早期,人们就将通用计算机系统进行改装,在大型设备中实现嵌入式应用。然而,对于大多数对象系统,无法嵌入通用计算机系统,而且嵌入式系统与通用计算机系统向着完全不同的方向发展,因此,必须将通用计算机系统与嵌入式计算机系统独立开来发展,这样就形成了现代计算机技术发展的两大分支。如果说
33、微型机的出现,使计算机加入到现代计算机发展阶段,那么嵌入式计算机的诞生,带来了嵌入式计算机与通用计算机共同发展的时代,从而导致20世纪末,计算机的高速发展时期。422嵌入式系统特性嵌入式系统与通用计算机系统相比有如下的特性(1)嵌入式系统是面向具体应用的。嵌入式系统的专用性很强,是在特定领域内完成特定功能的计算机系统,其中的软件系统和硬件的结合非常紧密,一般需要针对硬件进行系统移植,同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合。(2)系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其更能世纪及实现上过于复杂。(3)高实时性操作系统。因为嵌入式大多
34、数应用于过程控制,这些领域要求实时性很强。并且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。(4)嵌入式系统是高可靠的独立运行系统。嵌入式系统一般不与人交互,独立运行,因此嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中。(5)嵌入式软件开发走向标准化。为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS开发平台,这样才能保证程序执行时的实时性、可靠性。并减少开发时间,保证软件质量。(6)集成度高。嵌入式系统一般用于工业控制、移动通信、家用电器等领域,因此对系统本身的体积大小有严格的要求,同时为了提高开发效率,也要求系统集成度比
35、较高。(7)低功耗。嵌入式系统的部分使用领域;便携式设备、移动通信设备等以电池作为供电电源的设备,决定了系统应该有更低的功耗。(8)系统成本低。成本对任何一个系统来说收拾很关键的因素,嵌入式系统也不例外,设计是应该在满足要求的前提下尽可能的降低成本。(9)环境适应能力强。嵌入式系统往往工作在一些特殊的环境下,如热、冲击、光、强电、强磁等,这些因素对系统影响很大,因此在设计时应当考虑到对这些干扰的防护措施。(10)嵌入式系统本身不具备自主开发能力。嵌入式开发采用独特的宿主机目标机模式,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。23嵌入式系统的定义5嵌入式系统是以应用为中
36、心,以计算机技术作为基础,并且软硬件都可以裁剪,适用于应用系统对成本、体积、功耗、功能、可靠性有严格要求的专用计算机系统。一般由嵌入式微处理器、嵌入式操作系统、外围硬件设备和用户应用程序等四个部分组成,用于对其他社的控制、管理或监视等功能。嵌入式系统包括硬件和软件两部分,一般指非PC系统。硬件部分主要包括处理器/微处理器、存储器、外设器件、I/O端口、图形控制器等。软件部分主要包括应用程序和操作系统要求实时和多任务操作。63软件测试31软件测试的概念软件测试是软件生存期如图31中的一个重要阶段,广义上讲,软件测试是指软件生存周期内所有的检查、评审和确认活动,是软件质量保证的关键步骤。狭义上讲,
37、软件测试是对软件质量的检验和评价。图31软件生存周期示意图IEEE1将软件测试定义为使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别1。这个定义非非常明确地提出软件测试是以检验是否满足需求为目标。另一种观点认为软件测试是为了发现错误而执行程序的过程,或者说,软件测试应该是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例去运行程序,以发现程序错误或缺陷1。总的来说,软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程,一个成功的测试用例,通过诱发程序发生错误,可以在这个方
38、向上促进软件质量的改进,当然,最终我们还是要通过软件测试来建立某种程序的信心软件做了其应该做的,未做其不应该做的1。32软件测试的步骤软件测试一般包含四个步骤,即单元测试、集成测试、功能测试和系统测试。图32表示测试的四个步骤。开始阶段程序以模块的形式分别进行单元测试,确保每个模块能正常工1IEEEINSTITUTEOFELECTRICALANDELECTRONICSENGINEERSIEEE美国电气电子工程协会7作,单元测试一般采用白盒测试方法,尽可能多的发现模块内部的程序问题。然后把测试通过的模块组合起来,进行集成测试,主要检查软件模块集成后能否正常工作,该阶段主要采用黑盒测试的方法。完成
39、集成测试后,检测开发软件是否满足功能和性能需求,功能测试大多数采用黑盒测试方法。完成功能测试后,将测试通过的软件与系统其他部分结合起来进行系统测试,检验软件能否在实际运行环境中正常工作。图32软件测试的步骤示意图33软件测试的分类软件测试根据不同的分类依据可以分为如下几类331以功能为依据分类软件测试按照功能可分为如下几种测试3311黑盒测试BLACKTEST黑盒测试是一种重要的测试策略,也就是所谓的功能测试,也被称为数据驱动的测试或输入/输出的测试,任何程序都可以看作是将输入定义域取值映射到输出值域的函数。使用该测试方法时,将系统视为一个黑盒子,测试目标与程序的内部结构和机制完全无关,而用输
40、入和输出表示的黑盒函数则被完全了解。在这种方法中,测试数据完全来源于软件规范(与软件的内部结构及如何实现无关),如果想用这种测试方法来发现软件的错误,判定的标准就是“穷举输入测试1”,将所有可可能的输入条件都作为测试用例。黑盒测试用例有两个显著的优点(1)测试与软件如何实现无关,所以如果软件实现发生某些变化,测试用例依然可以使用;(2)测试用例开发与实现可以并行进行,因此可以缩短总的项目开发时间。然而,黑盒测试自身存在着不足由于测试属于穷举输入测试,往往会导致测试用例相互之间出现冗余;穷举输入测试时无法完全实现的,测试时通过有限的测试用例,最大限度地提高发现问题的数量,已取得最好的效果,所以还
41、会存在未测试的软件漏洞。83312白盒测试WHITETEST白盒测试或逻辑驱动测试,也称之为结构测试,允许我们检查代码内部的结构。白盒测试的解决办法,即将程序中的每条语句至少执行一次。与黑盒测试中穷举输入测试相似这种测试方法被称为穷举路径测试方法。所谓穷举路径测试,即如果使用测试用例执行了程序中所有可能的控制流路径,那么程序可能得到完全测试1。白盒测试是基于代码检测测试程序内部设计,与代码覆盖率密切相关。软件人员通过白盒测试对软件进行如下的检查(1)对程序中所有的独立路径至少执行一次;(2)对程序中所有的逻辑判定,取“真”和取“假”都要至少执行一次;(3)在循环体的边界和运行界限内执行测试;(
42、4)测试程序内部数据结构的有效性。白盒测试通常适用于单元测试,根据程序结构信息设计测试用例,一般能发现黑盒测试没有测试到的部分,主要目的是考察软件的逻辑结构。3313灰盒测试一般来说,测试按照功能可分为白盒测试和黑盒测试。但是,随着软件测试业的发展,引入了灰盒测试的概念。灰盒测试结合了程序运行时的外部表现和程序内部逻辑结构来设计用例,执行程序同时采集程序路径执行信息和外部用户接口结果的测试技术。灰盒测试的优点二、能够同时进行基于需求的覆盖测试和基于程序路径的测试;三、测试结果直接定位到程序内部,便于漏洞的定位、分析和解决;四、保证黑盒测试用例的完整性。防止遗漏软件的一些不常用功能;灰盒测试适用
43、于大多数项目,尤其是涉及到生命或重大财产安全的项目适合使用该测试方法。332以时间为依据的分类3321单元测试(UNITTEST)单元测试(模块测试)是对程序中的单个子程序或过程进行测试的过程,换句话说,开始阶段并不是对整个程序进行测试,而是集中在构成程序的较小单元测试上面。这样做有三个好处。首先,由于单元测试一开始将注意力集中在程序的较小模块上,因此它是一种管理组合的测试方法。其次,单元测试能够确切地定位错误出现的位置,减轻了调试的难度。第三,单元测试为我们提供了同时测试多个模块的可能,将并行测试方法引入到软件测试中。9单元测试用例由程序员自己来完成,最终受益的是程序员自身,换句话说,程序员
44、有责任编写功能代码,同时也有责任编写单元测试代码。执行单元测试,就是为了证明功能代码的行为和我们预期的一致。3322集成测试INTEGRATETEST集成测试是单元测试的逻辑扩展,也称作组装测试或联合测试。实践证明,能够通过单元测试的单独模块,联合在一起并不一定能够保证正常工作,全局可能暴露程序在某些局部无法反映出来的问题,因此,需要在每个模块完成测试后把它们联结起来,进行集成测试。集成测试是在单元测试的基础上,将所有的软件单元按照设计要求组装成模块、子系统或系统,检测各模块是否达到或实现相应的技术指标或要求的过程。集成测试的对象是已经经过单元测试的软件,这一点至关重要,如果测试对象没有见过单
45、元测试,将会严重影响到集成测试的效果,并且会增加软件代码纠错的代价。集成测试是单元测试的逻辑扩展,现实测试中,集成是将多个单元组合成模块,模块又组成子系统或系统。集成测试是测试软件单元组合后能否正常工作,模块集成后能否正常工作,以及所有模块组合起来能否正常工作。集成测试主要以软件概要设计规格说明2为标准,任何不符合该说明的模块都将会被加以记载并上报。任何一个软件项目都不能摆脱系统集成这一阶段,不管采用什么样的开发模式,具体开发都得从一个一个的软件单元做起,软件单元只有经过集成才能构成一个整体。过程实践中,只要有集成或多或少会出现一些问题,几乎不存在软件单元集成过程中不出现问题的情况。实际上,集
46、成测试花费的时间远远超过单元测试,集成测试是软件项目开发过程中必须的阶段。3323功能测试FUNCTIONTEST系统测试是最困难的测试,常常被误解为测试整个系统或程序的功能,然而有了功能测试,这样显然是多余的。系统测试的目的是将系统或程序与其初始目标进行比较。这其中隐含两方面的含义1系统测试并不局限于系统。如果产品是一个程序,那么系统测试是一个试图说明程序作为一个整体是如何不满足其目标的过程1。2根据定义,如果产品没有一组书面的、可度量的目标,系统测试也就无法进行1。系统测试是将通过功能测试的程序,作为整个基于计算机系统的一个模块,与计算机外2软件概要设计规格说明描述软件需求及软件的总体结构
47、,指导软件项目的详细设计和代码编写10设、硬件、支持软件、数据等其他系统模块结合在一起,在实际运行环境中,随计算机系统进行相关的测试。系统测试的用例是根据需求说明书来设计,并在实际使用环境条件下来运行测试。3324系统测试SYSTEMTEST系统测试是最困难的测试,常常被误解为测试整个系统或程序的功能,然而有了功能测试,这样显然是多余的。系统测试的目的是将系统或程序与其初始目标进行比较。这其中隐含两方面的含义1系统测试并不局限于系统。如果产品是一个程序,那么系统测试是一个试图说明程序作为一个整体是如何不满足其目标的过程1。2根据定义,如果产品没有一组书面的、可度量的目标,系统测试也就无法进行1
48、。系统测试是将通过功能测试的程序,作为整个基于计算机系统的一个模块,与计算机外设、硬件、支持软件、数据等其他系统模块结合在一起,在实际运行环境中,随计算机系统进行相关的测试。系统测试的用例是根据需求说明书来设计,并在实际使用环境条件下来运行测试。333以运行状态为依据的分类按照运行状态软件测试可以分为如下几类3331静态测试STATICTEST静态测试不需要运行代码,及不需要对代码进行编译,生成可执行文件,而是对代码直接进行分析,对代码进行语法扫描,找出编码不规范的地方,根据特定的质量模型评价代码质量,做出系统调用关系图。静态测试包括代码检查、结构分析、代码质量度量等。该测试可以由人工进行,也
49、可以借助工具自动运行。代码检查主要包括代码走查、桌面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可靠性、可读性、代码的逻辑表达的正确性,代码结构的合理性等方面5;可以发现违背程序编写标准的问题(包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等),程序中不安全、不明确和模糊的部分,找出程序不可移植部分等。代码检查能够快速找到代码缺陷,发现3070的逻辑设计和编码缺陷,比动态测试更为有效。但代码检查测试非常耗费时间,并且需要有知识和经验的专业测试人员。3332动态测试(DYNAMICTEST)动态测试主要采用“插桩”的方式,开发人员在代码中插入一些检测代码,用来统计程11序运行时的数据。与静态测试不同,动态测试要运行被测程序。动态测试主要包括覆盖率分析、内存分析、性能分析和功能确认与接口测试等。覆盖率分析主要是对代码执行路径覆盖范围进行评估,如语句覆盖、判定覆盖、条件覆盖、修正条件覆盖、修正判定覆盖等。内存分析主要测量内存的使用情况,内存分配情况,在系统崩溃前发现内存泄漏错误,并根据发生错误是的上下文,指出错误原因。一个程序的好坏与其运行速度密切相关,代码运行速度慢是软件开发过程中的一个重要问题,如果程序员不能解决程序的性能问题,将对程