性能测试概述(1)

一、moco

1.1什么是moco?

Mock:替身

server:服务

mock:测试替身的服务

1.2不同角色对moco使用的场景

程序员

前端程序员

前端已写好⻚⾯,但是后端的接⼝没写好,那么前端程序员正确的姿势就是模拟后端。

现在前端程序员来模拟后端返回的产品列表的数据:

性能测试概述(1)

 

将此文件保存,保存到moco的Java文件同一等级目录下

性能测试概述(1)

 

 

 之后打开控制台,运行这个moco(具体操作为先打开控制台,进入保存文件的位置,复制位置,再控制台打开这个文件、输入命令java -jar moco-runner-1.3.0-standalone.jar http -p 12306 -c products.json)

性能测试概述(1)

 

 

 之后再postman中输入地址(http://localhost:12306/products)并执行

性能测试概述(1)

 

 

 

 

 

 

 后端程序员

后端已写好接口,但是前端的页面没写好,那么前端程序员正确的姿势就是模拟前端。

现在后端程序员来模拟前端返回的数据:例如停车场收费系统

A给B服务一个车牌,那么B返回其他信息

性能测试概述(1)

 

 

 性能测试概述(1)

 

 

 将此文件保存,保存到moco的Java文件同一等级目录下

性能测试概述(1)

之后打开控制台,运行这个moco(具体操作为先打开控制台,进入保存文件的位置,复制位置,再控制台打开这个文件、输入命令java -jar moco-runner-1.3.0-standalone.jar http -p 12306 -c park.json)

 性能测试概述(1)

 

 

  之后再postman中输入地址(http://localhost:12306/parking)并执行

性能测试概述(1)

 

 

 测试

测试过程中,⽆数据,怎么办?

⾃⼰造数据

⾃⼰mock数据

性能测试概述(1)

 

将此文件保存,保存到moco的Java文件同一等级目录下

性能测试概述(1)

 

 

 之后打开控制台,运行这个moco(具体操作为先打开控制台,进入保存文件的位置,复制位置,再控制台打开这个文件、输入命令java -jar moco-runner-1.3.0-standalone.jar http -p 12306 -c products.json)

性能测试概述(1)

 

 

 之后再postman中输入地址(http://localhost:12306/products)并执行

 性能测试概述(1)

 

二、性能测试

1.1、什么是软件性能

互联⽹的技术基本已全⾯的进⾏普及,所以对于⽤户⽽⾔软件的⽤户体验是⾮常重要的。在软件的⻆度⽽⾔, 性能它⾸先是⼀种指标,具体可以说就是软件系统或构件对于其及时性要求的符合程度,另外⼀种就是软件产品的 ⼀种特性,其实就是响应时间。对⼀个产品⽽⾔,性能的及时性是⽤响应时间或者吞吐量来进⾏衡量,⼀个⽤户操作⾏为,或者说是事务,⽐如单个的事务,响应时间就是完成事务所需要的时间,对⽤户⽽⾔,响应时间就是 端到端的⽤户基本体验。

1.2、不同角色对性能的理解

1.2.1、用户

在用户的角度下,性能就是用户操作的响应时间。

一般情况下业界对响应时间的界定如下:

1——3秒         比较优秀
3——5秒         一般,可以接受
5秒以上          不能接受

所以在做性能测试的过程中一定要注意,当响应时间超过5秒的时候就要提单了,让程序员来具体的优化。

1.2.2、运维

运维除了关注响应时间之外,也比较关心底层的信息资源,这些资源具体可以汇总如下:

系统资源(CPU和内存)

数据库资源(IOPS资源)

JVM内存是否够⽤

系统的最⼤容量

 

1.2.3、开发

开发的视角更加的全面,毕竟代码都是程序员写的,具体可以汇总如下:

前后交互的响应时间

中间件的参数设置

内存释放泄露

连接数泄露

是否存在不合理的内存使⽤⽅式

是否存在不合理的线程同步⽅式

系统中是否存在不合理的资源竞争

系统架构&代码结构

 1.2.4、测试

用户的视角属于全栈性的,所以需要考虑用户视角的产品体验,也要也要监控以及关注运维视⻆和开发视⻆,所以性能 测试中测试的具体⼯作职责可以总结为:

设计合理的场景和测试⽤例来验证系统的资源数据

验证在⾼并发的情况下架构是否满⾜

给架构师以及开发⼈员提供中间件配置参数的合理值范围

使⽤技术⼿段监控系统,DB,中间件,全链路监控的⽅式来监控系统资源情况


1.2.5、WEB前端

所谓前端的性能⽬前也是性能测试中⽐较热⻔的技术之⼀,关注的点具体汇总为如下:

浏览器的资源加载(HTML解析,图⽚资源加载,CSS⽂件资源加载)

前端缓存技术的优化是否合理性

前端与后端的交互性耗时

三、性能测试的常用术语

1.1、响应时间

响应时间指的是一次完整的HTTP请求流程

即响应时间(Response Time)=网络时间+应用程序处理的时间

 

性能测试概述(1)

 

 

以测试平台(上图)为案例:

WebServer:nginx

应用Server:Django服务

DataServer:MySQL

1.2、并发用户数

性能测试的核心是验证当前系统是否能够支持现有用户的访问,也就是说系统可以承受在同一时间段多少用户前来访问系统

并发用户数;以秒为单位可以说:不论从业务视角出发,还是服务器承受压力而言,描述的是同一时间向客户端发出请求的用户,某些时候也被称为“并发测试”。这中间主要体现的是服务器承受的最大并发访问数。

并发用户数:N个用户同时向服务发送请求

在线用户数:仅仅在线,但是并不代表发送了请求,也被称为僵尸用户

1.3、吞吐量

主要用于数据传输方面,也就是被测试系统的执行效率。该术语用于描述传输速度(字节/秒或者比特/秒),在某些情况下(如DB层面),吞吐量指的是操作的速度,也就是每秒操作或者每秒业务数。或者也可以说单位时间内用户端请求的数量,直接体现系统的性能承载能力。

1.4、性能计数器(性能测试中获取的数据)

WebServer:HTTP连接数

应用Server:服务被部署的系统的CPU和内存资源

DataServe:IOPS(每秒读取的数量)

1.5、IOPS

该术语主要是针对数据库的,也就是每秒发生的输出/输入操作的次数,是数据传输的一个度量的方法。用于磁盘的读写,IOPS值的是每秒读和的次数。

IOPS衡量的是读写的速度

1.6、使用率

对于服务所请求的资源,使用率描述的是所给定的时间区间内资源的繁忙程度。如果在一个业务中,会使用大量的内存资源,总的内存资源是4G,在一定数据量的情况下之心该业务形态,内存使用率从100M一直占用到3G,然后随着业务状态内存资源给得到释放呈下降的趋势,那么可以说内存使用率最高为75%

Out Of Memoty(OOM):内存泄漏

1.7、思考时间

思考时间英文名称是Think Time,也称为休眠时间,在业务视角,思考时间指的是用户在进行操作时,每个请求之间的间隔的时间。

1.8、TPS/QPS

事务指的是某个操作或者是⼀组操作的组合,如登录的事务那么就是输⼊账户和密码,点击登录按钮跳转到登录成 功的⻚⾯并且信息都加载出来。

TPS:统计的是每秒处理的事务数,即系统每秒能够处理的事务的数量。

QPS:指的是 每秒查询率,如DB服务器在规定时间内处理流量多少的衡量标准。

三、性能测试理论

1.1、调度

CPU 密集型:应用程序执行繁重的计算,通常运行时间比较长,会占用大龄CPU

    IO密集型:应用程序执行IO,计算不多,会占用大量的内存资源,系统最小粒度是线程,也就是说系统调度中国粒度最细的就是对线程组的调度。

线程优先级:

线程组优先级分为1---10

默认的优先级为5

优先级高的优先处理

执行的速度

1.2队列

先进先出,没有优先级的情况下谁跑的快谁先进。

上一篇:JVM学习笔记(五):垃圾回收器和内存分配


下一篇:Moco框架介绍和使用