热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jmeter如何实现参数化用户,并且管理Cookie

谈到性能测试,经常需要对用户进行参数化,jemter工具参数化经常使用的一个元件就是CSV数据文件设置首先建议大家创建一个规范的目录保

谈到性能测试,经常需要对用户进行参数化,jemter工具参数化经常使用的一个元件就是CSV数据文件设置

  • 首先建议大家创建一个规范的目录保存文件
目录 作用
data 保存参数
result 保存结果
script 保存脚本
  • 如下所示
    Jmeter如何实现参数化用户,并且管理COOKIE
  • 设置目录的好处,就是文件路径可以使用相对路径,这样可以跨系统(window、linux),跨平台而不用修改路径
    1. 首先要在用户变量中设置一个变量path,值为../data/,..的意思代表当前目录往上一个目录
      Jmeter如何实现参数化用户,并且管理COOKIE
    2. 然后在data目录新增一个.csv格式的文件,建议新增一个txt格式的文本文件,然后改成.csv格式文件
      Jmeter如何实现参数化用户,并且管理COOKIE
      • 变量如下
        Jmeter如何实现参数化用户,并且管理COOKIE
    3. 添加CSV元件,线程右键》添加》配置元件》CSV数据文件设置
      Jmeter如何实现参数化用户,并且管理COOKIE
      • 配置如下:
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 调用参数
        Jmeter如何实现参数化用户,并且管理COOKIE
    4.  默认系统都是需要登录,才能操作其它接口,所以需要添加一个HTTP COOKIE 管理器,默认COOKIE管理器是关闭的,需要修改jmeter配置文件jmeter.properties,该文件在jmeter\bin\路径下,找到#COOKIEManager.save.COOKIEs=false 修改为COOKIEManager.save.COOKIEs=true,保存配置文件重启jmeter
      Jmeter如何实现参数化用户,并且管理COOKIE
      • 点击测试计划右键》添加》配置元件》HTTP COOKIE 管理器
        Jmeter如何实现参数化用户,并且管理COOKIE
      • COOKIE管理器的作用就是帮你自动管理系统登陆获取的COOKIE,其它接口需要用到的时候自动调用
      • COOKIE管理器的作用域解释:不同的线程COOKIE不会互相调用,COOKIE管理器如果放置在测试计划下,则线程下的所有接口都可以自动调用COOKIE,如果放置在事物管理器下,则只有该管理器下的接口才会调用到,其他和该事物平级的接口则不会被调用
    5. 分析实际案例一,本案例添加了COOKIE管理器,实际请求还是报错
      • 响应结果提示:status":400,"error":"Bad Request",Missing COOKIE 'timeZone' for method parameter of type in
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 查询请求使用的COOKIE管理器,管理器调用的COOKIE参数
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 由于COOKIE管理器不是万能的,如果遇到报错,就要实际结合接口请求进行分析,手动进行查询调试,手动的COOKIE如下:
        Jmeter如何实现参数化用户,并且管理COOKIE
      • COOKIE值详细如下:
        sid=c4d29545-3409-4117-81be-a6562a6f8c2f; mip_curr_lang=zh-CN; user_info=%7B%22id%22%3A%22u_10212853605%22%2C%22parentId%22%3A%22d_9743384365%22%2C%22name%22%3A%22%E8%B0%A2%E7%94%B0%22%2C%22fdLangType%22%3A%22zh-CN%22%2C%22fdPositionName%22%3A%22%E6%B5%8B%E8%AF%95%E5%B7%A5%E7%A8%8B%E5%B8%88%22%2C%22fdEmail%22%3A%22tian2.xie%40meicloud.com%22%2C%22loginName%22%3A%22xietian1%22%2C%22fdEnglishName%22%3A%22%22%2C%22fdTimeZone%22%3A%22Asia%2FShanghai%22%2C%22fdEmployeeNumber%22%3A%2220215183%22%2C%22fdDepartmentEnglishName%22%3A%22Midea%20Holding%20Group_Midea%20Group_Shenzhen%20Midea%20Cloud%20and%20Intelligent%20Technology%20LTD_Midea%20Cloud%20Department_MQ%20Technology%20PlatformDevops%20Platform%20Research%20and%20Development%22%2C%22fdDepartmentName%22%3A%22%E7%BE%8E%E7%9A%84%E7%BE%8E%E7%9A%84%E9%9B%86%E5%9B%A2%E6%B7%B1%E5%9C%B3%E7%BE%8E%E4%BA%91%E6%99%BA%E6%95%B0%E7%A7%91%E6%8A%80%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8%E7%BE%8E%E4%BF%A1%E4%BA%91%E4%BA%8B%E4%B8%9A%E9%83%A8_%E7%BE%8E%E6%93%8E%E6%8A%80%E6%9C%AF%E5%B9%B3%E5%8F%B0_Devops%20%E5%B9%B3%E5%8F%B0%E4%BA%A7%E5%93%81%E7%A0%94%E5%8F%91%22%2C%22locale%22%3A%22zh_CN%22%2C%22fdHierarchyId%22%3A%22x526x1460494117x7509007994x7659897777x9732499571x9743384365x10212853605x%22%2C%22shiroid%22%3Anull%7D; OAM_LANG_PREF=v1.0~cHJlZmVycmVkTGFuZ3VhZ2U9emh+ZGVmYXVsdExhbmd1YWdlTWFya2VyPWZhbHNl; oam_locale=zh; mip_lang=zh; mideatest_sso_token=eOXIT3uFt6jYti%2FYd3JLHcaL2nd0xvXmBE7enJMQJsWkLsvg9Uu4FA%3D%3D; MAS_TGC_UAT=eyJhbGciOiJIUzUxMiJ9.WlhsS05tRllRV2xQYVVwRlVsVlphVXhEU21oaVIyTnBUMmxLYTJGWVNXbE1RMHBzWW0xTmFVOXBTa0pOVkVrMFVUQktSRXhWYUZSTmFsVXlTVzR3TGk1SVlrdFdURWhrYlZCa2JVcHVTRXQwUmsxcGRrSjNMbGR4VldGYVdrczBiVTFSYm5CM2MydDViWEl3VGxGVVVGaDVWWEJXTTJWa2FsRnFSV05wVUc5MVgxWlZSek5pUVZwdVUyNUNObFpFZVdGWVZubDZiV2hvVXpGdWF6UnllbnB5WVRkSWJYUklXVVZtTm1KRFJrZzBabWszVmpOZldXaGZjMDlYYVhOM112c3RkVXhMZFhsa1JETmxORzVMVUdwbGEzZFJWRUZzUTIxbFFUVjNZMVpaTVdWRVJsaFhPWEZOVTJWa2NrYzVRVlZJUXpOR1UyWjJNWFJRZEdwUmVXRk1PV3d3ZWtoUVpsQk9iRmxYYW5GeGFYVmlPREZNYVU1bVVGOXBWbm80ZHpJeWMxTkNOVEJtTW5CcVgxUlJVbEpyTW1oQlVuRmlUWEF6YzFoMVlYaG1RMUJMVnpOd01sZFJaRGRhUmxKMlltOW1TM1p4VDBndU1YTkdMVE5aVEdoUExXTTJTREZuY0ZkTVJtdEtkdz09.XI9uAFyY6XWSA7CRcmMwGuNvIcAig6wF5wlVF4o9qE8F6jKEfq6OHoFqZg40jO87RyAW3fivDzrNZkJmo9AIyw; ObSSOCOOKIE=DoSRzdMFH1aFXJM9XH5G×××wj0dG2BDxv01ftZRX1PLroXfL6MPfHpSHXHCn0gJBn195Iccn4CvlQ0cydDfUfaMGTKM5%2FQzzWBuGownsQIPc9WTP4rZNbbIOsZ2tGcg%2Btl5FK7QqmsKRYg9PknRhklmgUKeq%2FWamFaPJgwuyhGQ%2BKqxCut%2FwpnpBtccz0McnG%2BsP5h4pyPNaydZQK3eXpQk1xFZdBZuuXsbuhKADTW1HEJtk8NzAbXhWN4ZLCJHrqzvsjSgLmCph3X1O3gBZrenzuA4yVizUSUo5RFobUz5v%2FWvp3zKkp%2FkfM%2FT%2FzrPTGUGkwduxXugMIM%2BNAyIXnY%2FokAg3sokv345cjMcgnGHY%3D; language=zh-CN; timeZOne=8
      • 结合响应报错,原来是调用的COOKIE丢失了; language=zh-CN; timeZOne=8,导致请求失败,见红色字体
      • 因为自动COOKIE管理器会报错,所以需要把COOKIE管理器放置到登录事物管理器下,这样COOKIE管理器就不会影响到查询请求设置的COOKIE,设置如下
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 由于ObSSOCOOKIE变量是COOKIE管理器进行管理的,所以可以打开debug sample查看该变量在COOKIE中的命名,如下
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 经过调试,只需要在查询请求下的表头,增加一个COOKIE变量,值为ObSSOCOOKIE=${COOKIE_ObSSOCOOKIE}; language=zh-CN; timeZOne=
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 修改完成之后,进行调试,调试成功
        Jmeter如何实现参数化用户,并且管理COOKIE
    6. 分析实际案例二
      • 响应结果提示:,"status":400,"error":"Bad Request","exception":"org.springframework.web.bind.ServletRequestBindingException","message":"Missing COOKIE 'language' for method parameter of type String"
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 提交请求使用的COOKIE管理器,管理器调用的COOKIE参数
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 结合响应报错,原来是调用的COOKIE丢失了: language=zh-CN,导致请求失败,可以在HTTP COOKIE管理器中维护该字段,如下:
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 调试结果,提交成功
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 此时,每个该域名下的请求,COOKIE参数都会被添加language=zh-CN进去,如下所示:
        Jmeter如何实现参数化用户,并且管理COOKIE
        Jmeter如何实现参数化用户,并且管理COOKIE
    7. 分析实际案例三,1线程循环3次,首先登录,然后提交请求,系统只成功了第一笔提交数据,第2、3笔提交失败
      Jmeter如何实现参数化用户,并且管理COOKIE
      Jmeter如何实现参数化用户,并且管理COOKIE
      • 原因分析:由于使用了HTTP COOKIE管理器,但是却没勾选每次反复清除COOKIEs,导致第2、3次循环使用的COOKIE依然是第一次循环获取的COOKIE值,只需要勾选即可,如下:
        Jmeter如何实现参数化用户,并且管理COOKIE
      • 修改完成之后,进行调试,调试成功
        Jmeter如何实现参数化用户,并且管理COOKIE

此时,不管多个用户还是单个用户,都可以实现并发查询


   如果文章对你有帮助,可以在右下角点击关注功能,欢迎转发、拍砖,本人会持续推出与测试有关的文章,与大家分享测试技术,每一篇原创文章都是用心编写,杜绝抄袭复制,微信公众号与本平台文章同步,方便大家查阅


QQ技术交流群:加群请输入验证信息51CTO
              Jmeter如何实现参数化用户,并且管理COOKIE


微信二维码关注公众号:

            Jmeter如何实现参数化用户,并且管理COOKIE


关注之后,回复资源下载,即可获取本人共享的各种资源下载地址

Jmeter如何实现参数化用户,并且管理COOKIE


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
  • C语言自带的快排和二分查找
    Author🚹:CofCaiEmail✉️:cai.dongjunnexuslink.cnQQ😙:1664866311personalPage&#x ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • Android获取app应用程序大小的方法
    Android获取app应用程序大小的方法-Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。 ... [详细]
  • 本文介绍了解决mysql 5.1启动问题的方法,通过修改my.ini文件中的相关配置,包括innodb_data_home_dir和skip-innodb等,可以解决启动问题。同时还介绍了如何调整内存池来存储metadata信息。 ... [详细]
author-avatar
mobiledu2502854877
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有