- 项目介绍和部署
- 项目背景
轻商城项目
是一个现在流行的电商项目。我们需要综合评估该项目中各个关键接口的性能,并给出优化建议,以满足项目上线后的性能需要。
- 项目功能架构
前台商城:购物车、订单、支付、优惠券等
后台管理系统:商品管理、会员管理、商场管理、推广管理等。
- 项目技术架构
前端:
Vue技术框架开发
,支持微信小程序、手机移动端、web界面
后端:SpringBoot框架开发
,MySQL做数据库
无论是前端代码,还是后端代码,都是存放在服务器
上。
- 前后端分离的项目
- 前后端不分离的项目
对比两种方式:
- 前后端分离的形式,
数据传输的效率要高很多
(JSON数据格式远小于HTML页面格式)- 前后端分离的形式,服务器不需要处理HTML页面逻辑,由
浏览器自己完成
,减轻服务器的压力
- 在
实际项目
中,主要是使用前端后分离
的形式。
- 数据库设计
作用:
- 构造测试时,监控数据库的性能指标,定位bug
- 构造测试数据。
-
微商场项目的部署过程
-
项目搭建步骤
- 获取需求
客户方提出:
- 能够提出明确需求的一般是金融、银行、电信、医疗等企业,他们一般对系统的性能要求高,并且对性能也非常了解。
根据
历史运营数据分析
,如:
用户频繁使用的功能模块是哪些
每月、每周、每天的峰值业务量是多少
竞品分析:
- 对比
同类型软件
的性能指标结果
- 提取性能测试点
业务维度提取:
用户频繁使用的业务性能
非常关键的业务功能
特殊交易日或峰值交易的业务功能
核心业务发生重大调整的业务功能
技术维度提取:
- 资源占用非常高的业务功能
- 确定性能测试目标
轻商城作为一个新开发的项目,性能测试目标包括:
- 确定核心业务功能的TPS (
单接口
)- 对业务流程(
多接口组合
)进行压测- 系统能在实际系统运行压力的情况下,
稳定的运行24小时
- 性能测试计划及方案
- 测试计划的核心内容:
测试计划的核心内容:
测试背景
测试目的
- 确定核心业务功能的TPS
- 对业务流程(多接口组合)进行压测
- 系统能在实际系统运行压力的情况下,稳定的运行24小时
测试范围
测试策略
基准测试:先做基准测试,确定估算的标准
负载测试:分别模拟5、10、30、50、100个用户对系统进行负载测试
查看不同并发时系统软件各项指标是否符合需求。
稳定性测试:用200用户对系统进行7*24小时的不间断稳定性测试。
风险控制
交付清单
速度与分工
- 性能测试计划:
性能测试计划
- 测什么
- 测试目的、测试范围
- 谁来测
- 测试的人工、进度、安排
- 怎么测
- 使用什么方法来进行
- 性能测试用例设计
性能测试用例设计
测试用例模板:
根据测试点逐条进行细化:
- 从
接口维度
来描述测试步骤- 性能测试数据,有明确要求,需要
达到一定的业务量
- 如果
两个接口强绑定
(结算、下订单),放在一个用例中间测试
- 编写测试脚本
编写测试脚本
常用测试元件:
1.取样器-HTTP请求2.配置元件-HTTP请求默认值
3.配置元件-用户定义的变量
4.后置处理器-JSON提取器
5.断言-响应数据
6.断言-JSON数据
7.监听器-查看结果树
8.监听器-聚合报告
Jmeter脚本的基本结构:
1.创建测试用例结构
2.设置HTTP请求默认值
3.用户定义的变量
4.添加监听器-查看结果树
5.添加监听器-聚合报告
编写脚本的要点:
单接口测试脚本:
(1)登录脚本
- 添加HTTP请求默认值:设置HTTP请求中的默认部分(协议、域名、端口、编码格式)
- 添加HTTP信息头管理,设置HTTP请求的头域
- 添加线程组-登录
- 添加HTTP请求-登录,填写路径和请求参数
- 在HTTP请求下添加断言:
- 如果做
接口测试
,必须断言 响应中的业务数据
,可以加上状态码和描述信息
- 如果做
性能测试
,可以只添加状态码和描述信息
断言(2)进入首页、搜索商品、获取商品详情
进入首页:
- 请求:
- 断言:响应状态码、errmsg
搜索商品:
- 请求:
- 断言:
- 响应状态码、errmsg
- 如果是
接口测试脚本
,必须针对响应中的商品数量进行断言
(数据库)获取商品详情
- 请求:
- 断言:
- 状态码、errmsg
- 如果是
接口测试
脚本,需要针对响应中的商品的详细数据进行对比
(数据库)(3)加入购物车的脚本
- 添加请求1:登录
- 添加JSON提取器,提取token
将token设置在HTTP信息头管理器中
- 添加请求2:加入购物车
- 添加断言
- 状态码,errmsg
- 如果是
接口测试脚本
,需要再查询我的购物车
,检查我的购物车返回的数据是否与加入购物车 返回的数据一致。(4)查看我的购物车、结算下订单、查看我的订单
查看我的购物车:
- 先发送登录请求,提取token信息,添加查看购物车请求,将token信息赋值为X-Litemall-Token头域,填写请求路径和参数
- 响应:
- 状态码,errmsg
- 如果是接口测试脚本,需要断言响应报文中的购物车中的商品总数量或者商品总价值
提交订单:
请求:
- (1)先发送登录请求,提取token信息,
- (2)添加结算请求,将token信息为X-Litemall-Token头域,填写请求路径和参数
- (3)添加下订单请求,将token信息为X-Litemall-Token头域,填写请求路径和参数(注意地址ID必须与用户ID匹配)
响应:
- 状态码,errmsg
- 如果是接口测试脚本,需要断言响应报文中的订单数据,与数据库中订单表中的订单数量一致。
业务流程的测试脚本:
- 将业务流程中的所有单接口的脚本组装在一起
- 注意所有的脚本组装在一起时,数据是否一致
- 搭建测试环境
搭建测试环境
性能测试环境的特点:
独占性
- 尽量保持性能测试环境与真实生产环境的
一致性。
- 硬件环境
- 包括服务器环境、网络环境等。
- 软件环境
- 版本一致性:包括操作系统、数据库、被测应用程序、第三方软件等。
- 配置一致性:包括操作系统、数据库、被测应用程序、第三方软件等。
- 使用场景的一致性
- 基础业务数据的的一致性
- 业务操作模式的一致性:尽量模拟真实场景下用户的使用情况。
构造性能测试数据:
目的:压测环境中的
数据量
尽量与生产环境中的数量一致
方法:为了快速创建大量数据,可以直接操作数据库进行添加。
- 准备插入数据的SQL语句
- 循环执行SQL语句来插入数据
- 导包
- 连接数据库
- 创建游标 执行SQL语句
- 将SQL语句中唯一的字段,使用占位符{}来替换,方便在脚本中传递不同的值。
- 编写脚本,循环执行sql语句插入对应的商品记录
- 关闭游标
- 关闭连接
- 练习1:通过编写python脚本,构造10万条商品记录
# 导包
import pymysql
#连接数据库
conn = pymysql.Connect(host="192.168.0.103", port=3306, user="root", password='123456', database='litemall', charset='utf8')
#创建游标
cursor =conn.cursor()
#执行SQL语句
# 插入商品表
sql1="INSERT INTO `litemall`.`litemall_goods` (`id`, `goods_sn`, `name`, `category_id`, `brand_id`, `gallery`, `keywords`, `brief`, `is_on_sale`, `sort_order`, `pic_url`, `share_url`, `is_new`, `is_hot`, `unit`, `counter_price`, `retail_price`, `detail`, `add_time`, `update_time`, `deleted`) VALUES ({}, '{}', '母亲节礼物-舒适安睡组合_{}', 1008008, 1001020, '[\"http://yanxuan.nosdn.127.net/355efbcc32981aa3b7869ca07ee47dac.jpg\", \"http://yanxuan.nosdn.127.net/43e283df216881037b70d8b34f8846d3.jpg\", \"http://yanxuan.nosdn.127.net/12e41d7e5dabaf9150a8bb45c41cf422.jpg\", \"http://yanxuan.nosdn.127.net/5c1d28e86ccb89980e6054a49571cdec.jpg\"]', '', '安心舒适是最好的礼物', 1, 1, 'http://yanxuan.nosdn.127.net/1f67b1970ee20fd572b7202da0ff705d.png', '', 1, 0, '件', 2618.00, 2598.00, '<p><img src=\"http://yanxuan.nosdn.127.net/3ddfe10db43f7df33ba82ae7570ada80.jpg\" _src=\"http://yanxuan.nosdn.127.net/3ddfe10db43f7df33ba82ae7570ada80.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/7682b7930b4776ce032f509c24a74a1e.jpg\" _src=\"http://yanxuan.nosdn.127.net/7682b7930b4776ce032f509c24a74a1e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e0bb6a50e27681925c5bb26bceb67ef4.jpg\" _src=\"http://yanxuan.nosdn.127.net/e0bb6a50e27681925c5bb26bceb67ef4.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/ba63b244c74ce06fda82bb6a29cc0f71.jpg\" _src=\"http://yanxuan.nosdn.127.net/ba63b244c74ce06fda82bb6a29cc0f71.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/3c7808c3a4769bad5af4974782f08654.jpg\" _src=\"http://yanxuan.nosdn.127.net/3c7808c3a4769bad5af4974782f08654.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/71798aaac23a91fdab4d77e1b980a4df.jpg\" _src=\"http://yanxuan.nosdn.127.net/71798aaac23a91fdab4d77e1b980a4df.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c88cbb2dd2310b732571f49050fe4059.jpg\" _src=\"http://yanxuan.nosdn.127.net/c88cbb2dd2310b732571f49050fe4059.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/5dfdcd654e0f3076f7c05dd9c19c15ea.jpg\" _src=\"http://yanxuan.nosdn.127.net/5dfdcd654e0f3076f7c05dd9c19c15ea.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/bd55d6ef7af69422d8d76af10ee70156.jpg\" _src=\"http://yanxuan.nosdn.127.net/bd55d6ef7af69422d8d76af10ee70156.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/bae571b22954c521b35e446d652edc1d.jpg\" _src=\"http://yanxuan.nosdn.127.net/bae571b22954c521b35e446d652edc1d.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e709c4d9e46d602a4d2125e47110f6ae.jpg\" _src=\"http://yanxuan.nosdn.127.net/e709c4d9e46d602a4d2125e47110f6ae.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/83e41915035c418db177af8b1eca385c.jpg\" _src=\"http://yanxuan.nosdn.127.net/83e41915035c418db177af8b1eca385c.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/f42c561e6935fe3e0e0873653da78670.jpg\" _src=\"http://yanxuan.nosdn.127.net/f42c561e6935fe3e0e0873653da78670.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/8317726fbae80b98764dc4c6233a913e.jpg\" _src=\"http://yanxuan.nosdn.127.net/8317726fbae80b98764dc4c6233a913e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/ba904b7c948b8015db2171435325270f.jpg\" _src=\"http://yanxuan.nosdn.127.net/ba904b7c948b8015db2171435325270f.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/4969c73d0d8f29bffb69529c96ca4889.jpg\" _src=\"http://yanxuan.nosdn.127.net/4969c73d0d8f29bffb69529c96ca4889.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/d80b9b8c5c31031d1cd5357e48748632.jpg\" _src=\"http://yanxuan.nosdn.127.net/d80b9b8c5c31031d1cd5357e48748632.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/3fe79bdae40662a7b1feed3179d3dd1f.jpg\" _src=\"http://yanxuan.nosdn.127.net/3fe79bdae40662a7b1feed3179d3dd1f.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/79eef059963b12479f65e782d1dca128.jpg\" _src=\"http://yanxuan.nosdn.127.net/79eef059963b12479f65e782d1dca128.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e5a8f64f4297ccc01b41df98b0f252c8.jpg\" _src=\"http://yanxuan.nosdn.127.net/e5a8f64f4297ccc01b41df98b0f252c8.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/a940b9e9525c4861407e4c3b07b02977.jpg\" _src=\"http://yanxuan.nosdn.127.net/a940b9e9525c4861407e4c3b07b02977.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/224b8b81cbe12e4ad060a50f1e26601a.jpg\" _src=\"http://yanxuan.nosdn.127.net/224b8b81cbe12e4ad060a50f1e26601a.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/85e151647452fad718effb7b1adc18e2.jpg\" _src=\"http://yanxuan.nosdn.127.net/85e151647452fad718effb7b1adc18e2.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/d47444ff3bb9dc0aa4ab1f9b84d83768.jpg\" _src=\"http://yanxuan.nosdn.127.net/d47444ff3bb9dc0aa4ab1f9b84d83768.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/136262743f0c849cc0c55c8e7963dd7e.jpg\" _src=\"http://yanxuan.nosdn.127.net/136262743f0c849cc0c55c8e7963dd7e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/331a97cbaff5b25a3b08ed7cdfe29df9.jpg\" _src=\"http://yanxuan.nosdn.127.net/331a97cbaff5b25a3b08ed7cdfe29df9.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/89b450aa0a8afe1db566dcad926f1fe8.jpg\" _src=\"http://yanxuan.nosdn.127.net/89b450aa0a8afe1db566dcad926f1fe8.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c1cf94f13b7280a97e751cebe573fa78.jpg\" _src=\"http://yanxuan.nosdn.127.net/c1cf94f13b7280a97e751cebe573fa78.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/1822c23def83b77e7607c24237eeec74.jpg\" _src=\"http://yanxuan.nosdn.127.net/1822c23def83b77e7607c24237eeec74.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/2af234312b3914d6d0bc316f92134614.jpg\" _src=\"http://yanxuan.nosdn.127.net/2af234312b3914d6d0bc316f92134614.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c4f8ab2b3813275d954a8bedcf902d26.jpg\" _src=\"http://yanxuan.nosdn.127.net/c4f8ab2b3813275d954a8bedcf902d26.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/42f18842ff0c92ed849c4401ae47bb61.jpg\" _src=\"http://yanxuan.nosdn.127.net/42f18842ff0c92ed849c4401ae47bb61.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/a8ea64a35799e50ab31ecb65345fe8f4.jpg\" _src=\"http://yanxuan.nosdn.127.net/a8ea64a35799e50ab31ecb65345fe8f4.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/18759fa90cd153bdd744280807c3c155.jpg\" _src=\"http://yanxuan.nosdn.127.net/18759fa90cd153bdd744280807c3c155.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/431f00d068a8e747959deb3b7bdd495a.jpg\" _src=\"http://yanxuan.nosdn.127.net/431f00d068a8e747959deb3b7bdd495a.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/5bd3b44f1f4c627bfa39f7809e866ec6.jpg\" _src=\"http://yanxuan.nosdn.127.net/5bd3b44f1f4c627bfa39f7809e866ec6.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/7fc36778fe2f6129b9c26e8298c5be7e.jpg\" _src=\"http://yanxuan.nosdn.127.net/7fc36778fe2f6129b9c26e8298c5be7e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c568432e3d5ab6786cd9dcae8008891b.jpg\" _src=\"http://yanxuan.nosdn.127.net/c568432e3d5ab6786cd9dcae8008891b.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/ec82ff5aecafa48807117da68cce2ce9.jpg\" _src=\"http://yanxuan.nosdn.127.net/ec82ff5aecafa48807117da68cce2ce9.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/b8eccbed570da595e6f8a71ed4abc42c.jpg\" _src=\"http://yanxuan.nosdn.127.net/b8eccbed570da595e6f8a71ed4abc42c.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/9cae1fed6ecefcd61435fe6e2c700fd6.jpg\" _src=\"http://yanxuan.nosdn.127.net/9cae1fed6ecefcd61435fe6e2c700fd6.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e306a418f82777399f5e88b93cca22db.jpg\" _src=\"http://yanxuan.nosdn.127.net/e306a418f82777399f5e88b93cca22db.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/a66d717084e23864ce079f936557709f.jpg\" _src=\"http://yanxuan.nosdn.127.net/a66d717084e23864ce079f936557709f.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/6ae06c6505cdbf87a0210fe3b8727d5f.jpg\" _src=\"http://yanxuan.nosdn.127.net/6ae06c6505cdbf87a0210fe3b8727d5f.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/58ac2086725b0ba2fe800195f274a0b4.jpg\" _src=\"http://yanxuan.nosdn.127.net/58ac2086725b0ba2fe800195f274a0b4.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/5e2e9d9eb099647fbe041ec6645ac034.jpg\" _src=\"http://yanxuan.nosdn.127.net/5e2e9d9eb099647fbe041ec6645ac034.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/8154357c0fab82bd4e67cda9aaa128c0.jpg\" _src=\"http://yanxuan.nosdn.127.net/8154357c0fab82bd4e67cda9aaa128c0.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/4325763b738ec3183ecf0d82b2b28e32.jpg\" _src=\"http://yanxuan.nosdn.127.net/4325763b738ec3183ecf0d82b2b28e32.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/06d8ea9d10035a00f26c5c52cc601ca7.jpg\" _src=\"http://yanxuan.nosdn.127.net/06d8ea9d10035a00f26c5c52cc601ca7.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/499f30b9e69b5dddf3db36f105756111.jpg\" _src=\"http://yanxuan.nosdn.127.net/499f30b9e69b5dddf3db36f105756111.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/ed7e1733d54e711a560edb3a76f1a60c.jpg\" _src=\"http://yanxuan.nosdn.127.net/ed7e1733d54e711a560edb3a76f1a60c.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/b6474347eebdb917d2e827fd526dd01c.jpg\" _src=\"http://yanxuan.nosdn.127.net/b6474347eebdb917d2e827fd526dd01c.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/b2c0691f9204c5ebc94b4ff678919ca7.jpg\" _src=\"http://yanxuan.nosdn.127.net/b2c0691f9204c5ebc94b4ff678919ca7.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/b4811e702a6884a9251d7cc9e3b06b6f.jpg\" _src=\"http://yanxuan.nosdn.127.net/b4811e702a6884a9251d7cc9e3b06b6f.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/d518783c054695acf329e81d597fdec3.jpg\" _src=\"http://yanxuan.nosdn.127.net/d518783c054695acf329e81d597fdec3.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/835ce09e785cca635c176008975053a1.jpg\" _src=\"http://yanxuan.nosdn.127.net/835ce09e785cca635c176008975053a1.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/769af780de81a302c0a3b03ed8e6c528.jpg\" _src=\"http://yanxuan.nosdn.127.net/769af780de81a302c0a3b03ed8e6c528.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/da34f99daf9141f0fe56a766461b8485.jpg\" _src=\"http://yanxuan.nosdn.127.net/da34f99daf9141f0fe56a766461b8485.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/d7c9cd8722a2f9a78e158ce02ec5d4f2.jpg\" _src=\"http://yanxuan.nosdn.127.net/d7c9cd8722a2f9a78e158ce02ec5d4f2.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/09ea18953884b15227819e326103462b.jpg\" _src=\"http://yanxuan.nosdn.127.net/09ea18953884b15227819e326103462b.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/5ef728213983842edf1aec27b2c1f5b6.jpg\" _src=\"http://yanxuan.nosdn.127.net/5ef728213983842edf1aec27b2c1f5b6.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/95409f2a884dcfeaabfe5e61fcf9ec37.jpg\" _src=\"http://yanxuan.nosdn.127.net/95409f2a884dcfeaabfe5e61fcf9ec37.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/6807836dc2a940ba56ea10c7a63b14c9.jpg\" _src=\"http://yanxuan.nosdn.127.net/6807836dc2a940ba56ea10c7a63b14c9.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e1d976d06853e7a0e6c9cc4ab484ac8a.jpg\" _src=\"http://yanxuan.nosdn.127.net/e1d976d06853e7a0e6c9cc4ab484ac8a.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/47f5673dec5005092f6d897d6335966c.jpg\" _src=\"http://yanxuan.nosdn.127.net/47f5673dec5005092f6d897d6335966c.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/1b0109abd0e6a0d13fa2423a96c1167e.jpg\" _src=\"http://yanxuan.nosdn.127.net/1b0109abd0e6a0d13fa2423a96c1167e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/916111a8f94cc0bd39375b3dcac14e35.jpg\" _src=\"http://yanxuan.nosdn.127.net/916111a8f94cc0bd39375b3dcac14e35.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c1360df3d6b703c5df9b2f47a2a3d12e.jpg\" _src=\"http://yanxuan.nosdn.127.net/c1360df3d6b703c5df9b2f47a2a3d12e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/1d5a31eb93ef873a165993bd99f29df1.jpg\" _src=\"http://yanxuan.nosdn.127.net/1d5a31eb93ef873a165993bd99f29df1.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/997a48948b89dd7261ed5a59ba884f45.jpg\" _src=\"http://yanxuan.nosdn.127.net/997a48948b89dd7261ed5a59ba884f45.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/eb96d9689735c9f4019ebf76da43b2b2.jpg\" _src=\"http://yanxuan.nosdn.127.net/eb96d9689735c9f4019ebf76da43b2b2.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/a92cf2172e6cafe080e4511205568d79.jpg\" _src=\"http://yanxuan.nosdn.127.net/a92cf2172e6cafe080e4511205568d79.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c9e94570428f197292bb3f43609963f5.jpg\" _src=\"http://yanxuan.nosdn.127.net/c9e94570428f197292bb3f43609963f5.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/37145f06cce747311692ad7f276645db.jpg\" _src=\"http://yanxuan.nosdn.127.net/37145f06cce747311692ad7f276645db.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c9a698b71ed911364fc6f243006c241c.jpg\" _src=\"http://yanxuan.nosdn.127.net/c9a698b71ed911364fc6f243006c241c.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e89db969711efaa441c43d6b90498a0c.jpg\" _src=\"http://yanxuan.nosdn.127.net/e89db969711efaa441c43d6b90498a0c.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/3803bb1a18229562f18943512b1d3524.jpg\" _src=\"http://yanxuan.nosdn.127.net/3803bb1a18229562f18943512b1d3524.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/235cbb5be905ac2b87e7e8f7c8d90144.jpg\" _src=\"http://yanxuan.nosdn.127.net/235cbb5be905ac2b87e7e8f7c8d90144.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/3e38435b3fdbae4ee80b83995592901e.jpg\" _src=\"http://yanxuan.nosdn.127.net/3e38435b3fdbae4ee80b83995592901e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/8ceb7cd3231585da60a74dd2c1aa9015.jpg\" _src=\"http://yanxuan.nosdn.127.net/8ceb7cd3231585da60a74dd2c1aa9015.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e151e225c2e30aab7ccf086094381577.jpg\" _src=\"http://yanxuan.nosdn.127.net/e151e225c2e30aab7ccf086094381577.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/363c19306953daf10968f4aa86617997.jpg\" _src=\"http://yanxuan.nosdn.127.net/363c19306953daf10968f4aa86617997.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/4237a392cf2e69b110ad4ecf35e44059.jpg\" _src=\"http://yanxuan.nosdn.127.net/4237a392cf2e69b110ad4ecf35e44059.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/da8ab35ada2dfe55006db01efa96e51a.jpg\" _src=\"http://yanxuan.nosdn.127.net/da8ab35ada2dfe55006db01efa96e51a.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/aa1d4fd00b7879db3f1051dc6d16aa87.jpg\" _src=\"http://yanxuan.nosdn.127.net/aa1d4fd00b7879db3f1051dc6d16aa87.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/302a8f2d997ff22bedcd837672cdafc2.jpg\" _src=\"http://yanxuan.nosdn.127.net/302a8f2d997ff22bedcd837672cdafc2.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/a39ff68c00522aef0472402958a334d2.jpg\" _src=\"http://yanxuan.nosdn.127.net/a39ff68c00522aef0472402958a334d2.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/86ccd0eb677c8b552398869d11a8917e.jpg\" _src=\"http://yanxuan.nosdn.127.net/86ccd0eb677c8b552398869d11a8917e.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/a6d0ede352da947060d912d903646a5d.jpg\" _src=\"http://yanxuan.nosdn.127.net/a6d0ede352da947060d912d903646a5d.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e6a118bf95bdb61891409d25f193e9c4.jpg\" _src=\"http://yanxuan.nosdn.127.net/e6a118bf95bdb61891409d25f193e9c4.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c214066e9bf65d60bcebd691b5b1cbc1.jpg\" _src=\"http://yanxuan.nosdn.127.net/c214066e9bf65d60bcebd691b5b1cbc1.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/c301559ba3ee280bcbf2fc4269bfa9ca.jpg\" _src=\"http://yanxuan.nosdn.127.net/c301559ba3ee280bcbf2fc4269bfa9ca.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/573748f5c12ecb4515ba00a7b6e981dc.jpg\" _src=\"http://yanxuan.nosdn.127.net/573748f5c12ecb4515ba00a7b6e981dc.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/27bcc8bf512a7e6f994a9683b3deea82.jpg\" _src=\"http://yanxuan.nosdn.127.net/27bcc8bf512a7e6f994a9683b3deea82.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/e22a4507fd1e4b5ef859035e857ae419.jpg\" _src=\"http://yanxuan.nosdn.127.net/e22a4507fd1e4b5ef859035e857ae419.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/27b07b4ca709c33ad71b368f87781307.jpg\" _src=\"http://yanxuan.nosdn.127.net/27b07b4ca709c33ad71b368f87781307.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/ef31eb48bcb133728bffda7e1239b592.jpg\" _src=\"http://yanxuan.nosdn.127.net/ef31eb48bcb133728bffda7e1239b592.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/5f49aaaca59c0733ec92f100d01bc0af.jpg\" _src=\"http://yanxuan.nosdn.127.net/5f49aaaca59c0733ec92f100d01bc0af.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/818889261deb75044e1018ec53485d85.jpg\" _src=\"http://yanxuan.nosdn.127.net/818889261deb75044e1018ec53485d85.jpg\" style=\"\"/></p><p><img src=\"http://yanxuan.nosdn.127.net/200369f023243e2faeb18a2a0a352ef1.jpg\" _src=\"http://yanxuan.nosdn.127.net/200369f023243e2faeb18a2a0a352ef1.jpg\" style=\"\"/></p><p><br/></p>', '2018-02-01 00:00:00', '2018-02-01 00:00:00', 0);"
#商品参数表
sql2="INSERT INTO `litemall`.`litemall_goods_attribute` (`id`, `goods_id`, `attribute`, `value`, `add_time`, `update_time`, `deleted`) VALUES ({}, {}, '重要提醒', '活动时间:5月8日0点-5月14日24点。\n请在以上时间段内购买,其余时间均不可享受组合装优惠。', '2018-02-01 00:00:00', '2018-02-01 00:00:00', 0);"
#商品货品表
sql3="INSERT INTO `litemall`.`litemall_goods_product` (`id`, `goods_id`, `specifications`, `price`, `number`, `url`, `add_time`, `update_time`, `deleted`) VALUES ({}, {}, '[\"1.5m床垫*1+枕头*2\",\"玛瑙红\"]', 1500.00, 195, 'quality=90&thumbnail=200x200&imageView', '2018-02-01 00:00:00', '2024-06-13 08:51:33', 0);"
#商品规格表
sql4="INSERT INTO `litemall`.`litemall_goods_specification` (`id`, `goods_id`, `specification`, `value`, `pic_url`, `add_time`, `update_time`, `deleted`) VALUES ({}, {}, '规格', '1.8m床垫*1+枕头*2', '', '2018-02-01 00:00:00', '2018-02-01 00:00:00', 0);"
goods_start=100000
for i in range(100000):
goods_id=goods_start+i
print("插入第{}条商品数据,商品ID为{}".format(i+1,goods_id))
cursor.execute(sql1.format(goods_id,goods_id,goods_id))
cursor.execute(sql2.format(goods_id,goods_id))
cursor.execute(sql3.format(goods_id,goods_id))
cursor.execute(sql4.format(goods_id,goods_id))
conn.commit()
#关闭游标
cursor.close()
#关闭连接
conn.close()
-
执行测试脚本
执行测试脚本
-
性能测试脚本执行
登录脚本
登录脚本
1、准备数据
# 1、导包
import pymysql
# 2、创建连接
conn = pymysql.connect(host="192.168.0.103", port=3306, user="root", password="123456", database="litemall", charset="utf8")
# 3、创建游标
cursor = conn.cursor()
# 4、执行sql语句
sql1 = ("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 ({}, 'user{}', '$2a$10$lTu9qi0hr19OC800Db.eludFr0AXuJUSrMHi/iPYhKRlPFeqJxlye', 1, NULL, '2024-06-13 08:34:17', '192.168.234.1', 0, 'user{}', '{}', '', '', '', 0, '2019-04-20 22:17:43', '2024-06-13 08:34:17', 0);")
sql2 = ("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 ({}, 'user{}', {}, '北京市', '市辖区', '东城区', 'changyangqu', '110101', '', '{}', 0, '2024-06-11 22:29:21', '2024-06-12 22:20:09', 0);")
user_start = 100000
for i in range(100000):
user_id = user_start + i
print("插入第{}条用户数量,用户ID为{}".format(i+1, user_id))
mobile = "13011"+str(user_id)
addr_id = user_start+i
cursor.execute(sql1.format(user_id, user_id, user_id, mobile))
cursor.execute(sql2.format(user_id, user_id, user_id, mobile))
conn.commit()
# 5、关闭游标
cursor.close()
# 5、关闭连接
conn.close()
2、修改脚本
使用random函数,来保证
每次运行登录
时,使用不同的用户名进行登录
3、监控性能指标
监控性能指标
系统指标
:响应时间、吞吐量、错误率、并发数
- 聚合报告
资源指标
:CPU、内存、磁盘、网络
- PerfMon
4、模拟并发
模拟并发
如果系统之前
进行
过性能测试,直接模拟TPS20
的场景,进行性能测试,并监控指标如果系统之前
未进行
过性能测试,安装负载测试的原则,逐步增加负载量
,观察性能的指标—采用该方法。执行
- 模拟5个用户并发,观察吞吐量TPS和响应时间
- 结果分析:
- 用例要求登录TPS为20,要求响应时间不超过3s
- 实际执行登录TPS为20.3(达到要求),实际执行的响应时间为244ms(达到要求),因此用例通过。
补充:
- 当前用例测试时CPU利用率为98%,内存利用率为85.62%,超出正常的范围
- 如果在公司进行性能测试时,该用例不能算通过,因为资源使用率也是一个重要指标
- 在课上由于虚拟机资源不足,暂时不关注资源使用率
(814032/995684)*100%=81.75%,由此可以看到虚拟机在什么都不干的情况下也被占用了81.75%的内存
进入首页脚本:
进入首页脚本
模拟5个并发:
- 实际TPS未达到要求TPS100,实际响应时间(1)未超过要求实际5s,无法证明是否存在BUG,需要进一步增加负载量。
模拟30个用户并发:
实际TPS未达到要求TPS100,实际响应时间(10s)未超过要求实际5s,说明用例测试不通过,需 要提交bug
添加购物车-查看购物车-商品结算-下订单-查看订单脚本;
加入购物车脚本:
1、数据准备工作:
(1)修改待添加的商品库存为足够大,避免在性能测试过程中把商品库存耗尽导致脚本失败
update litemall_goods_product set number='1000000000' where id=2;
2、脚本修改:
(1)可以使用随机用户登录,并添加购物车吗?
如果单独的一个接口可以用随机数random
;但是如果要和其他的接口配合就使用计数器
。
3、运行并分析结果模拟5个用户并发:
- 实际TPS41.9达到要求TPS20,实际响应时间59ms未超过要求响应时间3S,用例测试通过
结算并下订单脚本:
结算并下订单脚本
修改测试脚本:
- 设置计数器
- 修改HTTP请求登录:
- 修改HTTP请求下订单:
执行测试脚本:
模拟5个用户并发
实际TPS为29.5达到要求TPS10,实际响应时间为19ms(不超过要求3s),用例测试通过
业务流程的测试:
业务流程的测试
步骤:
- 准备测试数据
- 修改脚本
- 添加
事务控制器
,并把所有的脚本放入到事务控制器中
注意:
- 在进行
业务流程的脚本性能测试时
,前提
必须保证该业务流程中所有的单接口性能测试结果都达标
稳定性测试:
稳定性测试:
- 稳定性用例设计:
- 确定出稳定运行的所有业务操作:(同时运行)
- 根据运营数据,分析出每个业务操作对应的虚拟用户数
稳定性测试执行:
- 所有的脚本
同时执行
(解除前后依赖)- 每个脚本都是一个事务/业务—
事务控制器
- 按照要求设置
虚拟用户数和运行时间
- 执行
稳定性测试
并监控
补充:
- 如果单个接口/业务流程还存在性能bug,需要再修复性能bug,再进行稳定性测试