精华内容
下载资源
问答
  • 压力测试

    千次阅读 2018-11-16 11:18:27
    压力测试概述 压力测试用来检测函数(方法)的性能,和编写单元功能测试的方法类似,但需要注意以下几点: 文件名命名规则:xxx_test.go 函数名命名规则:func BenchXxx(b *testing.B),其中XXX可以是任意字母数字的...

    压力测试概述
    压力测试用来检测函数(方法)的性能,和编写单元功能测试的方法类似,但需要注意以下几点:

    • 文件名命名规则:xxx_test.go
    • 函数名命名规则:func BenchXxx(b *testing.B),其中XXX可以是任意字母数字的组合,但是首字母不能是小写字母
    • 函数内必须使用b.N进行轮询测试
    • 函数内可以选择使用b.ReportAllocs()汇报内存开销
    • 在GoLandIDE中你可以在待测包上右键,Run->gobentch xxx,以执行整包的压力测试,默认从上向下依次执行所有
    • 终端执行当前包下的所有压力测试:
    go test -bench=.
    
    • 终端执行多次求平均值
    go test -bench=. -count=3
    

    定义待测的工具函数
    这里给出了斐波那契数列的递归和非递归两种算法实现

    //获取斐波那契数列第n项的递归实现
    //1,1,2,3,5,8,13,21,34,55
    func GetFibonacci1(n int) int {
    	if n == 0 || n == 1 {
    		return 1
    	} else {
    		return GetFibonacci1(n-1) + GetFibonacci1(n-2)
    	}
    }
    
    //获取斐波那契数列第n项的非递归实现
    //1,1,2,3,5,8,13,21,34,55
    func GetFibonacci2(n int) int {
    	x, y := 1, 1
    	for i := 0; i < n; i++ {
    		x, y = y, x+y
    	}
    	return x
    }
    

    定义测试用例

    //导入测试工具包
    import "testing"
    
    //测试用例1:多次测试函数GetFibonacci1,获得平均执行时间
    func BenchmarkGetFibonacci1(b *testing.B) {
    	b.Log("BenchmarkGetFibonacci1")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		GetFibonacci1(10)
    	}
    }
    
    //测试用例2:多次测试函数GetFibonacci2,获得平均执行时间
    func BenchmarkGetFibonacci2(b *testing.B) {
    	b.Log("BenchmarkGetFibonacci2")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		GetFibonacci2(10)
    	}
    }
    

    执行结果
    这里写图片描述
    不难看出,算法2的执行效率6.55纳秒/次要远远优于算法1的503纳秒/次

    定义待测试的结构体

    //导入包
    import (
    	"encoding/json"
    	"os"
    	"fmt"
    )
    
    //定义待测的结构体
    type Student struct {
    	Name string
    	Age  int
    }
    
    //将当前对象存入JSON文件
    func (s *Student) Save() error {
    	dstFile, _ := os.OpenFile("d:/temp/student.json", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
    	defer dstFile.Close()
    
    	//fmt.Println("Save:s=",s)
    	encoder := json.NewEncoder(dstFile)
    	err := encoder.Encode(s)
    	if err != nil {
    		fmt.Println("保存失败,err=", err)
    		return err
    	}
    
    	//fmt.Println("保存成功!")
    	return nil
    }
    
    //读取JSON文件,转化为一个student对象,加载的结果存入s中
    func (s *Student) Load() error {
    	srcFile, _ := os.OpenFile("d:/temp/student.json", os.O_RDONLY, 0666)
    	defer srcFile.Close()
    	decoder := json.NewDecoder(srcFile)
    	err := decoder.Decode(s)
    	if err != nil {
    		fmt.Println("加载失败,err=", err)
    		return err
    	}
    
    	//fmt.Println("加载成功!")
    	return nil
    }
    

    定义结构体函数的性能测试用例

    //导入测试工具包
    import "testing"
    
    //测试用例1:多次测试学生的保存方法,获得平均执行时间
    func BenchmarkStudentSave(b *testing.B) {
    	b.Log("BenchmarkStudentSave")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		student := &Student{"张全蛋", 20}
    		student.Save()
    	}
    }
    
    //测试用例2:多次测试学生的加载方法,获得平均执行时间
    func BenchmarkStudentLoad(b *testing.B) {
    	b.Log("BenchmarkStudentLoad")
    	
    	//汇报内存开销
    	b.ReportAllocs()
    	for i := 0; i < b.N; i++ {
    		student := &Student{}
    		student.Load()
    	}
    }
    

    执行效果
    这里写图片描述

    学院Go语言视频主页
    https://edu.csdn.net/lecturer/1928

    [清华团队带你实战区块链开发]
    (https://ke.qq.com/course/344443?tuin=3d17195d)
    扫码获取海量视频及源码 QQ群:
    721929980
    在这里插入图片描述

    展开全文
  • Web压力架构 张占岭 Web压力架构......一 系统性能测试概述......1.1 性能测试概述......1.2 性能测试的指标......1.3 关键点的描述......二 使用VS压力测试工具进行测试... 3 2.1 性能测试(WebTest). 3

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

     

     

    分类:  压力测试
    展开全文
  • 压力测试-Jmeter

    千次阅读 2021-08-04 23:52:03
    压力测试是我们工作中经常会遇到的问题,特别是高端的职位,越是需要有更高的要求。

    我们在开发的过程中,如果遇到系统预估访问量会比较大的时候,或者我们再做底层基础服务的时候,往往需要对我们的服务性能做一些压力测试和稳定性测试,市面上有很多压测工具,今天我们主要讲解的是Jmeter压力测试工具,鉴于最近做的一次项目正儿八经的做了一次压测,加上以前零零碎碎的学习,本次我打算总结一下。

    一、Jemter的安装

    我所下载的Jmeter是5.4版本的,解压过后进入bin目录,双击jmeter.sh,如图表示软件启动成功.

    二、如何构建一个接口的压测脚本

     接下来我们启动一个接口服务,新增压测脚本

    1、新增线程组

     创建100个线程,指定在1s内生成这全部100个线程,循环跑10次,整个压测跑下来执行接口请求1000次。

    2、构建http取样器

     

    输入采样器的名称、协议、服务器域名或者IP、端口号、Method及Url信息。

    3、监听器里添加查看结果树(比较耗服务器性能,不需要可以不加)和聚合报告

    4、补充知识点:计数器

    上面的请求,我们的参数是写死的,但是多数时候,我们需要构建不同的参数,这个时候,如果没有规则,我们可以使用计数器。

     

     新增一个计数器原件,引用名称studentId,从1开始到10000结束,步长为1.

    使用方法:${studentId}

    结果:

     

    5、读取csv文件

    有的时候,参数并不能像上面这样用一个计数器随便变量替代,而是必须是真实有效的数据,这个时候我们可以从数据库里先把数据拿出来,整理成csv格式,由Jmeter去读取.

    三、报告详解

    看下我们第一次的的压测结果,

    本次的接口完全是通过mysql来提供数据的,没有做任何的缓存,性能是非常之差,我们详细解释下各个参数的意思.

    样本:就是本次我们一共进行了多少次接口请求

    平均值:就是接口的平均响应时间,单位是ms

    中位数:就是接口响应时间的中位数,单位是ms

    90%百分数:就是90%的接口响应时间不超过这个数值,单位是ms

    95%百分数:就是95%的接口响应时间不超过这个数值,单位是ms

    99%百分数:就是99%的接口响应时间不超过这个数值,单位是ms

    最小值:接口的最小响应时间,单位是ms

    最大值:接口的最大响应时间,单位是ms

    异常:接口异常的百分比

    吞吐量:单位时间(1s)的接口请求次数

    接收:收到的千字节每秒的吞吐量测试

    发送:发送的千字节每秒的吞吐量测试

    接下来我们做三次性能优化

    ①:加缓存Redis

    ②:加缓存Redis且用protobuf序列化

    ③:加缓存EhCache

    这样我们可以通过压测工具一步步测试我们程序优化的效果,最终达到我们要求的压测指标。 

    四、如何在服务器上跑压力测试

    上述我们是在windows的界面开发下进行的压力测试,一般在公司里,我们会搭建专门的施压服务器,用于进行压力测试。

    首先把我们的服务部署到服务器上去:

    在压测服务器上需要安装jdk,配置Jmeter环境,上传apache-jmeter-5.4.tgz到服务器解压

    Jmeter命令参数解释:

     利用GUI工具编写测试计划,生成一个jmx文件(包括监控、聚合报告、tps、服务器资源监控等),上传到服务器。

    执行JMeter文件:在Linux服务器中找到文件所在的目录,然后开始执行

    jmeter -n -t /opt/test/获取学生信息.jmx -l result.jtl -e -o /opt/test/result

    执行完毕后将jtl文件下载到本地,利用GUI工具可以查看压测结果。

    Jmeter多机压测(分布式压测),在有些时候,我们的压测服务器单机产生的请求量不一定能够满足压测要求,这个时候我们需要开多台压测服务器协调。

    分别在两台机器上安装jmeter软件,一台是控制机,一台是Agent节点

    在Agent节点的jmeter.properties上修改 server.rmi.ssl.disable=true

    启动Agent:jmeter-server -Djava.rmi.server.hostname=<Ip>

    修改控制机配置jmeter.properties remote_hosts=121.36.136.241:1099

    启动控制机: jmeter-server

    执行压测脚本,多一个参数 -r 表示全部agent启动并参与测试

    jmeter -n -t /opt/test/获取学生信息.jmx -r -l result.jtl -e -o /opt/test/result

    在Agent节点上也会打印2行日志 

    五、Jmeter安装插件拓展功能

    Jmeter作为一个开源工具,相比一些商用工具(如LoadRunner),在功能上就稍显不足,好在Jmeter可以集成第三方插件来丰富功能。

    插件下载地址:​​​​​​jmeter-plugins.org

    下载plugins-manager.jar文件后,将其放入jmeter的安装目录的lib/ext目录下,重启jmeter

    重启后,我们为压测脚本添加监听器可以用来监测接口响应时间和tps的变化情况:

     在做压测的时候,我们除了关心接口性能的指标数据外,还有一点非常重要,我们也要时刻关注服务器资源的消耗情况,试想一下,如果服务器费了九牛二虎之力跑出了我们需要的性能指标,但是服务器消耗过大,随时都有宕机的风险,这样的压测结果没有任何意义,但是我们怎么监测服务器性能呢?如下:

    我们需要安装PerfMon插件

     

    同时我们在服务器也需要开启一个Agent

    总结:

    压力测试只能帮我们发现程序中的性能问题,但是它并不能帮我们解决问题,我们程序员除了要掌握压测的能力外,更重要的是优化程序的能力,包括但不限于数据库连接池调优、引入缓存、序列化调优、JVM调优、容器调优等,同时我们还需要不断监控服务器的CPU、内存、磁盘等硬件情况,我们要达到的目的是服务器能够在维持硬件资源正常工作的状态下,让我们的接口性能达到最优。

    本次用到的软件:

    链接:https://pan.baidu.com/s/1YajIPjQgqrtBNEtAvs-58A 
    提取码:xdjl

    展开全文
  • 软件压力测试

    2015-02-02 11:23:37
    软件压力测试报告,学生必备!!软件测试老师肯定要留的作业之一,下载它,满足你的愿望。让你成为老师的宠儿
  • 华东交大的课程设计,交大软件计算机专业的学生基本不用修改就能直接使用。(还有需要的可以加我QQ:515715202)
  • Jmeter对Web Socket进行压力测试

    千次阅读 2019-02-19 14:44:20
    测试方案: a) 用一台负载机分别模拟,无学生、50个学生、100个学生、200个学生同时上课的情况。如果结果可以接受,继续增加上课学生。 b) 用一台客户机分别登录老师和单个真实学生,查看课堂情况。 c) ...

    一.简单介绍一下Sample Socket组件的界面

    1、WebServer
    (1)Server Name or IP:WebSocket发送的目标服务器的地址或者名称
    (2)Port Number:WebSocker服务器监听的端口号。(一般是HTTP 80端口,可以通过WireShark数据包得到)

    2、Timeout: 
    (1)Connection – 发送一个连接请求后,Jmeter等待连接完成的最长时间,单位是毫秒。
    (2)Response - 对响应消息的最大等待时间。

    3、WebSocket Request
    (1)Implementation – 只支持RFC6455(v13) ,WebSocket协议标准的最新版。
    (2)Protocol – 有ws与wss之分,  ws前缀是WebSocket连接的辨别标识,wss前缀是WebSocket安全连接的辨别标识。根据自己的实际情况填写
    (3)Streaming Connection – 选择这个TCP session要不要保持,如果勾上标识连接会一直存在,如果没有勾上,那么得到第一次响应后该链接就会被关闭。(*重要!不勾选的话,请求成功就会断开连接)
    (4)Request data:请求内容,填入将要发送的请求,要跟开发沟通好,这个是什么格式的消息。

    (5)Connection Id: 连接ID (*重要!就是通过这个来区分不同会话)

    4.WebSocket Response
    (1)Response Pattern – 采样器将等待含有该标识的消息并继续通信(或者直到timeout,该连接关闭)
    (2)Close Connection Pattern – 如果服务器返回的消息含有这样的字符,就结束会话。
    (3)Message Backlog – 保留返回结果的数量(如果希望只保留最新一条,可以设定为1)

     

    测试方案:

    a) 用一台负载机分别模拟,无学生、50个学生、100个学生、200个学生同时上课的情况。如果结果可以接受,继续增加上课学生。

    b) 用一台客户机分别登录老师和单个真实学生,查看课堂情况。

    c) 监控服务器资源占用情况。(本次教程不涉及)

    实现方案:

    a) Jmeter 发起Web Socket请求,最基本连接请求外,额外学生发言一次,并且每25秒循环请求一次保持长连接。 

    1.根据刚才学到的用Chrome可以看到WebSocket会话方法。我获取学生进入房间WS接口最基本的3个东西 

    1) 协议&地址&端口&query参数组成的URL

    2) Headers头信息

    2.新建一个Jmeter脚本,添加HTTP信息头管理器和WebSocket Sampler。然后填入基本信息。

    1) 头信息可以直接从Chrome全复制下来一键粘进HTTP信息头管理器。

    2) URL填入这几个地方。 

    3.其实这个时候应该就可以正确建立连接了。但是我们希望学生上课,要传达这个信息给服务器。就需要传入请求参数。 
    其实不难发现,进入教室就是红框里的三个绿色箭头,也就是说我们要上课,至少要请求3次。之后的绿色箭头判断下来请求内容无实际意义,作用之后会提到。

    4.将WebSocket Sampler 复制3个,分别把Chrome里三次请求的请求内容填进去。这样一个基本的ws脚本就构成了。

    5.之前Chrome中有一些红框外的绿箭头,之前介绍过WebSocket有一个超时机制,我们可以看到这些请求之间都恰巧间隔25秒(这里截图没截好)。我们需要模拟这个动作,来保证长连接不会断开。也就是就算什么都不做,也每隔25秒请求一次。 

    6.脚本设计如下

    a) 线程组设定线程数50、100、200,循环为1。
    b) 用户参数前置处理器 生成区分不同学生的id、name、Connection Id。注意勾选"每次迭代更新一次"。
    c) 1 2 3 是进入教室的基本请求
    d) 4 是学生发言(手动浏览器发言一次,获取到发言操作的接口请求内容)
    e) 循环控制器勾选永远。
    f) 5 在循环控制器下的循环,并设定定时器,间隔25秒。
     

    7.最终实现目标 

     

    展开全文
  • 转载 Jmeter对Web Socket进行压力测试 —— 200人直播课实战经验 ...
  • 使用Jmeter对服务器的压力测试

    千次阅读 2018-05-03 21:01:28
    大家好,我是IT修真院北京分院第32期学员,一枚正直善良的程序员,今天给大家分享一下如何用Jmeter对自己的服务器进行有效压测,让服务器效果最优化:一、JmeterJmeter是一个全部代码由java组成的测试软件,主要用来...
  • 在具有多个相互关联变量的复杂系统(例如金融市场)中,系统性风险可通过描述系统变量之间... 为应用于财务压力测试的多元学生 t 和多元正态分布开发了具体示例。 美国股票市场的一个例子说明了这种方法的实际潜力。
  • 简单谈一谈压力测试

    千次阅读 2018-01-11 00:06:52
    最近,在做API的压力测试,趟了不少坑,然后呢,简要记录一下。 压测前需要准备的一些事 拿到API文档不要立马上手,先基准测试,就是执行一次接口测试,至少要压这个接口,要先熟悉一下他的参数,参数的含义,...
  • 背景:在临床牙科和医学专业学生中,文献报道有负性压力症状,其中可能包括焦虑或抑郁的迹象。 但是,关于这些学生的现有心理前提的研究很少,这可能使他们更容易受到负面压力症状的影响。 目的:目的是探讨牙科和...
  • siege是一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 下载安装 环境:centos 6.4 私有服务器 官网地址:...
  • 怎样正确做 Web 应用的压力测试

    千次阅读 2015-12-11 10:44:19
    关于工具的选择 不少答案都提到了测试工具,但其实工具并不是最重要的,那么多的测试工具,HP的是...有人提到了Apache的AB,AB不是说不行的,但既然问题是"正确的压力测试",那么还是选择一个那些容易支撑起复
  • loadrunner11压力测试

    2018-06-12 18:20:55
    4、击OK之后,会弹出网址,之后创建Action,每进...二、 修改脚本1、脚本参数化将登录的用户名密码进行动态化,右键“Replace with a Parameter”,将其替换为一个参数,后期进行压力测试时,会有很多用户,可以进...
  • 华东交大软件学院的软件测试课程设计,华东交大的学生有福了。(附:兄弟我有很多这样的课程设计和实验报告,有需要的可以加我QQ:515715202)
  • 华东交大的课程设计,交大软件计算机专业的学生基本不用修改就能直接使用。(还有需要的可以加我QQ:515715202)
  • 当我们完成一个服务的应用时,要把接口暴露给别人使用,学生时期写过的应用可能最多老师和同学会用用,但实际工作中我们必须去考虑服务器并发的压力,比如说某一个接口1S内是否能承受住1W的并发压力,这一方面取决于...
  • 本文共6034个字,预计阅读时间需要16分钟。...1.2在线测评系统测试目的与测试任务 1.3受众 2功能分析 2.1待测软件功能 2.2 功能分解 3. 测试方法与测试策略 3.1 测试流程 3.2 测试方法综览 3.3 测试整体策...
  • 为此,在大学课程评估系统中引入持续评估使我们能够利用一种独特的准实验设置,其中相同的学生在整个课程中接受类似的测试,但承受不同程度的压力。 利用两种数据结构——即汇集横截面和面板数据——我们发现男学生...
  • 用户体验对学生来说不是很好,对我来说也有点压力,所以我切换到使用和(几乎)相同的 Javascript 测试构建的桌面应用程序。 拥有桌面应用程序允许所有测试在本地运行,并且效率更高。 用例 学生将从 GitHub 分叉...
  • 关于全国大学生软件测试大赛总结与反思 文章目录一、软件测试大赛简介二、可能出现的错误三、个人总结与反思四、谈谈软件测试工程师1、测试的三个阶段2、就业优势3、就业要求4、参考薪资 一、软件测试大赛简介  ...
  • 35岁就算过了测试黄金期了吗?
  • 软件测试工程师工作总结

    万次阅读 多人点赞 2018-04-18 21:02:05
     因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知...
  • 有一定的编程基础或者有一定的软件测试基础,其实学习软件测试周期会更加短。
  • 2021年软件测试面试题大全

    万次阅读 多人点赞 2020-11-30 15:16:59
    简述测试流程: 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例(等价类划分法、边界值分析法等)。 5、用例评审...
  • 软件测试工程师经典面试题

    万次阅读 多人点赞 2018-10-27 23:55:52
      软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux...
  • 在两种测试中,PA水平低的青少年与PA水平中度的青少年相比,情绪压力也显着较高:体位测试(“高水平” RRI OR = 1.87,p = 0.001)和“思维”测试(“高水平” RRI OR = 1.87,p <0.001;“低水平” OR = 1.88...
  • 开发学生成绩管理系统可使学院教职工减轻工作压力, 比较系 统的对教务、教学上的各项服务和信息进行管理, 同时,可以减少劳动力的使用, 家快查询速度、较强管理。本论文叙述了现在高校学生成绩管理的现状以及 ...
  • 测试用例编写方案

    千次阅读 2018-05-28 08:32:25
    测试用例的设计方法(全)等价类划分方法:一.方法简介1.定义 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,193
精华内容 9,677
关键字:

学生压力测试