A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

付三虎

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© 付三虎 初级黑马   /  2018-3-12 20:01  /  3980 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口测试的关注点梳理:

接口:Http协议接口、Service层接口。

0、正常入参,验证接口返回节点和字段;

1、接口有分页功能时,页码与页数的异常值测试

第一页有数据,翻到第二页:
(1)第二页的数据是否和第一页重复; pageNo,pageSize;

每页默认多少条数据:
(2)第二页接口有没有报错,页码(一页返回多少个数据)传一个很大的值(一般是100之内,可以改为1000或者String类型的等特殊符号,看接口会不会报错 ); 同样的页数也是。

从第三页访问第四页,然后再返回第二页:

(3)分页查询,传入key-value反复请求缓存,验证缓存是否错乱。

2、数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致;

比如对一篇帖子发表评论,看一下post请求的接口是否返回了刚刚评论的数据(若没有,是不是缓存、没有写入数据库导致的)
再比如,一个POST请求的接口处理完成,验证数据DAO处理是否完成,检验数据库表存储!

3、每个接口入参的默认值、异常类型、非空校验

(1)这个参数有没有默认值,如果没有默认值是怎么处理的;
(2) 这个参数必须输入值,若不输值或输入其他值,接口会怎么返回
(3)接口报错,服务端和客户端都需要做容错

4、接口返回的图片地址能否打开,图片尺寸是否符合需求;

        (1)文件服务器的状态,接口返回错误码。上传图片是否验证图片格式等信息

5、当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求;

比如一个接口返回节点的列表,总数的字段 和 需求是否一致。

6、所有列表页接口必须考虑排序值;

如按时间排序,是否按时间排序。
若按照其它字段排序,排序规则。
或接口请求排序字段是否有要求

7、所有功能都要考虑兼容旧版本;

接口有改动(增加、减少字段)需要兼容老版本
接口业务处理,在不同版本影响分析

8、入参支持多个值时,要考虑传的值的个数多的情况下,接口会不会报错;

某一个车型对比的接口,若只需要传9个id,那么当传10个、100个,接口会不会报错,期望接口有个友好的提示

9、输出参数类型。

是int型,不能返回string类型。

接口测试常用工具

1、切换host工具:SwithHosts
2、抓包: Charles  fiddler
3、调试工具:firebug等
4、辅助测试工具:Postman、HttpRequest、火狐JsonHandle
5、性能测试工具:LoadRunner、Apache  JMeter


常用的HTTP接口知识

HTTP接口

-URL:http://host[:port][abs_path][parameter]
-Header:头信息,包含了报文的描述信息
-Method:请求方法
-Request Parameter:请求参数
-Response Status:响应状态码(成功是200,失败:400以上500以下是客户端导致的错误如404,500以上是服务端导致的错误)

如调用登录接口

https://baidu.com:8888/path_url?name=qa&pwd=test

接口使用场景

1、系统与系统之间的调用;
2、上层服务对下层服务的调用;
3、系统内,服务与服务之间的调用。

接口测试的case设计
1、接口参数
2、接口功能
3、代码逻辑(业务处理)
4、异常情况

1、请求参数的必填项和可选项
2、请求参数的合法输入和非法输入;
3、请求参数的边界值;
4、请求参数的异常处理,例如:未带入必填项参数等
5、基于业务场景的考虑,例如:登录态、权限、依赖性等;
6、涉及到DAO层调用的,考虑数据增删改查的正确性。

接口测试举例:

存在的问题:两个接口混在了一起,变成了测试发布朋友圈这个功能。

从接口角度:
1、上传图片及发布朋友圈为两个独立的接口,先分别对两个接口单独做测试;

2、最后再组合起来确认发朋友圈的业务逻辑是否正确

所以用例应该这样设计:

接口测试的实现方式

1、Jmeter
好:图形化界面,支持编程语言的插件,可录制,上手简单;
不好:重用度低,复制粘贴较多,遇到加密协议会跪。
2、Java纯代码(TestNG + OKHttpClient)
好:灵活,设计得好的话重用度高;
不好:需要自己封装一些工具类及代码,数据写在代码中改起来不方便。

3、POSTMAN

{

  "args": {

    "n": "10"

  },

  "headers": {

    "host": "echo.getpostman.com",

    "accept": "*/*",

    "accept-encoding": "gzip, deflate, sdch, br",

    "accept-language": "zh-CN,zh;q=0.8",

    "cache-control": "no-cache",

    "cookie": "foo2=bar; sails.sid=s:dFpLmwkTnw8MUReDNP8ayiwBmf60uNkS.JjvTQjV7K2hJBTkpRwXRpV1CPAoqm+EdXQH5HSi3zv8",

    "postman-token": "bd208b14-5fb9-4795-eea8-a055dc0925e3",

    "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",

    "x-forwarded-port": "443",

    "x-forwarded-proto": "https"

  },

  "url": "https://echo.getpostman.com/stream/10"

}

好用的抓包工具 BurpSuite

强大的功能距离
功能1:筛选某一固定的数据类型,甚至某个文件的扩展名;
如只显示jpg图片请求

Proxy histroy有一个可以用来在视图中隐藏某些内容的功能,以使其更易于分析和你感兴趣的工作内容的显示过滤。 History Table上方的过滤栏描述了当前的显示过滤器。点击过滤器栏打开要编辑的过滤器选项。该过滤器可以基于以下属性进行配置:

功能2:拦截所有jpg图片请求,模拟获取图片超时场景。

总结


4 个回复

倒序浏览
消灭零回复!
回复 使用道具 举报
非常实用,已收藏
回复 使用道具 举报
三虎哥总结的精辟,生动,让我茅塞顿开,感觉我的接口的一些难点瞬间疏通,社会社会!!!!!
  •                    _ooOoo_
  •                   o8888888o
  •                   88" . "88
  •                   (| -_- |)
  •                   O\  =  /O
  •                ____/`---'\____
  •              .'  \\|     |//  `.
  •             /  \\|||  :  |||//  \
  •            /  _||||| -:- |||||-  \
  •            |   | \\\  -  /// |   |
  •            | \_|  ''\---/''  |   |
  •            \  .-\__  `-`  ___/-. /
  •          ___`. .'  /--.--\  `. . __
  •       ."" '<  `.___\_<|>_/___.'  >'"".
  •      | | :  `- \`.;`\ _ /`;.`/ - ` : | |
  •      \  \ `-.   \_ __\ /__ _/   .-` /  /
  • ======`-.____`-.___\_____/___.-`____.-'======
  •                    `=---='
  • ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  •          佛祖保佑       多多BUG
回复 使用道具 举报
accept-language": "zh-CN,zh;q=0.8",

    "cache-control": "no-cache",

    "cookie": "foo2=bar; sails.sid=s:dFpLmwkTnw8MUReDNP8ayiwBmf60uNkS.JjvTQjV7K2hJBTkpRwXRpV1CPAoqm+EdXQH5HSi3zv8",

    "postman-token": "bd208b14-5fb9-4795-eea8-a055dc0925e3",

    "user-agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",

    "x-forwarded-port": "443",

    "x-forwarded-proto": "https"
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马