1 按照开发阶段(软件开发周期)
- 单元测试是对软件的组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位——模块,故又称为模块测试。
- 集成测试是将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试。集成测试主要目的是检查软件单元之间的接口是否正确。
- 系统测试就是将已通过集成测试的软件系统与计算机硬件、外设、数据库、网络等其他元素结合在一起,在实际运行环境下,进行一系列的系统测试工作。包括对功能、性能及软件所运行的软硬件环境进行测试。
- 回归测试是指修改了旧代码后,重新进行测试以确认没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。
- 冒烟测试的对象是每一个新编译的需要正式测试的软件版本,对主干流程进行测试,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。一般在开发人员开发完毕后,测试人员会先进行冒烟测试,保证基本功能正常,不阻碍后续的测试。
- 验收测试是部署软件之前的最后一个测试操作,它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买者展示该软件系统满足原始需求。
2 按是否运行划分
- 静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。根据需求规格说明书、软件设计说明书、源程序结构分析、流程图分析、符号执行来找错。
静态测试最常用的技术就是评审,主要有同行评审和阶段评审。 - 动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。
大多数软件测试工作都属于动态测试。
3 按是否手工划分
- 手工测试是指由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。
优点: 自动化无法替代探索性测试、发散思维结果的测试。
缺点: 执行效率慢,当工作量大时,容易出错。 - 自动化测试是指在预设条件下运行系统或应用程序,评估运行结果。简单来说自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,比如功能测试自动化、性能测试自动化、安全测试自动化。
自动化测试按照测试对象划分,还可分为接口测试、UI测试等等。
4 按是否查看代码划分
- 黑盒测试:称为数据驱动测试,把测试对象当做看不见的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。
- 白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法。
- 灰盒测试:灰盒测试就是介于白盒测试和黑盒测试的一种测试,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术。
5 按照测试对象进行划分
- 功能角度
- 用户体验角度
- 兼容性角度
- 安全性角度
- 性能角度