zoukankan      html  css  js  c++  java
  • 接口自动化面试题

    1.能够大致讲一下你们接口自动化框架是怎么搭建的吗?

    好的,我们采用unittest和ddt数据驱动思想搭建测试框架,(对数据excel读取、yaml配置、Requests接口请求、Re参数化、Pymysql数据库效验、日志等模块实现封装),其中,用

    1.Openpyxl来处理excel,存储测试数据(用例数据)

    2.pyyaml来配置文件(configparse,pyyaml)

    1. Pymysql来连接mysql数据库,执行sql数据,进行数据效验

    4.Requests请求库,来向接口发起请求

    5.使用logging模块来创建日志器,记录项目中的日志信息

    6.使用HttpTestRunner来生成HTML测试报告

    7.使用re模块来实现参数化(正则匹配)

    8.使用动态创建属性(类属性)的机制来实现接口之间的依赖  (setattr getattr)

    比如:我们项目中客服指派订单的时候,需要上一个接口订单ID,首先要对上一个接口发送请求,获取订单id,通过实例化对象,创建属性名,获取属性值,从而实现指派订单接口的成功请求。

    分层设计

    为了提升接口自动化测试框架的拓展性、稳定性、完整性,进而提升测试效率,往往会将测试框架工程化,

    整个流程会分为不同的层级,每个层级之间保持相对独立

    cases

    测试执行逻辑层,用于存放所有的测试用例类

    configs

    配置层,用于存放当前框架中的所有配置信息(使用不频繁,修改不频繁的数据)

    datas

    测试数据层,用于存放所有的测试数据,测试参数(可以使用excel,json,yaml,数据库来存储)

    libs

    自定义库文件层,用于存放自定义或者二次开发的库文件

    logs

    日志层,用于保存运行框架过程中产生的所有有效日志信息

    reports

    报告层,用于保存所有的测试报告文件(一般为html报告)

    scripts

    脚本封装层,用于保存所有的操作封装模块(yaml,excel,log.mysql,requests,参数化等)

    run.py

    用例启动文件,使用套件加载用例,批量执行并生成报告

    9.使用Jenkins来实现持续集成

    a.Jenkins如何配置定时任务?

    1.首先构建触发器

    2.勾选Build peroidically

    3.输入框中配置触发时间

    00 12 ** 3  每周三 12点

    比如 我们周三中午的时候运行自动化脚本,发送测试报告

    2.接口自动化的流程?

    a.需求   --需求文档、接口文档

    b.评审

    c.用例

    d.编写自动化脚本

    e.jenkins持续集成--定时执行脚本,生成报告

    f.报告

    g.发送邮件

    h.提bug

    3.你的项目中接口用例有多少?每次大概执行多长时间?

    我们项目有65个接口;大概1200条用例,执行时间大概半个小时

    4.Get和post区别?

    1. get是不安全的,因为在传输过程,数据被放在请求的URL中,

    post的所有操作对用户来说都是不可见的   (安全性)

    2.Get传送的数据量较小,这主要是因为受URL长度限制

    Post传送的数据量较大,一般被默认认为不收限制 (传输量)

    1. get执行效率却比post方法好,get是form提交默认方法 (效率性)

    5.cookie与session的区别

    1. cookie数据存放在客户的浏览器上,session数据放在服务器上

    2. cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session

    3. session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能考虑到轻服务器性能方面,应当使用cookie

    4. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

    5. 所以个人建议:

    将登陆信息等重要信息存放为session

    其他信息如果需要保留,可以放在cookie中

    6.Http和https区别?

    https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。

    7.在接口自动化中,如何让token不失效?

    1.调用登录接口,拿到获取的token

    2.将拿到的token放在header中,调用确认登录接口

    3.确认登录接口调用成功,接口返回信息正常

    8.下个接口请求参数依赖上个接口的返回数据?

    不同的接口封装不同的函数或方法,需要的数据return出来,用一个中间变量a去接收,

    后面的接口传a就可以了

    9.接口测试中依赖登录状态下的接口如何测试?

    本质是:在每次发送请求时需要带上session或cookie才能发送成功,在构建post

    请求时添加必要的session或者cookie

    10.依赖于登录的接口如何处理?

    登录接口依赖token的,可以先登录后,token存到一个yaml或者json或者ini的配置文件里面

    后面所有的请求去拿这个数据就可以全局使用了

    如果是cookies的参数,可以用session自动关联

    11.依赖第三方的接口如何处理?

    这个需要自己去搭建一个Mock服务、模拟接口返回数据

    mock可以用在单元测试过程中,还有一个用途,当前端开发在开发页面的时候,需要服务端提供API接口,此时服务端还没开发完成,或者说没搭建测试环境,这时候前端开发会自己mock一个api服务端,自己给自己提供调用接口的返回数据。

    12.接口产生的垃圾数据如何清理?

    造数据的数据清理,需要python连接数据库,做增删改查操作

    测试用例前置,setUp做数据准备

    后置操作,tearDown做数据清理

    14.不可逆操作,如何处理,比如删除一个订单这种接口如何测试?

    主要靠手工测试造数据,直接在数据库改字段状态。自动化也一样,造数据可以用python连接数据库,做增删改查的操作

    测试用例前置,setUp做数据准备

    后置操作,tearDown做数据清理

    15.你的项目中接口用例有多少?每次大概执行多长时间?

    我们项目有65个接口,大概1200条用例,执行时间大概半小时左右。

    16.接口自动化的参数你是如何实现的?说说你的想法?

    我会用python中Re模块中的sub方法去替换

    17.如何使你的接口自动化测试用例直接跳过前面几条,直接执行第 7 条?

    可以在 Excel 创建一列,指定是否跳过,然后在用例时,过滤掉这些用例

    使用条件判断,通过 case_id==7 来决定是否执行

    18.如何使你的接口自动化脚本,对于同一个请求让同一个用户请求多次?

    在 Excel 中设置相关执行次数的字段,在 ddt 数据驱动时,使用代码来控

    制执行次数。

    params和data区别

     由于get请求无请求体,post请求有请求体

      使用params参数时,默认会把参数附加到url后面,所以发送get请求时应使用params参数

      使用data参数时,参数会存放到请求体中,所以发送post请求时不能使用params,应使用data,除非接口及支持get又支持post,同样get请求也不能使用data参数

    为什么要对requests进行封装?

    1.通过封装,我可以直接把所有的请求参数统一使用字典来传递

    比如,我们接口需要的数据也就是测试数据往往会保存在excel表里面,那么我们取到后是字符串类型,字符串类型是无法作为请求参数传递的,所有我每次都要做数据转换,再传递给接口,为了节省这个过程,我只需要把这个过程封装到我的requests里即可,每次取数据后会自动给我处理

    第二,当我想保持某个状态时,不想每次都初始化一个session对象,那么我可以把它封装到我的reuqests里面,以后直接调用即可

    如何使用Seesion解决接口保持状态?

      初始化Session实例,通过这个实例调用request()方法发送请求

    说说接口测试的流程,介绍一下request有哪些内容?

    1.流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过

    2.request内容:

    封装了各种请求类型,get,post等;

    以关键字参数的方式,封装了各种请求参数,params,data,headers,token等

    封装了响应内容,status_code,json(),cookies,url

    session会话对象,可以跨请求

    作者:arvin_one
    链接:https://www.jianshu.com/p/190d510d8c36
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Android Studio 开发
    Jsp编写的页面如何适应手机浏览器页面
    电影
    Oracle 拆分列为多行 Splitting string into multiple rows in Oracle
    sql server 2008 自动备份
    WINGIDE 激活失败
    python安装 错误 “User installations are disabled via policy on the machine”
    ble编程-外设发送数据到中心
    iOS开发-NSString去掉所有换行及空格
    ios9 字符串与UTF-8 互相转换
  • 原文地址:https://www.cnblogs.com/Uni-Hoang/p/13204631.html
Copyright © 2011-2022 走看看