使用 做签名的post_基础实操|使用jmeter对聊天软件进行接口测试

ab341d1c003828cf7503290bb1357299.png

前言

准备上架一款聊天app,上架之前准备做一些测试工作,模拟用户进入房间,维持心跳,房间送礼,发言等行为(因为用的第三方im以及声网,这些都是基于http的),也不是很懂测试,听老大说过一嘴,可以用jmeter,就尝试了下。

安装

直接去官网下载下载地址下载完成之后直接解压。

c1bcbc9c6fc0dbb0e339cfd53e1f4eac.png

点击这个文件就可以打开了。

使用

默认会有一个测试计划testplan,可以改名也可以不改,我是懒得改。

ee478bed8526f418b8b993a25dc4b709.png

创建一个ThreadGroup

一个线程组其实就可以用来测一个接口了。

bbabb7993d85128097385823415e839a.png

numberofthreads可以定义开多少个线程(模拟的用户数量),Ramp-upPeriod(inseconds):达到指定线程数所需要的时间。举例:线程数设置为50,此处设置为5,那么

每秒启动的线程数 =线程数50/5=10。loopcount循环次数。

319bc73548884bf9d0e66614ecdf92b9.png

创建一个HTTPRequest

线程组定义了策略,而httprequest就是具体执行的方法了。

b0e31e7813d964814e8fba4530aaa13b.png

protocol定义协议,ip定义域名,port指定端口,post这个下拉框指定请求方法,path指定访问路径,encoding指定编码,bodydata因为指定post的body。

46c5168b2c812f65aa8f4fd45811cb1a.png

遇到的问题

  • 不同的用户有不同的token,怎么给不同的用户分配不同的token

  • 设置请求头

  • 接口有签名校验,怎么通过java代码传递签名

  • 加密的jar包怎么引入

通过csv文件

把需要模拟的用户的token放进去

cd9e29c15b78482a50e34b0da05220bd.png

基本上看下配置就知道怎么回事了,filename指定文件位置,encoding指定编码,variablenames变量名(用分隔符区分--基本上csv文件有多少个字段,定义多少个变量)Delimiter分隔符csv文件一般用,,sharemode就是共享模式了allthread可以分配给所有的线程。

8e16b9ef3bc3775b4966a484eeb92509.png

我定义了两个字段,下面我的csv文件。

3a8c262dc65fb2368e3bbdbb6a156f42.png

定义好了变量,我们直接使用${token}的方式就可以获取token了。

设置请求头

28edbcc7ac80eb281f11ea5231fe5e56.png

最重要的info:G={sign}&s={token},这里的${token}就是上面csv文件里分配的token了,sign一会再解释。

8804bda6ceb437eb277073b72374d725.png

加密签名

使用java代码来执行加密操作。

e5a5a23fdf3ec869d15e170a95c678f7.png

下面的script提供了一些全局变量,分别ctx估计是context,var就是变量了,log就是日志。

95852d9e75e2a3598cb7d4c62efcfd10.png
import com.x.x.x.x.x.EncryptUtils;String body="roomId=123456";String token=vars.get("token");String apiKey="abcdef";String info="s="+token+"&t="+client;String key=info+body+apiKey;log.info("key="+key);String sign=EncryptUtils.md5(key);String header="G="+sign+"&"+info;log.info("sign="+header);vars.put("sign",header);

这里就把上面header需要的sign给回填进去了,这样就可以完成验签的工作了,当然我这里写的比较简单。

引入jar包

上面的脚本里面有我们自己写的jar包,需要import进jmeter才能被import。流程如下:

4cb44a3e4092a6aa3b826212baff5536.png

请求结果归档

c1593f7aa91d174f53d62926f74f8ef5.png

定时发送

比如我们的心跳接口是需要client每隔5s访问一次,需要定时发送。

6e74cb41f95d39a27085a0a061fe0b11.png

我这里写的是30s。

bd126bd66dbd15daffe39f3e48bafba1.png

结束语

jmeter有很多功能,我这里只是用来测试接口。

4c39ff9a84156b000c871460f61c9fc0.png

链接:https://juejin.im/post/6869255992992464910

本文为51Testing经授权转载,转载文章所包含的文字来源于作者。如因内容或版权等问题,请联系51Testing进行删除

推荐阅读

点击阅读☞入门必会:小白必看的Jmeter负载测试实例

点击阅读☞JMeter也可以实现自动化测试啦!

点击阅读☞Jmeter压力测试中关于Http的那些事儿

点击阅读☞Jmeter实现接口压测的完整流程,不要再说你不会了!

点击阅读☞现在比任何时候都需要这个接口自动化实例说明!

8396d413a29bf9420e90e76409d75168.gif

800cc49a767a641f23ca17b3d68f794d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring boot配置ip_Spring Cloud 配置中心高可用搭建

本文通过config server连接git仓库来实现配置中心&#xff0c;除了git还可以使用svn或者系统本地目录都行。引入依赖<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artif…

MySQL中主键的选择与磁盘性能

偶然看到了“Fotolog: Scaling the World\s Largest Photo Blogging Community”&#xff0c;才发现很多数据库的优化其实道理都很简单&#xff0c;至高境界是当你面对问题时&#xff0c;是否真正做出了自己的思考&#xff0c;而不仅仅只是经验主义的惯性使然&#xff1a;本文案…

python找钱_python 递归 找零钱

首先回答你的问题 count 1 coins_changeREC(coin_values, change-value)#1.when reached here, one recursion link ends if count < min_count: min_count count #2. update the minimum count of coins 每次走到注释1的地方的时候&#xff0c;对于一个coin_value开始的…

qt 等待线程结束_c – 停止Qt线程:调用exit()或quit()不会停止线程执行

在main()即主线程中创建了一个QThread.将一个worker类移动到新线程.该线程执行worker类的’StartThread’方法.工人线程&#xff1a;//header fileclass Worker : public QObject{Q_OBJECTpublic:Worker(QThread* thread);public slots:void StartThread();void EndThread();pr…

rcnn spp_net hcp

rcnn开创性工作&#xff0c;但是计算时间太长&#xff0c;重复计算太大。 spp_net将重复计算避免了。 hcp是yan shuicheng那边的&#xff0c;是用bing生成regions&#xff0c;然后用normalized cut将这些regions进行聚类&#xff0c;然后将聚类后剩下较小数量的regions进cnn&am…

eslint语法报错解决

今天将之前一个项目加入了eslint&#xff0c;发现很多变报错&#xff0c;但是反复检查自己代码是没有错误的&#xff0c;根据报错信息可知是某些api在eslint语法中使用不规范导致&#xff0c;大概总结如下&#xff1a; 1.setup中接收props 报错&#xff1a;Getting a value f…

MediaRecorder录像怎么旋转呀?

问题描述最近做的项目摄像头是跟手机按90度安装的&#xff0c;用MediaRecorder录像还是按摄像头的方向而不是手机的方向&#xff0c;录出来的是90度旋转的&#xff0c;试了很多方法都不管用。MediaRecorder.setOrientationHint没有效果&#xff0c;在底层AuthorDriver那都没有对…

简述python定义中的五个要点_Python基础知识复习

1.切片操作三个参数的意义&#xff1a;切片是Python序列的重要操作之一&#xff0c;适用于列表、元组、字符串、range对象等类型。切片使用2个冒号分隔的3个数字来完成&#xff0c;第一个数字表示切片开始位置(默认为0)&#xff0c;第二个数字表示切片截止(但不包含)位置(默认为…

matlab畸变校正代码_关于OpenCV中的去畸变

在opencv中&#xff0c;有关图像或像素点&#xff08;角点&#xff09;去畸变的函数有cv::undistort()&#xff0c;cv::getOptimalNewCameraMatrix()&#xff0c;cv::initUndistortRectifyMap()&#xff0c;remap()&#xff0c;cv::undistortPoints()。其中undistort可以直接对…

redis数据库简介、redis下载及安装(win64位)、node操作redis、redis实现短信校验注册接口

redis简介&#xff1a; 1:内存数据库,同时也能够保存数据到磁盘&#xff1b; 2:比其他的内存数据库有着更多的数据类型&#xff1a; 列表,集合,排序集合,哈希表等; 3:主从结构&#xff1a;数据可以备份到从服务器&#xff1b; 4: Redis数据操作速度快; 5:所有的操作都是原…

go func()和 go_Go的泛型真的要来了—如何使用以及它们是怎么工作的

点击上方蓝色“Go语言中文网”关注我们&#xff0c;领全套Go资料&#xff0c;每天学习 Go 语言你没看错&#xff0c;这里讲的就是 Go 中的泛型。只不过还没有正式发布&#xff0c;是基于草案设计的&#xff0c;已经是实现了可运行的版本。所以&#xff0c;泛型到来真的不远了&a…

bios设置_bios怎么设置显存 bios设置显存教程【图文】

有些用户可能会发现打开电脑系统信息窗口显示的内存容量与实际容量不同&#xff0c;例如系统内存显示4G&#xff0c;可用3.73G。那么不可用的那部分内存到哪里去了呢?其实是被集成显卡占用当做显存使用了。下面我们就通过 bios设置显存 来调整占用内存容量的大小&#xff0c;我…

4变形物体_Houdini基础(二)曲线变形物体

设想&#xff1a;先从二维上来看直角坐标系。物体是由x&#xff0c;y两个轴向的数据组成的。少了其中一组数据物体就只能是分布在单一轴向上的点。单独保留物体x、y情况下的点分布情况现在将x、y加起来&#xff0c;可见在三维空间中形成了一个平面。仅有x、y坐标的物体从目前的…

node.js+mysql实现分库分表存查数据:

node.jsmysql实现分库分表&#xff1a; 1.分库分表使用场景&#xff1a; 互联网项目中常用到的关系型数据库&#xff0c;如MySQL&#xff0c;随着用户和业务的增长&#xff0c;传统的单库单表模式难以满足大量的业务数据存储以及查询&#xff0c;单库单表中大量的数据会使写入…

Linux 添加新硬盘

1.识别分区和硬盘 在 /dev/ 目录下找到新的硬盘&#xff0c;sda 为本地硬盘&#xff0c;sda1、sda2.. 为分区&#xff0c;sdb 就是新添加的硬盘&#xff0c;如: [rootwusuyuan ~]# ls -ltr /dev/sd*brw-rw----. 1 root disk 8, 0 11月 14 14:12 /dev/sdabrw-rw----. 1 root di…

mybatis 映射成多个list_SSM:Mybatis架构与原理

MyBatis功能架构设计功能架构讲解&#xff1a;我们把Mybatis的功能架构分为三层&#xff1a;API接口层&#xff1a;提供给外部使用的接口API&#xff0c;开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。数据处理层&…

10无法勾选隐藏的项目_Excel超好用的隐藏操作,不可多得

日常工作中&#xff0c;表格数据的展示与隐藏也是有大学问的&#xff0c;为了表格更加简洁明了、美观大气&#xff0c;实用的隐藏技巧就派上用场了。且听小翼慢慢分享~1、隐藏行列方法1&#xff1a;选中目标区域&#xff0c;右击鼠标选择“隐藏”即可。如图&#xff1a;方法2&a…

python程序题斐波那契数列_Python编程题9--斐波那契数列

题目1 已知一个数列&#xff1a;1、1、2、3、5、8、13、……&#xff0c;其规律为从第3项开始&#xff0c;每一项都等于其前两项的和&#xff0c;这个数列就是斐波那契数列。 请求出符合斐波那契数列规律的第11项。 代码实现--非递归 def fib_show(n): a, b 0, 1 while n >…

cocos2d-x,求世界坐标

老版: http://user.qzone.qq.com/350479720/blog/1384483239 一&#xff0c;求node的世界坐标。因为node的contentSize为0&#xff0c;局部坐标原点与node重合。所以求起来简单。下面方法都对&#xff1a;1&#xff0c;node->getParent()->convertToWorldSpace(node->…

pdf会签_跟我们做流程管理.pdf

跟我们做流程管理跟我们做流程管理——向管理要效益讲师简介陈立云 先生• AMT 高级咨询经理& 专家讲师• 暨南大学管理学院MBA教育中心校外导师• 著有畅销书 《跟我们做流程管理》&#xff0c;得到用户广泛好评• 曾先后在华为技术、美的电器、佳杰科技担任流程管理专家/…