
2.3 软件测试流程
测试过程定义了企业在产品开发过程中在设计、开发与实现、维护、退出等阶段与测试相关活动的内容、流程及规范。定义测试过程的目的是给本公司在产品开发过程中测试相关的活动提供指导,确保产品可以真正满足用户的要求。测试过程指导项目如何开展各项测试活动,以及各项活动的输入与输出;约定活动中所涉及的角色与职责,规范各个活动的内容和规程,以及所使用到的统一的模板、表单、指导书和检查单。
在软件项目中,测试和开发是相互配合、同步推进的。因为软件项目的复杂性,被测对象往往不断发生变化,在实际项目中,测试与开发的关系更加复杂。虽然复杂,但是测试工作的开展是有自己的过程要遵循的。
虽然在一个项目的研发过程中有很多种不同的测试类型、不同的测试阶段,但是对单次测试来说,存在一个一般性的过程。
在软件测试的一般性过程中(见图2-5),首先进行测试的需求分析,然后进行测试计划制订,接下来进行测试的设计和开发,之后进行测试的执行和监控。测试执行完毕后,最终给出软件评估报告和测试的总结报告。在实际运行中,各个公司会根据自己的实际情况进行调整。

图2-5 软件测试的一般性过程
1.测试需求分析
相关人员收集相关资料,学习业务(测试对象),分析测试需求点。
2.测试计划及监控
测试主管组织并编写《测试计划》,该文档指明测试范围、方法、资源及相应测试活动人员的时间进度安排,其中包括软件和硬件资源、集成顺序、人员时间进度安排和可能的风险等内容。测试计划需要进行评审,测试计划一旦开始执行,就要定期监控计划的执行情况。
3.测试设计与开发
① 测试设计一般由对需求熟悉的资深的测试工程师进行,测试方案要求根据《软件需求规格说明书》上的每个需求点设计出包括需求点简介、测试思路和详细测试方法在内的方案。
② 测试开发主要是测试用例的开发,可完成测试用例编写、测试数据准备、测试环境准备。测试用例是根据《测试计划》来编写的。通过对测试需求的分析,测试人员对整个系统需求有了详细的理解,然后开始编写用例,这样才能保证用例的可执行和对需求的覆盖。测试用例需要包括测试项、用例级别、预置条件、操作步骤和预期结果。其中,操作步骤和预期结果需要编写详细和明确。测试用例应该覆盖测试方案,而测试方案又应覆盖测试需求点,这样才能保证客户需求不遗漏。同样,测试用例也需要评审。
4.测试执行及报告
此阶段的主要任务是执行测试用例,及时提交测试中发现的Bug,及时反馈测试情况。
5.软件评估报告及批准
根据测试结果给出对软件的整体评估,以及是否通过测试的建议。一般,决策部门会根据这份评估报告决定产品是否可以进入下一个阶段。
6.测试总结及资产归档
项目结束后,对整个测试过程进行回顾总结,将项目相关资源进行整理归档。
与一般项目不同,大型项目,特别是产品型项目,在开发过程中会将开发任务划分为多个子项目(模块)。其项目管理也更加复杂,测试管理也更加复杂。图2-6所示是某复杂大型项目的测试过程。

图2-6 复杂大型项目的测试过程
从图2-6可以看出,复杂的大型软件项目在测试过程中会先对软件整体进行测试规划,再分模块进行测试执行,最后进行整体测试。
小知识
项目型IT公司、产品型IT公司、混合型IT公司
(1)项目型IT公司:承包项目,能够根据客户需求完成项目的公司。公司的业务就是不断承接项目、完成项目。有评论指出,由于我国软件产业的发展历史非常短暂,基础软件薄弱,主要集中在应用软件和行业软件,进入门槛低,找到项目即可成立一个软件公司,因此,90%以上的IT公司都是项目型的。项目由于其具有一次性、独特性因素,导致实施成本大,风险高,对项目人员要求高等。
(2)产品型IT公司:产品与项目的不同在于需求的来源。项目需求是客户提出的;产品需求是企业根据市场的情况自己挖掘、设计出来的,投入市场之前很难确定用户是否接受,成功的风险比项目大,一旦成功,利润也比较多。产品型IT公司就是自己设计产品然后推出市场。美国的苹果公司、微软、Oracle等是全球公认的产品型IT公司,它们引领市场的发展方向和世界的技术潮流。国内的用友、金蝶公司也是公认的产品型IT公司,它们是企业财务和管理软件产品化的典型代表。
(3)混合型IT公司:处在完全项目型阶段的IT公司,不能否定其项目的价值与意义,它助推了公司的成长,在积累到一定的客户数量后,将逐步往产品化过渡和转型,而产品在客户和市场发生变化时,也将按照项目的方式进行演进。项目与产品是辩证统一的关系。公司不能为了项目而放弃产品,也不能因为产品而完全放弃项目,它们之间离开谁都无法独立存在。
不同类型的公司,其测试管理的特点也不尽相同。不同于项目型IT公司,产品型IT公司的软件测试产品比较固定或相似,测试的对象是同一个产品的不同版本,或者是同一个产品的周边产品,测试的复用率和可借鉴性比较高。比如某手机公司,其不同款式的手机都是在基础款的基础上变化而来的,每次测试的重点是变化的部分和新添加的部分,原有的部分进行回归测试就可以了。