性能测试笔记

性能测试:在功能测试基础,多用户并发的测试

服务器端性能测试:基于协议的多线程/多协程 接口测试()

抓包+接口文档,PostMan调试,JMeter的单线程调试

单元级别的

一、定义

性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。

二、目的

1、压测系统看系统的前端以及后端是否满足预期

2、压测系统看系统是否可以承受的最佳压力最大压力,来判断系统的承受极限

3、压测系统看系统在长时间运行下是否可以正常处理请求(疲劳测试)

4、容量规划

三、分类

1、一般性能测试

一般性能测试主要验证软件在正常环境和系统条件下,即不施加任何压力情况下重复使用系统验证其是否能满足性能指标,如响应时间、系统资源占有情况等。

2、负载测试

负载测试主要是在“基于或模拟系统真实运行环境及用户真实业务使用场景”情况下,通过不断给系统增加压力或在一定压力下延长系统运行时间,来验证系统各项性能指标的变化情况,直到系统性能出现“拐点”,即某个性能指标达到了事先约定的指标阈值(极限值)。

3、压力测试

压力测试主要是在“模拟系统已处于极限负载下或某指标已经处于饱和状态”情况下,继续给系统增加负载或运行时间,观察系统性能表现,验证系统是否出现内存泄露、系统宕机等严重异常。

4、大数据量测试

大数据量测试主要是指使用大批量数据对系统产生压力或影响,同时验证系统各项指标运行是否正常。

10月05——————————————————————————————————————

移动端的性能测试:

客户端性能测试(专项测试,工具,插桩) + 网络 +

服务器端的测试(JMeter)

Web端的性能测试:前端 + 网络 + 服务器端的(JMeter)

测试的流程

1、测试计划阶段

工作内容:

1)明确测试对象

  1. 定义测试目标

  2. 定义测试通过的标准

  3. 规划测试进度

  4. 规划测试参与人员(需求、开发、测试、运维和配置)

6)申请测试资源

  1. 风险控制

2、测试设计阶段

工作内容:

1)设计测试用例(根据不同场景设计)

2)设计测试数据

3)设计测试场景

3、测试开发阶段

工作内容:

1)测试环境搭建

2)测试过程文档定义以及配置

3)测试脚本开发、调试()

4)测试数据准备

5)基准测试

4、测试执行阶段

1)执行测试用例模型,包括执行脚本和场景

2)测试过程监控,包括查看log(tail -f)、监控服务器资源、数据库和中间件等

5、测试结果分析

1)根据测试结果和监控结果进行测试分析

2)根据性能测试目标,分析出系统存在的性能瓶颈,并给出优化建议

6、测试报告的内容

1.测试范围

2.测试执行以及参与人员

3.基准测试数据

4.测试执行的详细步骤

5.(场景设计)

6.测试数据记录、监控结果

7.测试结果对比以及总结性评价

要先设置代理

/index.php/bug(.*?)';

10.7.90.183

http://10.7.90.183:8032/bugfree/index.php/site/login

配置元件/HttpCookie

Jmeter可以通过浏览器/postman抓包

%E9%99%88%E9%9B%85%E6%96%87

10月07号——————————————————————————————————————————

元件的执行顺序 :配置元件,取样器,监听器;取样器是按照树状图的顺序从上到下执行的

1、User Defined Variables:用户定义的变量

添加—配置元件—用户定义的变量

2、函数助手:_CSVRead

3、CSV Data Set Config:CSV数据集配置

4、User Parameters:用户参数

添加—前置处理器—用户参数

5、数据库

数据库配置

在这里插入图片描述

Variable Name for created pool: my

MaxNumber of Connections:10

Database URL :jdbc:mysql://localhost:3306/test

JDBC Driver class: com.mysql.jdbc.Driver

username;

password

//if控制器的
${__jexl3("${u_gender_1}"=="女",)}
//if控制器的判断
${__jexl3(${u_age_1}>18,)}

断言

$.message

$.result[0].goodsName

1、bugfree先通过Postman调试(登录,添加Bug,提交Bug,退出)设置代理

2、Jmeter录制

3、3个用户名,使用csv数据驱动

8月12号——————————————————————————————————————————————

http://10.7.90.183:8032/bugfree/index.php/site/login

定时器多用于取样器之前,等待时间

同步定时器,集合点,目的是为了模拟真正意义上的并发

断言一般出现与某个取样器下面,右键添加

**定时器|前置处理器|后置处理器 一般某个取样器中 **

在线程组中,配置元件实最早执行的,监听器是最后执行的,与在线程组的位置无关

字符串的拼接在函数助手里需要用V函数

Controller / 一台机器

Agent 2台,20并发

1011———————————————————————————————————————————————

Jmeter使用步骤

1、通过postman(浏览器)实现所有的接口(接口文档,问开发)

2、postman中设置代理,Jmeter设置

3、Jmeter需要四个组件,HttpCookie管理器,线程组,测试计划/代理服务器,录制控制器

4、在代理服务器中启动

5、PostMan中发送请求,观察【录制控制器】下是否有接口

注意;如果录制的是本机,浏览器访问不能使用localhost,否则无法录制

10月12日—————————————————————————————————————————————

System.out.println("**********hello,cmd");
log.info("*************hello,log");
log.info("********"+vars.get("u_pwd"));//获取变量的两种方式
log.info("********"+"${u_pwd}");

String new_pwd = vars.get("u_pwd")+"hello";
vars.put("new_pwd1",new_pwd);

使用java文件

source("");

String result = BeanShellDemo.encode_pwd(vars.get("u_pwd"));
vars.put("new_pwd", result);

使用class文件

addClassPath("");
import BeanShellDemo;
String result = BeanShellDemo.encode_pwd(vars.get("u_pwd"));
vars.put("new_pwd", result);

导出jar

import com.edu.www.BeanShellDemo;
String result = BeanShellDemo.encode_pwd(vars.get("u_pwd"));
vars.put("u_pwd", result);

vars适用于当前线程组,props适用于跨线程组

如果需要在不同线程组传参,要勾选独立运行每个线程组

第一个线程组设置属性使用props

//props.put("code1", ${code_result});
${__property(code1,${code_result},)};

第二个线程组,获得属性有三种方式

log.info("222**********" + props.get("code1"));
log.info("222**********" + ${__P(code1)});
//${__P(code1,)}
//${__property(code1,,)}
log.info("222**********" +${__property(code1)});
log.info("222**********" +vars.get("code2"));

//source("E:/test/beanShellDemo/BeanShellDemo.java");

//String result = BeanShellDemo.encode_pwd(vars.get("u_pwd"));
//vars.put("new_pwd", result);


//addClassPath("E:/test/beanShellDemo");
//import BeanShellDemo;
//String result = BeanShellDemo.encode_pwd(vars.get("u_pwd"));
//vars.put("new_pwd", result);

————————————————————————————————————————————

30%用户浏览,20%加入购物车,50提交订单

if 控制器用于虚拟用户的分流

数值的比较  ${__jexl3(${__threadNum}%2==0,)}

字符串的比较  ${__jexl3("${gender_1}"=="男",)}

在Jmeter中,取样器最核心的

${__jexl3("${count}"<"5",)}

ForEach控制器,实现Discuz像三个不同的模块发帖

交替控制器与线程组的线程数量、循环次数结合使用

Switch控制器,Switch Value值可以是0,1,2,3下标,也可以是取样器的name,如果不确定执行那个请求可以使用${__Random(0,1,)},例如:对于bug的不同处理

随机控制器等价于 Switch控制器 + ${__Random(0,1,)}

随机顺序控制器适用于接口之间没有依赖关系的压力测试,例如,浏览不同的id的商品信息

吞吐量控制器:指取样器的执行次数,与线程组的循环次数结合使用,循环测试需要大于吞吐量控制器中设定的次数

log.info

log.info("${__UUID}")

同步定时器:实现真正意义上的并发

Jmeter扩展开发

${__threadNum} 线程编号

执行顺序:配置元件,取样器,监听器

作业:1、使用实现一个用户【ForEach控制器】实现Discuz向三个不同的模块发帖

————————————————————————————————————————————————

数据库性能测试

操作语句四大类 DDL,DML,DQL,(order by、group by + 聚合函数 + Having 左连接查询,右连接查询)、内连接,联合查询 、DCL

mysql 用数据库

use test; 切换到某个数据库

开始一个事务,begin;

执行

commit;这时候就可以在表中看到了

rollback; 回滚,撤销上一步操作

update account set money=money-1000 where name=“张三”

update account set money=money+1000 where name=“李四”

n

创建视图

create VIEW hr_employee

as

select empno,sal from employee

创建触发器

create trigger trigger_work after insert on work_time_delay for each row

begin

update employee set sal =sal-100 where empno=new.empno

end

创建存储过程

create procedure p1(in num int)

begin

select * from test_index limit 10;//实际项目中不要用select *

end

select * from test_index limit 10;前十条

select * from test_index limit 9,20;从第十条开始,查询共计20条记录

select * from test_index order by id desc limit 5; 查询最后五条

存储引擎针对的是表,不是库

1、先有一个表,不带索引100W条记录

2、alter table test_index add index index_name(username);

创建索引的方法

1、

创建表时候创建索引

create table table1(id int(5), index(id))

查看

– show index from table1;

删除索引

– drop index id on table1;

– show index from command;

增加全文索引

– alter table command add fulltext(instruction)

select * from command where instruction like ‘remove%’

用索引查询,精确匹配

select * from test_index where MATCH(password) AGAINST(‘marB9Za’)

select * from test_index where MATCH(password) AGAINST(‘marB9Z*’ in boolean mode)

系统用户 10W

在线用户 1W

并发用户 1W * 0.2

Python 协程

windows ——> linux

保证ping

[root@localhost~]#就表示登录成功了

192.168.88.120

ifconfig ens33 192.168.157.200

vmstat 1 10每秒一次,显示十次

linux 查看所有端口

netstat -ntlp

crontabl -l

晚上八点压测,星期一到星期五

00 20 ** 1-5 nmon -s 5 -c 采样次数 -m /test

*/1 * * * * date >>/test/wenyay/hello.log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值