按开发阶段划分
单元测试
单元测试是对软件组成的单元测试。其目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单位:模块。又称为模块测试。
- 测试阶段:编码后或编码前。
- 测试对象:最小模块。
- 测试人员:白盒测试工程师和开发工程师。
- 测试依据:代码和注释及详细设计文档。
- 测试方法:白盒测试。
- 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试。
集成测试
集成测试也称联合测试(联调)、组装测试、将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单元之间接口是否正确。
- 测试阶段:一般单元测试之后进行。
- 测试对象:模块间的接口。
- 测试人员:白盒测试工程师和开发工程师。
- 测试依据:单元测试的模块及概要设计文档。
- 测试方法:黑盒与白盒测试相结合。
- 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响。
系统测试
将软件系统看成一个系统的测试,包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试系统执行阶段,包括回归测试和冒烟测试。
- 测试阶段:集成测试通过后。
- 测试对象:整个软件。
- 测试人员:黑盒工程师。
- 测试依据:需求规格说明文档。
- 测试方法:黑盒测试。
- 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等。
回归测试
修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码出错。自动回归测试大幅度降低系统测试、维护升级等阶段的成本。
回归测试在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。系统越庞大,回归测试的成本越大,选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
冒烟测试
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的确认软件基本功能正常,可以进行后续的正式测试工作。执行者是版本编译人员。冒烟测试一般在开发完毕后送给测试人员进行测试,测试人员会先进行冒烟测试,保证基本功能正常,不阻碍后续的测试。
验收测试
验收测试是部署软件之前的最后一个测试操作,他是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。
- 测试阶段:系统测试通过后。
- 测试对象:整个系统。
- 测试人员:主要是最终用户或者需求方。
- 测试依据:用户需求、验收标准。
- 测试方法:黑盒测试。
- 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等。
按测试实施组织
α测试
是由一用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。目的是评价软件产品的功能、局域化、可使用性、可靠性、性能和支持。
β测试
Beta测试是一种验收测试,由软件的最终用户们在一个或多个场所进行。
α测试与β测试的区别
1.测试场所不同:α测试是指把用户请到开发放的场所来测试,β测试是在一个或多个场所进行。
2.Alpha测试环境受开发方控制,用户数量相对少,时间比较集中;Beta测试不受开发方控制,时间不集中。
3.Alpha先于Bata,通用的软件产品需要较大规模的beta测试,测试周期较长。
按是否允运行划分
静态测试
静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。
- 检查项:代码风格和规则审核、程序设计和结构的审核、业务逻辑的审核、走查、审查与技术复审手册。
- 静态质量:用功能性、可靠性、可用性、有效性、可维护性、可移植性来衡量。
代码静态分析和文档测试都属于静态测试。
动态测试
动态测试方法是指通过运行被测程序,检查运行结果与预期结果额差异,并分析运行效率、正确性和健壮性等性能。
这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。
按是否手工划分
手工测试
手工测试是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于较为原始但是必须的步骤。
优点:自动化无法替代探索性测试,发散思维结果的测试。
缺点:效率慢、量大易错。
自动化测试
在预设条连下运行系统或应用程序,评估运行结果,预先条件应包含正常条件和异常条件。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
自动化测试:功能自动化测试、性能自动化测试、安全自动化测试。
按是否查看代码划分
黑盒测试
也被称为功能测试,只关心软件的输入数据与输出数据。
白盒测试
又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
灰盒测试
介于白盒与黑盒测试之间,多用于集成测试阶段。
按测试地域划分
国际化测试与本地化测试
软件的国际化和软件的本地化是开发面向全球不同地区用户使用的软件系统的两个过程。
按测试对象划分
业务测试
是测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程。
界面测试
测试用户界面功能模块的布局是否合理,整体风格是否一致界面是否美观等。
容错性测试
检查软件在异常条件下自身是否具有防护性措施或某种灾难性恢复手段。