金融网站框架模板,mixkitcom素材网站,外链工厂,iis网站伪静态网站jmeter 这个工具既可以做接口的功能测试#xff0c;也可以做自动化测试#xff0c;还可以做性能测试#xff0c;其主要用途就是用于性能测试。但是#xff0c;有些公司和个人#xff0c;就想用 jmeter 来做接口自动化测试。
你有没有想过呢#xff1f;
下面我就给大家讲…jmeter 这个工具既可以做接口的功能测试也可以做自动化测试还可以做性能测试其主要用途就是用于性能测试。但是有些公司和个人就想用 jmeter 来做接口自动化测试。
你有没有想过呢
下面我就给大家讲讲用 jmeter 如何做接口自动化测试。 jmeter 与接口自动化测试
如果要你用 jmeter 来做接口自动化测试你是不是把几乎每一个测试用例都是用一个取样器来实现
相信很多人都是这么想的也是这么干的。
但是很遗憾你这种是初级入门做法。你能实现所有的测试用例都被执行但是你写脚本和维护脚本的时间可能比你用手工执行所有的测试用例时间还要长而且还可能长很多。
因为只要开发人员改了接口一个地方你得从所有取样器中找出与这个接口相关的所有取样器然后一一修改万一有遗漏哪出现的失败不是 bug而是你脚本的问题。所以说这是入门级人干的事情。
那有没有更好的办法呢
平时写功能测试用例的时候习惯用 Excel 的同学可能就会想我能把自动化测试用例每个信息都写在 Excel 表格中然后使用 jmeter 的 CSV 数据文件读取功能把它读取出来执行是不是就可以呢
这种方法就比前面的方法好了很多用例还是用 Excel 来维护只是使用 jmeter 来读取执行就可以了。整体的可维护性要好很多很多工作量也要少很多。
但是在真正动手去做的时候我们又会发现困难重重。
写过自动化测试用例的同学应该会有这样的经历就是做接口测试时我们通常会先对某个接口各种参数进行测试这样接口地址相同但是参数不一样校验的接口也一样。
在做完单个接口之后我们还会做由多个接口构成的业务测试这个时候每个接口地址都不一样接口请求的方法也可能不一样最后的校验点也可能变化这样的自动化脚本应该要怎么写呢
第一个对单接口编写自动化测试脚本可能还好实现因为接口相同那么他的请求方法肯定相同虽然请求头、请求体、校验信息可能不同但是至少还有共同点。
而第二个对业务编写自动化测试脚本那就很难了因为几乎所有的都可能不同请求的协议、方法、请求头、请求体全都可能不同而且请求头和请求体还可能要有动态值这个怎么做呢
万事开头难只怕去实践。只要你想好了真正去动手做了这很多问题就不那么难了。
有很多事情我们可以加条件判断和循环控制等逻辑控制器就可以实现的。
靠我一篇文章就把它全部写出来这是不现实的所以今天主要讲一个被很多同学问到难倒了一大片好汉的问题。 看到这个问题你想到什么方法
实操案例 如果你在 jmeter 中每个接口写一个取样器这个问题很好解决直接使用参数引用就可以解决但是这个同学的做法是把测试用例写在 CSV 文件中然后使用 jmeter 去读取 CSV 文件执行测试用例如何来实现动态参数呢
肯定有的同学已经想到了使用变量引用在 CSV 中按照 jmeter 的写法写引用变量。
好了给大家一个看一个参考 这个 CSV 文件中有两个不同的接口说明是做的业务场景自动化测试第一个接口是注册那么每次注册的账户肯定不能相同如果相同了那么第二次肯定失败所以就使用了随机函数让注册的账户自动生成。 第二个接口是登录当然可以用固定账户登录但是我们前面进行注册最好还是用前面注册的账户来登录这样更加真实body 中使用了变量引用显然这是用到了关联。
我们用 jmeter 写个脚本来运行下看能否成功。 从脚本来运行情况来看我们可以取到名称地址和请求体但是因为请求体在 CSV 中写了 jmeter 函数结果读取出来运行时还是原样运行并没有对请求体中的函数进行执行。
怎么办呢
很多人就卡在这了不知道怎么办了。
其实我们想一下现在是内容读取出来了但是内容是原样进行请求没有对内容中的函数进行执行现在的问题只需要解决 body 中的函数能被运行就可以了。
我们再想下在 jmeter 中有哪些可以运行函数的方法jexl3 函数可以groovy 函数可以。
Exl3 函数 jexl3 函数是要运行一段代码返回代码结果我们的 body 是 JSON 格式显然不能直接运行要想运行还得写 Java 代码调用 JSON 运行才可以非常复杂。
groovy 函数是要运行一个表达式显然也不行。
那还有没有其他的函数呢eval 函数这个函数返回的是字符串表达式运行的结果。 此时我们修改下我们 jmeter 中取样器的请求体。 看运行结果函数被执行了注册的账号动态变化了。
接下来我们就把第 2 条用例使用了关联也写出来。 现在我们已经实现在 jmeter 中使用一个取样器执行 2 个不同接口并且动态参数值的自动化运行了。
现在我们再把断言加上。 注意断言中如果有中文就要特别注意文件编码
现在我们再加大难度在 CSV 文件中写个 GET 接口。 我们发现多个接口请求方法不一样jmeter 肯定不能用 1 个取样器了 get 请求没有 body 参数但是请求头要添加一个 Token 参数。
是不是一下楞圈了不知道怎么动了看懂下面的图你就知道怎么做了。 在取样器的前面增加一个条件判断判断是请求方法根据请求方法执行 POST 取样器或 GET 取样器
然后把循环次数设置为 CSV 文件条数一致其他的地方应该就比较容易理解了。
END
看最后多条测试用例只用 2 个取样器就搞定了。以后改动 CSV 文件可能都不用动 jmeter 脚本增加测试用例改下循环控制器数量就可以了。
当然这还不是最完美的里面还有诸多不足。给想用 jmeter 做接口自动化测试的同学开了个头更多的还需要同学们自己动手也欢迎同学们在文章后面留言讨论。
注意这篇文章的技术只适合在自动化中不能用这个脚本进行性能测试。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取