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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:

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         一键生成数据,并提供数据生成的报表

 

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

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
12天前
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
175 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
20天前
|
缓存 监控 数据挖掘
C# 一分钟浅谈:性能测试与压力测试
【10月更文挑战第20天】本文介绍了性能测试和压力测试的基础概念、目的、方法及常见问题与解决策略。性能测试关注系统在正常条件下的响应时间和资源利用率,而压力测试则在超出正常条件的情况下测试系统的极限和潜在瓶颈。文章通过具体的C#代码示例,详细探讨了忽视预热阶段、不合理测试数据和缺乏详细监控等常见问题及其解决方案,并提供了如何避免这些问题的建议。
45 7
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
26 2
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
61 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
1月前
|
人工智能 自动驾驶 机器人
【通义】AI视界|苹果自动驾驶汽车项目画上句号:加州测试许可被取消
本文精选了24小时内的重要科技新闻,包括Waymo前CEO批评马斯克对自动驾驶的态度、AMD发布新款AI芯片但股价波动、苹果造车项目终止、Familia.AI推出家庭应用以及AI逆向绘画技术的进展。更多内容请访问通义官网体验。
|
1月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
286 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
1月前
|
Java Maven
Maven 项目测试
接下来我们要学习如何构建和测试这个项目。
41 5
|
1月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
126 0
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0