• 13
  • 12
分享
  • Jmeter第一步:登录交易——软件测试圈
  • 曼倩诙谐 2021-05-14 09:59:53 字数 1253 阅读 1919 收藏 12

  在利用Jmeter工具进行性能或自动化测试工作之初,第一步面临的交易想必就是登录。你可以运用控制器录制登录交易的脚本,或是通过自行配置环境、上送正确的用户名和密码完成登录操作,但这就算完成登录交易了么?事实是在继续配置后续交易之后,当你重复执行脚本时会发现,只有登录本身成功了,后续交易却报错。

  产生这样的原因往往是当利用Jmeter首次录制登录交易后,此时有一个叫做token的值便作为固定参数存储在脚本中,而后置交易需依赖这个“令牌”而被系统所识别,而再次登录时,可能会返回不同的token,致使后续交易使用未匹配的token发给服务器,导致交易失败。

  为解决这个问题,不得不分析token参数的产生原理。token就像一张通行证,用于身份识别,当客户端向服务器发起登录请求后,服务器会到数据库中进行匹配,此时服务器会生成一个token返回客户端储存在cookie中,至此通行证到手便可以进行后续操作了。

  所以,当前任务是将服务器接收到登录请求后,提供的动态值形成参数,即token值。然后将该值配置在后续交易的信息头中,便实现了token的自动获取与关联,小编这里总结三种常用方法来解决这类关联需求。

  一、正则表达式

  1.首先在登录交易中添加后置处理器<正则表达式提取器>,当需要提取提取单个字符串如token时,则该表达式为一个合适的正则表达式:name = "token" value = "(.+?)",$1$为对应分组所控制值,相关模板设置等如图所示:

1-1.png

  2.然后在控制器下添加取样器<BeanShell 取样器>,设置token为全局变量,将获取的token变量赋值,脚本如图所示:

1-2.png

  3.将提取的token配置在需要测试的目标交易(此处以查询为例)的信息头管理器中。

1-3.png

  二、Json提取器

  1.登录请求中添加后置处理器<JSON提取器>,以提取json包中的token值,设置token变量为如果所示:

1-4.png

  2.将后置交易(此处以查询为例)的HTTP信息头管理器中的X-token与登录交易的json包中的token做关联,关联格式如图所示:

1-5.png

  3.此时便变成了登录交易获取的token与目标交易的动态关联。

  三、边界值提取器

  1.边界值提取器相对正则表达式简单易懂,根据目标变量的左右边界来控制参数。首先执行登录请求,判断返回的token值,并确定该token的取值范围边界:

1-6.png

  2.然后在登录请求中添加后置处理器<边界提取器>,设置该提取器的左右边界为返回token变量的范围,参数名称既为token,匹配模式置为1,具体设置如果所示:

1-7.png

  至此三种token的获取方法介绍完毕,登录交易也就准备完成了。同时,这三种方法可以应用在更多的场景中,主要用来获取动态参数,并关联在后续脚本中,串联报文和交易。例如新增交易之后的删除交易,此时需要捕捉前置新增的特定数据等情况,具体的应用就是替换token为目标参数即可。


作者:赵士荣   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 首发:https://mp.weixin.qq.com/s/3Wn_zdwTHArHPdlbjNOEOQ同类文章推荐:https://mp.weixin.qq.com/s/nh4c9El9FjJtX4vy8m2ELA 世纪性难题:剪不断、理还乱的开发测试关系二舅火了,《回村三天,二舅治好了我的精神内耗》在朋友圈疯狂转发,看很多测试同事发圈感慨二舅治好了自己的精神内耗,让自己不再纠结那些得不到的东西。想必你也经历过一刷激动、二刷感动、三刷四刷平平无奇的感觉,到现在可能你已经想不起来视频讲了什么。曾经短暂平和的内心是不是又泛起焦虑不安的浪花?二舅治不好你的精神内耗,测试人的精神内耗是二舅...
            1 1 1015
            分享
          •   一、从输入一个网址开始  当我们在浏览器输入一个网址,然后按下回车,接下来浏览器显示了页面。网速好的话这之间可能就一秒,但在这一秒内到底发生了什么?  本文主要内容是试图记录一个完整 Web 请求的详细过程,从用户在浏览器中输入 URL 地址说起,然后浏览器如何找到服务器地址的过程,并发起请求;分析请求在达反向代理服务器内部处理过程;最后到请求在服务器端处理完成后,浏览器渲染响应页面过程。  大致过程如下:  Web请求的工作原理可以简单地归纳为:  1.浏览器通过 DNS 把域名解析成对应的IP地址;  2.根据这个 IP 地址在互联网上找到对应的服务器,建立 Soc...
            0 0 252
            分享
          • 拥抱自动化即使通过在每个阶段手动测试代码以获取质量结果,也可以实现连续测试。尽管如此,测试自动化可以加快错误检测的速度以及作为过程一部分的其他一切。在每个阶段更快的解决意味着更快的软件发布。尽管从手动到自动化的转变不可能一蹴而就。但是,一旦实施,从长远来看,肯定会获得巨大的收益。在持续测试框架内实现自动化不仅仅意味着实施优化的回归测试套件。从单元测试开始,验证功能的代码片段和组件测试。这个端到端自动化通过保持连续性来缩小测试人员和DevOps团队之间的差距,从而解决更快的交付挑战。集成持续测试工具持续测试不仅仅是自动化的游戏,它当然需要一些更强大的工具形式的支持,以使过程更容易、更快、更有效。...
            0 0 764
            分享
          • 作为软件开发从业者,API 调试是必不可少的一项技能,在这方面 Postman 做的非常出色。但是在整个软件开发过程中,API 调试只是其中的一部分,还有很多事情 Postman 无法完成,或者无法高效完成,比如:API 文档定义、API Mock、API 自动化测试等等。Apifox 就是为了解决这个问题而生的。接口管理现状一、常用解决方案使用 Swagger 管理 API 文档使用 Postman 调试 API使用 MockJs 等工具 Mock API 数据使用 JMeter 做 API 自动化测试二、存在的问题1、维护不同工具之间数据一致性非常困难、低效。并且这里不仅仅是工作量的问题,...
            12 11 461
            分享
          • 1. 为什么要做压测什么是压力测试?不断向被测对象施加压力,测试系统在压力情况下的表现。压力测试的目的是什么?测试得出系统的极限性能指标,从而给出合理的承诺值或者容量告警;找出系统的性能瓶颈,对性能做出优化;测试系统在高负载情况下的稳定性;验证系统在过载情况下的限流和降级预案。不做压测会产生什么问题?线上容量评估不准确,流量增加,服务被打挂升级前没做压测,升级后性能出现劣化,可用性降低;无法给出准确的承诺值,导致集群水位过低,资源被浪费或者集群水位过高系统存在稳定性bug;2. 压测方案设计压测环境压测环境可以简单的分为模块级压测和链路级压测,它们的主要特点和区别如下:模块级压测应用场景:比较...
            0 0 1124
            分享
      • 51testing软件测试圈微信