业务场景提取:
*提取的要点:核心业务,高频业务
*场景:
1、登录
2、秒杀:登录-列出-获取商品信息-秒杀-退出
*只开发脚本
*场景运行:
1、基准场景:单个用户的(单用户场景)
2、单场景:单个接口
3、混合场景(多场景):接口可能没有关系
4、比例场景
*场景要素(测试报告):
1、对应接口的脚本
2、用户数要求
3、热备时间(对应启动时间jmeter中的ramp-up)
4、持续时间
5、逻辑关系
场景举例:
*订单场景操作流程:
1、用户访问登录—每一个用户一次
2、列出商品列表—秒杀接口
3、退出登录
*性能场景指标
1、验证最大并发用户数—(负载测试逻辑)
2、错误率<0.5%
3、请求响应时间<3s
4、高并发
5、服务器资源使用合理:
Cpu使用率<70%
内存使用率<70%
补充点:登录接口加密
1、加密方式有:对称加密、非对称加密、hash加密(MD5加密)
2、项目中遇到接口加密是定制化加密的处理方法:
1)开发可以提供加密方法—加密流程:随机数+时间戳
解决方法使用前置处理器beanshell—java编写代码
2)开发不提供加密方法—要求给出对应的Jar或class文件
解决方法解决方法使用前置处理器beanshell—java编写代码调用对应的jar方法,获取加密的结果,写在一个变量里,后面登录接口中使用这个变量
导入jar包并使用jar包中的方法,例如导入md5方法
Source("D:\\testJar.jar”);
Import MD5fun;
MD5fun test = new MD5fun();
String res = test.getMD5String("Zhang123456”);
Log.info("MD5———>"+res);
Vars.put(“psw”,res);
补充点:监控方案:
*自带监控—阿里云/华为云
》PTS--技术解决方案—运行jmx—监控-分析-收费
*第三方监控方案:
》granfana+promethues
》宝塔
》nmon
*linux监控命令:
linux核心组件:cpu、内存、磁盘、网络、进程
Linux查看cpu的常用命令:
1、查看cpu静态配置信息:cat /proc/cpuinfo
2、查看cpu的统计信息:lscpu
3、uptime
Load average(平均负载)就是一段时间(1分钟、5分钟、15分钟)内的平均负载。
看趋势时从右到左,即15分钟》5分钟》1分钟》,这个数字是递增还是递减。数字代表着一段时间内正在使用和等待使用cpu的平均进程数1,1核处理一个进程,其它多余的进程需要wait。
模拟cpu使用率要求达到100%场景
准备:安装好软件包,打开3个终端
>yum install -y epel-release
>yum install -y sysstat
>yum install -y stress
终端1:模拟一个cpu使用率100%的场景,使4核cpu爆满
> stress -c 4 --timeout 300
终端2:查看平均负载的变化情况,-d参数表示高亮显示变化的区域
> watch -d uptime
终端3:
*-P ALL 表示监控所有cpu,后面数字5表示间隔5秒后输出一组数据
>mpstatl -P ALL 5
*间隔5秒输出一组数据,主要看cup需要等待处理的百分比
>pidstat -u 5 1
注意:安装pidstat过程
1、将sysstat放到一个目录下,例如opt
2、yum install gcc
3、cd /opt/sysstat
4、chmod a+x configure
案例分析讲解
*场景描述:cpu是4core环境,cpu达到99%,平均负载20
分析:
1、每个cpu都已经满载符合在运行—性能指标的标准<80%
2、4核cpu平均负载<=4,实际是20
解决:
找到对应的cpu使用率比较高的进程、进而找到线程、配置、或者数据库查询语句等等
linux下常用查看内存的命令集:top+free+vmstat+sar
补充小知识:
1)内存的寻址时间比磁盘io寻址快100倍至10万倍
2)内存访问速度是纳秒级(10的-9次方),硬盘的访问数速度是微秒级的(10的-3次方)
3)cat /proc/meminfo 查看内存情况
命令free
total :总计物理内存的大小
used:已使用多大
free: 可用有多少
shared: 多个进程共享的内存总额
buffers/cached:磁盘缓存的大小
available:
所有空闲内存=free+buffer+cached=total-used
两个进程之间还可以通过共享内存进行进程间通信
补充知识点:
Kb和KB区别:
B--byte字节
b—bit 位
B=8b
K—kilo 千
Kbps:ps指“每秒”。Kbps指的是网络速度,也就是每秒钟传送多少个千位的信息,一般电信运营商都用Kb(千位)来表示网络的传输速度。
KBps:表示每秒传送多少千字节。换算的方式:1KBps=8Kbps。如果ADSL上网的网速是512Kbps,那么转换速度成字节就是512/8=64KBps。
补充知识点:swap
swap是虚拟内存,当系统的内存不够用的,会使用这个虚拟的内存(磁盘空间)。
分析:
*如果这个swap—说明内存已经不够用
*si :so:--swap-in ,swap-out —这2个指标越大说明内存越不足
场景:
*在k8s集群里每一台服务器都会禁用swap内存
*k8s—自动扩容的特点
Linux下常用的磁盘指令集:
iotop+dd+iostat+sar+dstat+fio
读写速度:机械硬盘>100M/s,固态硬盘>500M/s
Linux下常用的网络指令集:
netstat+ping+tcping+iperf
Ifconfig,ethtool
netstat命令
场景:RT响应时间很慢的时候
分析:
首先分排除网络,要求在局域网内测试,不能在公网内测试
补充点:
*公司内网测试:公司机房机器与公司内部测试,有时需要路由添加网络延时,即加上行
*阿里云环境:项目搭建在阿里云:
》公网IP:本机去压测阿里云—使用公网时,不准确,受其它用户的的影响
〉内网IP:去申请对应的阿里云的测试机—使用内网ip测试—用有线网络去测试
注意:jmeter和服务器不能安装在同一个IP服务器内,jmeter本身需要性能,压测的结果会受影响。
netstat -tunl (用来查询端口)
-t :列出tcp协议端口
-u: 列出udp协议端口
-n: 不使用域名与服务名,而使用Ip地址和端口
-l: 仅列出在监听状态网络服务(只有tcp有监听状态)
安装:yum install net-tools
ping 命令的常用方法
ping大包测试网络性能,通常用来ping大数据包,来测试网络状况
*linux下ping包的默认大小为64Byte,次数无限
1、指定数据包大小为1500Byte: ping -s 1500 ip(例如:ping百度 ping -s 1500 www.baicu.com)
2、指定次数为4次,数据包大小为32767Byte: ping -c 4 -s 32767 ip
*window 下ping包默认大小为32Byte,默认ping包次数是4次
1、指定ping包大小为1500Byte: ping -l 1500 ip
2、指定次数为6次,ping包大小为1500: ping -n 6 -l 1500 ip
tcping命令
tcping是针对tcp监控的,也可以看到ping值,即使源地址禁止ping也可以通过tcping来监控服务器网络状态。tcping最大的一个特点就是可以指定监控的端口
tcping -d -t www.baidu.com 80
安装:
Yum -y install tcping
iperf命令:主要测试两台服务器中之间的带宽
iperf是一个网络性能测试工具。iperf可以测量最大tcp和udp带宽性能,可以报告带宽、延迟抖动和数据包丢失。
2台机器A ,B都需要装iperf
1、服务器--A 机器
iperf -s
2、客户端-- B机器
Perf -c 服务器的ip -t 20