性能测试理论(一) mockserver应用
1、mockServer
1.1什么是mockServer
moco=替代 Server=服务
mocoServer即为测试替身的服务
主要针对于单元测试的应用,主要应用于解除单元测试之间的依赖
1.2mocoServer使用的场景
前端程序员
前端已经写好页面,但是后端的接口没有写好,
正确的姿势就是前端模拟后端的操作,具体方式如下
[ { "request": { "method": "get", "uri": "/products" }, "response": { "json": { "name": "我真帅", "type": "WEB", "version": "V1.0.0", "master": "aaaa", "description": "this is a test api" } } } ]
启动的命令为:
java -jar -moco-runner-0.10.0-standalone.jar http -p 12315 -c product.json
其中 -p 为制定端口 -c 为指定文件
启动成功的标识:
java -jar moco-runner-0.11.0-standalone.jar http -p 12306 -c product.json #启动后的输出 14 ⼆⽉ 2022 09:46:13 [main] INFO Server is started at 12306 14 ⼆⽉ 2022 09:46:13 [main] INFO Shutdown port is 58954 14 ⼆⽉ 2022 09:47:27 [nioEventLoopGroup-3-3] INFO Request received:
后端程序员
举例说明A给B服务一个车牌号,那么B返回车辆的其他信息
[ { "request": { "method": "post", "uri": "/parking", "json": { "park": "B250BA" } }, "response": { "json": { "park": "B250BA", "in": "2022-2-14 00:00:00", "out": "2022-2-14 12:00:00", "money": "$250", "master": "jiachao" } } } ]
然后我们在postman当中进行测试
测试
在我们进行测试过程中,没有数据,解决方案如下
自己造数据
自己mock数据
具体方式如下
[ { "request": { "method": "get", "uri": "/products" }, "response": { "json": [ { "name": "wo真帅", "type": "WEB", "version": "V1.0.0", "master": "bbb", "description": "this is a test api" }, { "name": "wozuishuai", "type": "APP", "version": "V1.0.1", "master": "aaa", "description": "this is a test api" } ] } } ]
2、性能测试相关知识
软件性能测试常用术语
2.1响应时间
一次操作完成后,也就是客户端发送请求到服务端后,服务端的响应数据时间,包含了用于等待和服务的时间
响应时间(Resoponse Time)=网络时间+应用程序的处理时间
2.2并发用户数
性能测试的核心是验证当前系统是否支持现有用户的访问,也就是说系统可以承受同一时间段多少用户来访问系统
并发用户数:N个用户向服务发送请求
在线用户数:仅仅在线,但是并不代表发送了请求,僵尸用户
开发用户数秒可以说:不论从业务视角出发,还是服务端承受压力而言,描述的是同一时间同时向客户端发出请求的客户,某些时候也可以称为"并发测试",这中间主要体现的服务端承受的最大并发访问数。
2.3吞吐量
主要用于数据传输方面,也就是测试系统的执行效率。该术语用于描述数据传输速度(字节/秒或比特/秒),在某些情况下(如DB层面),吞吐量值得是操作的速度,也就是每秒操作数或者每秒业务数。或者可以说单位时间内客户端请求的数量,直接体现系统的性能承载能力。
2.4性能计数器
主要指的是性能测试过程中操作系统以及其他组件的一些数据指标
WebServer:HTTP连接数
应用Server:服务被部署的系统的CPU和内存资源
DataServer:IOPS
IOPS:该术语主要是针对数据库的,也就是每秒发生的输入/输出操作的次数,是数据传输的一个度量方法。用于磁盘的读写,IOPS值得是每秒读和写的次数。
性能测试的过程中,任何指标不能超过75%,一旦超过75%,说明可能存在瓶颈
2.5使用率
对于服务所请求的资源,使用率描述的所给定的时间区间内资源的繁忙程度。
Out Of Memory(OOM):内存泄漏
如果一个业务中,会使用到大量的内存资源,总的内存资源是4G,在⼀定数据量的情况下执⾏该 业务形态,内存使⽤率从100M⼀直占⽤到3G,然后随着业务形态内存资源得到释放呈下降的趋势,那么可以说内 存使⽤率最⾼为75%
2.6思考时间
思考时间英文名称是Think Time,也称为休眠时间,在业务视角,思考时间指的是用户在进行操作时,每个请求之间的间隔时间。
2.7TPS/QPS
事务指的是某个操作或者是⼀组操作的组合,如登录的事务那么就是输⼊账户和密码,点击登录按钮跳转到登录成 功的⻚⾯并且信息都加载出来。TPS统计的是每秒处理的事务数,即系统每秒能够处理的事务的数量。QPS指的是 每秒查询率,如DB服务器在规定时间内处理流量多少的衡量标准。
2.8相关测试理论
调度:
CPU密集型:应用程序执行繁重的计算,通常运行时间比较长,会占用大量的CPU
IO密集型:应用程序执行I/O,计算不多,会占用大量的内存资源 系统的最小粒度是线程,也就是说系统调度中粒度最细的就是对线程的调度。队列
线程优先级:
优先级程度是1-10 默认的优先级为5
队列:
queue:先进先出原则