Jmeter学习-建立测试环境

1. 建立测试环境

在进行性能则试之前,需要先完成性能测试环境的搭建工作,测试环境一般包括硬件环境、软件环境及网络环境
一般情况下可以要求运维和开发工程师协助完成

1.1 性能测试环境的特点

1. 性能测试对测试环境的独立性要求更高,更为严格
如果某环境下运行多个系统,就很难判断其中的某个环境对资源的占用情况
2. 尽量保持性能测试环境与真实生产环境的一致性

1.2 如何保证测试环境与生产环境的一致性

1. 硬件环境
包括服务器环境、网络环境等
2. 软件环境
版本一致性:包括操作系统、数据库、被测应用程序、第三方软件等
配置一致性:包括操作系统、数据库、被测应用程序、第三方软件等
3. 使用场景的一致性
基础业务数据的一致性
业务操作模式的一致性: 尽量模拟真实场景下用户的使用情况

2. 构造测试数据

压测环境中的数据量尽量与生产环境中数据量一致,为了快速创建大量数据,可以直接操作数据库进行添加

2.1 压测数据准备

压测环境中有1000000的数据,比如有10万的注册用户,要压测登录接口,为了模拟压测环境数据,可以使用python代码来加入数据。
Jmeter学习-建立测试环境_第1张图片
登录的时候需要,填入username和password来登录,同时要求表中的mobile不重复,压测的时候,用户名是关键,密码可以设置为和现有密码一致即可,python实现代码如下:

import pymysql

#数据库连接信息
conn_info = {
    "user": "root",
    "password": "123456",
    "host": "192.168.65.131",
    "database": "litemall",
    "port": 3306,
}

#连接数据库
conn = pymysql.connect(**conn_info)
#创建游标
cursor = conn.cursor()
#构造sql,使用字符串的format来拼接sql
users_sql = "INSERT INTO `litemall`.`litemall_user` (`id`, `username`, `password`, `gender`, `birthday`, `last_login_time`, `last_login_ip`, `user_level`, `nickname`, `mobile`, `avatar`, `weixin_openid`, `session_key`, `status`, `add_time`, `update_time`, `deleted`) VALUES ('{}', '{}', '$2a$10$lTu9qi0hr19OC800Db.eludFr0AXuJUSrMHi/iPYhKRlPFeqJxlye', '1', NULL, '2023-03-31 21:27:26', '192.168.65.1', '0', 'user123', '{}', '', '', '', '0', '2019-04-20 22:17:43', '2023-03-31 21:27:26', '0');"


user_start= 100000
#循环插入数据
for i in range(100000):
    user_start_id = user_start+i
    username = "test"+str(user_start_id)
    moblie ="15091"+str(user_start_id)
    sql = users_sql.format(user_start_id,username,moblie)
    print(sql)
    print("插入第{}条good_sql数据,id为{}".format(i + 1, user_start_id))
    cursor.execute(sql)

    conn.commit()
#关闭连接信息
cursor.close()
conn.close()
插入数据成功
Jmeter学习-建立测试环境_第2张图片

 2.2 压测脚本编写-随机登录

因为用户名是test开头,后面数字递增的,所有可以使用random函数

做接口测试用例时,有时接口的某个参数是有固定范围且不能重复的数字,譬如电话号码,name此时就需要用到这个函数来生成随机的数字了

Jmeter学习-建立测试环境_第3张图片

 Jmeter学习-建立测试环境_第4张图片

 函数参数内三个名称的含义分别为最小值,最大值和生成的值得参数名称,填上之后点击生成按钮即生成${__Random(100000,200000,)},将其copy即可直接使用

结果如下

Jmeter学习-建立测试环境_第5张图片

2.3 压测脚本编写-顺序登录

1.添加计数器

点击线程组-添加配置元件-计数器

计数器:允许用户创建一个在线程组之内都可以被引用的计数器。

计数器允许用户配置一个起点,一个最大值,增量数,循环到最大值,然后重新开始,继续这样,直到测试结束。

Jmeter学习-建立测试环境_第6张图片

 

 

用户名前面一部分是固定不变的,变的是后面的数字100000-200000,于是添加配置元件-计数器

计数器配置自增100000-200000

  • 开始(Starting value):给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数
  • 递增(Increment):每次迭代后,给计数器增加的值
  • 最大值(Maximum value):计数器的最大值,如果超过最大值,重新设置为初始值(Start),默认的最大值为2^63-1
  • 数字格式(Number format):可选格式,比如000,格式化为001,002;默认格式为Long.toString(),但是默认格式下,还是可以当作数字使用
  • 引用名称(Reference Name):用于控制在其它元素中引用该值,形式:${reference_name}
  • 与每用户独立的跟踪计数器(Track Counter Independently for each User):全局的计数器,如果不勾选,即全局的,比如用户#1 获取值为1,用户#2获取值还是为1;
  • 如果勾选,即独立的,则每个用户有自己的值:比如用户#1 获取值为1,用户#2获取值为2。、
  • 每次迭代复原计数器(Reset counter on each Thread Group Iteration):可选,仅勾选与每用户独立的跟踪计数器时可用Jmeter学习-建立测试环境_第7张图片

 Jmeter学习-建立测试环境_第8张图片

 

 

你可能感兴趣的:(jmeter,学习)