文档介绍:对于一般商用软件的测试,嵌入式软件测试有其自身的特点和测试困难。由于嵌入式系统的自身特点,如实时性(Real-timing),内存不丰富,I/O通道少,开发工具昂贵,并且与硬件紧密相关CPU种类繁多,等等。嵌入式软件的开发和测试也就与一般商用软件的开发和测试策略有了很大的不同,可以说嵌入式软件是最难测试的一种软件。嵌入式软件测试使用有效的测试策略是唯一的出路,它可以使开发的效率最大化,避免目标系统的瓶颈,使用在线仿真器节省昂贵的目标资源。自从出现高级语言,开发环境与最终运行环境通常都是存在差异的,嵌入式系统更是如此。开发环境被认为是主机平台,软件运行环境为目标平台。相应的测试为host-target测试或cross-testing。讨论嵌入式软件测试首先就会遇到一个问题:为什么不把所有测试都放在目标上进行呢?因为若所有测试都放在目标平台上有很多不利的因素: 1)测试软件,可能会造成与开发者争夺时间的瓶颈,避免它只有提供更多的目标环境。 2)目标环境可能还不可行。 3)比起主机平台环境,目标环境通常是不精密的和不方便的。 4)提供给开发者的目标环境和联合开发环境通常是很昂贵的。 5)开发和测试工作可能会妨碍目标环境已存在持续的应用从经济上和开发效率上考虑,软件开发周期中尽可能大的比例在主机系统环境中进行,其中包括测试。确定host-target测试环境后,开发测试人员又会遇到以下的问题: 1)多少开发人员会卷入测试工作(单元测试,软件集成,系统测试)? 2)多少软件应该测试,测试会花费多长时间? 3)在主机环境和目标环境有哪些软件工具,价格怎样,适合怎样? 4)多少目标环境可以提供给开发者,什么时候? 5)主机和目标机之间的连接怎样? 6)被测软件下载到目标机有多快? 7)使用主机与目标环境之间有什么限制(如软件安全标准)? 任何人或组织进行嵌入式软件的测试都应深入考虑以上问题,结合自身实际情况,选定合理测试策略和方案。对于嵌入式软件测试或叫交叉测试(cross-test),在测试的各个阶段有着通用的策略: : 所有单元级测试都可以在主机环境上进行,除非少数情况,特别具体指定了单元测试直接在目标环境进行。最大化在主机环境进行软件测试的比例,通过尽可能小的目标单元访问所有目标指定的界面。在主机平台上运行测试速度比在目标平台上快的多,当在主机平台完成测试,可以在目标环境上重复作一简单的确认测试,确认测试结果在主机和目标机上没有被他们的不同影响。在目标环境上进行确认测试将确定一些未知的,未预料到的,未说明的主机与目标机的不同。例如,目标编译器可能有bug,但在主机编译器上没有。 : 软件集成也可在主机环境上完成,在主机平台上模拟目标环境运行,当然在目标环境上重复测试也是必须的,在此级别上的确认测试将确定一些环境上的问题,比如内存定位和分配上的一些错误。在主机环境上的集成测试的使用,依赖于目标系统的具体功能有多少。有些嵌入式系统与目标环境耦合的非常紧密,若在主机环境做集成是不切实际的。一个大型软件的开发可以分几个级别的集成。低级别的软件集成在主机平台上完成有很大优势,越往后的集成越依赖于目标环境。 。当然在主机上开发和执行系统测试,然后移植到目标环境重复执行是很方便的。对