您的位置:首页 > 编程语言 > Go语言

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

2017-08-09 18:51 369 查看
接口测试—-前言,接口是怎么来的

接口测试—-中篇,通过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异常判断,没了,其他用例对应的逻辑分支也是差不多的,嗯,不排除我写的接口是最基础的。

总结

好了,怎么测试接口看完这篇文章我想大概都懂了,因为这玩意你理解服务器处理之后确实不是很难,在下一篇我们会介绍怎么吧这些用例做接口自动化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django 测试