软件业的发展在中国走过了很多年了,对于软件的开发过程,有了许多的开发规范和开发流程。在软件开发的发展过程中,开发人员积累了大量的经验,同时,通过软件开发过程中出现的各种各样的问题经验的总结,产生了软件测试这个软件开发的伴随品。
软件测试是为发现错误而执行的一个程序或者系统的过程,总的说来软件测试需要实现的目标包括:1、测试是为了证明程序有错,而不是证明程序无错误;2、发现在软件开发以及软件实施过程中没有发现的错误;3、对软件开发以及实施过程中没有发现的错误进行有效的测试。由此可见,软件测试对于软件开发的最终作用就是保证软件的质量。
软件测试可以划分为三个阶段,第一个阶段是找出已经运行的或者正在开发的软件的bug,第二个阶段是除开找出软件中的bug外,对软件进行度量,明确把握对软件质量的度量,第三个阶段是提出对软件质量度量的标准,提高被测试软件的质量,这中间将软件测试作为一个工程来看待,也就是说测试也是一个开发过程。
软件测试是软件开发过程中的一个重要的步骤,或者可以说软件测试应该是贯穿于软件开发过程的每一个阶段,以确保在软件开发的过程中,随时发现问题,方便软件开发人员及时进行修改。
从软件的生命周期来看,如果仅仅是对程序进行测试,虽然被测试对象明确,测试的可操作性相对较强,但是在软件程序开发出来之前,整个软件开发过程中已经形成了明确的软件需求分析说明书、设计文档,如果在设计上就存在比较严重的错误,则测试的质量就难以保证,测试的价值就大大的降低了。因此,理想的测试方式则是按照软件工程各个阶段形成的结果,分别进行严格的审查。
1、 软件测试人员的组织
为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此,测试人员的组织也应是分阶段的。
(1)软件的设计和实现都是基于需求分析规格说明进行的。需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量,应对其进行严格的审查。在需求分析阶段,测试小组人员包括系统分析员,软件开发管理者,软件设计、开发和测试人员和用户。
(2)设计评审:软件设计是将软件需求转换成软件表示的过程。主要描绘出系统结构、详细的处理过程和数据库模式。按照需求的规格说明对系统结构的合理性、处理过程的正确性进行评价,同时利用关系数据库的规范化理论对数据库模式进行审查。这个阶段需要的软件测试人员相对较少,只需要系统分析员、软件设计人员、测试负责人员各一人即可。
(3)程序的测试:软件测试是整个软件开发过程中交付用户使用前的最后阶段,是软件质量保证的关键。软件测试在这个阶段实施的是单元测试。这个阶段需要专门的测试负责人负责整个测试的计划、组织工作。测试人员组成由具有一定的分析、设计和编程经验的专业人员组成,人员人数依据项目的大小以及复杂度具体设定。
2、测试文件的组织
软件测试文件描述要执行的软件测试及测试的结果。由于软件测试是一个很复杂的过程,同时也是设计软件开发其它一些阶段的工作,对于保证软件的质量和它的运行有着重要意义,必须把对它们的要求、过程及测试结果以正式的文件形式写出。测试文件的编写是测试工作规范化的一个组成部分。在设计阶段的一些设计方案也应在测试文件中得到反映,以利于设计的检验。测试文件对于测试阶段工作的指导与评价作用更是非常明显的。
(1)测试文件的类型。根据测试文件所起的作用不同,通常把测试文件分成两类,即测试计划和测试分析报告。测试计划详细规定测试的要求,包括测试的目的和内容、方法和步骤,以及测试的准则等。由于要测试的内容可能涉及到软件的需求和软件的设计,因此必须及早开始测试计划的编写工作。不应在着手测试时,才开始考虑测试计划。通常,测试计划的编写从需求分析阶段开始,到软件设计阶段结束时完成。测试报告用来对测试结果的分析说明,经过测试后,证实了软件具有的能力,以及它的缺陷和限制,并给出评价的结论性意见,这些意见即是对软件质量的评价,又是决定该软件能否交付用户使用的依据。
(2)测试文件的使用。在制定测试文件时,需要考虑如下的因素:
a、测试文件中规定了用以验证软件需求的测试条件用以弄清楚用户的需求;
b、测试计划不仅要用文件的形式把测试过程规定下来,还应说明测试工作必不可少的资源,进而检验这些资源是否可以得到,即它的可用性如何
c、弄清楚测试可以做什么,不能做什么。
d、生成测试用例。在测试文件编制过程中,测试用例的好坏决定着测试工作的效率。
e、评价测试结果。测试文件包括测试用例,即若干测试数据及对应的预期测试结果。完成测试后,把测试结果写入文件,这对分析测试的有效性,甚至整个软件的可用性提供了依据。
(3)测试文件的编制
在软件的需求分析阶段,就开始测试文件的编制工作,各种测试文件的编写应按一定的格式进行。
3、测试计划的制定
软件测试计划应该作为软件项目计划的一个子计划包括进去,在项目启动初期是必须规划的。一个好的测试计划可以使得测试是有计划的,是完整的,使得测试工作和整个开发工作有机结合起来,同时是的项目使用的资源和变更带来的项目风险是可控的。
在软件测试当中,测试的每一个步骤都是独立的,测试计划可以对这些测试步骤起一个框架结构作用。测试计划应作为测试的起始步骤和重要环节,测试计划大致内容包括项目测试阶段的划分、软件测试时间的安排、软件测试方法的选择和软件测试工具的使用、软件基本情况的调研、测试的需求说明、测试记录、测试资源配置、问题分析跟踪报告、测试评审结果。