一、背景
我们先看如下电商项目的搜索模块,作为一个专业的测试工程师,你会如何测试?
初级测试:
- 输入商品关键字,例如连衣裙---->查看界面有出现连衣裙的商品结果;
- 输入为空、不存在的商品关键字---->查看界面没有出现结果
思考: 以上的这种测试是充分的吗?答案是 否定的!
非常重要的一点: 在输入存在的商品关键字,例连衣裙,我们一定要验证商品结果的正确性及完整性,而不是只展示商品结果就够了!
那么作为专业测试,对于这里会怎么测呢?
测试思路: 输入符合条件的搜索,搜索结果验证,关注2点:
- 搜索结果完整性验证:查询后台或数据库数据,跟页面展示的数据,数量一致
- 搜索结果正确性验证:查询后台或数据库数据,选择有代表性的第一条、最后一条,跟页面展示的第一条、最后一条,对比一致性
二、功能测试
功能测试操作:
1、输入连衣裙点击搜索,界面总共展示了5条符合要求的商品数据;第1条为“...蕾丝绣花钉珠连衣裙”,最后1条为“连衣裙”
2、查询项目数据库表,编写当前搜索商品的SQL语句;得到sql结果
3、查询数据库表商品数量5条,与界面搜索一致;查询数据库表第1条、最后1条跟界面结果一致。测试通过。
总结: 完成以上模块测试工作,需要具备:
- 了解项目业务,需要清楚当前的数据存储在数据库哪张表。可以通过数据库说明文档或数据字典获取,也可以直接问开发。
- 数据库SQL编写能力,需要清楚当前商品搜索SQL实现,不清楚可问开发。
- 测试思维能力,清楚搜索功能如何测试。
- 数据库操作工具,例如navicat进行查库操作。
三、接口测试
接口测试的思路跟功能测试思路是一致的,如果以上模块需要进行接口测试,首先得先获取对应接口信息,包括接口地址、请求方式、请求头、请求体数据;这部分数据如果没有接口文档参考,可以通过抓包获取。再去实现接口自动化测试。
1、通过F12开发者工具抓取接口信息
2、通过Jmeter测试搜索接口,得到结果
1)将获取到的搜索接口信息,填入到Jmeter工具中,如下:
2)点击运行,得到响应结果,如下:
3、Jmeter获取数据库数据
以上得到搜索接口的实际返回数据,需要通过查库获得的商品数据,去对比一致性,来完成测试。因此Jmeter脚本中需要进行数据库查库操作。
1)添加JDBC Connection Configuration,配置变量名,数据库连接信息,如下:
2)Jmeter工具操作数据库需要自己添加驱动jar包,下载一个,放到jmeter的lib目录下,并在测试计划中导包,如下:
3)添加JBDC Request,填写变量名,输入当前搜索商品的SQL语句
4)点击运行,得到结果如下:
4、接口返回结果 vs 数据库数据 对比一致性
如何通过Jmeter自动判断接口返回商品数据 与 查库的商品数据是一致的,这里通过断言处理!跟功能测试思路一样,从数量,以及取第1条商品数据、最后1条商品数据来做比较。
1)通过sql获取到的数据,定义2个变量来保存
2)在搜索接口下面添加JSON断言,用来自动判断接口返回结果跟数据库查库商品数量一致性
3)在搜索接口下面添加响应断言,用来自动判断查库得到的第1条商品数据、最后1条商品数据是否包含在接口实际返回结果中
4)添加断言结果,点击运行;如上JSON断言、响应断言同时断言成功,则运行结果为绿色,表示测试通过。否则为红色,测试不通过。
若红色,则为断言失败-测试不通过。
四、总结
通过以上的实操案例,不论是用Jmeter去实现接口测试;还是用Python或Java去实现自动化测试,都是基于功能测试思路去实现。测试思维是不变的,是基础也是核心。在追求更高效的工具、代码测试过程中,不要忘记了最为本质的测试思维能力的提升,是非常重要的!
学无止境,行以致远。
欢迎来到testingpai.com!
注册 关于