【性能测试】轻商城-项目实战3

目录

相关内容

昨日回顾

今日目标

linux重启后检查项

进入首页脚本

添加购物车—查看购物车—商品结算—下订单—查看订单脚本

加入购物车脚本

结算并下订单脚本

业务流程的测试:

稳定性测试:

性能测试监控

性能测试监控关键指标

系统指标

硬件服务器资源指标

内存和虚拟内存:

磁盘IO

网络

JAVA应用

数据库监控


相关内容

【性能测试】轻商城-项目实战1_小慌慌的博客-CSDN博客目录实战学习整体计划项目介绍和部署微商城功能介绍微商城项目的技术介绍微商城项目技术架构熟悉数据库设计微商城项目的部署过程性能测试需求分析性能需求的获取性能测试点的提取规则轻商城性能测试点的提取性能测试计划性能测试用例编写性能测试脚本编写更多性能测试学习,请查看我其他文章,谢谢~​​​​​​​实战学习整体计划项目介绍和部署微商城功能介绍功能架构前台:首页、商品详情、加入购物车、订单、支付、团...https://blog.csdn.net/whowhowhoisimportant/article/details/123565826

【性能测试】轻商城-项目实战2_小慌慌的博客-CSDN博客目录昨日回顾今日目标1、性能测试脚本编写2、性能测试环境准备(1)特点(2)如何达成性能测试环境与生产环境一致(3)测试数据的准备(插入10万条数据)3、执行测试脚本(1)执行测试脚本的测试机:(2)性能测试脚本执行(3)进入首页脚本昨日回顾【性能测试】轻商城-项目实战1_小慌慌的博客-CSDN博客目录实战学习整体计划项目介绍和部署微商城功能介绍微商城项目的技术介绍微商城项目技术架构熟悉数据库设计微商城项目的部署过程性能测试需求分析性能需求的获取性能.https://blog.csdn.net/whowhowhoisimportant/article/details/123648111

昨日回顾

昨日回顾:

(1)性能脚本的编写

  • 通常一个用例是一个脚本,也就是一个线程组
    • 如果用例是单接口,那么一个线程组中只有一个HTTP请求
    • 如果用例是接口组合(业务流程)的用例,那么一个线程组中就包含多个HTTP请求
  • 技巧:
    • HTTP消息头管理器:修改HTTP请求的请求头信息 
    • HTTP请求默认值:统一设置HTTP请求的协议、域名、端口、编码;方便后续修改
    • 用户定义的变量:在脚本公用的数据可以定义在变量中,方便后续修改
    • 每个线程组及HTTP请求建议修改为用例名称,方便后续查看结果
    • 编写的测试脚本,需要添加断言,并且调试通过
    • 像登录及后续操作时,需要注意在后续请求中关联token,记录登录状态

(2)性能测试环境的准备

  • 性能测试环境的特点:
    • 独立使用
    • 与用户环境(生产环境)一致
      • 硬件环境一致(硬件设备数量、硬件配置、网络等) —— 运维人员
      • 软件环境一致(软件版本、软件配置- 操作系统/数据库/代码/第三方软件) —— 开发人 员
      • 业务使用场景一致(数据量一致、业务操作模型一致) —— 测试人员
  • 构造性能测试数据
    • 要求:构造与用户环境数据库中相同数量级别的数量
    • 方法:通过python编写自动化测试脚本,在脚本中循环执行insert SQL语句

(3)性能脚本的执行

  • 登录脚本 —— 性能测试执行
    • 需要构造大量的用户数据
    • 调整登录脚本,将用户名修改为函数的方法,动态变化用户名 test${__Random(100000,200000,)
    • 需要配置Jmeter PerForm监控,在服务器上启动startAgent进程,监控服务器资源
    • 分别模拟5/10/30/50用户来进行性能测试,并收集对应的性能指标

今日目标

对性能测试的监控关键指标有一定的了解

linux重启后检查项

由于linux操作系统的IP发生了变化,需要修改IP(查看Linux的新IP地址)

  • 在执行性能项目启动命令,修改命令中的IP 修改本地hosts文件中的IP为更新后的IP 
  • 在连接linux系统时,需要使用新的IP进行连接
  • 在Jmeter的PerForm监控插件中,需要修改监控的服务器的IP

进入首页脚本

1、模拟5个用户进行并发测试,监控性能指标 当前测试结果并发TPS为2.1(要求TPS100),响应时间为3.4s(小于5s);TPS未达到需求达到,同时响应时间也还在正常范围内,无法说明是否满足需求/是否有问题;因此需要进一步增加负载测试

2、分别测试10/30用户的并发执行,监控服务器性能指标: 

10个用户并发时响应时间为4s,吞吐量为TPS2.3

30个用户并发时响应时间为12ms,吞吐量为TPS2.4 

说明服务器当前进入首页操作的TPS最高只有2.4,无法达到100TPS的要求,因此存在性能问题

添加购物车—查看购物车—商品结算—下订单—查看订单脚本

 准备工作: 

1、5个用户、10个用户。。。。,用相同/不同的账号密码来登录? 不同的账号密码来进行登录。原因:

  • 模拟真实场景,使用不同的用户登录
  • 如果用同一账户,所有的商品都会加入到同一个账号下面

2、与前面登录脚本一样,使用随机用户名进行登录,并加入购物车?例如:前缀test + random(100000,200000)

建议将所有的用户进行顺序登录,把商品加入到对应的用户中;

目的是:在后面商品结算并下订单的性能测试时,可以直接使用加入购物车的数据,而不需要再手动在 每个用户的购物车中构造商品数据

备注:如果决定在结算下订单脚本执行时,手动构造商品数据;那么在加入购物车的脚本使用顺序/随 机的用户登录方式都可行

3、修改指定商品的库存量,库存量改大(保证在性能测试的过程中不能库存耗尽)

UPDATE litemall_goods_product SET number = '100000000' where goods_id =
'1181000' and id = '2'

 

加入购物车脚本

1、修改脚本,保证大量用户并发时,使用不同的用户(按照ID顺序)进行登录 方法:

  • 在HTTP请求(登录)下添加一个计数器,并设置开始/结束/递增/变量等参数 

  • 在HTTP请求中的用户名部分应用计数器中的参数组合成用户名:test${num}

2、模拟5个用户并发,监控性能测试指标 当前并发TPS为13.7,未达到TPS为20的要求,因此不能说明满足需求 当前事务响应时间为91ms,小于需求要求的3s,因此也不能说明有问题 所以还需要增加负载进行进一步的测试

 

3、模拟10/30用户并发运行,监控性能指标

  • 当并发数为10时,响应时间为138ms,吞吐量TPS为15.7 
  • 当并发数为30时,响应时间为592ms,吞吐量TPS为15.1 
  • 说明当前系统最大的吞吐量TPS只能达到15.7左右,无法满足性能要求

 

结算并下订单脚本

1、准备工作:为每个用户创建对应的收货地址

#导包
import pymysql
#创建连接
conn = pymysql.connect(host="192.168.91.137",user="litemall",password="litemall123456", database="litemall",port=3306,charset='utf8')
#创建游标
cursor = conn.cursor()
#添加地址的SQL语句
addr_sql = "INSERT INTO `litemall`.`litemall_address` (`id`, `name`, `user_id`, `province`, `city`, `county`, `address_detail`, `area_code`, `postal_code`, `tel`, `is_default`, `add_time`, `update_time`, `deleted`) VALUES ('{}', '{}', '{}', '北京市', '市辖区', '西城区', '天通苑', '110102', '', '{}', '1', '2020-08-12 14:17:23', '2020-08-12 14:17:23', '0');"
#循环插入数据
user_start = 100000
for i in range(100000):

    addr_id = user_start + i
    user_id = user_start + i
    username = "test" + str(user_id)
    mobile = "13012" + str(user_id)

print("插入第{}条数据ID为{}".format(i+1,user_id))
sql = addr_sql.format(addr_id,username,user_id,mobile) cursor.execute(sql)

conn.commit() #关闭游标

cursor.close() #关闭连接 conn.close()

2、修改结算及下订单的脚本,将订单中的参数——地址ID修改为每个用户对应的地址ID 方法:

  • 在构造用户收货地址数据时,将地址ID设置为与用户ID完全一致
  • 在Jmeter脚本中,同用户ID一样,读取计数器中的参数对地址ID进行赋值

3、模拟5/10用户并发,监控性能测试指标

模拟10个用户并发时,结算和提交订单的请求TPS都能达到11,满足需求的要求TPS为10 同时响应时间小于需求需要的3秒,因此结算及下订单的接口满足性能要求(忽略系统资源指标)

 补充强调:

之前所有的脚本执行的分析,都是暂时忽略系统资源占用率高这个数据。

如果不忽略:(公司正常性能测试的情况下)

  • 第一次模拟5个用户时,无论TPS和响应时间能否满足要求,由于系统资源使用率超过要求,都必 须先提出问题并优化,再进行后续的性能测试(模拟10、30、50等)

业务流程的测试:

1、通常在所有的单接口性能指标都达到性能要求时,再进行业务流程的测试

  • 如果业务流程中涉及的接口有未达标,则先进行接口的问题定位和调优

2、根据业务流程的脚本需要,提前准备好测试数据(用户、商品、地址)和修改脚本(多用户登录购 买商品)

3、按照用例的要求分别模拟5/10/30/50/100用户并发请求,监控性能指标并分析结果

稳定性测试:

稳定性测试分析:

  • 模拟正常的业务负载(用户实际使用时系统的业务负载/模型),进行长时间的性能稳定性测试
  • 实际的业务模型获取方法:通过运营数据的统计来收集和分析

例如:模拟200个用户,通过运营数据统计,发现200用户在不同的业务操作的分布如下:

稳定性测试时,就需要针对不同的业务操作,分布模拟不同的用户数,进行长时间的稳定性测试(所有 的脚本并行执行)

稳定性测试执行:

1、需要在Jmeter中针对不同的线程组,按照之前分析的虚拟用户数的值进行配置

2、注意所有的线程组是否有前后依赖关系,稳定性测试时所有脚本并行执行,有依赖的脚本不能执行

3、对于购物流程而已,这个线程组中有多个请求,如果想作为同一个事务来进行统计(而不是每个请 求分别统计),则需要在线程组中添加事务控制器,并将所有请求放入到事务控制器中

4、所有的配置及脚本修改都完成后,点击启动,让所有脚本并行执行,监控性能指标

性能测试监控

性能测试监控关键指标

1、系统指标:与用户场景与需求直接相关的指标 

2、服务器资源指标:硬件服务器的资源使用情况的指标

3、JAVA应用 : JAVA应用程序在运行时的各项指标 

4、数据库:数据库服务器运行时需要监控的指标 

5、压测机资源指标:测试机在模拟用户负载时的资源使用情况

一般情况下,测试人员执行性能测试时,只需要关注1、2、5就可以,判断系统是否有性能问题 而开发人员要定位性能问题时,需要再次运行,并监控所有的性能指标,来进行分析并调优

系统指标

  • 可以直接用来衡量系统处理能力的指标是(吞吐量)
  • 在系统处于轻压力区(未饱和)时,并发用户数上升,平均响应时间(基本不变),系统吞吐量 (上升)
  • 在系统处于重压力区(基本饱和)时,并发用户数上升,平均响应时间(上升),系统吞吐量(基 本不变)
  • 在系统处于崩溃区(压力过载)时,并发用户数上升,平均响应时间(上升),系统吞吐量(下 降)

硬件服务器资源指标

  • 硬件的组成

 

  • CPU时间的介绍

  • CPU占用分类

内存和虚拟内存:

  • 1、正常情况下,程序加载到内存中来执行 
  • 2、当内存不够时,会加载部分立即要执行的程序到内存中,其他的程序部分放在磁盘中(虚拟内存)
  • 3、当立即要执行的程序执行完成后,从虚拟内存中读取其他的数据内容到实际内存中,再执行程序的 处理
  • 4、依次循环第3步,完成程序的运行 

卡的原因的就是:每次都需要从虚拟内存(磁盘)中读取数据进行执行,磁盘的读取速度相对CPU和内存而言非常,因此感觉内存不足程序很卡

闪退的原因就是:在第2步中,需要加载部分立即要执行的程序到内存中,如果当前的内存空间不满足 最低要求(立即要执行的程序所需要的内存)时,就会出现闪退

磁盘IO

 

网络

监控实际的网络流量,与网络带宽做对比,如果实际网络流量与网络带宽接近,则说明网络存在瓶颈, 需要优化。

百兆带宽:100Mbyte/s 

实际技术中衡量的宽带的单位:KB/s,因此需要换算:100/8 = 12.5MKB/s

JAVA应用

1、java虚拟机:
JVM(JAVA Virtual Machine): 虚拟出来的空间,专门供JAVA程序运行

 2、JAVA虚拟机内存:

堆区:需要重点关注的部分(动态变化)。

所有的对象在初始化会申请堆区的空间,如果申请的空间在使用结束没有及时的释放,那么这个空间就会被占用。—— 内存泄漏

因此在测试时,需要关注堆区的空间是否持续上升,没有下降

3、FULL GC机制:

数据库监控

1、慢查询: 2、缓存命中率: 3、数据池连接数 4、mysql锁

 

  • 1
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小慌慌

感谢博友的鼓励,快乐分享~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值