3.3 系统测试
系统测试是对整个系统的测试,即将硬件、软件、操作人员看作一个整体,检验其是否符合需求规格说明书的要求。这种测试可以发现系统分析和设计中的错误,如安全测试措施是否完善,即能不能保证系统不受非法侵入。再如,压力测试系统在正常数据量及超负荷量(如多个用户同时存取)等情况下是否还能正常工作。
3.3.1 目标与内容
系统测试是将经过集成测试的软件作为计算机系统的一个部分,与系统中的其他部分结合起来在实际运行环境下对计算机系统进行的一系列严格有效的测试。
系统测试的主要目标如下。
(1)确保系统测试的活动是按计划进行的。
(2)验证软件产品是否与系统需求用例不相符合或与之矛盾。
(3)建立完善的系统测试缺陷记录跟踪数据库。
(4)确保软件系统测试活动及其结果及时通知相关小组和个人。
(5)对测试过程中出现的问题进行修改,使之能达到令用户满意的程度。
系统测试的目的是验证最终软件系统是否满足用户规定的需求,其主要内容如下。
(1)功能测试:即测试软件系统的功能是否正确,其依据是需求规格说明书。由于正确性是软件最重要的质量因素,所以功能测试必不可少。
(2)健壮性测试:即测试软件系统在异常情况下能否正常运行的能力,包括容错能力和恢复能力。
3.3.2 分类
比较常见且典型的系统测试包括恢复测试、安全测试、压力测试。
1.恢复测试
恢复测试作为一种系统测试,主要关注导致软件运行失败的各种情况,并验证其恢复过程能否正确执行。在特定情况下,系统需具备容错能力;另外,系统失效必须在规定时间段内被更正,否则将会导致严重的经济损失。
2.安全测试
安全测试用来验证系统内部的保护机制,以防止非法侵入。在安全测试中测试人员扮演试图侵入系统的角色,采用各种办法试图突破防线,因此系统安全设计的准则是要想方设法使侵入系统所需的代价更加昂贵。
3.压力测试
压力测试是指在正常资源下使用异常的访问量、频率或数据量来执行系统,在压力测试中可执行以下测试。
(1)如果平均中断数量是每秒1~2次,那么设计特殊的测试用例产生每秒10次的中断。
(2)输入数据量增加一个量级以确定输入功能将如何响应。
(3)在虚拟操作系统下产生需要最大内存量或其他资源的测试用例,或产生需要过量磁盘存储的数据。
3.3.3 流程
系统测试流程如图3-4所示。
图3-4 系统测试流程
(1)制订系统测试计划。
系统测试小组各成员共同协商测试计划,测试组长按照指定的模板起草系统测试计划,其中主要包括测试范围(内容)、测试方法、测试环境与辅助工具、测试完成准则、人员与任务等,由项目经理审批该计划。
(2)设计系统测试用例。
1)系统测试小组各成员依据系统测试计划、需求规格说明书、设计原型及指定测试文档模板设计(撰写)测试需求分析和系统测试用例。
2)测试组长邀请开发人员和同行专家对系统测试用例进行技术评审并通过。
(3)执行系统测试。
1)系统测试小组各成员依据系统测试计划和系统测试用例执行系统测试。
2)将测试结果记录在系统测试报告中,用缺陷管理工具来管理所发现的缺陷,并及时通报给开发人员。
(4)缺陷管理与改错。
1)任何人发现软件系统中的缺陷都必须使用指定的缺陷管理工具记录所有缺陷的状态信息,并自动产生缺陷管理报告。
2)开发人员及时消除已经发现的缺陷。
3)开发人员消除缺陷之后立即进行回归测试,以确保不会引入新的缺陷。