接口测试-面试题

状态码

401 :缺token
403 : 没有权限访问
404:页面不存在
301 :重定向,a重定向到b,a的资源被永久删除。临时跳转到b页面
302:重定向,a重定向到b,a的资源不会删除。永久性的。
502:服务异常

unittest执行失败case重试

1、写装饰器函数,
缺点:每个case前都需要加个装饰器,且case重新执行不能执行setUp()和tearDown()
2、修改unittest框架代码,
在记录执行结果的部分,如果case执行失败,则继续执行;加计数器,记录执行多少次后不再执行;只记录case最后一次执行的结果。

接口自动化如何提高代码覆盖率的?

1、读代码,分析代码逻辑,如果是校验参数的,输入不同的接口参数;如果是处理MQ消息的代码,模拟发送MQ消息,覆盖代码;调用其他端接口的,使用mock。

如何提升自动化通过稳定性?

我先收集失败的case,分析case执行失败的原因,并给出解决方案。对于不好解决的问题,会议上和大家一起讨论。然后将问题和解决方案总结成文档,会议上和大家分享,得到大家的认可后把任务分给大家并约定问题解决时间。之后每周都跟进case优化进度,一个月后,我们的case通过率维持在了95%以上。
case失败的原因:
1、token冲突:多个自动化任务在不同的节点上执行,所有任务使用同一个账号,当有多个任务同时执行时有抢占token的现象,导致case执行失败。
解决方法:是让多个自动化任务在一个节点上执行,当有其他自动化任务要执行时必须先等待其他任务执行完。
2、平台bug:接口响应结果为null时,平台相关方法取不到数据,直接报错。
解决方法:修改平台bug
3、case传参问题:比如要获取某个学生的信息,传参中写了固定的学生id,但是如果数据库中没有学生id是,接口返回空列表,case校验失败。
解决方法:先准备测试数据,调其它接口或者往数据库里插入一条数据。
4、case取值问题:比如接口A要依赖与接口B的,但是接口B可能有时候没有值,case校验失败。
解决方法:用mock方法给A接口返回假数据。考虑case的多种场景,优化case。
5、case域名配置错误:线上域名和测试环境的不匹配。
解决方法:修改域名配置。
6、对平台断言规则不熟,选错断言规则
等等。

接口自动化稳定性提高后的收益

1、组员录制case操作规范化
2、自动化执行结果的可信度提高,用于提测前的,上线前的回归测试
3、推动任务前要得到大家的认可,不可强制推行。

接口自动化框架设计模型

1、分层设计模型
公共方法目录:common
测试用例类模块目录:testcases
测试数据目录:data
测试报告存放目录:reports
配置文件存放目录:conf
日志文件存放目录:logs
项目启动文件:run_test.py
2、数据驱动思想(ddt)
以用例数据来生成测试用例(数据驱动用例生成),有多少条用例数据,生成多少条测试用例
3、page object设计模型

接口测试框架描述

/testcase下定义不同业务的测试用例
/scripts下定义用例组执行方法
/apiform下存放接口请求参数,比如请求的uri、header、host等
/apirequest 下存放接口请求
/testdata下存放请求参数
/config下存放环境变量
/utils下存放公共的方法,比如时间转换、request请求、获取token、连接数据库、发送MQ等等。

开发接口自动化平台的目的

1、降低case编写学习难度
2、提高case录制速度

接口自动化平台的功能描述

1、主要有总览、测试用例管理、任务管理和域名管理三部分。
(1)总览
统计平台case总数、case增量等。
(2)用例管理
新建、编辑、查看、删除、搜索、复制、冒烟等功能
新建用例 通过拖拽组件的方式组合测试场景,也可以自定义组件。可以用的组件如HTTP、DB、assert\mq\redis\轮询等。
(3)任务管理
新建、编辑、查看、删除、搜索、执行等
(4)组件管理
组件是编写case的最基本单位,一个组件的调用是case中的一个步骤
组件和程序语言中的函数类似,可以有入参,也可以有出参
组件分系统组件和自定义组件
自定义组件、编辑、删除、搜索等
(5)域名管理
新增、查询

2、我做的功能
发送请求、轮询组件、任务列表部分功能、域名管理
前端:用例列表、域名配置、任务列表、新建、搜索、分析等

平台的特点

1、变量
定义变量:
用来存储运行过程中产生的数据,以便后续步骤中调用
接口响应中变量的值通过jsonpath定位
使用变量:
使用{value}的方式使用
2、项目准入
和jira编号关联,关联项目提测时会执行项目准入case,用于统计新增代码覆盖率
3、工程准入
指服务提测时必须执行通过的case
4、动态参数,生成时间
当前时间戳:${T}
当前时间戳,s级别 : T , s 指 定 当 前 时 间 格 式 : {T, s} 指定当前时间格式: T,s{T, %Y-%m-%d %H%M%S}
当前时间往前推25小时 : KaTeX parse error: Expected '}', got 'EOF' at end of input: … %H%M%S} 当天20点:{T:20:00:00}
指定时间: T : 2019 − 06 − 1121 : 05 : 51 , 用 变 量 指 定 时 间 : {T:2019-06-11 21:05:51,%Y-%m-%d %H%M%S } 用变量指定时间: T:2019061121:05:51,{T:{date_time}, %Y-%m-%d %H%M%S
}
5、动态参数,支持长度计算
新增一种长度计算的动态参数,用于计算变量的长度。
这个参数可用于:1、数据量对比,2、校验是否存在。
格式定义: L : v a r n a m e , [ v a r t y p e ] , 如 : {L:{var_name},[var_type]},如: L:varname[vartype]{L:{insert_data},list},${L:{insert_data},dict}等。
L表示长度动态参数,{var_name}是现有的变量定义格式,var_type为可选参数,指定{var_name}变量的类型。
返回值:整数(正常计算)或报错(空/指定变量类型不符)。
6、动态参数,支持随机数
7、定时任务
8、支持无人机
9、复制case
10、支持冒烟

开发接口自动化平台的过程中遇到了什么问题

测试环境、线上环境和测试环境域名相同,怎么替换

使用ip请求

接口自动化平台待优化的

1、公用token的问题。

多个自动化任务执行遇到性能瓶颈怎么办?

1、查找性能瓶颈的原因并解决。
2、在多个机器上执行
3、搭建分布式执行环境

如何搭建分布式环境

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值