首先,此文非技术类博文,为思路类的博文,敬请参阅,欢迎共同探讨!

今天在编写 JMeter 接口监控脚本时,遇到了一个问题,在解决问题的时候,思路出现了偏差,导致了自己在解决问题时,绕了弯,浪费了些时间。换句话说,是自己当时解决问题的思路出现了定式思维,没有及时变通,矬了 ^_^。具体的问题场景如下。

日常测试开发工作中,测试脚本对应的场景有很多,其中必不可少的场景就是重要的状态码验证。此时,不同的状态码对应着不同的页面显示,以及后续不同的业务逻辑处理操作,因而测试脚本需要对不同请求对应的请求响应中不同的状态码进行判断,以判断经过之前的操作后状态码的变更是否正确,若正确则可继续执行后续相关的验证操作,否则终止后续相关联的操作,进而发送通知给产品组的相关成员,以及时进行处理。那么如何获取、判断状态码正确与否呢?下面以电商网站中订单状态码为例,进行简单描述我当时解决此问题的思路,步骤如下:

第一种:通过断言直接判断验证码

操作方法:获取订单列表,直接设置响应断言。

此种判断方式,非常的简单,只需在请求响应中设置断言即可。但此判断方法有一个极大的限制条件(订单列表中返回的所有订单状态不允许有相同的状态),否则此种判断方式无法确定要判断订单状态是否正确(若要判定订单的状态不是期望状态,而其他订单的状态却存在了期望状态,则此判断方式错误)。

第二种:订单列表中获取订单状态后通过逻辑控制器等进行判断

操作方法:获取订单列表,通过 正则表达式提取器 获取对应订单的订单状态(通过正则提取器获取状态方法,敬请参阅之前的博文:单参获取、多参获取,多参引用),然后通过 Bean Shell Assertion、BSF Assertion 等方式对订单的状态进行判断,验证是否符合预期,从而通过逻辑控制器控制是否执行后续操作。

此种判断方式稍显复杂,且需要一定的脚本基础,建议各位朋友研究一下,提升一下自己的脚本能力。

第三种:订单列表中获取订单状态后通过断言进行判断

操作方法:通过正则提取器获取订单信息,例如从订单编号开始获取到订单状态之前的字符,然后拼接期望状态后,将拼接的字符串设置为断言即可。例如订单数据信息如下所示:

{"errno":0,"data":{"single_coupon":"","cash_per_month":0,"order_id":"34567890","order_char_id":"1234567890","status":-2,"receiver_tel":"","receiver_addr":"华夏","receiver_mobile":"1234567890","shipping_cost":0,"shop_guide_cost":"0","businessId":2,"dealType":2,"buy_total":3,"order_cost":14700,"coupon_code":"","coupon_amt":0,"pOrderId":"0101234567890","subOrderNum":0,"subOrderIds":[]}}

那么正则提取器对应的正则表达式为:

order_id":"${order_id}","order_char_id":"12${order_id}","status":

正则提取器对应的模板为:$0$

最终获取的订单信息为:order_id":"34567890","order_char_id":"1234567890","status":

断言的信息为(假定此时订单状态为:4):order_id":"34567890","order_char_id":"1234567890","status":4

此种方法与第二种的方法类似,不同之处在于提取域(第二种提取的是单独的一个订单状态,此处取的是订单信息)、判断方式(第二种是通过其他方式进行判断,此处直接使用断言),此种较为简单,推荐。

第四种:通过订单详情数据判断

操作方法:请求对应订单的订单详情,直接设置响应断言(例如:"status":4)进行判断。

此种判断方式,同样简洁,同样只需在请求响应中设置断言即可,而且保证了订单的唯一性,不存在其他订单干扰的情况发生,建议采取此种方式。

PS:解决问题的过程中,也尝试过其他的验证方式,在此不再一一赘述,以上是我自己想到的比较有效的方法,藉此分享给大家。若是有更好的方法,欢迎告知,不胜感激!

至此, JMeter学习-016-思路篇之-山重水复柳暗花明 顺利完结,希望此文能够给初学 JMeter 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

JMeter学习-016-思路篇之-山重水复柳暗花明的更多相关文章

  1. jmeter学习之安装篇(一)

    一.Jmeter简介 Jmeter是Apache组织开发的基于Java开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常被用做接口功能测试和性能测试. Jme ...

  2. JMeter学习-011-JMeter 后置处理器实例之 - 正则表达式提取器(三)多参数获取进阶引用篇

    前两篇文章分表讲述了 后置处理器 - 正则表达式提取器概述及简单实例.多参数获取,相应博文敬请参阅 简单实例.多参数获取. 此文主要讲述如何引用正则表达式提取器获取的数据信息.其实,正则表达式提取器获 ...

  3. JMeter学习-037-JMeter调试工具之四-BeanShell+jmeter.log

    前面三篇文章分别讲述了 HTTP Mirror Server . Debug PostProcessor 和 Debug Samper 的脚本调试实例.此文主要讲述第四种调试方法,通过 BeanShe ...

  4. JMeter学习-036-JMeter调试工具之三---Debug Sampler

    前面两篇文章分别讲述了 HTTP Mirror Server 和 Debug PostProcessor 的脚本调试实例.此文主要讲述第三种调试工具:DebugSampler,其主要是查看JMeter ...

  5. JMeter学习-018-JMeter 配置元件之-HTTP信息头管理器-实现 Cookie 登录

    之前写过一篇通过[HTTP Cookie管理器]实现登录态操作的文章,使用时需要配置每个键值对(如下图所示),相对来讲配置比较繁琐.其实,我们也可通过在[HTTP信息头管理器]添加 Cookie 信息 ...

  6. Java工程师学习指南 完结篇

    Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...

  7. Java工程师学习指南 中级篇

    Java工程师学习指南 中级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站 ...

  8. Java工程师学习指南 初级篇

    Java工程师学习指南 初级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  9. Java工程师学习指南 入门篇

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

随机推荐

  1. UIView 周围出现黑线的解决方法

    myView.clipsToBounds = YES;

  2. 【BZOJ】1082: [SCOI2005]栅栏(二分+dfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1082 题意:n个给出木板,m个给出木板.可以将那m个木板锯成泥想要的长度.问最大能锯成多少个给出的n ...

  3. 【SPOJ】1812. Longest Common Substring II(后缀自动机)

    http://www.spoj.com/problems/LCS2/ 发现了我原来对sam的理解的一个坑233 本题容易看出就是将所有匹配长度记录在状态上然后取min后再对所有状态取max. 但是不要 ...

  4. 【BZOJ】1602: [Usaco2008 Oct]牧场行走(lca)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1602 一开始以为直接暴力最短路,但是n<=1000, q<=1000可能会tle. 显然 ...

  5. C#页面添加提交数据后跳出小弹窗的功能

    很简单,将小弹窗部分写进一个div,利用div的visible属性去控制是否显示,首先默认为false; 当后台程序执行到插入数据完成后,设置session状态值为‘yes’ 判断,当session状 ...

  6. Android由一个activity 间隔5秒自动跳转到另外一个activity

    Android由一个activity 间隔5秒自动跳转到另外一个activity 2013年10月10日18:03:42 //一.写一个定时器 5秒后开启        final Intent lo ...

  7. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  8. 【C语言】07-基本语句和运算

    一.基本语句 C语言的基本语句跟Java中的差不多,所以,这里只是简单地提一下 循环语句(do while.while.for) 条件语句(if .if-else.switch) goto语句 二.基 ...

  9. stringstream 使用方法

    C++中的stringstream是专门用来处理字符串流的,可以按顺序将string或int都拼接起来,而不用把int转换为string格式,使用方法如下: #include <string&g ...

  10. MUI - 手势

    www.bcty365.com/content-146-2389-1.html 配置事件 mui.init({ gestureConfig: { hold: true, //长按屏幕,默认是false ...