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

分类: 压力测试

压力测试~一套完整的压力测试项目文档相关推荐

  1. 分享Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站

    这是个什么的项目? 使用 Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站. 博客线上地址:www.boblog.com Github地址:https: ...

  2. 基于Java毕业设计宠物论坛设计网站测试视频2021源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计宠物论坛设计网站测试视频2021源码+系统+mysql+lw文档+部署软件 基于Java毕业设计宠物论坛设计网站测试视频2021源码+系统+mysql+lw文档+部署软件 本源码技 ...

  3. 项目管理/互联网/软件全套文档、产品文档、技术文档、测试文档、运维文档、项目文档

    前言 简约文档可提高团队沟通效率:详细文档体系可形成无形价值资产,比如降低人员培养周期. 所有文档列表都是基于实际产品.项目情况而定,最好在决定做一个新产品,或实施一个项目时,就根据实际情况拉出一张需 ...

  4. 软件poc测试方案,桌面云项目POC测试方案(12页)-原创力文档

    XX项目POC 测试报告 修订记录 版本 变更描述 变更人 日期 0.1 文档创建 XX XX PAGE 1 一.测试目标 为了虚拟化产品能够在实际业务工作中发挥预期作用,拟定测试目标如下: (1)用 ...

  5. java web编写的在线测试(调查)系统 完整源码 附详细设计文档

    今天为大家分享一个java web编写的在线测试(调查)系统,目前系统功能已经完善,后续会进一步完善.整个系统界面漂亮,有完整得源码,希望大家可以喜欢.喜欢的帮忙点赞和关注.一起编程.一起进步. 开发 ...

  6. 一份完整齐全的技术方案文档

    2022年-[归一计划三期-用户中心三期第二阶段]技术方案 部门:基础架构部 时间:2022.02.25 1.背景 描述技术方案的背景 由于历史原因,旧服务存在很多代码不规范.冗余度高.扩展性差等问题 ...

  7. 在线ajax测试,在线测试 - SosoApi,简单强大的api接口文档管理平台

    背景: 在实际项目开发协同过程中,特别是前后端由不同开发人员开发时,前端接口联调必须要等后端接口开发完成后才可以.这种方式使得前端极大的依赖 于后端,使得原本可以并行的工作被阻塞了,特别是流程性质的功 ...

  8. 电子计算机月初美妙的交响,江苏版二年级下学期语文期中测试试卷(8页)-原创力文档...

    第 第 PAGE 1 页 共 NUMPAGES 1 页 江苏版二年级下学期语文期中测试试卷 姓名:________ 班级:________ 成绩:________ 小朋友,带上你一段时间的学习成果,一 ...

  9. 各种测试文件格式,包括视频、音乐、文档、图片

    filesamples.com/ FileSamples 是一个提供多达 814 份测试文件涵盖 180 种文件类型(老衲计算了应该是 185 种?)的免费网站. 视频.音频.文件.图像.字体.电子书 ...

  10. java opc连接测试,java连接opc读取数据实例及文档

    [实例简介] 在已有java web工程里添加读取opc的接口类.附有详细说明操作步骤. [实例截图] [核心代码] f9c60785-5c7a-42c8-a6ff-67244cf5c251 ├── ...

最新文章

  1. DOS之BAT批处理文件语法3(转)
  2. F5 配置手册 -F5 BIG-IP 10.1-2-配置-基本参数
  3. python入门代码示例-Python入门100个实例(14)——换行符和制表符
  4. spring应用实例
  5. 想过没有,Spring的Bean为啥默认单例?
  6. Java的包裹wrap
  7. Mongodb数据库连接
  8. C和指针之Eratosthenes-埃拉托斯特尼筛方法找质数
  9. chrome 开发者工具,查看元素 hover 样式
  10. c++ class struct同名_C/C++面向对象编程之封装
  11. ConcurrentModificationException---异常剖析
  12. 高斯公式积分matlab,数值分析 高斯—勒让德积分公式
  13. 局域网文件服务器带宽,高带宽局域网
  14. 【Python】爬虫入门强烈推荐系列四(完结篇)
  15. python selenium ActionChains类与鼠标的模拟事件
  16. Java实现读取txt文件数据并导入数据库
  17. momentum chrome 插件安装
  18. Thread、Runnable、Callable基本操作线程基本概念
  19. 如何夏普比率在量化交易中的价值
  20. Java开源模板引擎

热门文章

  1. 拼多多卖家必知:店铺评分和评价那点事
  2. Ubuntu系统字体所在的文件夹的位置。
  3. 为什么固态硬盘比机械硬盘读取速度快?
  4. 搜狗皮肤.php,搜狗皮肤制作
  5. MFC 树形控件的使用
  6. 数据结构练习题――中序遍历二叉树
  7. ArcGis Engine 符号
  8. 墨尔本大学 SWEN20003 Project2 课业解析
  9. 杂文笔记(一):博弈论在网络安全中的应用
  10. 中科院计算机技术研究所张浩,中国科学院计算技术研究所 韩 琥 博士