摘要:测试活动不是软件开发后的一个阶段,测试的对象也不仅是程序本身。测试活动应贯穿于软件开发的整个过程,只有这样,才能更有效率地的开发出有质量保障的优质软件系统。
随着软件开发技术的发展,软件测试技术也开始得到人们越来越多的重视,但人们普遍的观念认为测试活动是在软件开发的中后期才需要介入的研发步骤,有的开发人员甚至认为测试活动不属于研发过程,而仅仅是软件开发完成后依赖黑盒测试…来保证软件产品质量的一个过程。事实证明,软件测试是软件开发过程中的重要阶段,是确保软件质量的关键,尤其越是早期的测试活动,对软件产品质量的影响越是事半功倍。因此,软件开发阶段的测试活动是软件开发中不容忽视的一个重要环节。
一、软件测试的概念
软件测试是发现错误的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例j,利用这些测试用例去运行程序,以发现程序错误的过程。
从实际测试过程来看,软件测试过程是由一系列不同的测试阶段所组成。软件开发阶段的测试可分为:需求分析审查、设计审查、代码审查、单元测试、集成测试和系统测试等。需求分析审查、设计审查、单元测试中的代码评审及各阶段测试用例的评审都是通过对相关文档或代码的走读活动来实现的,这种评审活动称之为静态测试。静态测试能发现文档中存在的问题(也只能通过静态测试实现),通过对文档存在问题的分析或其他软件评审方法来发现需求分析、软件设计等中的问题。它能有效地检查代码是否具有可读性和可维护性,是否遵守编程规范,包括代码风格、变量/对类的命名、注释行等。静态测试已被当做一种自动化的、主要的代码校验方法,它的查错和分析功能是其他方法所不能替代的。
单元测试、集成测试及系统测试等是通过运行软件来检验软件的动态行为和运行结果正确性的测试方法,它们称之为动态测试。
二、测试活动在软件开发各个阶段的应用与目标
1.需求分析审查
需求分析是对用户需求进行确认和整理后对用户的需求进行性能、安全性、可维护性等项的划分,并将其细化为多个实现点,将用户的需求与软件的设计目标进行关联,生成需求规格说明书。它不仅是系统测试和用户文档的基础,也是所有子系统项目规划、设计和编码的基础。因此,它描述的准确性至关重要,对其评审即静态测试活动是不可掉以轻心的。软件需求规格说明书的评审是由评审专家组在对其仔细研读的基础上,站在各自的角度全方位地查找缺陷的过程。主要看其是否尽可能完整地描述系统预期的外部行为和用户的可视化行为;在功能点的描述上是否具有二义性;在实现上是否具有可行性;通过会议方式将缺陷确认、整理、修改到评审专家组认可。
2.设计审查
软件设计分为概要设计和详细设计,它依据需求规格说明书对系统的具体实现进行描述。概要设计是站在较高的层面上将整个系统进行模块划分,并将各功能项尽可能合理地安排在各个模块中来实现;根据系统的复杂度,可在每个模块中再进行下一级子模块的划分。详细设计则深入到每一级子模块当中,涉及到每个功能的具体实现流程、使用的数据结构乃至函数级的具体实现流程。它不但要考虑是否能更好地完成需求规格中向用户承诺的性能,还要兼顾其可靠性等质量保障。对软件设计的审查是通过评审专家对设计文档进行预审后,在评审会议上与设计人员将问题一一确认来实现。
评审专家依据需求规格说明书审查设计是否覆盖到用户提出的每个功能点,对每个函数流程或伪代码进行逻辑与语句的审查,更重要的、也是最容易忽视的是要求评审专家要以自己的经验,重点对设计中使用的数据结构、函数执行效率、资源访问冲突风险等进行合理评估,以便尽早地把这些对系统开发有着颠覆性影响的问题在编码及单元测试之前排除。
3.代码审查
代码审查是通过代码走读的方式来实现的。代码走读是开发人员在对某个模块的代码(必须编译通过)依据设计说明书完成编码后,进行的代码评审活动。代码走读前要在内部统一标准,明确质量目标。评审中,除了看编码是否紧扣设计外,走读还应兼顾三个层面:第一个层可称之为单元走读,关注的是“单元”,一般是一个方法或一个类,需要查找代码层面的错误,比如数据库网络资源的回收、一些异常的捕捉、空指针的检查及关键字的使用是否正确等;第二个层面可称之为集成走读,关注的是接口和流程,包括传人的参数检查、返回值检查及流程能否顺利地进行和正确串联等;第三个层面可称之为系统走读,关注的是功能层面和业务逻辑,这时发现更多的应该是逻辑错误和功能缺陷。
原文转自:http://www.uml.org.cn/Test/201112161.asp