一、为何进行接口测试
确保接口数据无误,后端功能无误,绕过前端接口的异常处理能力
二、接口文档
要进行接口测试,需要接口开发人员提供相应接口文档,拿到接口文档,我们可以看到接口的请求url,接口的协议类型(本文讨论http/https),接口的请求方式,请求参数,返回参数,json返回示例;
请求包括:1、请求行 2、请求头部(headers) 3、空行 4、请求数据(body)
请求方式:
http1.0包括get、post、head
http1.1包括get、post、head、put、delete、trace、options、connect
请求传参方式(Content/Type):post的body常见数据类型有五种
1、application/json:{"key1":"value1","key2":"value2"}
2、application/x-www-form-urlencoded:key1 =xxx&key2=ooo&key3=false
3、multipart/form-data:表单格式
4、text/xml(很少用了)
<!--?xml version="1.0"?-->
<methodcall>
<methodname>examples.getStateName</methodname>
5、文件下载:Content-Type: octets/stream
响应报文(Response):状态行、消息报头、空行和响应正文
![8736fa4ce1c70323ba3ae47b6bea1c42.png](https://i-blog.csdnimg.cn/blog_migrate/641aa7fb53384bd5d76d95968d567f88.jpeg)
三、接口测试用例
注意:接口测试相当于无界面的功能测试,设计用例思路跟功能测试一样
1、输入参数测试:确保接口对任意类型的输入做了相应的处理:a、输入参数合法;b、输入参数不合法;c、输入参数为空;d、输入参数为null;e、输入参数超长;可以把每个参数当作功能测试的输入框设计用例,主要用到有效等价和无效等价;
2、接口功能:接口是否满足了提供的功能,相当于正常情况下的测试;
3、异常场景:请求超时、快速连续点击、请求失败情况(任务型)、审批流程等;
4、用例规范
接口名称、测试点、接口地址、前置条件、请求方式、请求headers、请求params、请求参数body、检查点、预期结果、实际结果;ps:根据实际项目接口来设计,如有的接口传参同时具有params和body;有的接口请求方式既可以post也可以get;有的传参既可以传key=value也可以传json;
![79dbed6b5ba8165bbbc08a9f5d8f33db.png](https://i-blog.csdnimg.cn/blog_migrate/f5ebc641480f4c3892f92d0402b2dd3e.png)
![fc56cb23e045573c6d99ba53fa0b562f.png](https://i-blog.csdnimg.cn/blog_migrate/20bb21d8880f2be16bd9879009110732.png)
管理用例可以用禅道或其他管理平台,excel也可以,根据实际。
5、专项测试
流量分析:fiddler抓到的请求body字段,单位bytes,顺便一提,1 KB = 1024 Bytes,1 MB = 1024 KB;
弱网测试:fiddle工具-rules-Performance-Simulate Modem Speeds,当然可以自己定义upload和downloaded速度,rules-Customize rules。
(此处未做深入)
四、执行测试
执行测试就得选用一个测试接口的工具,当然常用的postman和fiddle都可以,看个人习惯,我比较喜欢fiddle,可能有人说fiddle不是抓包用的吗,它的功能其实很多,Composer可以做接口测试,很方便,抓到的请求直接拖进来就可以再次调用,还可以打断点做mock,mock请求和返回,有些需要调第三方接口测试的情况很方便
以fiddler的Composer为例:
按照设计的用例-选择请求方式-url地址-http版本-请求头-请求body-Execute-查看Response是否符合预期结果,不符合就走Bug流程
五、bug提交
会话保存:
1、保存为txt,方便我们提bug,保存后,直接复制往bug管理平台上粘贴;
2、保存为saz,方便研发复现bug,可直接将此文件直接拖入fiddle,就可以重现当时接口请求的所有数据;
小案例分享:修改密码接口,前端做了密码复杂度限制,直接调接口用简单的新密码也可修改成功。
ps:
后续会更新测试开发文章:当前测试圈很火的pytest框架实现自动化测试和django相关内容,想了解的留个关注吧!系统学习,不断积累,总结。大神修炼之路,没有退路可言!