zoukankan      html  css  js  c++  java
  • 接口测试面试题

    什么是接口测试?
     
    接口测试是测试系统组件间接口的一种测试。
    接口测试的重点是检查数据的交换,传递的正确性,以及接口间逻辑依赖关系。
    提交接口测试的重要意义:实现开发期并行测试,减少页面层测试的深度,缩短整个项目的测试周期。
     
    我们测试的接口属于哪一类?
     
    服务器接口(基于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
  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/cheng10/p/9805379.html
Copyright © 2011-2022 走看看