性能测试项目案例

news2025/1/13 17:02:23

一、项目介绍与部署

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小时

3)测试范围


4)测试策略:

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

5)风险控制:


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

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

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


2.4性能测试用例编写

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

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

三、性能测试脚本开发

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

3.1 常用的测试元件

在这里插入图片描述
初始化工作:

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 加入购物车


添加请求1–登录

在这里插入图片描述
添加json提取器:

在这里插入图片描述
添加请求2–加入购物车

在这里插入图片描述
添加断言:状态码、errmsg

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

3.2.6 查看购物车


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

3.2.7 提交订单



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

响应:

状态码;errmsg

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

3.2.8 查看订单

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

3.2.9 业务流程的脚本

在这里插入图片描述
看起来用例复杂,但是写脚本简单,因为单接口脚本都已经写好,直接组合即可;

最后给大家分享一下我的一些学习资料:

以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

关注下方我的微信公众号免费领取!↓ ↓ ↓ ↓ ↓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/961128.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MyBatisⅡ】动态 SQL

目录 🎒1 if 标签 🫖2 trim 标签 👠3 where 标签 🦺4 set 标签 🎨5 foreach 标签 动态 sql 是Mybatis的强⼤特性之⼀,能够完成不同条件下不同的 sql 拼接。 在 xml 里面写判断条件。 动态SQL 在数据库里…

TypeScript_线性结构-数组-栈结结构

数据结构与算法 面试经典 150 题 编程的最终目的只有一个:对数据进行操作和处理 术之尽头炁体源流编程尽头数据结构 数据结构与算法的本质就是一门专门研究数据如何组织、存储和操作的科目 系统、语言、框架源码随处可见数据结构与算法 无论是操作系统&#xff…

openlayers-16-添加一组轨迹动画

实现一组动画,即根据一组只有起止点坐标的线段,实现点在这些线段上较为平滑的移动,移动速度和平滑程度均可控制。 下面的代码仅作为思路参考,还欠缺很多细节,比如在进行插值计算时,还需要判断经纬度坐标差&…

RocketMQ(消息中间件)

目录 一、为什么会出现消息中间件? 二、消息中间件是干嘛的? 三、应用解耦 四、流量削峰 五、异步处理 1.串行方式: 2.并行方式: 3.引入消息队列: 六、RocketMQ的架构及概念 一、为什么会出现消息中间件&#…

opencv-人脸识别

对https://blog.csdn.net/weixin_46291251/article/details/117996591这哥们代码的一些修改 import cv2 import numpy as np import os import shutil import threading import tkinter as tk from PIL import Image, ImageTkchoice 0# 首先读取config文件,第一行…

国内8个能用AI赚钱的在线兼职渠道整理

hi,同学们,我是赤辰,本期是赤辰第3篇AI工具类教程,文章底部准备了粉丝福利,看完可以领取!即将迎来新学期了,今天就来聊聊学生党如何应用AI技能通过兼职,赚取生活费,这里指…

使用HTTPS模式建立高效爬虫IP服务器详细步骤

嘿,各位爬虫小伙伴们!想要自己建立一个高效的爬虫IP服务器吗?今天我就来分享一个简单而强大的解决方案——使用HTTPS模式建立工具!本文将为你提供详细的操作步骤和代码示例,让你快速上手,轻松建立自己的爬虫…

【枚举区间+线段树】CF Ehu 152 E

Problem - E - Codeforces 题意: 思路: 感觉是个套路题 对区间计数,按照CF惯用套路,枚举其中一个端点,对另一个端点计数 对于这道题,枚举右端点,对左端点计数 Code: #include &…

Form.Item创建自定义表单

一、概述 Antd是一个非常强大的UI组件库,里面的Form表单组件也基本能满足我们大多数场景。但是也有需要自定义表单的场景。 Vue2里我们使用v-model,结合子组件的model属性,来实现自定义组件的双向绑定。 Vue3里我们使用v-model,…

没有苹果开发者账号能否创建ios证书-最新

​ 目录 摘要: 引言: 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: 总结: 摘要: 本文介绍了在没有Mac电脑的情况下,使用appuploader工具生成iOS证书和描…

高通QualComm、MTK耦合测频段工具和综测校准工具的自由定制 与工厂Mes对接、使用PowerMeter测量等

一.MTK耦合工具V1.3 20220409 MTK芯片 1.逻辑: 打开软件,扫码SN,自动连接,连接成功后 1).开启强发(强发参数 LTE频段 1、3、5、7、28) 2).读测量值 3).结果判定&#xff…

【计算机组成 课程笔记】3.2 算数运算和逻辑运算的硬件实现

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 3 - 2 - 302-门电路的基本原理(11-39--)_哔哩哔哩_bilibili 现代计算机的CPU和其他很多功能部件都是基于晶体管的集成电路,想要了解计算机组成的基本原理,还是需要有…

电脑报错提示xinput1_3.dll缺失怎么办?xinput1_3.dll丢失的简单恢复方案

今天,我将为大家分享一个与我们日常工作息息相关的话题——xinput1_3.dll丢失的4种解决方法。在我们的日常工作和生活中,电脑出现问题是常有的事,而xinput1_3.dll丢失则是其中较为常见的一种问题。那么,什么是xinput1_3.dll?它为…

C盘扩容遇到的问题(BitLocker解密、)

120G的C盘不知不觉的就满了,忍了好久终于要动手了。 尽管电脑-管理--磁盘管理里可以进行磁盘大小调整,但由于各盘都在用,不能够连续调整,所以选用DiskGenius。 # DiskGenius调整分区大小遇到“您选择的分区不支持无损调整容量” …

undolog

一、原子性 ACID:通过undolog保证原子性 二、undolog 如何做 把回滚时所需的东西都给记下来: 1、插入一条记录时,至少要把这条记录的主键值记下来,回滚的时候只需要把这个主键值对应的记录删掉就好了。 2、删除了一条记录&…

10 行代码能做什么?

10 行代码能做什么? 写一串 SQL Join,统计全渠道市场营销的 ROI 用 JS 画个饼图,展示最有效的广告投放策略 用 Python 写段算法,分析销量骤降的原因是什么 …… 数据出错了,写个对数脚本 -_-|| AI 时代,…

AI图像行为分析算法 opencv

AI图像行为分析算法通过pythonopencv深度学习框架对现场操作行为进行全程实时分析,AI图像行为分析算法通过人工智能视觉能够准确判断出现场人员的作业行为是否符合SOP流程规定,并对违规操作行为进行自动抓拍告警。OpenCV是一个基于Apache2.0许可&#xf…

管理类联考——逻辑——汇总篇——知识点突破——形式逻辑——联言选言——定义

角度——本质定义 联言 联言命题是断定两种或两种以上事物情况同时存在的命题,用“A并且B”表示,逻辑符号为A ∧ B。 若“A ∧ B”为真,表明A是真的,同时B也是真的。 【定义】联言命题是表示若干判断同时成立的命题。 【刻画】…

Java与其他编程语言比较分析,编程语言选择与优点、缺点和适用场景详解

原文地址:Java与其他编程语言比较分析,编程语言选择与优点、缺点和适用场景详解 Java 擅长可移植性和可靠性,Python 擅长通用性和简单性,JavaScript 擅长 Web 开发,C 擅长性能,Go 擅长效率。网址:yii666.c…

网御星云-上网行为管理系统bottomframe.cgi接口存在SQL注入

一、免责声明: 本次文章仅限个人学习使用,如有非法用途均与作者无关,且行且珍惜;由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号望雪阁及作者不为此…