🌈个人主页:努力学编程’
⛅个人推荐:
c语言从初阶到进阶
JavaEE详解
数据结构
⚡学好数据结构,刷题刻不容缓:点击一起刷题
🌙心灵鸡汤:总有人要赢,为什么不能是我呢
性能测试
上一篇文章,详细说明如何使用 selenium 完成自动化测试,对于最终要交付的产品来说,除了对于产品功能的校验,还要对产品的性能进行校验,而性能测试就是专门针对性能进行的测试
性能测试的范围有很多: 比如客户端在发送请求后,服务器返回响应的最大时间是否可以接受,在对数据库中的数据进行操作的时候,查询的速度是否太慢,以及在高并发的场景下,服务器是否还可以长时间的保持一个稳定的状态,以及服务器的最大吞吐量和发送大量请求后出现的错误率。
性能测试中一些常见的指标
高并发
:简单理解 在某个时间段产生了大量的请求数据,比如在双11的时候,大量的用户在淘宝登录,购买商品,一般指请求数非常大的场景。
吞吐量
: 单位时间内处理的并发数,直接体现软件系统负载承受能⼒。吞吐量越⾼,系统承受的并发越
多,性能越好。
响应时间
: 应⽤系统从请求发出开始,到客⼾端接收到最后⼀个字节数据所消耗的时间。
对于web系统⽽⾔,系统响应时间包含前端展现时间和系统响应时间。
前端展现时间:⻚⾯渲染时间.
并发⽤⼾、系统吞吐量、系统响应时间之间的关系
事务
: ⼀个接⼝可以是⼀个事务,多个接⼝也可以是事务,⼀个流程可以是事务,事务代表⼀个完整的功能。
TPS和QPS
: TPS 每秒处理的事务数,QPS 每秒查询率。
性能测试的分类
针对分类,可以分为 基准测试,压力测试,负载测试,稳定性测试
其实这几类的区别并不是非常大这里强调一下,关于负载测试和压力测试的区别,负载测试强调在保持系统正常的情况下,对应最大的性能,而压力测试是在极限状态下,系统能够处理的并发数。一般都会把系统搞崩。
其他的这里不做赘述。
Jmeter 介绍
Jmeter 是 Apache 基金会组织基于 Java 开发的压⼒测试⼯具,⽤于对软件做性能测试.
Jmeter 安装:
解压之后,在配置环境变量,这样方便在任意目录下使用 cmd 都能打开 Jmeter .
在这个文件中,修改 Jmeter 的语言, 将en 改为 zh_CN (简体中文).
点击 Jmeter.bat 打开 Jmeter 或者直接在 cmd 中输入 Jmeter (添加环境变量之后).
Jmeter 使用
1.启动Jmeter
2.创建对应的线程组
3. 在线程组中添加 HTTP 请求取样器
4.在 HTTP 请求中添加对应的配置数据
注意: 这里还需要添加用户名和密码,以参数的形式
类似这样:
- 创建一个 结果数.用来查看发送的请求,对应的数据(你也可以使用 Postman打开)
6. 发送请求,在结果数中查看
这里我们可以在线程组中将线程数量配置为 10 类似于模拟高并发的场景.
查看结果
大部分情况下,我们发送的请求的协议,IP地址,端口号,都是一样的,所以我们可以将部分抽取出来,
添加对应的默认选项之后,删除执之前请求对应的默认值,在次发送请求查看结果:
在这个过程中可能会遇到发送一个没有token数据的 url 这样就会报错
提醒: 以后遇到请求发送错误,我们都可以先在postman中处理,因为Jmeter不大好用(hhh).
添加了 user_token_header 后 再次发送请求:
在 Jmeter 再次验证
显然这样的方法并不实际,一段时间之后,对应的Data数据可能会过期,我们还得重新配置信息头管理器
这里采用的是 Json 提取器
在响应成功的数据中,提取对应一些信息
为了让个人信息也能携带 token数据将 信息头管理器 放到最前面(修改作用域)
测试文章的详情页
对写文章接口的测试
发送请求之后,发现发送失败,但是如果我们使用postman发送成功,这时就需要逐个对比数据,最后得出结论,要求header中的发送数据的格式为application/json 但是在Jmeter中使用的是test,所以要添加一个信息头管理器,然后配置对应的格式:
有时我们对于成功的请求,取中的内容也要做一个校验,此时可以使用 json断言来进行判断
同步计时器
针对高并发的场景,我们需要将多个线程一同发起请求,这样才能模拟高并发的场景,在 Jmeter 中我们可以通过添加同步计时器模拟这个过程.
观察这里将定时器的并发数设置为5,在点击右上角的三角号之后,就可以观察到,所有的线程都是等到5个线程准备好了之后,才开始运行.
这里需要给大家强调一个点,如果我们设置的总线程数小于同步定时器的数量,可以通过循环次数来完成高并发的场景
我们有时需要将多个接口放在一起,来进行测试,我们可以将这多个接口集合成为一个事务,比如将登陆接口和文章列表接口合并为一个事务.将一个事务为单位进行测试.
这时就可以添加一个事务控制器.
然后再聚合报告中查看发送请求的结果
真实模拟用户使用场景
其实再真实的场景下,多个用户不会使用一个账号进行登录,所以我们模拟用户的使用就需要将不同的账号密码一同进行登录.
这里使用的是 svc 文件进行模拟.
可以通过创建一个Excel表格,里面创建多个账号密码.然后将文件保存为 csv 文件,在Jmeter 中将这个文件打开,然后配置选项
在查看结果数中查看最后的结果,会发现在登陆请求中的账号和密码都是在 csv 数据文件设置中循环读取数据的.
这里模拟两个账号和密码,读取的结果:
安装 Jmeter 插件
在真实的测试高并发的场景的时候.并不是直接按确定的并发数开始测试的,而是按照一定的曲线,逐步增加并发的数量.
这里为了模拟这个场景,就需要安装一些插件
放到这个目录底下:
然后就可以使用这个插件了
下载这两个插件
添加线程组:
观察添加响应时间和吞吐量监听器后的整个流程是咋样的:
生成性能测试报告
首先在命令行中切换路径到当前的测试的路径下,然后输入一下命令
等待一会就可以在first文件夹下找到生成的测试报告了.
点击 index.html 就可以查看生成的测试报告了