• ???? 我是二黑,一个快要秃头的测试人


要成为一名合格的测试工程师,接口测试相关的知识和技能,是不可缺少的。如今,我们随便打开一个大公司的JD,上面基本会要求接口测试经验。

那么,接口测试到底要测些什么?

我相信很多小伙伴跟几年前初入测试行业的我一样,对这个概念十分模糊。我的第一份工作,完全没有接触接口测试,我的第二份工作,又是纯接口测试,并且是没有任何UI界面,完全靠数据、任务驱动的后端接口测试工作。

因此,为了避免小伙伴们走弯路浪费时间,我打算做一个接口测试系列,把一些干货分享给大家。

接口

要说接口,它并不陌生,你天天都会接触它。

你的安卓手机,只能用安卓手机的充电线,不能用苹果手机的充电线——这是硬件接口。

你打开测试奇谭的文章,实际上是请求了文章服务器的接口(简单比喻下),服务器将你点击的文章内容返回给你,供你阅读——这是软件接口。

再举个详细例子:

什么是接口测试?这篇文章让你明白_接口测试
什么是接口?

在美国使用电风扇,电风扇的插头是美标插头,只能插入美标插孔;

在中国使用电风扇,电风扇的插头是中标插头,只能插入中标插孔;

在这个例子中:插孔就是接口。

接口做什么?

它定义了能接收的插头的类型——美标插孔只能接收美标插头,不能接收中标插头。

另一方面,接口作为传输者,会将不同的电流通过对接的方式传给电风扇,以带动电风扇工作。

根据上述例子,我们不难推演出,在软件中的接口和接口的功能。

什么是接口测试?这篇文章让你明白_接口测试_02
用户请求了注册接口,服务会做出处理,向数据库中插入一个新用户;

用户请求了注销接口,服务会做出处理,清除掉数据库中的用户数据。

因此, 当面试官问你什么是接口时,你能说自己不知道吗?

明白了什么是接口,那接口测试,自然简单了。

首先,接口测试属于功能测试。你不要觉得接口测试就很高大上,其实,它仍旧摆脱不了点点点的命运。

拿上面的注册 & 注销例子来说,设计测试用例,正常业务的用例跟功能测试没啥差别。

步骤:A用户(未注册),请求注册接口。期望:注册成功

————————

步骤:A用户(已注册),请求注册接口。 期望:注册失败,给出合理提示,或静默登录

————————

步骤:A用户(未注册),请求注销接口。期望:注册失败,给出合理提示

————————

步骤:A用户(已注册),请求注销接口。 期望:注册成功

但是做接口测试,你还得考虑其他场景:

01 入参出参

你是否发现我上面贴图中的一个细节?
什么是接口测试?这篇文章让你明白_接口测试_03
插头请求时,说了一句"我需要美标",插孔回应"我是美标接口"。

像不像打仗的暗号——“土豆土豆,呼叫红薯”,“我是红薯,土豆请讲”。

因此,你需要这样设计你的用例,

步骤:A用户(未注册),假扮自己是已注册用户(修改入参),请求注销接口。期望:失败,给出合理提示

————————

步骤:A用户(已注册),请求注销接口,系统告诉A注销失败(修改出参)。期望:给出合理提示

02 接口安全

即,不能像上一个场景,随意让用户修改入参请求,要保障业务和系统的安全、保障数据的正确。

一般来说,使用https请求+验签机制(验证码、sign、时间戳、Token等),可以规避这个问题。

步骤:拿乱写的入参请求注册接口。 期望:失败,给出合理提示

————————

步骤:拿乱写的入参请求注销接口。 期望:失败,给出合理提示

03 请求超时场景

即,请求接口,一直没有拿到接口的结果。

步骤:网络不好的情况,A用户(未注册),请求注册接口。期望:超时,给出合理提示

————————

步骤:网络不好的情况,A用户(已注册),请求注销接口。 期望:超时,给出合理提示

04 后端服务异常场景

即,接口后面的服务无法正常使用。

步骤:数据库无法使用的情况,A用户(未注册),请求注册接口。期望:失败,给出合理提示

————————

步骤:数据库无法使用的情况,A用户(已注册),请求注销接口。 期望:失败,给出合理提示

05 并发场景

类似于性能测试。

步骤:多个用户(未注册),同时请求注册接口。期望:都能成功

————————

步骤:多个用户(已注册),同时请求注销接口。 期望:都能成功

上面的内容,我只是做了一个引子,引导你去考虑这些场景。当然,实际工作中要考虑的,远不止这一些,还有分布式场景下的异步、同步任务问题,幂等问题,接口兼容问题,降级问题等等。

太多了……

但是,你也别害怕,这些场景是根据你实际工作情况来的。

比如,分布式场景下的同步、异步等,在金融领域使用较多,需要对此精通的接口测试工程师,如果你不在这个行业,了解它即可,没必要深究。

接口测试工具
postman:接口测试工具。常用必备!

fiddler:抓包工具。常用必备!

(温馨提示,文末滑动栏有相关文章哦)

mock:模拟出参的工具,有很多实现方案;

jemter:性能测试工具,也可以用来做接口测试;

python:requests库,学python绕不开这家伙;

swagger-ui等一些web工程。

……

一如既往,做个总结
01 接口测试是功能测试的一种,原理差不多,只是测试思维不一样;

02 保证业务正常的情况下,多做些接口异常测试,对你有百利而无一害;

03 接口测试工具,初学者建议掌握postman和fiddler即可。