谁更胜一筹?嵌入式软件测试 VS 一般软件测试

随着计算机技术的普及,软件系统已经深入到生活的各个方面,从普通的计算机软件,到银行或超市的终端系统,甚至到手机的软件系统。对软件的质量要求也在不断提高,软件测试及其技术也有了飞速发展。

在对软件测试技术相关基本概念研究解析的基础上,分析软件测试起源与发展,保证软件产品的质量、提高产品的可靠性。对于嵌入式软件系统,因其多样性,基于操作系统,使用的开发环境,微控制器都是日益繁多的,所以嵌入式软件测试与普通软件测试相比有其自身的特点。

01.什么是软件测试

软件测试,即Software Testing。在软件生产过程中,手工或者利用软件测试工具有计划地根据程序代码和用户文档,检查软件功能和性能,从而发现软件产品中存在的问题(bug),并追踪和验证缺陷(bug)的处理。测试用例通常是从无限执行域中适当选取的。

软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试。

1、测试的目的

不是没有错误,而是软件产品经过发布之后,虽然有缺陷,但是用户可以接受和容忍的。

2、软件测试的特点

◇ 大多数硬件实验失败的方式和方法是固定的,而软件测试失败则是毫无规律的,探索所有软件测试失败的模式是不可能的。

◇ 软件方面的许多缺陷都源于设计和实现上的错误,而不是源于生产制造方面的缺陷。

◇ 软件质量保证的关键在于我们如何避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。

◇ 软件测试是一个动态的执行过程,体现在输入、行为和行为的输出结果上。

◇ 软件测试是一个有限的集合。

3、软件测试信息流

嵌入式软件测和普通软件测试对象相同,包括软件中所有内容,贯穿软件定义与开发的整个过程。

4、软件测试的对象

需求分析、概要设计、详细设计、程序编码等各阶段所得到的文档及源程序,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序。

嵌入式软件的开发和测试也就与普通软件的开发和测试策略有了很大的不同,嵌入式软件系统是一种针对特殊任务、特殊环境而进行特殊设计的定制产品,有其专门的开发环境、软硬件紧密结合、严格的实时要求等特点。使得嵌入式软件测试与普通软件测试虽有相似之处,但也有其自身独特的特点。

02.嵌入式软件测试

嵌入式软件是一种比较特殊的软件,软件经过分析、设计、编码后只有烧入硬件环境中才可以看见,比如数字电视的中间件软件,洗衣机的自动控制软件,手机游戏软件等等。

1、嵌入式软件测试

嵌入式软件测试/嵌入式测试或叫交叉测试(cross-test),其目的与普通软件测试是相同的,都是为了发现软件缺陷,而后修正缺陷以提高软件的可靠性。嵌入式系统安全性的失效可能会导致灾难性的后果,即使非安全性失效,由于其应用场合特殊也会导致重大经济损失。因此,往往嵌入式软件对可靠性的要求比普通软件高。这就要求对嵌入式软件进行严格的测试、确认和验证,以提高产品的可靠性。

2、嵌入式软件测试的特点

◇ 嵌入式软件测试是在特定的硬件环境下才能运行的软件。

◇ 嵌入式软件测试除了要保证嵌入式软件在特定环境下运行的高可靠性,还要保证嵌入式软件系统的实时性。

◇ 嵌入式软件产品为了满足高可靠性的要求,不允许内存在运行时有泄漏等情况发生,因此嵌入式软件测试除了对软件进行性能测试、GUI测试、覆盖分析测试是同普通软件测试一样都不可或缺之外,还要对内存进行测试。

◇ 嵌入式产品不同于一般软件产品,在嵌入式软件和硬件集成测试完成之后,并不代表测试全部完成,在第一件嵌入式产品生产出来之后,还需对其进行产品测试。

◇ 嵌入式软件测试的最终目的是使嵌入式产品在能够满足所有功能的同时安全可靠的进行。

03.嵌入式软件测试与普通方软件测试的区别

由于嵌入式系统的自身特点,如实时性(Real-timing),内存不丰富,I/O通道少,开发工具昂贵,并且与硬件紧密相关,CPU种类繁多,等等。嵌入式软件的开发和测试也就与一般商用软件的开发和测试策略有了很大的不同,可以说嵌入式软件是最难测试的一种软件。

嵌入式系统由于上述特点,决定了不同的嵌入式系统必须有不同的测试方法。

1、 嵌入式软件测试的各个阶段测试的环境是不一样的

嵌入式软件开发和运行的环境是分开的,嵌入式软件开发环境往往是交叉开发环境。因此,各个阶段测试的环境是不一样的。

● 交叉开发

● 交叉开发环境

交叉开发环境(Cross Development Environment)是指编译、连接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,通常采用“宿主机——目标机”模式。

开放的交叉开发环境的典型代表是:GNU工具链。它能够支持X86、ARM、MIPS、PowerPC等多种处理器。

● 交叉编译

在一种平台上编译出能够在另一种平台(体系结构不同)上运行的程序。用来编译这种程序的编译器就叫做交叉编译器。

● GUN工具链

GNU工具链 (GNU Toolchain) 是一组用于开发应用程序和操作系统的编程工具的集合,这些工具构成了一个完整的系统。GNU工具链包括GCC、GNU Binutils、GNUm4、GNU Autoconf和GNU make等部分。

1.1单元测试阶段

所有的单元测试基本都可以在宿主机环境下进行,只有个别情况下会特别指定单元测试要直接在目标机环境下进行。应该最大化在宿主机环境下进行软件测试的比例,通过尽可能小的目标单元访问其指定的目标单元界面,提高单元的有效性和针对性。

在宿主机平台上运行测试的速度比在目标机平台上快得多,当在宿主机平台上完成测试后可以在目标机环境下重复做一次简单的确认测试,确认测试结果在宿主机和目标机上没有不同**。在目标机环境下进行确认测试将确定一些未知的、未预料到的、未说明的宿主机与目标机的不同之处**,例如,目标机编译器可能有缺陷,但在宿主机编译器上没有。

1.2 集成测试阶段

软件集成也可在宿主机环境下完成,在宿主机平台上模拟目标环境运行,在此级别上的确认测试可以确定一些与环境有关的问题,比如内存定位和分配方面的一些错误。

在宿主机环境上的集成测试的使用,依赖于目标系统的具体功能有多少。有些嵌入式系统与目标机环境耦合的非常紧密,这种情况下就不适合在宿主机环境下进行集成。对于一个大型的软件开发而言,集成可以分几个级别。低级别的软件集成在宿主机平台上完成有很大优势,级别越高,集成越依赖于目标环境。

1.3 系统测试和确认测试

所有的系统测试和确认测试必须在目标机环境下执行。当然在宿主机上开发和执行系统测试,然后移植到目标机环境重复执行是很方便的。对目标系统的依赖性会妨碍将宿主机上的系统测试移植到目标系统上,况且只有少数开发者会卷入系统测试,所以有时放弃在宿主机上执行系统测试可能更方便。

确认测试最终必须在目标机环境中进行,因为系统的确认必须在真实系统下完成,而不能在宿主机环境下模拟,这关系到嵌入式软件的最终使用。

2、嵌入式软件测试的复杂多样

因为嵌入式系统的一个突出的特点,是其专用性,即一个嵌入式系统只进行特定的一项或几项工作,嵌入式软件运行的平台都是为进行这些工作而开发出来的专用硬件电路,他们的体系结构、硬件电路,甚至所用的元器件都是不一样的,所以嵌入式软件运行的平台也是复杂多样的。

由于开发平台的复杂多样性,使得嵌入式软件的测试从测试环境的建立到测试用例的编写也是复杂多样的。与不同的开发平台对应的嵌入式软件是肯定不相同的。嵌入式软件测试在一定程度的上并不只是对嵌入式软件的测试,很多情况下是对嵌入式软件在开发平台中同硬件的兼容性测试。因此,对于任何一套嵌入式软件系统,都需要有其自己的测试、创建其自己的测试环境、编写其自己的测试用例。

3、嵌入式软件测试中对实时性有严格要求

由于嵌入式系统的实时性,决定了嵌入式系统的运行时间也是受严格限制的。嵌入式软件在测试时应当充分考虑系统实时响应的问题,很多嵌入式系统会要求系统的响应时间应在多少毫秒之内。在测试有严格响应时间要求的嵌入式系统时,要做负载测试。

4、嵌入式软件测试需要进行插桩测试

嵌入式软件最终的测试需要在目标机平台上进行,在对目标机进行测试时,我们需要对在宿主机上编译通过的代码进行插桩处理。插桩完成之后,需要重新对代码进行编译,如果编译通过,就可以将编译好的代码下载到目标机上执行。在目标机执行程序的时候,需要将插桩时预测好的数据返回到宿主机上,因此,宿主机和目标机上要有能够相互传递数据的 线或者串口线,宿主机上同时要有能够处理返回的数据的处理程序或软件。

插桩技术:指在保证原有程序逻辑完整性的基础上,在程序中插入探针,通过探针采集代码中的信息(方法本身、方法参数值、返回值等)在特定的位置插入代码段,从而收集程序运行时的动态上下文信息。

5、嵌入式软件对系统的可靠性和安全性要求比一般的软件系统高

因为嵌入式软件对系统的可靠性和安全性要求比一般的软件系统高,所以还需要进行系统的可靠性测试。对于不同的嵌入式系统,需要制定相应的符合系统需求的可靠级别,在进行可靠性测试时应该将系统的可靠性级别考虑进去。

ETest简介

ETest是专门针对嵌入式系统进行测试开发的工具,在嵌入式产品的整个研制过程中有着广泛的应用。该产品是由凯云科技率先在行业内推出的国产自主可控半实物仿真测试开发平台,有效打破了国内该领域长期由进口软件LabView、DSpace等产品垄断的格局。

ETest可广泛应用于航空航天、武器装备、工业控制、汽车电子、仪器仪表等各行业测试工装、测试仪器等设备的研发。具有应用范围广、实时性强、开发效率高、使用简单、易于扩展、国产自主等特点,支持各种国产CPU+国产操作系统的部署方案,同时兼容Windows、linux、Mac等多种操作系统。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年8月16日
下一篇 2022年8月16日

相关推荐