接口自动化测试设计

415 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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的个人信息插入到数据库中,而这一步操作必须由编程语言操作数据库来完成。这是所有接口 测试工具所不具备的。

接口自动化测试设计

既然讨论了自动化接口测试工具的不足,接下来介绍一下接口自动化项目的实现。

image.png

一般的接口工具测试过程:

1、接口工具调用被测系统的接口(传参username="zhangsan")

2、系统的接口根据入参(username="zhangsan")向正式数据库中进行查询。

3、系统的接口得到查询结果,并将结果返回。

4、人工检查接口返回数据是否正确(部分工具也提供了结果的断言,如Jmeter)

我们设计的接口自动化测试项目,为了避免接口测试对数据的污染,我们需要单独创建测试库。并将系 统指向测试库,执行过程如下:

1、接口测试项目先向测试数据库中插入测试数据(zhangsan的个人信息)

2、调用被测系统接口(传参username="zhangsan")

3、系统的接口根据入参(username="zhangsan")向测试数据库中进行查询并得到zhangsan个人信息

4、系统的接口得到查询结果,并将结果返回。

5、通过单元测试框架断言接口返回的数据(zhangsan的个人信息)