负载和压力的区别:
负载测试:在一定的工作负荷下,给系统造成du的负zhi荷及系统响应的时间。
压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。
TPS和QPS的区别:
tps可以理解为是每秒对事务的处理的能力 qps是每秒对服务器的查询能力
性能测试web端和app端测试
web端的性能指标:
响应时间(客户端向服务端的请求时间,服务端对数据库的请求时间,服务端将结果展现到页面的时间)
响应时间2 5 8原则
吞吐量:指的是在一次性能测试过程中网络上传输的数据量的总和.吞吐量/传输时间,就是吞吐率.
TPS:每秒处理事务能力
并发数: 单用户的多次操作
多用户的单次操作
点击率:每秒钟用户向WEB服务器提 交的HTTP请求数.
资源使用率:cpu <80%内存 <80% io <40 网络 <30%
App端的性能指标:
Cpu内存 流量 电量 启动时间 帧率
cpu <80%内存 <80%
电量的损耗:
流量的损耗:
线程和进程区别:
接口测试:postman jmeter
Jmeter的接口测试
1测试计划中添加线程租
2在线程租中添加http请求
3写入Http请求数据绿色三角运行
服务器ip:apis.juhe.cn/lottery/history
key:0a55e25ee6ece7b526299957636e957c
lottery_id:ssq
4在线程租中进行修改并发数量(修改线程数量修改循环次数)
Jmetere的断言:
断言用来判断接口的返回值是否匹配
在线程租中进行添加断言--响应断言并将json放入到响应结果中在察看结果树中来
Jmeter的对数据库链接(对数据库进行压力测试):
测试数据的来源:
a.复用开发的原有数据 b.复用线上的真实数据c.直接使用线上数据
d.测试人员手动添加 e.产品或者是运营提供数据
Jmeter需要使用JDBC功能时,把解压好的jar包放在(jmeter的lib路径)即可。
1.打开jmeter,先创建线程组。
2.测试计划->添加->配置元件->JDBC Connection Configuration
3.然后第一个红框随便写,第二个红框配置JDBC数据库连接
Database URL: jdbc:mysql://替换ip地址:3306/数据库名
配置完成就可以执行数据库了。
4.线程组下面添加JDBC sample,在红框里输入第三步里的输入的值
5.查看结果树,显示这样就已经连接数据库,可以操作数据库数据了
****注意:query type类型不同则写sql语句不同****
Jemter的二种录制方法:
一,Badboy(PC端)
Badboy是一款不错web自动化测试工具,利用它来录制脚本,并且录制的脚本可以直接保存为JMeter文件来使用。
通过Badboy来录制脚本
Badboy下载完成打开页面如下:
1.打开badboy ,点击红色按钮,在地址栏输入被测项目地址。
录制完后,点击旁边的黑色按钮结束录制。
2.File下选择Export to Jmeter 保存.jmx类型文件
3.打开Jmter,打开“文件”->‘打开’选择刚保存的.jmx类型文件。
二,使用Jmeter自身的代理录制脚本(移动端)
1.打开jemter,创建一个线程
2.添加代理服务器,点击 “工作台”,然后右键,根据如下图步骤,添加一个代理服务器。
3.cmd输入ipconfig获取本机ip
设置端口、ip以及录制地址
4.模拟器修改网络选项
浏览器下载安全证书访问http://charlesproxy.com/getssl
5.点击绿色的启动按钮
6.业务操作完毕,停止jemter上的“HTTP代理服务器”
Jemter提取器:
一、正则表达式提取器
步骤:右键“HTTP请求”->添加->后置处理器->正则表达式提取
下面是正则表达式各参数值的含义:
1.引用名称:在HTTP等请求中,引用此数据,需要用到的名称
2.正则表达式:用于将需要的数据提取出来
3.模板:$ 1$ 这是固定格式
4.匹配数值:0代表随机取值,1代表第一值,n代表第n个值
5.缺省值:如果正则表达式没有搜到值,则使用此缺省值
正则正则表达式的格式:字符串形式"token":"(.+?)" 数字形式 “taken”:[(0-9)+]
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 +。
. 匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . 。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用?
二、JSON提取器
步骤:右键“HTTP请求”->添加->后置处理器->JSON提取器
下面是JSON提取器各参数值的含义:
1.引用名称:在HTTP等请求中,引用此数据,需要用到的名称
2.提取格式:$data[0].name
3.匹配数值:0代表随机取值,1代表第一值,n代表第n个值
4.缺省值:如果正则表达式没有搜到值,则使用此缺省值
json提取格式json讲解:
1.json串 []表示对象组成的数组,{}表示对象。
2.对象里包含多个 “属性”:属性值。属性值可以是值,或数组,或对象。
3.JSON Extractor使用json path表达式匹配,可以一次取多个变量值。$表示响应的根对象。取子对象或对象的属性用. 取数组里的对象用[],数组索引从0开始。
Jemter定时器:
一,固定定时器
如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。
二,高斯随机定时器
如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,上图表示暂停时间会分布在100到400之间,计算公式参考:Math.abs((this.random.nextGaussian() * 300) + 100)