软件测试--性能测试实战篇

本文详述了轻商城项目从项目介绍、部署到性能测试的全过程,包括项目功能和技术架构,性能测试需求分析、测试计划、用例设计、脚本开发、测试环境搭建、监控与执行。通过模拟并发、监控关键性能指标,分析并优化了性能瓶颈,确保系统在高并发下稳定运行。
摘要由CSDN通过智能技术生成

软件测试--性能测试实战篇

项目介绍和部署

1. 轻商城项目介绍

1.1 背景

轻商城项目是一个现在流行的电商项目。我们需要综合评估该项目中各个关键接口的性能,并给出优化建议,以
满足项目上线后的性能需要。

1.2 简介

  • 轻商城是一个支持web和微信小程序的前后端分离架构的项目。
  • 前端使用VUE技术框架开发,即支持微信小程序,也支持手机移动端,还支持web页面。
  • 后端使用了SpringBoot框架进行开发,MySQL做数据库。
  • 目前还在开发完善阶段。

2. 项目功能架构

  • 前台商城:

    • 首页
    • 专题列表、专题详情
    • 分类列表、分类详情
    • 品牌列表、品牌详情
    • 新品首发、人气推荐
    • 优惠券列表、优惠券选择
    • 团购
    • 搜索
    • 商品详情、商品评价、商品分享
    • 购物车
    • 下单
    • 订单列表、订单详情、订单售后
    • 地址、收藏、足迹、意见反馈
    • 客服
      在这里插入图片描述
  • 后台管理系统:

    • 会员管理
    • 商城管理
    • 商品管理
    • 推广管理
    • 系统管理
    • 配置管理
    • 统计报表
      在这里插入图片描述

3. 项目技术架构

技术栈

  • 前端:VUE技术框架开发,支持微信小程序、手机移动端、web界面
  • 后端:SpringBoot框架开发,MySQL做数据库

技术架构图
在这里插入图片描述

4. 熟悉数据库设计

作用:

  • 性能测试时,监控数据库的性能指标,定位bug
  • 构造测试数据

在这里插入图片描述

5. 轻商城项目搭建

5.1 准备工作

  • 安装JDK
  • 安装MySQL
  • 安装Nginx
  • 安装node.js

5.2 项目搭建步骤

  1. 获取项目源代码
    • 包括前端代码和后端代码
    • 实际工作当中项目源代码由开发提供,项目所需要的配置文件、启动项目的顺序也由开发提供文档介绍
  2. 构建轻商城后端代码
    • 编译、打包
    • 打包成jar包或war包
  3. 构建前端代码
    • 使用node.js打包
    • 部署包中包含HTML、JS、CSS等文件
  4. 初始化MySQL数据库
    • 项目启动前需要先初始化数据库
    • 执行初始化数据库的sql文件
      source /usr/local/litemall/litemall-db/litemall.sql
  5. 启动轻商城后台管理系统的后端服务
    java -jar litemall-all.jar
  6. 部署轻商城前端服务
    • 可以使用Nginx服务器
  7. 通过浏览器访问启动的前端,测试项目是否能够正常运行
    在这里插入图片描述

性能测试需求分析

1. 性能测试需求分析

  • 性能测试需求分析与传统的功能测试需求有所不同
  • 功能测试需求分析:重点在于分析被测系统的功能是否满足产品功能需求规格(正向、逆向)
  • 性能测试需求分析:重点在于分析被测系统是否能满足特定的业务需求场景(时间、资源)
    • 需要从业务场景、程序代码、服务器、硬件配置等多个维度分析系统可能存在性能瓶颈

1.1 如何获取有效的需求

  1. 客户方提出
    • 能够提出明确需求的一般是金融、银行、电信、医疗等企业,他们一般对系统的性能要求高,并且对性能也非常了解
    • 提示:需要评估性能需求的合理性
  2. 根据历史数据分析
    • 通过分析历史运营数据收集用户信息,如:注册用户数、日活、月活,计算用户的增长速度
    • 每月、每周、每天的峰值业务量是多少
    • 用户频繁使用的功能模块是哪些
  3. 竞品分析:
    • 对比同类型软件的性能指标结果

2. 性能测试点的提取

2.1 性能测试点的提取规则

业务维度提取:

  • 用户频繁使用的业务功能
  • 非常关键的业务功能
  • 特殊交易日或峰值交易的业务功能
  • 核心业务发生重大调整的业务功能

技术维度提取:

  • 资源占用非常高的业务功能

2.2 轻商城性能测试点的提取

编号 功能模块 业务功能 功能描述 优先级
T01 登录 登录 用户通过用户名和密码登录
T02 首页 进入首页 获取商城首页数据
T03 商品 搜索商品 通过关键字搜索商品
T04 商品 查看商品详情 点击商品进入商品详情页面
T05 购物车 添加购物车 把商品加入购物车
T06 购物车 查看购物车 用户查看购物车内的商品
T07 订单 商品结算 对已选择的商品进行结算
T08 订单 提交订单 用户提交商品订单
T09 订单 查看我的订单 用户查看订单列表

3. 确定性能测试目标

轻商城作为一个新开发的项目,性能测试目标包括:

  1. 确定核心业务功能的TPS
  2. 对业务流程(多接口组合)进行压测
  3. 系统能在实际系统运行压力的情况下,稳定的运行24小时

期望的TPS和最大响应时间:

编号 功能模块 业务功能 TPS 响应时间
T01 登录 登录 20 3s
T02 首页 进入首页 100 5s
T03 商品 搜索商品 40 3s
T04 商品 查看商品详情 100 3s
T05 购物车 添加购物车 20 3s
T06 购物车 查看购物车 20 3s
T07 订单 商品结算 10 3s
T08 订单 提交订单 10 3s
T09 订单 查看我的订单 40 2s

性能测试计划

  • 测什么
    • 测试目的,测试范围
  • 谁来测
    • 测试的人工、进度、时间安排
  • 怎么测
    • 使用什么方法来进行

1. 测试背景

轻商城是公司新开发的一个电商项目,为了保证项目上线后能够稳定的运行,且在后期推广中能够承受用户的增长,需要对项目
进行性能测试。

2. 测试目的

对新电商项目进行性能测试的核心目的包括:

  • 确定核心业务功能的TPS
  • 对业务流程(多接口组合)进行压测
  • 系统能在实际系统运行压力的情况下,稳定的运行24小时

3. 测试范围

通过对性能测试需求的调研和分析,确定被测系统的测试范围如下

编号 功能模块 业务功能 功能描述 优先级
T01 登录 登录 用户通过用户名和密码登录
T02 首页 进入首页 获取商城首页数据
T03 商品 搜索商品 通过关键字搜索商品
T04 商品 查看商品详情 点击商品进入商品详情页面
T05 购物车 添加购物车 把商品加入购物车
T06 购物车 查看购物车 用户查看购物车内的商品
T07 订单 商品结算 对已选择的商品进行结算
T08 订单 提交订单 用户提交商品订单
T09 订单 查看我的订单 用户查看订单列表

4. 测试策略

4.1 基准测试

先做基准测试,确定估算的标准。

4.2 负载测试

  • 通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能够承受的最大负载量的测试。
  • 分别模拟5、10、30、50、100个用户对系统进行负载测试,查看不同并发时系统软件各项指标是否符合需求。

4.3 稳定性测试

  • 用200用户对系统进行7*24小时的不间断稳定性测试,查看服务器日志内有无异常和报错;系统软件各项指标中间有无异常波动;是否存在内存溢出之类的问题。
  • 验证系统长期运行的稳定性以及是否存在内存溢出之类的问题

5. 风险控制

风险类型 风险描述 风险级别 应对方案
环境风险 部署出现问题,联调进度缓慢 更换环境、增加资源配置
数据风险 构造测试数据时间较长 开发人员协助
交付风险 发现比较严重的Bug 延长测试时间,增加对应人员

6. 交付清单

性能测试计划、测试脚本、性能缺陷统计和性能测试报告等。

7. 进度与分工

在这里插入图片描述

测试用例设计

根据测试点逐条进行细化:

  • 性能测试数据,有明确要求,需要达到一定的业务量
  • 从接口维度来描述测试步骤
  • 如果两个接口强绑定(结算、下订单),放在一个用例中间测试

1. 编写性能测试用例

在这里插入图片描述

测试脚本开发

1. 测试脚本开发

使用JMeter编写测试脚本并调试

1.1 常用测试元件

  1. 取样器-HTTP请求
  2. 配置元件-HTTP请求默认值
  3. 配置元件-用户定义的变量
  4. 后置处理器-JSON提取器
  5. 断言-响应断言
  6. 断言-JSON断言
  7. 监听器-察看结果树
  8. 监听器-聚合报告

1.2 初始化工作

  1. 创建测试用例结构
  2. 设置HTTP请求默认值
  3. 用户定义的变量
  4. 添加监听器-察看结果树
  5. 添加监听器-聚合报告
    在这里插入图片描述

1.3 实现测试用例

根据编写的测试用例文档,使用JMeter实现测试用例

编写脚本的要点:

  • 单接口测试脚本:

(1)登录脚本

  • 添加HTTP请求默认值:设置HTTP请求中的默认部分(协议、域名、端口、编码格式)
    在这里插入图片描述
  • 添加HTTP信息头管理,设置HTTP请求的头域
    在这里插入图片描述
  • 添加线程组 - 登录
  • 添加HTTP请求 - 登录,填写路径和请求参数
  • 在HTTP请求下添加断言:
    • 如果做接口测试,必须断言 响应中的业务数据,可以加上 状态码和描述信息
    • 如果做性能测试,可以只 添加状态码和描述信息 断言

(2)进入首页、搜索商品、获取商品详情

  • 进入首页:
  1. 添加‘HTTP请求-获取首页数据’的请求
    在这里插入图片描述
  2. 添加‘响应断言-响应状态码’

在这里插入图片描述
3. 添加‘JSON断言-错误码’
在这里插入图片描述
4. 添加‘JSON断言-错误消息’
在这里插入图片描述

  • 搜索商品:
    1.请求:
    在这里插入图片描述
    2.断言:
    • 状态码、errmsg
    • 如果是接口测试脚本,必须针对响应中的商品数量进行断言(数据库)
  • 获取商品详情:
    1.请求:
    在这里插入图片描述
    2.断言:
    • 状态码、errmsg
    • 如果是接口测试脚本,需要针对响应
  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 目标场景和需求分析 在进行性能测试之前,需要明确测试的目标场景和需求,包括: - 测试的业务场景和流程 - 测试的并发用户数和请求量 - 系统的性能指标和要求 例如,假设要测试一个电商网站的性能,需要关注以下几个方面: - 用户登录 - 商品搜索 - 商品浏览和详情页 - 下单和支付 同时,需要考虑并发用户数和请求量,以及系统的性能指标和要求,例如: - 并发用户数:1000 - 请求量:每秒1000次 - 响应时间:平均在3秒以内,99%的请求在5秒以内完成 2. 准备测试环境 在进行性能测试之前,需要准备好测试环境,包括: - 测试服务器:部署被测试系统的服务器 - 压力机:用于模拟并发请求的机器 - 测试工具:例如JMeter,用于进行性能测试 在准备测试环境时,需要注意以下几个方面: - 测试服务器的配置应该与生产环境尽可能接近,包括硬件配置和软件版本等。 - 压力机的数量和配置应该根据测试需求和目标场景进行调整,确保能够模拟真实的并发请求。 - 测试工具的配置应该根据测试需求和目标场景进行调整,例如线程数、请求间隔、请求参数等。 3. 编写测试脚本 在JMeter中,可以通过录制脚本或手动编写脚本的方式进行性能测试。以下是手动编写脚本的步骤: - 添加线程组:在JMeter中,线程组用于模拟并发用户,需要设置线程数、循环次数、启动延迟等参数。 - 添加HTTP请求:在线程组中添加HTTP请求,需要设置请求的URL、请求方法、请求参数等。 - 添加断言:可以通过添加断言来验证请求的响应结果是否正确,例如判断响应码、响应内容等。 - 添加监听器:可以通过添加监听器来收集和分析测试结果,例如查看响应时间、吞吐量、错误率等指标。 4. 进行性能测试 在编写完测试脚本后,可以通过以下步骤进行性能测试: - 配置测试计划:在JMeter中,可以配置测试计划,包括设置测试时长、并发用户数、请求量等参数。 - 启动测试:点击“运行”按钮,JMeter会模拟并发用户发送请求,收集测试结果。 - 监控测试结果:可以通过监听器查看测试结果,例如查看响应时间、吞吐量、错误率等指标。 - 分析测试结果:根据测试结果,可以进行性能优化和调整,例如优化数据库查询、增加服务器的内存和CPU等。 5. 总结和反思 在测试完成后,需要对测试结果进行总结和反思,包括: - 测试目标是否达成 - 测试过程中遇到的问题和解决方法 - 测试结果的分析和总结 - 性能优化和调整的建议 总结和反思可以帮助团队不断改进和优化自己的性能测试方法和流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值