性能测试项目案例

article/2025/11/7 3:44:22

一、项目介绍与部署

1.1微商城功能介绍

轻商城是一个电商项目,需要综合评估各个项目各个接口的功能,给出优化建议;

功能框架

  • 前台:首页、商品页详情、加入购物车、订单、支付、团购、优惠券;
  • 后台:商品管理、会员管理、商城管理

1.2轻商城项目的技术介绍

前端(看得到的部分---HTML、JS技术实现):

  • 微信小程序
  • web页面

后端(看不到的部分---通过后端技术代码实现JAVA):

  • 服务器(应用服务器、数据库服务器、后台业务逻辑代码)

1)轻商城是一个支持web和微信小程序的前后端分离的项目。

  • 前后端分离可以理解为前端系统与后端分离成两个子项目进行开发:
  • 对外表现是:前后端分离项目前端发送请求后响应的内容为json字符串;
  • 如果是前后端不分离的项目,响应的是HTML页面

前后端分离的项目与不分离的项目相比:

运行效率高 :数据传输时只需要传输基本数据即可,不需要传递html格式;

扩展性好:前后端分离是通过数据接口传递,只要借口不改变,前端代码可以添加任何想添加的功能,后端代码也是可以独自加功能,若前后端耦合,加功能需要前后端一起动。

2)前端使用VUE技术框架开发,即支持微信小程序,也支持手机移动端,还支持web页面。

3)后端使用了SpringBoot框架进行开发,MySql做数据库。

4)目前还在开发完善阶段

1.3微商城项目的技术构架

技术构架图:

1.4熟悉数据库设计

在性能测试前需要对要测试的部分业务功能涉及到的数据库表有一定了解;

1)熟悉数据库设计结构,便于后期对数据库的性能监控;

2)性能测试过程中,数据库容易出现瓶颈;

1.5 微商城项目的部署过程

准备工作:

安装JDK

安装MySQL

安装Nginx

安装node.js

项目搭建步骤:

项目部署过程: 

二、性能测试需求分析

  • 功能测试:关注需求规格中的业务功能(正向、逆向)
  • 性能测试:关注系统对特定业务需求场景的满足程度(时间、资源)
    • 关注维度:业务功能、项目代码、服务器、硬件配置

2.1性能需求获取

1)客户提出(客户可以是甲方,也可以是产品)

  • 能够明确提出需求的一般都是金融、银行、电信、医疗相关的行业软件
  • 即使是客户提出的需求,需要做初步评估需求的合理性

2)根据历史数据分析(根据软件在运行过程中的运营数据来计算出应该达成的性能指标)

  • 日活 —— 初步评估稳定性负载
  • 峰值 —— 初步评估压力负载

2.2新能测试点提取

性能测试点提取规则:

轻商城性能测试点提取:

  • 1)根据性能测试点的提取规则,结合轻商城项目的功能,整理出要进行性能测试的测试点;
  • 2)通过使用前面讲解的获取性能指标的方法(产品给/运营数据计算),得到每个测试点要满足的性能指标
  • 3)确定性能测试目标:
    • 针对每个核心的业务功能都要求达到对应的性能指标要求
    • 基于业务流程(多个接口组合)来测试是否达到性能指标要求
    • 模拟用户真实业务场景,进行长时间的稳定性测试

2.3性能测试计划(这部分与上面有重合之处,前面是思考点,最后都要落实在测试计划文档中)

1)测试背景

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

2)测试目的

  • 确定核心业务功能的TPS
  • 对业务流程(多接口组合)进行压测
  • 系统能在实际系统运行压力的情况下,稳定运行24小时
编号功能模块业务功能TPS响应时间
T01登录登录203s
T02首页进入首页1005s
T03商品搜索商品403s
T04商品查看商品详情1003s
T05购物车添加购物车203s
T06购物车查看购物车203s
T07订单商品结算103s
T08订单提交订单103s
T09订单查看我的订单402s

3)测试范围

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

4)测试策略:

  • 基准测试-----先做基准测试,确定估算标准
  • 负载测试-----通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能承受的最大负载测试;
    • 分别模拟5、10、30、50、100个用户对系统进行负载测试,查看不同并发时,系统软件各项指标是否符合要需求;
  • 稳定性测试  -----用200个用户对系统进行7*24小时的不间断稳定性测试,查看服务器日志内有无异常和报错:系统软件各项指标中有无异常波动,是否存在内存溢出的问题;
    • 验证系统长期运行的稳定性以及是否存在内存溢出之类的问题。       

5)风险控制: 

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

6)交付清单:对应进度安排中每个阶段的产物;

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

7)进度与分工:性能测试工作分为几个步骤以及每个步骤的开始、结束时间和对应的负责人

阶段事项开始时间结束状态状态责任人
需求阶段需求评审完成多方参与
系统架构图完成开发
需求调研完成性能测试人员
准备阶段环境支付完成运维、开发
应用部署完成运维、开发
数据准备完成开发、DBA、测试
脚本开发完成性能测试人员
实施阶段执行压测未完成性能测试人员
服务监控未完成运维、测试
数据收集未完成性能测试人员
结束报告评审未完成多方评审

2.4性能测试用例编写

参考以下性能测试用例的模板来编写:

  •  对于单个业务功能的性能测试,每个测试点编写一个测试用例(多个接口有强关联——依照接口而言,可以将多个接口放入同一个用例)
  • 对于多个业务功能的组合测试,按照用户实际的业务场景,挑选出有代表性的业务流程编写测试用例。

三、性能测试脚本开发

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

3.1 常用的测试元件

常用的测试元件

取样器---HTTP请求发送HTTP请求
配置元件---HTTP请求默认值设置HTTP请求的默认参数
配置元件---用户定义的变量定义变量,供后面引用
后置处理器---JSON提取器提取JSON响应结果中的内容
断言---响应断言对响应结果进行断言
断言---JSON断言
监听器---查看结果树用于JMeter脚本调试时查看运行日志
监听器---聚合报告用于JMeter性能测试时查看运行结果

初始化工作:

1)创建测试用例结构

注意:一个线程组就是一个用例,与其中有多少个请求无关;

2)设置HTTP请求默认值

3)用户定义的变量

4)添加监听器---查看结果树

5)添加监听器---聚合报告

3.2 编写脚本

3.2.1 登录脚本

 断言:状态码、errmsg

如果做接口测试,必须断言响应中的业务数据,可以加上状态码和描述信息

如果做性能测试,可以只添加状态码和描述信息断言

3.2.2 获取首页数据

3.2.3 搜索商品 

如果url中的参数有中文,建议将参数写到下面列表中 

断言:状态码、errmsg

如果是接口测试脚本,必须针对响应中的商品数量进行断言。 

 3.2.4 查看商品详情

 断言:状态码、errmsg

如果是接口测试脚本,必须针对响应中的商品详细信息进行断言;

3.2.5 加入购物车

用例名称添加购物车
用例编号Index005
用例描述TPS达到20的情况下,加入购物车的时间不超过3s
前置条件首页相关的商品数据已经配置完成
用例步骤动作期望的性能
1填写用户名密码进行登录<=3s
2选择商品加入购物车<=3s

添加请求1--登录

添加json提取器:

提取token后,完善在信息头管理器中

添加请求2--加入购物车

添加断言:状态码、errmsg

如果是接口测试脚本,需要再查询我的购物车,检查我的购物车返回的数据是否与加入购物车返回的数据一致,也就是需要再添加一个请求;

3.2.6 查看购物车

用例名称查看购物车
用例编号Index006
用例描述TPS达到20的情况下,查看购物车的时间不超过3s
前置条件首页相关的商品数据已经配置完成
用例步骤动作期望的性能
1填写用户名密码进行登录<=3s
2进入购物车进行查看<=3s

请求:先发送登录请求,提取token信息,添加查看购物车,将token信息赋值为X-litemall-Token头域,填写请求路径和参数;

 3.2.7 提交订单

用例名称结算并下订单
用例编号Index007
用例描述TPS达到10的情况下,结算下订单的时间不超过3s
前置条件首页相关的商品数据已经配置完成
用例步骤动作期望的性能
1填写用户名密码进行登录<=3s
2选择购物车中的商品进行结算<=3s
3下订单<=3s

 提交订单:1)先发送请求登录,提取token信息;2)添加结算请求,将token信息赋值为X-litemall-token头域,填写路径请求和参数;3)添加订单请求,将token信息赋值为X-litemall-token头域,填写路径请求和参数(注意地址与ID必须与用户ID匹配)

响应:

状态码;errmsg

如果脚本为接口测试脚本,需要断言响应报文中的订单数据,与数据库中订单表中我的订单数一致;

3.2.8 查看订单

在编写脚本的过程中,常用的静态数据可以写到用户定义的变量中,在脚本运行中引用,好处是后续如果不修改数据,可以直接修改变量,不需要去每个脚本中进行修改; 

3.2.9 业务流程的脚本

用例名称业务流程1
用例编号Index009
用例描述在业务流程过程中,响应时间和TPS达到要求
前置条件首页相关的商品数据已经配置完成
用例步骤动作期望的性能
1填写用户名密码进行登录<=3s
2进入首页<=5s
3查看商品详情<=3s
4加入购物车<=3s
5选择购物车中的商品进行结算<=3s
6下订单<=3s

看起来用例复杂,但是写脚本简单,因为单接口脚本都已经写好,直接组合即可;

 


http://chatgpt.dhexx.cn/article/ZuFlUpvB.shtml

相关文章

项目测试报告

图书管理系统测试报告 一、测试概述 1.编写目的 本报告为图书管理系统阶段测试的总结,目的在于考察软件的功能和缺陷&#xff0c;尽可能多的发现软件的缺陷和漏洞。 2.项目介绍 为了方便学校师生管理或借阅图书而开发出的一个图书管理系统&#xff0c;在Windows环境下创建…

开源测试项目

在如今开源的时代&#xff0c;我们就不要再闭门造车了&#xff0c;热烈的拥抱开源吧&#xff01;本文针对性能测试、Web UI 测试、APP测试、数据库测试、接口测试、单元测试等方面&#xff0c;为大家整理了github或码云上优秀的自动化测试开源项目&#xff0c;希望能给大家带来…

关于项目的测试

文章目录 前言&#xff08;测试的相关知识&#xff09;一、需求分析二、测试设计三、测试计划1.功能测试&#xff1a;1).题目展示及提交2).异常情况3).网络测试 2.兼容性测试&#xff1a;1).各种浏览器器访问&#xff1a;2).同一浏览器不同版本3).不同的操作系统&#xff1a; 3…

【2023必看】17个值得关注的测试开源项目大盘点

目录 引言 项目汇总 值得关注的项目 总结 引言 在软件测试领域&#xff0c;开源项目已经成为了一个重要的趋势。 作为测试人员&#xff0c;我们可以通过参与或关注这些开源项目&#xff0c;不仅可以学习到先进的测试思想、技术和工具&#xff0c;还可以积极参与社区建设&…

测试自学人必看:软件测试如何找测试项目?

目录 前言 方法一&#xff1a;自己找一些开源的开发/测试项目 方法二&#xff1a;从一些线上课程里找开发项目&#xff0c;付费和免费的都可以 方法三&#xff1a;报测试培训班&#xff0c;机构会提供测试项目。 结语 前言 测试新手不知道上哪找测试项目&#xff0c;这应…

【Linux 下】 信号量

文章目录 【Linux 下】 信号量信号量概念信号量操作初始化和销毁P&#xff08;&#xff09;操作V&#xff08;&#xff09;操作理解PV操作 基于信号量与环形队列实现的CS模型基于信号量和环形队列实现的生产者与消费者模型 【Linux 下】 信号量 信号量概念 信号量&#xff08;…

Linux 信号量

信号量 信号量信号量的定义信号量理论例子Linux信号量机制使用信号量 信号量 信号量:用于管理对资源的访问。 &#xff08;1&#xff09; 当我们编写的程序使用了线程时&#xff0c;不管它是运行在多用户系统上、多进程系统上,还是运行在多用户多进程系统上&#xff0c;我们通…

Linux内核信号量:二值信号量/互斥信号量,计数信号量,读写信号量

《semaphore信号量&#xff1a;一个简单的示例程序》用户态程序 目录 概念 应用场景 使用方法 内核信号量的构成 信号量的API 初始化 PV操作 获取信号量&#xff08;P&#xff09; 释放内核信号量&#xff08;V&#xff09; 补充 内核信号量的使用例程 场景1 场景…

Linux系统中信号量的基本使用方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何使用信号量的方法。 目录 第一&#xff1a; 父子进程相隔1s报数一次 第二&#xff1a;利用信号量实现父子进程通信 信号量(Semaphore)&#xff0c;有时被称为信号灯&#xff0c;是在多线程环境下使用的一种设施&#…

信号量【Linux】

文章目录 1. POSIX信号量1.1 引入1.2 概念1.3 PV原语&#xff08;原理&#xff09;1.4 相关接口 2. 二进制信号量3. 基于环形队列的生产消费模式3.1 介绍3.2 为什么要使用环形队列3.3 环形队列的作用3.4 实现互斥和同步两个信号量框架生产和消费的逻辑完善环形队列1信号量完善环…

Linux信号量操作

信号量简介&#xff1a; 在对于临界区资源管理的过程中&#xff0c;多个程序同时访问一个共享资源经常容易引发一系列问题&#xff1a;如死锁&#xff0c;结果不唯一等等&#xff0c;在1965年&#xff0c;由荷兰科学家E.W.Dijkstra提出了一种新的进程同步工具&#xff0c;信号…

【关于Linux中----信号量及其使用场景】

文章目录 一、解释信号量1.1 概念的引入1.2 信号量操作和使用接口 二、信号量使用场景2.1 引入环形队列&&生产消费问题2.2 代码实现2.3 对于多生产多消费的情况2.4 申请信号量和加锁的顺序问题2.5 多生产多消费的意义 一、解释信号量 1.1 概念的引入 我们知道&#x…

linux(信号量)

信号量 几个基本概念临界资源临界区原子性互斥 信号量后台进程前台进程 信号储存信号处理信号(信号捕捉) 发送信号1、键盘产生&#xff1a;2、系统调用接口发送信号3、由软件条件产生信号4、硬件异常发送信号 内核中的信号量**信号量在内核中的数据结构****信号集操作函数** 信…

Linux--信号量

1.信号量的定义: 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目&#xff0c; 获取资源时&#xff0c;需要对信号量的值进行原子减一&#xff0c;该操作被称为p操作。当信号量值为0时&#xff0c;代表没有资源可用&#xff0c;p操作会阻塞。释…

【Linux】Linux的信号量集

所谓信号量集&#xff0c;就是由多个信号量组成的一个数组。作为一个整体&#xff0c;信号量集中的所有信号量使用同一个等待队列。Linux的信号量集为进程请求多个资源创造了条件。Linux规定&#xff0c;当进程的一个操作需要多个共享资源时&#xff0c;如果只成功获得了其中的…

linux信号量简介

一、什么是信号量 为了防止多个程序同时访问一个共享资源而引发的一系列问题&#xff0c;我们需要一种访问机制&#xff0c;它可以通过生成并使用令牌来授权&#xff0c;在同一时刻只能有一个线程访问代码的临界区域。 临界区域是指执行数据更新的代码需要独占式地执行。而信…

Linux下信号量使用总结

目录 1.Linux下信号量简介 2.POSIX信号量 2.1 无名信号量 2.2 有名信号量 3.System V信号量 1.Linux下信号量简介 信号量是解决进程之间的同步与互斥的IPC机制&#xff0c;互斥与同步关系存在的症结在于临界资源。 临界资源是在同一个时刻只容许有限个&#xff08;一般只有…

Linux信号量详解

Linux信号量详解 1.什么是信号量信号量是一种特殊的变量&#xff0c;访问具有原子性。只允许对它进行两个操作&#xff1a;1)等待信号量当信号量值为0时&#xff0c;程序等待&#xff1b;当信号量值大于0时&#xff0c;信号量减1&#xff0c;程序继续运行。2)发送信号量将信号量…

Linux进程间通信—信号量

一、概述 进程间通信&#xff08;interprocess communication&#xff0c;简称 IPC&#xff09;指两个进程之间的通信。系统中的每一个进程都有各自的地址空间&#xff0c;并且相互独立、隔离&#xff0c;每个进程都处于自己的地址空间中。所以同一个进程的不同模块譬如不同的函…

Linux操作系统-信号量

信号量也属于一种进程间通信的机制&#xff0c;与其他的进程间通信不同&#xff0c;信号量不是用来传输数据的&#xff0c;而是用来进程间同步与互斥。除此之外&#xff0c;信号量还可以实现线程间的互斥。 信号量是什么&#xff1f; 信号量的本质是一个计数器。 一个信号量…