接口测试—-下篇,以/note/readnotes接口为例子详细介绍怎么做接口的

接口测试—-前言,接口是怎么来的
接口测试—-中篇,通过django实现一个记事本接口
接口测试—-下篇,以/note/readnotes接口为例子详细介绍怎么做接口的
接口测试—-工具篇,实现接口自动化

那么通过上两篇文章的学习,我们了解接口开发的基本知识,接下来就是进入正文,怎么测试这些接口。

接口测试的流程其实和我们实际功能测试的流程差不多:

需求分析—-用例编写—-执行测试

我们测试人员针对接口拿到的东西,一般是接口文档和需求文档,本篇会以上一篇自己实现的django接口进行一次接口测试,首先从git上面拉项目下来运行(当然前提是你的机器装了mysql并且生成了对应的表):
python manage.py runserver
这样本地的调试服务器就ok了。

接口说明

那么在上一篇我们一共实现了4个接口,为了更详细的说明,我们只拿一个接口来说明怎么测试这个接口的—-/note/readnotes


在上一篇我们粗略写了接口调用文档,我们这里重新编辑一下:
目录:/note/readnotes
请求方式:get方式
参数:header带token(可选),uid(可选)
返回数据示例:
{
“code”: 0,
“data”: [
{
“cid:”: 5,
“content”: “asdasdasd”,
“public”: true
}
]
}

说明:token和uid同时存在,那么uid为优先。两者都不填,那么查询所有公开的数据。只带有token,那么查询自己的所有笔记数据。

好的,上面就是一个接口的接口说明,接下来我们分析并测试

接口文档分析

在拿到文档第一件事,是需要分析文档,在阅读文档我们需要明确一下几个点:
1.这个接口是怎么定义的,是为了拿到什么数据,符合需求吗
2.这个接口的请求参数是什么,参数是可选的还是必选的,是否需要登录,是否需要加密
3.返回数据的结构是怎么样的,成功的标志是什么,失败的标志是什么

带着这些疑问,再阅读,我们得到以下信息:
那么这是一个笔记获取接口,该接口有两个功能,1.获取某个用户或者所有用户公开的笔记内容;2.获取自己的所有笔记。请求参数有两个,token和uid,都是可选的。返回的数据结构是由状态码和内容组成,我们判断的时候需要判断code=0,以及data的回包信息,如果出错,需要判断code和errMsg信息。
这里写图片描述

用例编写和执行测试

在分析了对应的接口文档和需求文档后,就是进行用例的设计,接口测试的用例设计同样离不开接口文档和需求文档,接口一般验证两个要点:
1.参数异常和有效性验证
2.业务逻辑是否符合需求

基于以上的原则,开始设计接口用例并附上执行效果:
1)默认参数不填,获取数据,看是否都是分享public的笔记
这里写图片描述
我们看到返回的public的值都为true,说明都是公开的内容,有时候pulic并不会打出来,我们可以登录数据库执行查询,并作结果比对:
这里写图片描述
和sql语句的查询结果一致,测试通过

2)只填写token,获取数据,查看是否我发布的全部数据都展示出来了
这里写图片描述
同理,查询数据库:
这里写图片描述
Ok,也是正确的,测试通过
3)只填写uid,查询结果
4)都填写,查询结果
5)只填写uid,但是uid不存在
这里写图片描述
6)填写token,但是token不存在
这里写图片描述
7)新注册的用户,执行查询,并校验
这里写图片描述
一共这么多条测试用例。

然后在上面的例子,我们发现我们进行了参数验证和业务逻辑验证,验证点对应这服务器的参数各个参数异常处理和业务逻辑过滤,我们拿第一个用例看下对应的处理代码:

if not uid and not token:
    items = Note.objects.all();
    resp = []
    for item in items:
        if item.public:
            resp.append({"cid:": item.cid, "content": item.content, "public": item.public});
    if resp == []:
        return C_Response(-203, '', 'no content');
    else:
        return C_Response(0,resp)

其实代码处理也比较简单的,这里的处理是不带任何参数的情况,取出数据库所有数据,然后两个if异常判断,没了,其他用例对应的逻辑分支也是差不多的,嗯,不排除我写的接口是最基础的。

总结

好了,怎么测试接口看完这篇文章我想大概都懂了,因为这玩意你理解服务器处理之后确实不是很难,在下一篇我们会介绍怎么吧这些用例做接口自动化。

猜你喜欢

转载自blog.csdn.net/cloud_huan/article/details/77009282