嵌入式软件测试技术[基础篇]

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1嵌入式软件测试技术嵌入式软件测试技术(基础篇)(基础篇)皮永辉2012年8月2内容提要™嵌入式软件测试基础‰所需预备知识‰关于软件测试‰嵌入式软件测试的特点¾嵌入式系统与嵌入式软件¾嵌入式软件测试的特点‰嵌入式软件测试的基本方法¾交叉测试¾可用于交叉测试的调试方式¾基于需求的测试¾源代码分析3嵌入式软件测试基础:预备知识™本课程所需基础知识‰C语言¾C程序设计¾开发环境使用‰嵌入式软件开发基础¾嵌入式系统的组成及特点¾嵌入式软件的开发方式¾嵌入式开发环境使用‰软件测试基础知识¾软件测试基本概念¾软件测试基本技术4嵌入式软件测试基础:关于软件测试™回顾软件测试‰软件测试基本概念¾定义、原则、过程、分类、模型¾测试用例、插装、打桩¾静态测试、动态测试¾白盒测试、黑盒测试¾策略与管理‰通过软件测试,我们要解决什么问题?¾软件功能——对不对?¾代码质量——高不高?¾测试过程——得唔得?5嵌入式软件测试基础:关于软件测试™软件测试的三个基本问题‰软件功能——对不对?¾需求准确¾功能正确、完整¾性能可靠‰代码质量——高不高?¾规范(可维护、易理解)¾少缺陷¾健壮(容错、结构化)‰测试过程——得唔得?¾有效¾有利¾有序6嵌入式软件测试基础:关于软件测试™软件测试的基本策略“两条腿走路”‰技术是基础¾静态测试¾动态测试‰管理是保障¾计划¾策略¾资源配置¾过程管理¾缺陷追踪代码质量?软件功能?测试过程?7嵌入式软件测试基础:关于软件测试™软件测试的基本策略现代软件工程的测试策略‰测试贯穿于开发的全过程‰不形成专门的“测试阶段”需求定义设计编码调试系统集成需求分析用例设计静态分析单元测试集成测试8嵌入式软件测试基础:关于软件测试™软件测试的基本策略测试从需求开始‰需求定义是软件生命的开始‰准确的需求是软件测试的前提质量从代码抓起‰软件质量的基础是“优质”的代码‰如何获得高质量的代码¾“预防”¾“治病”¾“强身”9嵌入式软件测试基础:关于软件测试™软件测试的基本策略先静后动——先静态分析,再动态测试‰多数缺陷源于编程语言使用不当¾静态分析能有效地发现之‰静态分析能大大减轻后续测试的工作量,明显提升动态测试的效果‰静态分析能及早地发现问题,改正问题‰静态分析实施容易,操作简单由小到大——先单元测试,再集成测试‰单元测试完成了,集成测试才有意义10嵌入式软件测试基础:关于软件测试™软件测试的基本策略测试工具选择‰工欲善其事,必先利其器‰通常工具是必需的,但不是万能的。不要期望“一招鲜,吃遍天”‰根据自己的需要和工具的特长进行选择¾明确自己要做什么?期望达到怎样的目标?¾测试工具的关键特性?¾其它因素o人员、资源、价格等11™软件测试的基本策略加强软件测试的管理‰测试过程管理¾计划、进度¾测试文档管理¾需求的可追溯¾节点监控¾资源配置‰缺陷追踪与管理¾测试过程中,会有各式各样的错误或缺陷(bug/defect)出现。需要建立有效的机制:报告、存储、分配、修复、追踪…¾避免混乱、丢失、重复‰变更管理——软件配置管理嵌入式软件测试基础:关于软件测试12嵌入式软件测试基础:嵌入式软件测试的特点™嵌入式系统与嵌入式软件‰什么是嵌入式系统¾以应用为中心、以计算机技术为基础、适应特殊环境要求的专用计算机系统¾嵌入式系统通常都是实时系统,即有一定时间约束的计算机系统‰嵌入式系统的组成¾嵌入式微处理器、外围硬件¾嵌入式操作系统、应用软件‰什么是嵌入式软件¾嵌入式系统或产品中的软件¾“非嵌入式”软件:通用计算机软件嵌入式系统的典型特征:硬件软件专用13™嵌入式系统与嵌入式软件‰嵌入式软件的特点¾大部分软件用高级语言(C、C++等)编写¾依赖于特定硬件环境,无统一的平台¾与硬件密切相关,交互工作¾实时性o实时约束o实时控制¾交叉式开发o需要专门的环境及工具o目标软件与开发环境运行在不同的平台¾资源受限嵌入式软件测试基础:嵌入式软件测试的特点14™嵌入式软件测试的难点‰实时性——要求测试工具准确测试软件性能‰资源有限——要求对被测软件不能附加太多代码冗余‰软硬结合——软件与硬件紧密相关,硬件可能成为测试的瓶颈‰交叉开发——嵌入式软件与测试工具运行在不同的平台,载入目标系统执行需要特定的硬件测试工具配套‰多样性——没有统一的硬件平台,需要“专款专用”‰实验测试环境与真实运行环境存在差异‰测试工具与目标系统的连接方式影响测试的可靠性‰汇编语言难以测试‰成本较高嵌入式软件测试基础:嵌入式软件测试的特点15™嵌入式软件测试的基本思路‰软件测试发展至今已形成了较为完整的理论、技术和策略,虽然它们大都针对计算机软件,但幸运的是其基本原理和典型方法同样适用于嵌入式软件。‰基于两种软件的共性——同为高级语言,我们首先利用通用计算机软件的测试技术,即“拿来主义”‰然后从嵌入式软件的特点出发,采取一些有针对性的方法,比如“交叉测试”。嵌入式软件测试基础:嵌入式软件测试的特点16™嵌入式软件测试的基本方法‰动态测试方法¾交叉测试¾基于需求的测试‰静态测试方法¾源代码分析¾结构化测试‰系统测试方法¾真实环境下系统测试¾全数字模拟测试¾实时在线测试¾故障注入测试嵌入式软件测试基础:嵌入式软件测试的基本方法17™交叉测试(Host/Target测试)‰利用交叉开发环境的测试方法¾测试工具需要支持目标环境‰利用高级语言的特性,使用“常规的”软件测试方法‰测试是在“主机”和“目标系统”中分别进行的:¾与硬件无关的大部分测试在“Host”上完成¾与硬件密切相关的小部分在“Target”上完成¾再根据需要,将“Host”上的测试在“Target”上验证嵌入式软件测试基础:嵌入式软件测试的基本方法18™交叉测试的特点‰将大部分工作转移到PC平台上,在硬件环境未建好或调试工具缺乏时就可以开展‰适用于高级语言,如C,C++‰主要用于动态测试,如单元测试(功能测试)¾测试用例设计是关键‰操作方便,测试成本较低。‰实时性受调试环境的制约‰目标环境中测试时要占用一定的目标资源‰注意目标环境和主机环境的差异¾目标编译器的影响¾内存资源嵌入式软件测试基础:嵌入式软件测试的基本方法19™为什么不把所有测试都放在目标上进行‰在Target上测试软件,可能会造成与开发者争夺目标平台或使用时间。要避免这种矛盾只有提供更多的目标平台。‰目标平台可能还不可行,或者主机与目标的连接不方便。‰比起主机平台环境,目标平台通常是不精密的和不方便的。‰成本问题。提供给开发者的目标平台和开发环境通常是很昂贵的。‰开发和测试工作可能会妨碍目标上已经存在持续的应用。嵌入式软件测试基础:嵌入式软件测试的基本方法20™如何开展交叉测试„选用带有支持目标环境的软件测试工具„确定哪些模块与硬件无关,哪些与硬件相关„配置相应的调试环境和目标环境„设计测试用例„分别进行Host和Target测试嵌入式软件测试基础:嵌入式软件测试的基本方法执行编译/链接TargetHost测试结果测试结果被测代码测试用例目标支持执行编译/链接开发环境21™交叉测试的条件‰测试工具要支持目标系统‰Target测试需要合适的开发环境配合¾编译环境(编译器/链接器)¾调试环境(仿真器、调试器)™可用于交叉测试的调试环境嵌入式软件的调试的基本方法:‰模拟器(Simulator)‰调试器(Debugger)‰仿真器(Emulator)嵌入式软件测试基础:嵌入式软件测试的基本方法22™模拟器(Simulator)大多数集成开发环境(IDE)都具有调试功能,“模拟器”就是其中的一种。模拟器和待调试的嵌入式软件都在主机上运行,由主机提供一个模拟的目标运行环境,可以进行“指令集”调试,包括算法和流程等。‰纯软件,简单方便,无需目标板,成本低‰功能有限,无法体现硬件特性大多数开发环境都提供Simulator功能,如ARM开发环境ADS1.2中的AXD(ARMulator)嵌入式软件测试基础:嵌入式软件测试的基本方法23™调试器(Debugger)即在线调试器,有两种形式‰Monitor调试‰JTAG调试™Monitor调试器‰主机和目标平台通过某种接口(如串口、网口、USB等)连接,主机上运行调试器,代码“下载”到目标板上运行。‰调试之前要在Host和Target之间建立起通信联系,目标板上需要先期烧录“监控程序(Monitor或bootloader)”‰纯软件,价格较低,简单,有一定的硬件调试能力‰制作Monitor可能成为瓶颈(需要经验,且要求目标板工作正常),调试功能、实时性有限。例如,Linux和WinCE开发环境就提供这种调试方式嵌入式软件测试基础:嵌入式软件测试的基本方法DebuggerDebuggerMonitorMonitorTarget串口串口Host24™JTAG调试器‰基于集成在芯片上的调试接口(调试和跟踪逻辑)的一种调试方式。常见的调试接口有JTAG(边界扫描)和BDM(背景调试模式)等‰通过一个硬件调试体(俗称JTAG仿真器或调试器),连接主机和目标系统。¾主机端:串口、USB、网口等¾目标板:调试接口(JTAG、BDM等)‰调试软件运行在主机上,待调试代码则由JTAG仿真器控制,通过调试接口下载到目标板上运行。嵌入式软件测试基础:嵌入式软件测试的基本方法TargetTargetHostHost接口BDM/JTAG仿真器BDM/JTAG仿真器JTAG接口25™JTAG调试器的特点‰软硬件结合,试用方便,无须制作Monitor,软硬件均可调试。是当今最常用的嵌入式调试方式。‰需要目标板,且目标板工作基本正常。适用于有调试接口的微处理器‰许多流行的嵌入式微处理器都支持这种方式。常见的JTAG调试器有:¾ARM系列:Trace-ICP、Probe-ICE、MAJIC、Hitex等¾MIPS系列:MAJIC¾PowerPC系列:iSystem嵌入式软件测试基础:嵌入式软件测试的基本方法26™仿真器(Emulator)即传统意义上的“全仿真调试”方式。‰仿真器具备目标系统微处理器的全部功能,并配有必要的存储器、外设等硬件资源。使用时仿真器取代目标板微处理器,开发者就可以全盘控制和调试目标系统‰仿真器与目标板通过“仿真头”连接,与主机有串口、并口、网口或USB口等连接方式‰仿真器一般自成体系,调试时既可以连接目标板,也可以不连接目标板(Standalone)。‰功能强大,实时性强,软硬件均可调试‰价格昂贵,通用性差。一般用在低速、低位数处理器中嵌入式软件测试基础:嵌入式软件测试的基本方法27™调试方式对软件测试的影响‰模拟器(Simulator)¾最方便,成本低,使用资源无限制¾实时性、硬件特性差‰调试器(debugger)¾最常用,成本较低,使用资源受目标板硬件限制¾硬件特性较好,对monitor调试器来说,测试结果输出可能受限‰仿真器(emulator)¾最真实,成本较高,使用资源受目标板或仿真器限制¾实时性、硬件特性好嵌入式软件测试基础:嵌入式软件测试的基本方法28™基于需求的测试‰什么是需求(Requirement)?¾需求就是用以说明软件“是什么”的文档,即产品的“规格说明书(specification)”¾需求是软件生命周期的起点和源头¾需求定义决定了软件的功能‰统计表明,软件测试中超过半数的错误可以追溯到“不良”的需求或缺少需求上‰测试所付出的成本中,超过80%消耗在追踪需求的错误上嵌入式软件测试基础:嵌入式软件测试的基本方法Requirements56%Design27%Other10%Code7%Requirements82%Design13%Other4%Code1%29™基于需求的测试‰没有需求,就没有真正的测试¾好的测试需要好的需求¾好的需求支撑好的测试¾准确的需求是功能测试的基础‰需求测试能够帮助您面对功能测试中的挑战:¾如何确保功能覆盖,即功能的完整性?¾在保证功能覆盖的前提下,如何减少测试的数量?o穷尽是不现实的o随意是不负责任的¾如何确认测试的正确性,即是由于“正确的原因”得到了“正确的结果”?o避免“歪打正着”嵌入式软件测试基础:嵌入式

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功