相关基础概念
进程
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。比如打开某个word软件查看文档。
线程
线程是一个执行中的程序活动(即进程)的多个执行路径,执行调度的单位。比如word软件中使用打印功能。
多线程
多线程指在一个进程下有多个线程,各个线程执行自己的任务,这些线程可以“同时进行”。比如word软件同时打印多个文档。
并行
并行指的是在同一时刻,多个处理器同时执行多个事件/线程。
并发
并发指的是在同一时间段内,一个/多个处理器执行多个事件/线程。
并发测试定义
并发测试的目的,是以并发为手段进行接口测试,来发现接口在并发场景下出现的功能问题。
- 同时间执行多个相同事件
- 同一时间执行多个不同的事件,同时对服务器产生压力
并发测试分类
- 功能并发测试
先进行单业务功能场景的并发测试,再进行混合业务功能场景的并发测试。目的是验证系统功能是否满足需求预期的要求。
例如:
- 性能并发测试
同时满足某些系统性能指标的前提下,能让被测对象承担不同的工作量,评估被测对象的最大处理能力是否存在缺陷。目的是验证系统性能指标是否符合需求预期的要求。
- 稳定性并发测试
判断测试系统的长期稳定运行的能力。
目的是验证系统稳定性是否符合需求预期的要求。
- 异常性并发测试
模拟系统在较差、异常资源配置下运行,评估被测对象在资源不足的情况下的工作状态。
目的是验证系统的异常响应机制是否满足需求预期的要求。
测试方案
测试对象拆分
- 找到并发测试对象,了解需求测试功能,梳理业务功能;
- 描述测试对象重要性,列出核心功能、高频使用功能、占用资源较多功能;
- 测试对象拆分,功能链路根据接口拆分子功能;
- 明确重点测试对象,准备大量数据、模拟真实环境;
- 从历史数据的TPS、页面访问量、并发请求数等方面分析性能指标是否合理,安排优先级。
测试方案
接口文档驱动测试
编写接口测试代码:核对每个接口的传入参数控制,同时确认报错提示信息时候准确、到位;
异常数据测试:设置属性不存在、网络断开、数据库锁表等情况检查数据是否会出现异常;
逐个接口进行并发事物测试,核对数据与用例的调用结果是否一致;
复合接口并发测试:将各种接口按照一定的顺序进行并发,校验数据是否与用例调用结果一致。
业务场景驱动测试
统一动作并发
混合交易场景
绕过页面操作:抓包抛送异常值进行交易。
指标分析
整理并发需求(性能指标需求)
提取性能指标
并发数:并发数量,例并发100次,设置为10个线程,每个循环10次;
成功数:获取响应值为成功的请求;
成功响应时间:请求之前,获取当前时间,断言成功后,再次获取一次时间,取二者之差;
成功率:成功数/并发数;
成功的总响应时间:每个成功的响应时间之和,定义sum_time,初始值为0,把每次成功的响应时间加起来;
成功的平均响应时间:成功总响应时间/成功数;
TPS:成功并发数/成功平均响应时间,(注意TPS和QPS区别。QPS:Queries Per Second,意思是每秒查询率。指一台服务器每秒能够响应的查询次数,用于衡量特定的查询服务器在规定时间内所处理流量多少,主要针对专门用于查询的服务器的性能指标)