为什么要性能测试:
1 满足大量用户操作
2 支持大量用户同事操作某个功能
3 技术选型 python?java?
性能测试的概念:
服务器性能
性能测试的关注点:
性能:软件属性中的“效率”特性
时间特性:指用户接口响应时间
资源特性:cpu,磁盘,内存,网速。
性能测试策略:
1 基准测试
狭义:也是单用户测试,测试环境确定以后,对业务模型中重要的业务做单独的测试,获取用户运行时的各项性能指标。
2 负载测试
3 稳定性测试
4 其他,并发测试,压力测试,容量测试
性能指标:
响应时间
并发数:
系统用户数:系统注册的总用户数
在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
并发用户数:某一物理时刻同时像系统提交请求的用户数
吞吐量:指的是单位时间内处理的客户端请求数量,直接提现软件系统的性能承载能力
注意:
1 从业务角度来看,吞吐量也可以用”业务数/小时“”业务数/天“”访问人数/天“”页面访问量/天“
2 从网络角度来看,还可以用“字节数/小时”“字节数/天”
3 从技术指标来看,可以用每秒事务数(tps)和每秒查询数(qps)来衡量服务器具体性能处理能力
QPS:每秒查询数
服务器每秒处理指定请求数(如:控制服务器打到每秒60qps,服务器的性能各项指标是否能够正常,服务器处理能力一个重要指标)
TPS:每秒事务数,对于一个事务,通常是界面上一个场景,一个事务可以包含一个或者多个接口请求
计算:tps=并发数/平均响应时间
事务:就是业务请求,对应一个或多个操作。
点击数:点击数是衡量web服务器处理能力的一个重要指标。
提示:
1 点击数不是通常一般人认为的一个访问就是一次点击,点击数是该页面包含的元素(图片、链接、服务器发出的请求数量。
2 通常我们也用每秒点击次数(hps)——来衡量web服务器的处理能力。
注意:只有web项目才有此指标。
错误率:==失败业务数/业务总数*100%
错误率指系统在负载情况下,失败业务的概率
提示:
1 不同系统对错误率要求不同,但一般不超过千分之五
2 稳定性较好的系统,其错误率应该由超时引起,即超时率。
错误率不是功能有错误或者bug
资源利用率
说明:是指系统各种资源的使用情况,一般用"资源的使用量/总的资源可用量x100%“形成资源利用率的数据。
cpu 不高于80% ±5 在电脑里的所有处理请求(操作系统运行、软件程序、磁盘靠背等)都由cpu完成
内存不高于百分80 所有程序在运行时要消耗的空间(存储程序运行的数据)
磁盘不高于百分90 存储本地数据文件
网络不高于百分80 影响数据在网络中的传输速度
性能测试流程:
1 性能测试需求分析
2 性能测试计划及方案
3 性能测试用例
4 测试脚本编写/录制
5 建立测试环境
6 执行测试脚本
7性能测试监控
8 性能分析和调优
9 性能测试报告总结
性能需求分析:
被策系统:熟悉被策系统的业务功能和技术架构
测试内容:确定关键业务。即:用户使用频率较高的业务功能
通常逻辑复杂度较高的业务也是CPU密集运算较大的地方,考量服务器CPU在预定性能指标。
测试策略:负载测试?稳定性测试?并发测试?压力测试?
测试指标:无明确需求指标 通过查找相关资料,和类似的系统对比,以及对未来流量的评估,确定指标
性能测试计划及方案
说明:性能测试实施第一份文档,也是最重要的一份文档。
主要内容:
项目背景,测试目的,测试范围,测试策略,风险控制,交付清单,进度与分工
性能测试的用例模板
jmeter组件
同步定时器(syncharonizing timer)集合点
相当于一个蓄水池,累计到一定程度,会在同一时间点并发,所以可以用来做大数据量的并发请求。形成绝对并发。
常数吞吐定时器(constant throughput tomer)
时间是分钟 秒的话*60
jmeter参数化
数据驱动 数据与代码分离
用户定义的变量
添加方式:添加计划:测试计划-线程组-配置元件-用户定义的变量
jmeter 断言
响应断言
响应代码:响应码 响应信息:响应头对应的信息
json断言:
1 要先确认json断言,不是直接报错
2 使用jayway jsonpath 1.2.0中的语法搜索指定的路径,如果找不到路劲,就会失败。
3 如果在文芳中找到json数据,并且对期望值进行验证,那么它将执行验证操作
断言持续时间:持续时间就是响应时间,就是对响应时间就行断言。
关联:
提取参数
常用的关联方法:
正则表达式提取器
xpath提取器
json提取器:
跨线程使用变量:
操作步骤:
先试用josn提取器读取到数据
再使用“函数助手”生成setproperty函数
生成后使用beanshell取样器生成变量
属性读取和jmeter变量读取不一样,需要使用另一个函数property函数提取属性。也在函数助手里面
就可以使用全局变量了
性能实战
1 熟悉数据库设计结构,便于后期对数据库的性能监控
2 性能测试的过程中,数据库容易出现性能瓶颈
性能测试的关注点:
需求分析:业务场景、程序代码、服务器、硬件配置
性能测试需求的获取
性能测试点的提取规则
1 用户频繁使用的业务功能
2 非常关键的业务功能
3 特殊交易日或峰值交易的业务功能
4 核心业务发生中发调整的业务功能
5 资源占用非常高的业务功能
测试点:
性能测试计划
目标
测试背景
测试目的
测试范围
测试 策略
4.3稳定性测试
风险控制
交付清单
进度与分工
脚本编写(测试执行)
目标:学会性能的测试执行:性能脚本编写
性能测试执行前准备好环境和数据
能进行性能测试执行,并监控对应的指标
接口百分之九十都是json数据。
http请求默认值:设置http请求的默认参数
一个线程组一个用例。
执行:
1 构建测试数据,登陆csv
2 jmeter监控服务器
性能测试监控的关键指标介绍:
数据库性能
慢查询:
缓存命中率:
数据库连接池:
mysql锁:
压测机资源
性能监控指标
慢查询日志的配置:
性能调优