软件测试
概念
系统测试是为了发现错误而执行程序的过程,成功的测试时发现了至今尚未发现的错误的测试。
目的
测试的目的是希望能以最少的人力物力和时间发现潜在的各种错误和缺陷。应该根据开发阶段的需求、设计等文档或者程序的内部结构精心设计测试用例,并用这些用例来运行程序,以便发现错误的过程。
系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析、系统设计和实施的最后复查。
原则
- 测试应该尽早进行;
- 测试工作应该避免原开发人员参与或者承担;
- 设计测试方案,不仅要确定输入数据,而且要根据系统功能确定与其输出结果;
- 设计测试用例,不仅要设计有效合理的输入条件,也要包含不合理、失效的输入条件;
- 在测试程序时,不仅要检验程序是否做了该做的事,还要检验程序是否做了不该做的事;
- 严格按照测试计划进行,避免测试随意性;
- 妥善保存测试计划、测试用例,作为软件文档组成部分,为维护提供方便;
- 测试用例可以为重新测试或追加测试提供方便。
软件测试策略
步骤
单元测试、集成测试、确认测试和系统测试4步进行。
单元测试
概念
单元测试也成为模块测试,在模块编写完成切勿编译错误或就可以进行。单元测试侧重于模块中的内部处理逻辑和数据结构。
特征
(1)模块接口
模块的接口保证了测试模块的数据流可以正确地流入、流出。
注意
1.测试模块的输入参数和形式参数在个数、属性、单位上是否一致;
2.调用其他模块时,所给出的实际参数和被调用模块的形式上在个数、属性、单位上是否一致;
3.调用标准函数时,所用的参数在属性、数目和顺序上是否正确;
4.全局变量在各模块中的定义和用法是否一致;
5.输入是否改变参数形式;
6.开/关的语句是否正确;
7.规定的I/O格式是否与输入输出语句是否一致;
8.在使用文件之前是否已经打开文件或使用文件之后是否已经关闭文件。
(2)局部数据结构
注意
1.变量的说明是否合适;
2.是否使用了尚未赋值或尚未初始化的变量;
3.变量的初始值或默认值是否正确;
4.变量两名是否错误。
(3)重要的执行路径
注意
1.算术运算的优先次序、符号、精度、运算对象类型是否正确;
2.循环终止、死循环、循环分支等是否正确。
(4)出错处理
(5)边界条件
集成测试
概念
集成测试就是把模块按照系统设计说明书的要求组合起来进行测试。
方法
(1)分别测试各个模块,再把模块组合起来进行整体测试,即非增量式集成;
(2)把下一个要测试的模块组合到已测试好的模块中,测试完后再将下一个测试的模块组合起来进行测试,逐步把所有模块组合一起,并完成测试,如自顶向下集成、自底向上集成,即增量式集成。
确认测试
概念
经过集成测试后,软件被集成起来,接口方面的问题已经解决,将进行软件测试的最后一个环节,即确认测试。
确认测试的任务就是进一步检查软件的功能和性能是否与用户要求一样
步骤
(1)有效性测试
在模拟环境下,通过黑盒测试检验所开发的软件是否与需求规格说明书一致。
主要是检测软件的功能和性能、软件的容错性、维护性等进行测试。
(2)软件配置审查
主要检查软件(源程序、目标程序)和文档(包括面向开发和用户的文档)以及数据(程序内部的数据或程序外部的数据)是否齐全。分类是否有序。确保文档、资料的正确和完善,以便维护阶段使用。
(3)验收测试
是以用户为主的测试。软件开发人员和质量保证人员也应该参加。在验收测试前,需要对用户进行培训,以便熟悉该系统。
系统测试
概念
系统测试是将已经确认的软件、计算机硬件、外设和网络等其他因素结合在一起,进行信息系统的各种集成测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。
主要内容
(1)恢复测试
检测系统的容错能力。
检测的方法是采用各种方法让系统出现故障,检验系统是否能按照要求能从故障中恢复过来,并在约定时间内开始事务处理,而且不对系统造成任何伤害。
(2)安全性测试
检测系统的安全机制、保密措施是否完善,主要是为了检验系统的防范能力。
测试的方法是测试人员模拟非法入侵者,采用各种方法冲破防线。
(3)压力测试
也成为强度测试,是对系统在异常情况下的承受能力的测试,是检查系统在极限状态下运行时,性能下降的幅度是否在允许范围内。
(4)性能测试
检查系统是否满足系统设计方案说明书对性能的要求。性能测试覆盖软件测试的各阶段,而不是等到系统的各个部分集成之后,才确定系统的真正性能。
(5)可靠性、可用性和可维护性测试
通常使用以下两个标准来进行衡量:平均失效间隔时间是否超过了规定的时限,因故障而停机时间在一年中不应该超过多少时间。
(6)安装测试
是为了检验在安装过程中是否有误,是否容易操作等。