压力测试~一套完整的压力测试项目文档

简介:

Web压力架构

张占岭

Web压力架构... 1

一 系统性能测试概述... 1

1.1 性能测试概述... 1

1.2 性能测试的指标... 2

1.3 关键点的描述... 2

1.4 性能测试的目的... 2

1.5 测试项目开发规范... 2

二 使用VS压力测试工具进行测试... 3

2.1 性能测试(WebTest). 3

2.1.1 概念... 3

2.1.2 如何建立性能测试... 3

2.1.3 使用CS代码快速建立性能测试... 5

2.1.4 运行当前性能测试... 6

2.2 负载(压力)测试(LoadTest)... 6

2.2.1 概念... 6

2.2.2 目的... 6

2.2.3 术语... 6

2.2.4 如何建立负载测试... 7

2.2.5 负载测试运行时的说明... 10

2.2.6 分析报告说明... 11

2.3 测试场景描述... 12

2.4 主要业务模块... 12

三 测试数据的填充... 13

3.1            Webtest工具填充... 13

3.2            手动编辑业务代码... 13

3.3            使用RedGate.SQLDataGenerator工具进行填充... 13

 

一 系统性能测试概述

1.1 性能测试概述

本次测试是针对学习吧系统在应对密集整转的压力下业务处理能力的测试,检验系统的吞吐率。本系统的压力测试主要是针对主要用户注册,登录,用户中心,班级圈、订单,检查在应用高峰时期,并发用户数较多的时候的处理能力等等。

1.2 性能测试的指标

1         应用系统的负载能力:即系统所能容忍的最大用户数量,也就是在正常的响应时间中,系统能够支持的最多的客户端的数量。

2         应用系统的吞吐率:即应用系统在单位时间内完成的交易量,也就是在单位时间内,应用系统针对不同的负载压力,所能完成的交易数量。

3         系统的响应能力:即在各种负载压力情况下,系统的响应时间,也就是从客户端请求发起,到服务器端应答返回所需要的时间,包括网络传输时间和服务器处理时间。

4         应用系统的可靠性:即在连续工作时间状态下,系统能够正常运行的时间,即在连续工作时间段内没有出错信息

1.3 关键点的描述

系统在不同用户数量(并发)压力下的表现,即:支持的并发用户数目和并发用户发送频率,以及在较大压力下,系统的处理能力以及CPU、数据库I/O和内存的使用情况,并找出相应的性能瓶颈

1.4 性能测试的目的

压力测试的目的就是检验系统的最大吞吐量,检验现行的业务系统在各种压力交易

量下的运行状况,检验系统地运行瓶颈,获取系统的处理能力等等。

本次针对系统所进行的压力测试的测试目的为:

1         给出系统当前的性能状况

2         定位系统性能瓶颈或潜在性能瓶颈

3         总结一套合理的、可操作的、适合公司现实情况的性能测试方案,为后续的性能测试工作提供基本思路

1.5 测试项目开发规范

1         在具体项目解决方案中添加测试项目

2         为每个模块建立各自的文件夹

3         开发人员可以采用代码方法建立性能测试,非专业人员可以通过录制建立性能测试

4         测试域名不采用IP地址,可以在HOSTS中配置虚拟域名,这样方便以后修改

5         数据动态参数采用CSV文件,对于非加密信息可以采用直接连接数据库的方式得到真实数据

二 使用VS压力测试工具进行测试

2.1 性能测试(WebTest)

2.1.1 概念

将一些测试的流程进行录制,并保存成一个webtest 就生成了一个web性能测试,这些性能测试文件可以添加到负载测试项目,完成压力测试。(负载测试项目由多个web性能测试组成)

2.1.2 如何建立性能测试

  • 需要安装 Visual Studio 旗舰版
  • 创建 Web 性能和负载测试项目

 

1 创建 Web 性能测试

 

你的 Web 浏览器随即打开。

2 输入要测试的网站的 URL。

3 如果你希望客户使用自己的应用程序,也请你使用。 例如,搜索项并将其添加到购物车中。记录器将捕获 HTTP 请求和响应。

4 完成后,请停止记录。

 

现在,Visual Studio 为你的每个 HTTP 请求的 HTTP 响应查找动态参数。 发生这种情况时,将显示进度栏。

5 重命名你的测试。 例如,学民吧首页.webtest。

 

6 编辑测试属性以指定性能目标。 例如,可以将页面响应时间目标设置为 1 秒。(这个值在负载测试时会用到)

 

7 保存测试。

 

2.1.3 使用CS代码快速建立性能测试

通过向导生成性能测试后,也可以将它生成代码文件,方便我们开发人员直接编辑它

 

2.1.4 运行当前性能测试

运行性能测试后,它会模拟你定义的请求,代你完成整个流程

 

测试结果在运行后被显示出来

 

 

2.2 负载(压力)测试(LoadTest)

2.2.1 概念

负载测试(Load Testing)是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

2.2.2 目的

通过压力测试,判断当前应用环境情况下系统的负载能力,为今后应用范围扩大,用户量上升后,服务器扩容、升级等提供必要的技术支撑,及服务器规划等。

2.2.3 术语

应用服务器

网站/软件架构中的应用处理服务器,提供请求的接收、处理、返回WEB请求

数据库服务器

网站/软件架构中的数据处理服务器,提供数据的存储和读取等功能

测试机

专门用来压力测试的计算机,通常为常用的PC机

系统用户数

是指实际可能使用应用系统的总用户数

在线用户数

是指当前登录应用系统,处于正在操作或空闲状态的用户数

并发用户数

是指当前登录应用系统,并同时进行操作的用户数

响应时间

是指服务器从接收请求到返回请求之间的处理时间。压力测试中,忽略网络传输时间及测试机中处理时间,测试机上获得响应时间即作为服务器的响应时间

 

2.2.4 如何建立负载测试

1 在 Web 性能和负载测试项目中创建新的负载测试。

 

2 负载测试向导出现后,请选择负载模式步骤。

将负载模式更改为分级负载。 这将随着时间逐渐添加用户。

 

3 选择测试组合步骤。

 

添加创建的 Web 性能测试。

 

将 Web 性能测试移至要运行的测试列表中。

 

4 完成向导后,Web 性能测试就会添加到负载测试并显示在负载测试编辑器中。

 

2.2.5 负载测试运行时的说明

在测试运行时,你可能会发展某个页的响应时间超过你设置的值。

 

添加分析注释以跟踪问题。

 

负载测试完成后,将显示摘要。

已完成测试的结果包含性能计数器数据、阈值冲突和错误信息。 注意,如果在性能测试中,这个相应时间没有设置(默认为0)表示,不去关心这个数据,即使你的响应时间再慢,它不会出现未通过的情况,如图

 

 

2.2.6 分析报告说明

负载测试摘要

整体结果

最大用户负载

225

测试/秒

15.9

未通过的测试

6,928

平均测试时间(秒)

12.9

每秒事务数

0

平均事务时间(秒)

0

每秒页数

20.1

平均页面时间(秒)

10.2

请求/秒

174

失败的请求数

0

缓存的请求数占总请求数的百分比

57.7

平均响应时间(秒)

1.20

平均内容长度(字节)

1,346

关键统计信息: 最慢的 5 个页面

URL (更多详细信息的链接)

95% 页面时间(秒)

xxx

19.0

xxx

8.08

xxx

0.13

关键统计信息: 最慢的 5 个测试

名称

95% 测试时间(秒)

用户注册

29.1

测试结果

测试结果部分列出了负载测试中的所有测试和方案。 它将显示测试名称、方案、运行次数、失败次数以及平均测试时间。 您可以选择某个测试的名称以打开“测试”表和查看该测试的更多详细信息。

名称(性能测试名称)

方案(方案名称)

测试总数

失败的测试数(占总数的百分比)

平均测试时间(秒)

xxx

我的班级圈

2,507

0 (0)

21.4

xx

学生登陆-增量测试

5,346

5,325 (99.6)

10.1

xxx

学生登陆-桓定测试

1,666

1,603 (96.2)

8.80

页结果

页面结果部分列出了负载测试中的所有网页。 将显示 URL、方案、测试名称、平均页面时间和计数。 您可以选择某个页面的 URL 以打开“页”表和查看该页面的更多详细信息。

页结果

URL (更多详细信息的链接)

方案

测试

平均页面时间(秒)

计数

xxx

我的班级圈

我的班级圈

11.5

2,507

xxx

学生登陆-增量测试

登陆

10.1

5,346

xxx

我的班级圈

我的班级圈

9.87

2,550

xxx

学生登陆-桓定测试

登陆

8.80

1,666

 

错误

错误部分列出了在负载测试过程中发生的所有错误。 将显示错误类型和子类型、计数和最新消息。 您可以选择某个错误以打开“错误”表,并查看该错误的更多详细信息。

类型

子类型

计数

最后一条消息

异常

SocketException

2

由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 163.177.72.159:80

事务结果

事务结果部分列出了负载测试中的所有事务。 将显示事务名称、方案、名称、响应时间、已用时间和计数。 您可以选择某个事务的名称以打开“事务”表,并查看该事务的更多详细信息。

控制器和代理资源

控制器和代理资源部分列出了用于运行测试的计算机。 将显示计算机名、处理器时间百分比和可用内存。 您可以选择某个计算机名称以打开“控制器和代理”图形,并查看不同时间的资源使用量。

用户分布图

 

测试结果表格

 

关系图表

 

2.3 测试场景描述

测试中,使用逐步加压的模式,测试运行场景安排如下:

  1. 每隔2秒增加1个用户连接,最多增加到100个用户,查看并记录运行情况
  2. 每隔2秒增加2个用户连接,最多增加到200个用户,查看并记录运行情况
  3. 每隔2秒增加1个用户连接,最多增加到300个用户,查看并记录运行情况
  4. 每隔3秒增加1个用户连接,最多增加到400个用户,查看并记录运行情况
  5. 常量负载,用户数固定100个,200个,500个

每个场景都包括:

  1. 用户登录
  2. 业务操作
  3. 业务完成
  4. 退出系统,所有用例都按以上场景
  5. 用户注册
  6. 用户登录
  7. 老师认证
  8. 老师中心
  9. 老师开通班级圈
  10. 老师建立课程
  11. 老师建立作业
  12. 老师建立试题
  13. 学生中心
  14. 学生购买
  15. 学生学习
  16. 学生充值
  17. 班级圈展示页
  18. 班级圈列表页
  19. 首页

2.4 主要业务模块

三 测试数据的填充

3.1              Webtest工具填充

使用webTest对指定页面逻辑进行录制,如用户注册,建立课程等,之后使用压力测试工具loadtest进行测试同时测试数据即可写入真实库。

3.2              手动编辑业务代码

由开发人员去针对指定模块的业务进行二次开发,再使用如循环的方式将数据批量注入真实数据库即可

3.3              使用RedGate.SQLDataGenerator工具进行填充

操作简单,上手容易!

1 定义生成数据的数量

 

2 预览生成的数据结果

 

3 可以对指定数据列进行编辑,对数值类型的列可以进行随机生机,增量生成,设置最大值和最小值等等

 

4         对字符类型的列,可以进行正则表达式的过滤

 

5         对日期时间类型的列,可以设置起始日期和结束日期,及随机产生和增量产生及时间段产生等

 

6         一键生成数据,并提供数据生成的报表

 

本文转自博客园张占岭(仓储大叔)的博客,原文链接:压力测试~一套完整的压力测试项目文档,如需转载请自行联系原博主。

目录
相关文章
|
3月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
3月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
5月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
240 0
|
5月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
10月前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
822 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
10月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1197 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
10月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
509 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
11月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
340 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
11月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
424 6