软件测试是软件质量保证的关键步骤,也是软件工程的重要组成部分,对软件产品的质量起着至关重要的作用。软件测试工作的目的就在于尽早找到软件缺陷,并保证其得到修复。
1.软件及其特点
IEEE Std 610.12 给出了软件(Software) 的定义:软件是计算机程序及其相关的文档,以及用以操作计算机系统的附属数据。
一般而言,软件来源于应用问题。应用问题经过抽象(包括数据抽象和过程抽象)后,形成软件的设计(包括数据结构和算法等内容),继而被编码实现。其后软件即可运行于硬件之上。
从软件的定义可以看出,软件有3个主要组成部分。
1) 指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。
2) 数据结构,它使得程序可以利用必要的信息。
3) 描述程序操作和使用的文档。
其中,指令集合和数据结构是软件的可运行部分,而文档是软件的不可运行部分。
软件的产生和运行方式决定了软件具有以下特点。
1) 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
2) 软件是设计和开发出的,与硬件不同,在其开发过程中没有明显的制造过程。
3) 在软件的运行和使用期间,没有硬件那样的机械磨损、老化等问题。(ps: 软件在运行过程中,存在数据的增量情况,需要对软件使用过程中产生的有用数据进行存储,对垃圾数据进行筛选或清理;同时无论是有用数据以及垃圾数据都应尽量少的影响软件的运行速度以及运行空间)
4) 虽然软件工业向着基于构件的构造模式发展,但目前大多数软件仍是依据客户的需求定制的。
2. 软件缺陷
IEEE Std 729 中定义了软件缺陷:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题。从产品外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
简而言之,软件缺陷就是软件产品中所存在的各种问题,其最终表现为没有满足用户的需求。
由软件缺陷的定义,可以得出软件缺陷的主要表现形式,具体如下:
1) 软件未实现产品规格说明书要求的功能。
2) 软件出现了产品规格说明书中指明不会出现的错误。
3) 软件实现了产品规格说明书中未提到的功能。(ps:原因待查阅)
4) 软件未实现产品规格说明书虽未明确提及但应该实现的目标。(ps: 如何与第三条缺陷进行区分界定)
5) 软件难以理解、不易使用、运行缓慢,或者从测试人员的角度看,最终用户会认为不好。
软件缺陷的主要来源:
(1) 软件缺陷的首要来源是软件产品规格说明书
(2) 软件缺陷的第二大来源是设计
(3) 软件缺陷的第三大来源是编码错误
(4)其他原因