• 1
  • 0
分享

3. WebSocket并发实战

3.1 整理并发需求

为了便于理解,咱们的并发需求及指标,还是参照小鱼的这篇《接口并发性能测试开发之:从测试方案设计、测试策略、指标分析到代码编写,这一篇全搞定。》。

需求内容:

中午和晚上是订餐的高峰期,除了订单的并发量很大以外,对老板的并发量也很大,而老板的订单通知则是通过WebSocket来发送,获取订单通知之前需要建立WebSocket连接,所以需要通过并发来测试客户端对服务器的WebSocket并发连接成功率。

3.2 提取性能指标

性能指标提取

这个场景,仅仅测试WebSocket并发连接成功率即可。

以客户端向服务器发送100个并发的WebSocket请求为例,需要提取并发指标如下:

    · 连接数

    · 成功连接数

    · 成功连接率

    · 性能指标分析

连接数就是自定义的并发,因为请求简单而且执行比较快,所以直接用100个线程并发,不需要循环次数。

连接成功数就是获取WebSocket的响应数,

连接成功率只需要把成功连接数/总连接数。

3.3 代码编写

还是老规矩,直接上代码,在代码中分析

# -*- coding:utf-8 -*-
# @Time   : 2022-05-20
# @Author : carl_DJ

import threading
import websocket

#初始化几个全局变量
#定义并发数100
THREAD_NUM = 100
#自定义全局变量每个线程需要循环的数量,1
ONE_WORKER_NUM = 1
#设定最开始的成功连接数
success_count = 0

#编写WebSocket连接请求
def websockettest():
	
	global success_count
	#定义url
	url = "ws://www.xxx.com/serv/push?chann = delivery"
	
    #使用create_connection方法发送url连接
	ws = websocket.create_connetcion(url)
	
	#连接完成之后通过send()方法发送请求内容
	ws.send("{'type':'heartbeat','username':'13600001111','message':'ok'}")
	
	#将返回的信息赋值给new_masc
	msg = ws.recv()
	#连接成功就+1,获取成功次数
	success_count = success_count + 1

'''嵌套指定循环次数的order()函数'''

def  working():
	global ONE_WORKER_NUM
	for i in range(0,ONE_WORKER_NUM):
		websockettest()

 '''自定义main()函数,来执行线程'''
def t():
    #自定义一个空的数组,用来存放线程组
	Threads = []
	#设置循环次数
	for i in range(THREAD_NUM):
		#将working()函数存放到线程中
        t = threading.Thread(target=working,name="T"+ str(i))
         #设定守护线程
        t.setDaemon(True)
        threads.append(t)
     
    #启动循环次数
	for  t in Threads():
		t.start()
    ##设置阻塞线程
	for t in Threads:
        t.join()
    print ("main thread end")

if __name__ == "__main__":
	t()
	# 结果写入文件
	result = open("E:\Progect\resut.txt","a")
	#总连接次数
	result.write("发起连接数:" + str(THREAD_NUM) + "\n" )
	#成功连接次数
	result.write("成功连接数:" + str(success_count) + "\n" )
	#成功链接率
	result.write("成功链接率:" + str(success_count/THREAD_NUM *100) + "%" + "\n" )
	result.close()	
  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • “新冷战”蔓延到生产力工具著名 UI 设计软件 Figma 宣布制裁大疆!近日,网上流传一份 Figma 发送给大疆的内部邮件。其中写道:“我们了解到,大疆在美国制裁名单中被点名。因此根据美国法律,Figma 无法再为您提供对我们软件的访问权限,我们已经开始冻结您的 Figma 账户。我们将在未来两周内通过电子邮件或其他方式将您的文件提供给您。此外,我们不会删除您的文件。如果大疆最终从受制裁方列表中删除,您的访问权限可能会恢复。”好在,在 Figma 封号的消息传出后,国内包括蓝湖 MasterGo 等被称为“中国 Figma ”的设计工具团队宣布,可以进行 Figma 文件导入,并且支持...
            13 12 1217
            分享
          •   测试分析与设计  测试是一门精细的学科,新人同学很容易有的误区是认为做测试主要就是编写测试用例和执行测试用例,进阶能力是写自动化脚本或研发工具。而实际上,测试人员最难修炼的是测试分析能力,测试分析能力是衡量一位测试同学是否专业的分水岭。分析除了使用方法,还需要有对业务、经验、质量的深度理解。自动化或工具实际是对分析和设计结果的一种实现,分析和设计的有效会决定实现的效果。  分析与设计过程  测试分析要从业务需求最开始就要介入,流程覆盖业务整个生命周期。在做分析的过程要想清楚,整体后续的设计怎么做。  测试分析可总结为四步:  ·建模 - 输出业务/系统流程 (分析:业务流程 - 系统流程)...
            0 0 1393
            分享
          • 你可以写一篇出众的软件测试简历并且这篇测试用例能够为你带来面试电话么?如果没有,请继续阅读。我敢肯定,读完这篇文章,你将能够写出一个完美的杀手级别的软件测试和质量保证的简历,这将为你带来面试电话。你的简历是在求职过程中迈出的第一步。这是一个机会,来宣传自己,证明你是这个职位的最佳人选。得到一个面试电话取决于你如何展示你技能的简历,从这篇文章中你将学到:你有多少时间去打动雇主?如何从你的简历留下很好的第一印象?写一个杀手级软件测试的简历:如何写项目细节测试/质量的简历吗?很多人问“我该怎么把职业间隙贯穿在我的职业生涯?“在简历的第一页的工作成就有哪些提及你学习到的相关模块软件测试认证和培训怎样去...
            0 0 1317
            分享
          •   市面上的项目管理工具很多,这里仅列出这些工具的信息,以帮助大家在选择工具时 作一个对比。并无推荐JIRA 或者不推荐什么工具的区分。  本人使用JIRA来管理项目,也是基于公司管理层决定的。虽然整个文章都是基于JIRA的应用,但是不管是哪种工具,万变不离其宗,都可以用类似的方式来实现各种项目管理需求。但为了避免踩雷,大家还是要选择热门一些的工具。  1 JIRA:  简介:JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。JIRA中配置灵活、功能全面、部署简单、扩展丰富。  JIR...
            0 0 988
            分享
          • 今天主要介绍接口用例设计的几大法宝,为了统一接口用例编写的规范,提高可维护性,我们需要列出一些准则,方便大家共同遵守,主要是一些考虑范围和一些编写规范。很多自动化平台或者自动化技术更多的是解决行得通问题,但是具体接口怎么测,怎么测试充分,怎么不遗漏,其实也是有章法可循的,而且并不比手工测试简单,接下来,我们一起看看吧:接口测试用例设计主要考虑哪些呢?1、原则:功能测试、接口测试同样重要;2、API是第三方平台接入的入口,但最终落地仍然体现在功能上,故覆盖相关业务及异常场景。这类场景,通过APP或界面是无法覆盖到的,所以接口测试用例这块一定要覆盖全。3、接口健壮性用例设计范围:消息节点必填项缺失...
            6 4 7534
            分享
      • 51testing软件测试圈微信