持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
接口测试工具的弱点
到此,你可能觉得接口测试必备的技能已经学完,但可惜还缺少非常重要的一环———接口数据不可控。而 这一环节不是接口工具可以完成的。
下面谈谈什么是接口数据不可控。例个例子,你要调用一个查询接口。然后,查询出来10条数据。这数 据哪儿来的?是在数据库里放着的。对吧!?
当然,一般接口也需要参数,根据参数的不同来返回不同的结果,比如在调用用户信息查询接口时,需 要传参:
username="zhai
angsan",查询出来的结果就是zhangsan的个人信息(姓名、年龄、性别、身高、ID等)。 那么,前提条件是在数据库必须有zhangsan的个人信息才行,不然,当你在调用这个查询接口,并且传 参
username="zhangsan
an"时返回的结果一定是null。
当然,我们可以在编写接口用例时,手动向数据库添加了一条zhangsan的个人信息,或者通过系统所提 供的功能添加了zhangsan的个人信息。并且接口断言的数据就是zhangsan的,如接口返回的zhangsan的身高 是175,那断言的结果就是身高是否为175,是用例成功,否则用例失败。
但后来你在测试删除功能的时候,不小心又把zhangsan的信息给删除了;或者你在测试修改功能的时候 把 zhangsan的身高改成了183,这个时候你的接口用例依然调用的是 zhangsan,而返回结果却变成了null,或 者返回的身高变成了183。从而导致用例断言失败,你能说这个查询接口出问题了么?显然不是,是因为测试 的数据不存导致了用例失败。这就是接口数据的不可控。
因为被测试的接口数据总是容易被修改的,为了使接口测试稳定,测试的数据也必须交由接口测试来控 制。控制的方式也很简单,假设在调用某查询接口时传 userna
ame="zha
angsan”,那么在执行该接口测试之前, 先把zhangsan的个人信息插入到数据库中,而这一步操作必须由编程语言操作数据库来完成。这是所有接口 测试工具所不具备的。
接口自动化测试设计
既然讨论了自动化接口测试工具的不足,接下来介绍一下接口自动化项目的实现。
一般的接口工具测试过程:
1、接口工具调用被测系统的接口(传参username="zhangsan")
2、系统的接口根据入参(username="zhangsan")向正式数据库中进行查询。
3、系统的接口得到查询结果,并将结果返回。
4、人工检查接口返回数据是否正确(部分工具也提供了结果的断言,如Jmeter)
我们设计的接口自动化测试项目,为了避免接口测试对数据的污染,我们需要单独创建测试库。并将系 统指向测试库,执行过程如下:
1、接口测试项目先向测试数据库中插入测试数据(zhangsan的个人信息)
2、调用被测系统接口(传参username="zhangsan")
3、系统的接口根据入参(username="zhangsan")向测试数据库中进行查询并得到zhangsan个人信息
4、系统的接口得到查询结果,并将结果返回。
5、通过单元测试框架断言接口返回的数据(zhangsan的个人信息)