jmeter做接口自动化测试的这些技巧你都掌握了吗

软件测试凡哥 软件测试凡哥     2023-04-17     252

关键词:

前言

JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。

jmeter 这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用这些 jmeter 来做接口自动化测试。

下面我就给大家讲讲

 jmeter 如何做接口自动化测试

如果要你用 jmeter 来做接口自动化测试,你是不是把几乎每一个测试用例,都是用一个取样器来实现的?

相信很多人都是这么想的,也是这么干的。

但是,很遗憾,你这种,是初级入门做法。你能实现所有的测试用例都被执行,但是,你写脚本和维护脚本的时间,可能比你用手工执行所有的测试用例时间还要长,而且还可能长很多。因为,只要开发人员改了接口一个地方,你得从所有取样器中,找出与这个接口相关的所有取样器,然后一一修改,万一有遗漏,哪出现的失败,不是 bug,而是你脚本的问题。所以说,这是入门级的人干的事情。

使用 jmeter 的 CSV 数据文件读取功能

平时写功能测试用例的时候,习惯用 Excel 的同学,可能就会想,我能把自动化测试用例每个信息都写在 Excel 表格中,然后,使用 jmeter 的 CSV 数据文件读取功能,把它读取出来执行,是不是就可以呢?

这种方法,就比前面的方法好了很多,但还是用 Excel 来维护,只是使用 jmeter 来读取,执行就可以了。整体的可维护性要好很多很多,工作量也要少很多。

但是,在真正动手去做的时候,我们又会发现,困难重重。

写过自动化测试用例的同学,应该会有这样的经历,就是做接口测试时,我们通常会先对某个接口的各种参数进行测试,这样,接口地址相同,但是参数不一样,校验的接口也一样。

在做完单个接口之后,我们还会做由多个接口构成的业务测试,这个时候,每个接口地址都不一样,接口请求的方法也可能不一样,最后的校验点,也可能变化,这样的自动化脚本,应该要怎么写呢?

第一个对单接口

编写自动化测试脚本,可能还好实现,因为接口相同,那么他的请求方法肯定相同,虽然,请求头、请求体、校验信息可能不同,但是,至少还有共同点。

第二个

对业务编写自动化测试脚本,那就很难了,因为几乎所有的都可能不同,请求的协议、方法、请求头、请求体,全都可能不同,而且请求头和请求体还可能要有动态值,这个怎么做呢?

万事开头难,只怕要去实践。只要你想好了,真正去动手做了,这很多问题,就不那么难了。

有很多事情,我们可以根据条件判断,和循环控制等逻辑控制器,就可以实现的。

靠我一篇文章,就把它全部写出来,这是不现实的,所以,我今天,主要讲一个,被很多同学问到,难倒了一大片好汉的问题。

看到这个问题,你想到什么方法?

如果你在 jmeter 中,每个接口写一个取样器,这个问题很好解决,直接使用参数引用就可以解决,但是,这个同学的做法是把测试用例写在 CSV 文件中,然后使用 jmeter 去读取 CSV 文件,执行测试用例,如何来实现动态参数呢?

肯定,有的同学已经想到了,使用变量引用,在 CSV 中,按照 jmeter 的写法,写引用变量。

好了,给大家一个看一个参考:

这个 CSV 文件中,有两个不同的接口,说明是做的业务场景自动化测试,第一个接口,是注册,那么每次注册的账户肯定不能相同,如果相同了,那么第二次肯定失败,所以,就使用了随机函数,让注册的账户自动生成。第二个接口是登录,当然,可以用固定账户登录,但是,我们在全面进行注册,最好还是用前面注册的账户来登录,这样更加真实,body 中使用了变量引用,显然,这是用到了关联。

我们用 jmeter 写个脚本,来运行下,看能否成功

从脚本来运行情况来看,我们可以取到名称,地址,和请求体,但是,因为请求体在 CSV 中写了 jmeter 函数,结果读取出来运行时,还是原样运行,并没有对请求题中的函数进行执行。

怎么办呢?

很多人,就卡在这了,不知道怎么办了。

其实,我们想一下,现在是内容读取出来了,但是内容是原样进行请求,没有对内容中的函数进行执行,现在的问题,只需要解决 body 中的函数,能被运行就可以了。

我们再想下,在 jmeter 中,有哪些可以运行函数的方法?jexl3 函数可以,groovy 函数可以。

jexl3 函数,是要运行一段代码,返回代码结果,我们的 body 是 JSON 格式,显然不能直接运行,要想运行,还得写 Java 代码调用 JSON 运行才可以,非常复杂。

groovy 函数,是要运行一个表达式,显然,也不行。

那还有没有其他的函数呢?

eval 函数,这个函数,返回的是字符串表达式运行的结果。

此时,我们修改下我们 jmeter 中取样器的请求体

看,运行结果,函数被执行了,注册的账号动态变化了。

接下来,我们就把第一个 2 条用例,使用了关联,也写出来。

现在,我们已经实现,在 jmeter 中,使用一个取样器执行任务 2 各个不同接口,并且动态参数值的自动化运行了。

现在,我们再把断言加上。

注意: 断言中,如果有中文,就要特别注意文件编码

现在,我们再加大难度,在 CSV 文件中写个 GET 接口。

我们发现,多个接口请求方法不一样,jmeter 肯定不能用 1 个取样器了, get 请求没有 body 参数,但是,请求头要添加一个 Token 参数。

是不是一下懵圈了,不知道怎么动了?看懂下面的视频,你就知道怎么做了。

在取样器的前面增加一个条件判断,判断是请求方法,根据请求方法,执行 POST 取样器或 GET 取样器

然后,把循环次数设置为 CSV 文件条数一致,其他的地方,应该就比较容易理解了。

看最后,多条测试用例,只用 2 取样器就搞定了。以后,改动 CSV 文件,可能都不用动 jmeter 脚本,增加测试用例,改下循环控制器数量就可以了。

注意:这篇文章的技术,只适合在自动化中,不能用这个脚本进行性能测试

结语

这篇帖子到这里就结束了,当然,这还不是最完美的,里面还有诸多不足。给想用 jmeter 做接口自动化测试的同学开了个头,更多的,还需要同学们自己动手,最后,希望看这篇帖子的朋友能够有所收获,也欢迎同学们,在文章后面留言讨论和我交流。

python接口自动化测试框架(工具篇)--接口测试工具jmeter

...装JMeter接口测试案例快速创建JMeter接口测试计划扩展接口自动化测试性能自动化测试前言相比使用postman做接口测试,作为测试人员,熟练使用jmeter做接口测试已经是必备技能,这可以从各大招聘测试岗的JD中得到印证,它不仅仅... 查看详情

jmeter做http测试怎么设置并发数

...口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。二、接口自动化适用场景:目前设计的自动化接口测试案例有两个运行场景:  1.测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直... 查看详情

jmeter接口自动化

...五,生成测试报告导言:之前我发过一篇jmeter做自动化的文章,因为那时候是刚刚写文章,所以就导致文章写的不太好,这次我将再重新发布一版超详细的jmeter数据驱动做自动化的文章。按照我的步骤走,... 查看详情

python自动化测试-jmeter做接口测试实际案例分享

 本文主要针对http接口进行测试,使用Jmeter工具实现。  Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,笔者使用Jmeter工具从对Http接口的测试进行入手。本节主要介绍如... 查看详情

opc集成的五大要素,你都掌握了吗?

相信在处理工业项目集成问题的时候,自动化集成供应商真正需要的不是那些华丽的宣传语,而是提供真正的通信数据集成实力。任何自动化集成的供应商都希望能够消除中间的层层障碍,从而实现真正的信息集成互通。那么我... 查看详情

《jmeter接口自动化与性能实战-飞天小子.pdf》

  Jmeter作为开源测试工具,以其轻便,功能齐全的优点,正越来越受到企业的重视。作为纯java的工具,它的扩展性无比强大,既可以做功能测试,也可以做性能测试;既支持接口层面的测试,也支持webdriver驱动浏览器做ui测试... 查看详情

jmeter常用功能(性能方向)

...轻量、功能强大,支持很多种协议,除了测功能,还能做自动化和性能测试;  据某机构的调查,性能并发工具中,jmeter市场占有率已经50%+,超过了老大哥loadrunner;这么一款如此优秀的工具,对测试而言,是必须掌握的;... 查看详情

使用jmeter做接口验证测试

参考技术A说明:最近在做老系统的接口自动化,老系统的接口欠缺维护;我一步步梳理清楚业务主流程,然后对主流程接口在jmeter上进行验证(顺便做下单接口的并发,下期讲),接口流程跑通后,就可以直接快速编写接口自... 查看详情

python必备基础:这些numpy的神操作你都掌握了吗?微交易支付通道申请微信支付接口对接支付宝支付通道搭建微盘网银扫码快捷h5支付

导读:NumPy是Python的基础,更是数据科学的通用语言。本文简单介绍NumPy模块的两个基本对象ndarray、ufunc,介绍ndarray对象的几种生成方法及如何存取其元素、如何操作矩阵或多维数组、如何进行数据合并与展平等。最后说明通用... 查看详情

ant+jmeter+jenkins接口自动化测试实战

    项目中需要做接口自动化测试,于是就去做实验,做实验要从搭建测试环境开始。在学习的过程中肯定会遇到不同的问题,于是就用了两天的时间做了一个简单的接口自动化环境,中间也遇到一些问题,现在把... 查看详情

jmeter实现接口测试

...做接口测试的流程,主要针对的是功能测试。暂不涉及到自动化测试和性能测试的内容。一把来说,主要的步骤都大差不差。第一步:通过分析API文档和需求文档提取接口清单。也就是说,接口测试工作人员工作的开始就是从API... 查看详情

jmeter+ant+jenkins接口自动化测试框架

...可以搭建一套WebHTTP接口测试的持续构建环境,实现接口自动化测试,pc系统是W 查看详情

接口自动化测试持续集成--soapui接口测试

接口测试目前笔者掌握的工具有三种:一、python+requests+jenkins,优点:代码实现接口测试,对测试代码书写比较自由等;缺点:需要测试者需要有一定的代码基础;二、jmeter+ant+jenkins,优点:实现接口测试的操作步骤简单;缺点:... 查看详情

如何利用jmeter录制http请求做接口测试

软件质量保障专注测试圈,自动化测试、测试平台开发、测试新技术、大厂测试岗面经分享,可以帮忙内推BATJ等大厂!欢迎加VX沟通交流:ISTE1024今天给大家介绍利用JMeter录制手机APP和PC端webHTTP请求做接口性能测试的方... 查看详情

jmeter接口自动化测试,自定义全局变量

用JMeter做接口测试过程中,可以生成一个自动化接口测试线程,在该线程下添加多个不同的请求,注册接口请求、登录接口请求、充值请求等,单独配置各个接口的参数,可能存在相同参数在不同接口都要改动的情况,那么采用... 查看详情

10分钟学会jmeter接口测试

...是不是得等前后端都完成你才能进行测试,才能进行自动化代码编写。而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码ÿ 查看详情

软件接口测试工具jmeter使用核心详解建议收藏

用Jmeter做接口测试只需要掌握几个核心功能就可以了。并不一定要把它所有的功能都掌握,先掌握核心功能入行,然后再根据工作需要和职业规划来学习更多的内容。这篇文章在前面接口测试框架(测试计划--->线... 查看详情

90%测试猿都想学的jmeter技能,你get吗?

...言jmeter这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用jmeter来做接口自动化测试。你有没有想过呢?下面我就... 查看详情