1、按测试技术,软件测试可分为:黑盒测试、白盒测试、灰盒测试
黑盒测试:在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。也被称为功能测试或者数据驱动测试。
白盒测试:要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。也被称为结构测试或逻辑驱动测试。
灰盒测试:介于黑盒测试与白盒测试之间的测试,既要像黑盒测试那样关注输出对于输入的正确性,同时也关注内容表现,但这种关注不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志判断内部的运行状态。
2、按测试方式,软件测试可分为:静态测试、动态测试
静态测试:是指不运行程序,对程序和文档进行分析与检查;静态测试技术又称为静态分析技术。
动态测试:通过运行程序进行检查、分析程序的执行状态和程序逻辑的外部表现。
3、按测试阶段,软件测试可分为:单元测试、集成测试、系统测试、验收测试
单元测试:单元测试是对软件设计的最小单元——模块,进行正确性检验的测试工作。
目的:主要是测试模块在语法、格式和逻辑上的错误。
集成测试:集成测试也称为组装测试,集成测试按设计要求把通过单元测试的各个模块组装在一起之后所进行的测试。
目的:检查模块间的接口关系,以便发现与接口有关的各种错误
系统测试:系统测试是将已经集成好的软件系统置于实际运行环境中所进行的测试。
目的:根据需求分析时确定的标准检验软件是否满足功能、行为、性能和系统协调性等方面的要求。
验收测试:是软件开发结束后,用户对软件产品投入实际应用前,进行的最后一次质量检验活动。它要回答开发的软件产品是否符合预期的各种要求,以及用户能否接受的问题。
目的:验证软件功能的正确性和需求的符合性。
4、按测试实施组织,软件测试可分为:开发方测试、用户方测试、第三方测试
开发方测试:开发方测试也称内部测试(阿尔法测试),主要指在软件开发完成后,开发方要对提交的软件进行全面的自我检查与验证,验证软件的实现是否满足软件需求说明的要求。
用户方测试:用户方测试是在用户的应用环境下,由用户通过运行和使用软件,验证软件实现是否符合自己期望的要求。由用户找出软件在应用中发现的问题与缺陷,并对使用质量进行评价。
第三方测试:第三方测试又称为独立测试,由在技术、管理和财务上和开发方相对独立的组织进行的测试。软件质量工程强调开展独立的验证和确认工作。
补充:按软件质量特性分类:
功能测试、安全测试、性能测试、可靠性测试、压力测试、安装测试、用户界面测试、兼容性测试
5、软件测试3个重要概念:测试用例、测试环境、软件缺陷
测试用例:
IEEE标准610(1990)的定义:测试用例是一组测试输入、执行条件和预期结果的集合。其目的是要满足一个特定的目标,比如执行一条特定的程序路径或检验是否符合一个特定的需求。
软件测试环境:
软件测试环境就是软件运行的平台,即软件(软件运行的操作系统)、硬件(PC、笔记本、服务器相关外设)、网络(主要针对C/S和B/S结构的软件)和历史数据(测试用例执行所需初始化的各项数据)的集合
软件缺陷:常常又被叫做bug,即软件中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
IEEE729-1983标准定义:
从产品内部来看:缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题。
从产品外部看:缺陷是系统所需要实现的某种功能的 失效或违背。
6、软件缺陷产生的原因:
软件产品说明书(需求)56%、设计27%、编写代码7%、其他10%
软件缺陷在不同阶段的修复费用:
1、软件从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都可能产生和发现缺陷。
2、随着时间的推移,修复缺陷的费用呈几何级数增长
必须意识到:需求评审很重要;设计评审不可少;文档更新要及时;开发测试要思考。
————————————————