软件测试原则
- 应尽早并不断的进行测试;
- 测试工作应该避免由元开发软件的人或小组承担;
- 在设计测试方案时,不仅要确定输入数据,而且要根据系统功能确定预期的输出结果;
- 既包含有效、合理的测试用例,也包含不合理、失效的用例;
- 检验程序是否做了该做的事,且是否做了不该做的事;
- 严格按照测试计划进行:
- 妥善保存测试计划和测试用例;
- 测试用例可以重复使用或追加测试
测试类型分类:
动态测试:
程序运行时测试,分为
黑盒测试法:功能性测试,不了解软件代码结构,根据功能设计用例,测试软件功能。
白盒测试法:结构性测试,明确代码流程,根据代码逻辑设计用例,进行用例覆盖。
静态测试:
程序静止时,即对代码进行人工审查,分为
桌前检查:程序员检查自己编写的程序,在程序编译后,单元测试前。
代码审查:由若干个程序员和测试人员组成评审小组,通过召开程序评审会来进行审查。
代码走查:也是采用开会来对代码进行审查,但并非简单的检查代码,而是由测试人员提供测试用例,让程序员扮演计算机的角色,手动运行测试用例,检查代码逻辑。
测试阶段
单元测试:
也称为模块测试,测试的对象是可独立编译或汇编的程序模块、软件构件或软件中的类(统称为模块),测试依据是软件详细设计说明书。
集成测试
目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。测试依据是软件概要设计文档。
确认测试
主要用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度,通常包括以下类型:
- 内部确认测试:主要由软件开发组织内部按照 SRS进行测试。
- AIpha 测试:用户在开发环境下进行测试。
- Beta 测试:用户在实际使用环境下进行测试,通过改测试后,产品才能交付用户。
- 验收测试:针对 SRS,在交付前以用户为主进行的测试。其测试对象为完整的、集成的计算机系统。验收测试的目的是在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。验收测试的结论是用户确定是否接收该软件的主要依据。除应满足一般测试的准入条件外,在进行验收测试之前,应确认被测软件系统已通过系统测试。
系统测试
测试对象是完整的、集成的计算机系统;测试的目的是在真实系统工作环境下,验证完成的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。测试依据是用户需求或开发合同。主要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、安装与反安装测试等,其中,最重要的工作是进行功能测试与性能测试。功能测试主要采用黑盒测试方法;性能测试主要指标有响应时间、吞吐量、并发用户数和资源利用率等。
配置项测试
测试对象是软件配置项,测试目的是检验软件配置项与 SRS 的一致性。测试的依据是 SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。
回归测试
测试目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。