一.按照实施主体划分,可将测试划分为开发方测试、用户测试和第三方测试。
- 开发方测试通常也称之为”验证测试”或”Alpha测试”,主要是指在软件开发完后,开发方要对提交的软件进行全面的自我检查与验证。它可以从软件产品编码结束之后开始,或在模块(子系统) 测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
- 用户测试是指在用户的应用环境下,用户通过运行和使用软件,检测与验证软件是否符合自己预期的要求,这里大家要注意,用户测试一般不是指用户的”验收测试”,而是指用户的使用性测试。常见的用户测试有”Beta测试”。
- 第三方测试也称为独立测试,它是指由在技术、管理和财务上与开发方和用户方相对独立的组织进件测试。
二.按开发(工程)阶段划分:单元测试、集成测试、系统测试确认测试、验收测试。
- 单元测试是指对软件中的最小可测试单元进行检查和验证,是封闭在单元内部的测试(通常由程序员自己来完成),关注一个单元是否正确地实现了规定的功能、逻辑是否正确、输入输出是否正确,从而寻找模块内部存在的名种错误,其测试内容包括模块接口、局部数据结构、模块内路径、边界条件和错误处理。依据是模块的详细设计文件,可能需要构造驱动模块或桩模块来支持单元测试。主要测试的内容为:
- 边界测试
- 错误处理测试
- 路径测试
- 局部数据结构测试
- 模块接口测试
- 集成测试是在软件的单元测试完成并修复了所发现的错误后,进行模块的集成时开展的测试。集成测试的主要任务是发现单元之间的接口可能存在的问题,目标是验证各个模块组装起来之后是否满足软件的设计文件要求。常见的集成策略有一次性集成和增量式集成。
- 系统测试是将通过了集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起在实际或者模拟运行环境下,对计算机系统进行一系列的测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。从以上描述可以看出,系统测试的对象包含了软件所依赖的硬件、外设和数据。系统性能测试属于系统测试的一部分。
- 系统测试是为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统正确配置、连接,并满足用户需求。采用黑盒测试方式,并只能由独立的测试团队、用户或第三方机构进行。
- 常见的系统测试主要有以下内容:
- 恢复测试:监测系统的容错能力
- 安全测试:检测系统的安全机制、保措施是否完善,主要是为了检验系统的防范能力
- 压力测试:也称为强度测试,是对系统在异常情况下的承受能力的测试,是检查系统在极限状态下运行时,性能下降的幅度是否在允许的范围内
- 性能测试:检查系统是否满足系统设计方案说明书对性能的要求
- 可靠性、兼容性、易用性、可用性和可维护性测试
- 安装测试
- 确认测试
- 确认测试和验收测试焦点放在与软件交付相关的验证与确认上。确认测试和验收测试与系统测试相似,以需求规格说明为依据,采用黑盒测试方法。
- 确认测试按用户参与程度不同分为: 内部确认测试、α 测试、β 测试、验收测试
- 验收测试是部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。这时相关的用户和独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。所以不是由开发方主导,而是以用户为主导。
三.按测试技术/软件质量特性划分:白盒测试、黑盒测试、灰盒测试。
按是否关联代码划分的测试:可以分为白盒测试与黑盒测试,区别在于测试时测试人员是否知道软件是如何实现的。
- 白盒测试也被称为结构化测试、逻辑驱动测试或基于代码的测试,是指测试人员开展测试时完全清楚被测试程序的内部结构、语句及工作过程。
- 黑盒测试是通过软件的外部表现行为进行测试的方法,它不关心程序的内部结构和如何实现只关心程序的输入和输出,因此这种测试方法中软件像是被放于一个无法看见内容的黑盒子中。
- 灰盒测试介于白盒测试和黑盒测试之间,既关注黑盒测试方法中的输入输出,也在一定程度上关注程序的内部情况,是两种测试方法的一定融合。
四.软件测试按照是否执行代码划分为:静态测试和动态测试。
按是否执行代码划分的测试:可以将测试分为动态测试和静态测试。
- 动态测试即通常意义上的测试,通过运行软件来发现错误或验证程序是否符合预期要求。
- 静态测试不运行软件,只做检查和审核,测试的对象包括需求文档、设计文档、产品规格说明书以及代码等。对各类文挡的测试主要通过评审的方式进行,对代码采用走查和代码审查方式。