1. 软件测试分类

1.1 按开发阶段分类:

  • 单元测试
  • 集成测试
  • 系统测试
  • 功能测试
  • 兼容性测试:保障产品在不同的软硬件环境下都可以使用
  • 性能测试:软件是否好用
  • 响应速度(客户关心内容)、运行是否流畅
  • 系统资源利用情况(测试人员关心)
  • 系统容量(用户最大并发量)
  • 系统稳定性
  • 安全测试(相对独立的一个领域)
  • 验收测试
  • α测试:内测版本,开发环境下模拟真实用户操作进行测试
  • β测试:公测版本,实际使用环境下,实际用户进行操作

1.2 按是否查看代码分类:

  • 白盒测试
  • 研究产品内容的源代码和程序结构
  • 单元测试就是白盒测试的一种
  • 黑盒测试:
  • 黑盒测试又称为数据驱动测试
  • 完全不考虑程序内部结构和内部特性
  • 注重于测试软件的功能需求
  • 只关心软件的输入数据和输出数据
  • 灰盒测试
  • 结合白盒测试和黑盒测试的要素的一种测试

1.3 按测试执行方式:

  • 静态测试
  • 不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
  • 对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错
  • 动态测试
  • 通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能

1.4 按是否手工执行划分:

  • 手工测试
  • 由人去一个一个的输入用例,然后观察结果,和机器测试相对应。
  • 自动化测试
  • 把以人为驱动的测试行为转化为机器执行的一种过程

1.5 其他分类:

  • 冒烟测试
  • 开发提交代码后,在系统测试之前,需要把所有功能流程全部跑通,也就是对软件基本功能进行测试。
  • 回归测试
  • 修改代码后,对原有bug进行测试,确保bug被修复且无新bug被引入。
  • 随机测试
  • 除了根据测试用例和测试说明书进行测试外,还需要进行随机测试,主要是根据测试者的经验对软件进行功能和性能抽查。
  • 一般在测试最后去执行
  • 探索性测试
  • 探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。

2. 自动化分层测试体系

测试的技术架构 测试技术的组成_UI

分层测试体系说明:

  • 层级越往上BUG反馈速度越慢、维护成本越高
  • 根据分层测试策略,UI端和服务端都要完成测试

Unit Tests:

  • 可对产品质量做到最强的保障。既要保证质量,又要做到持续交付,则单元测试一定要做起来。
  • 单元测试方法:
  • Java单元测试框架:
  • Junit
  • TestNG
  • Python单元测试框架:
  • Unittest
  • Pytest

Service Tests:

  • 接口:全称Application Programming Interface,一般称作API。对于软件来说,接口相当于每个模块之间传递数据的桥梁。
  • 接口测试:针对软件对外提供的服务的接口的输入输出尽心测试
  • 接口测试的重点:检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性
  • 为什么进行接口测试?保证API反馈数据的正确,并且接口比UI更底层,进行接口测试,发现的问题修改代价比UI层测试小。
  • 接口测试的方法和工具
  • Charles、Fidder :代理工具,接口数据抓包
  • postman
  • Jmeter :接口功能和性能验证
  • LoadRunner
  • 打造自己的接口测试框架:
  • Python:Requests、HttpRunner
  • Java:HttpClient、RestAssured

UI Tests:

  • 可对核心业务,相对稳定的业务,做UI自动化测试
  • UI测试方法
  • 手工方法:人工查看、操作
  • 自动化方法
  • web端:selenium
  • app端:appium