以搜索为例,从功能,到抓取接口,实现 Jmeter 接口自动化思路详解


不论是用工具去实现接口测试;还是用Python或Java去实现自动化测试,都是基于功能测试思路去实现。在追求更高效的工具、代码测试过程中,不要忘记了最为本质的测试思维能力的提升!本篇文章从功能入手,到自动化测试实现,带你一步步领略测试思维的重要性!

一、背景


我们先看如下电商项目的搜索模块,作为一个专业的测试工程师,你会如何测试?


62d3fb285042868aa73ae20b93aa4cf5.jpeg


初级测试:


  • 输入商品关键字,例如连衣裙---->查看界面有出现连衣裙的商品结果;

  • 输入为空、不存在的商品关键字---->查看界面没有出现结果

思考: 以上的这种测试是充分的吗?答案是 否定的!


非常重要的一点: 在输入存在的商品关键字,例连衣裙,我们一定要验证商品结果的正确性及完整性,而不是只展示商品结果就够了!


那么作为专业测试,对于这里会怎么测呢?


测试思路: 输入符合条件的搜索,搜索结果验证,关注2点:


  • 搜索结果完整性验证:查询后台或数据库数据,跟页面展示的数据,数量一致


  • 搜索结果正确性验证:查询后台或数据库数据,选择有代表性的第一条、最后一条,跟页面展示的第一条、最后一条,对比一致性


二、功能测试


功能测试操作:


1、输入连衣裙点击搜索,界面总共展示了5条符合要求的商品数据;第1条为“...蕾丝绣花钉珠连衣裙”,最后1条为“连衣裙”


2、查询项目数据库表,编写当前搜索商品的SQL语句;得到sql结果


82ede6c99248bb4282544546461102be.jpeg


3、查询数据库表商品数量5条,与界面搜索一致;查询数据库表第1条、最后1条跟界面结果一致。测试通过。


总结: 完成以上模块测试工作,需要具备:


  • 了解项目业务,需要清楚当前的数据存储在数据库哪张表。可以通过数据库说明文档或数据字典获取,也可以直接问开发。

  • 数据库SQL编写能力,需要清楚当前商品搜索SQL实现,不清楚可问开发。

  • 测试思维能力,清楚搜索功能如何测试。

  • 数据库操作工具,例如navicat进行查库操作。


三、接口测试


接口测试的思路跟功能测试思路是一致的,如果以上模块需要进行接口测试,首先得先获取对应接口信息,包括接口地址、请求方式、请求头、请求体数据;这部分数据如果没有接口文档参考,可以通过抓包获取。再去实现接口自动化测试。


1、通过F12开发者工具抓取接口信息


eaad1a1aee54d92c7eb3f6a7c95951fe.jpeg


086faedfd83ff4e33ae275c4a7d71b39.jpeg


bf01433be01e73530b94f5b3182519f7.jpeg


2、通过Jmeter测试搜索接口,得到结果


1)将获取到的搜索接口信息,填入到Jmeter工具中,如下:


8de27bc9448b85a38aec25fb7c9c6e02.jpeg


2)点击运行,得到响应结果,如下:


bb3f8b1785f7a81351dd27f70ba19bcf.jpeg


3、Jmeter获取数据库数据


以上得到搜索接口的实际返回数据,需要通过查库获得的商品数据,去对比一致性,来完成测试。因此Jmeter脚本中需要进行数据库查库操作。


1)添加JDBC Connection Configuration,配置变量名,数据库连接信息,如下:


9658f369126252d4d4b811b809365bc2.jpeg


2)Jmeter工具操作数据库需要自己添加驱动jar包,下载一个,放到jmeter的lib目录下,并在测试计划中导包,如下:


ebf56932aa056d030e77d3ed107aedc4.jpeg


3)添加JBDC Request,填写变量名,输入当前搜索商品的SQL语句


ede0ac455bcec6ddbb71d504fc70c5c5.jpeg


4)点击运行,得到结果如下:


ec59fe9c48c275562496212330ca50e7.jpeg


4、接口返回结果 vs 数据库数据 对比一致性


如何通过Jmeter自动判断接口返回商品数据 与 查库的商品数据是一致的,这里通过断言处理!跟功能测试思路一样,从数量,以及取第1条商品数据、最后1条商品数据来做比较。


1)通过sql获取到的数据,定义2个变量来保存


047b76f6859804b5e320796a3c571462.jpeg


2)在搜索接口下面添加JSON断言,用来自动判断接口返回结果跟数据库查库商品数量一致性


1a3ccbfd3da156ddc431c694fe416c50.jpeg


3)在搜索接口下面添加响应断言,用来自动判断查库得到的第1条商品数据、最后1条商品数据是否包含在接口实际返回结果中


31211f049ef8f0c901c0dbad36606b61.jpeg


4)添加断言结果,点击运行;如上JSON断言、响应断言同时断言成功,则运行结果为绿色,表示测试通过。否则为红色,测试不通过。


7eeb8a330822cf450fcbc79ed729d8a4.jpeg


若红色,则为断言失败-测试不通过。


3f6d2cf8267053d9252ff4594461b2da.jpeg


四、总结


通过以上的实操案例,不论是用Jmeter去实现接口测试;还是用Python或Java去实现自动化测试,都是基于功能测试思路去实现。测试思维是不变的,是基础也是核心。在追求更高效的工具、代码测试过程中,不要忘记了最为本质的测试思维能力的提升,是非常重要的!

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值