• 接口测试面试题


    什么是接口测试?
     
    接口测试是测试系统组件间接口的一种测试。
    接口测试的重点是检查数据的交换,传递的正确性,以及接口间逻辑依赖关系。
    提交接口测试的重要意义:实现开发期并行测试,减少页面层测试的深度,缩短整个项目的测试周期。
     
    我们测试的接口属于哪一类?
     
    服务器接口(基于HTTP协议的接口)
    大多数人常说的接口测试,通常是 B/S架构,由客户端(浏览器)调用,或模拟客户端(浏览器)调用服务器提供的请求接口,由服务器完成处理并返回一个应答的过程。
    例如:Webservice接口,http接口,jms接口,hessian接口。
     
    HTTP接口传递数据最常用的方式:
    Get方式是从服务器上获取数据;在做数据查询时,建议用Get方式;如:商品信息接口、搜索接口、博客访客接口等。
    Post方式是向服务器传送数据 ;在做数据添加、修改或删除时,建议用Post方式 ;如:微博图片上传图片接口、登录注册接口等。
     
    接口请求流程

     

     
    接口请求参数分析
    *请求参数必填项、可选项
    *输入合法、非法参数
    *请求参数边界值
     
    接口响应结果:
    *对异常请求的处理
    *请求头的处理
    *存在业务关联
    *涉及数据库交互的
    *结构
    *节点值有效性
    *列表结构排序
     
     
    HTTP接口测试的类型
    1.GET请求无参数
    2.GET请求有参数
    3.POST请求
     
    接口测试用例编写要点:
    * 测试每个参数类型不合法的情况(类型不合法容易遗漏NULL型)
    * 测试每个参数取值范围不合法的情况
    * 测试参数为空的情况
    * 测试参数前后台定义的一致性
    * 测试每个参数的上下限(这里容易出致命的BUG,如果程序处理不当,可能导致崩溃)
    * 如果两个请求有严格的先后顺序,需要测试调转顺序的情况
     
    接口测试的步骤:
    1)请求接口
    2)获取返回值
    3)断言:判断实际结果是否与预期相同
     
    (测试的时候不可以开代理抓包软件)
    接口测试实例讲解(PostMan的使用)
    postman使用
    (chrome中安装jsonview)
    (chrome中安装postman)
    一个借口请求需要设置:请求URL,请求方法,请求头,请求参数
    说明:GET请求的参数在URL链接上,所以,GET请求的请求头与请求参数如在接口文档中无特别声明时,可以不填。
     
    1.填写请求、参数
    2.Tests中添加断言
    3.Save as保存
    4.创建collection(聚集、集合)
    5.左侧点击collection-RUN
    6.点击start test 右侧可以看到运行结果
    7.命令行运行集合(先保存,后安装newman)
     
     
    1)GET无参数:
    只需验证状态码是否为200
    或者返回值中的某个特定字段的校验errno: 0
    以众筹产品详细列表为列
    http://api.zhongchou.cn/deal/list?v=1
     
    在chrome中查看返回的样例
     
    先在postman中教如何进行接口测试(界面化工具的操作)
    再用Python实现代码进行接口测试(类和对象的讲解,安装request包)
     
    2)GET有参数:
    验证返回的状态码为200
    验证默认值count==20
    验证默认值start==0
    验证书的数量==20
    验证books中包含关键字“小王子”
     
    以豆瓣开发者api为例
    搜索图书:
    接口地址:GET http://api.douban.com/v2/book/search
    参数 意义 备注
    q 查询关键字 q和tag必填其一
    tag 查询的tag q和tag必填其一
    start 取结果的offset 默认为0
    count 取结果的条数 默认为20,最大为100
     
    脚本:
    //验证返回数据中包含关键字
     
    tests["验证response中包含 小王子"] = responseBody.has("小王子");
     
     
    //验证返回的状态码是否为200
    tests["Status code is 200"] = responseCode.code === 200;
     
     
    //验证start=0&count=20
     
    //验证start=0
     
    var jsonData = JSON.parse(responseBody);
     
    var b_count = jsonData.count; //定义变量b_count
     
    tests["start"] = jsonData.start === 20;
     
     
    //验证count=20
    tests["count"] = jsonData.count === 20;
     
     
    //验证返回的图书列表长度为默认值
     
    tests["图书列表长度为默认值20"] = jsonData.count === 20;
     
    tests["图书列表长度为默认值为b_count"] = jsonData.count === b_count;
     
    GET的参数是个字符串,POST的参数要封装到HTTP请求头里,是字典
     
    3)POST请求
    验证
     
    以登录为例
    http://api.zhongchou.cn/user/login?v=1'
    参数:
    'identity':'18311338905','password':'a000000'
     
    requests包使用说明中文文档:
    http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
    http://blog.csdn.net/shanzhizi/article/details/50903748
  • 相关阅读:
    Python数据库操作、Python DB API、数据库连接对象connection、数据库游标对象cursor
    django开发Web集成 DjangoUeditor 富文本编辑器
    使用requests库获取GitHub网站API接口数据,显示到pygal柱形图
    使用matplotlib.plot绘制随机点位图
    使用plot绘制随机漫步点位图
    使用maplotlib曲线图,显示每天最低、最高温的曲线图
    使用random随机100次,统计骰子每个点子出现次数的pygal图表
    使用pygal.maps.world库读取JSON格式文件,显示世界人口地图图示
    使用pygal.maps.world库读取CSV、JSON格式文件,显示世界GDP地图图示
    生产者,消费者 多线程
  • 原文地址:https://www.cnblogs.com/cheng10/p/9805379.html
Copyright © 2020-2023  润新知