接口自动化面试题【思路分享】

news2024/12/28 18:33:21

文末免费领资料

接口自动化流程怎么做的,框架怎么搭建的?

流程:

1、分析需求,确定测试范围

2、搭建自动化测试环境、准备相关测试数据

3、工具选型,搭建测试框架

4、编写用例

5、执行用例,生成测试报告

6、持续集成

框架怎么搭建:如果是选择用现有框架的话,可以选择postman、jmeter、Robotframework等框架,也可以基于一些开源的框架平台上再去进行二次开发,比如httprunner等,觉得都用不习惯的话,可以考虑自己写代码封装新的框架。看这套面试题,求职者应该回答的是自己写代码的方式。自己框架搭建要考虑的问题:

1、用例怎么存储,编写是否方便,易用性怎么样,学习成本高不高

2、用例执行执行,日志,报告等如何查看

3、断言如何设计,用例执行失败怎么处理等

4、多人协作怎么管理代码等

 

你们公司没有通用的接口自动化框架吗?为什么还需要你们部门来搭建这套。

开源框架有开源框架的好处,但是也存在一些问题,有些数据处理起来没这么方便,易用性方面使用起来也不一定很方便,需要一定的学习成本。每个部门的业务场景不一样,开发平台/工具主要还是从成本以及解决某个实际问题的方便去考虑。

接口自动化回归过程中有没有发现什么问题?取得了怎么样的效果和收益?

比如有时候,开发改某个需求,改动了一些公共的代码之类的,就有可能影响到其他的接口,如果之前稳定的接口已经写好用例的话,这种情况下就能快速的验证出来改动是否有问题。

效果和收益的话,可以说一下接口自动化做起来之后,之前手动回归的功能现在变成自动回归了,节省了多少人力/时间。

接口自动化搭建和落地过程中遇到什么问题?

用例怎么存储更方便,怎么样设计才能使得编写用例的时候方便,有没有什么办法自动生成用例,用例之间的依赖和数据传递怎么做,用例是否要区分环境,有些用例如果只能在测试环境执行,线上不能执行的,如何区分。怎么样设计能够支持快速切换到其他不同的平台上面去。

最难的技术难点是什么?

动态变量参数化、接口依赖及中间变量问题、异步接口结果验证问题、相应参数化及嵌套很多的验证问题、接口测试框架的稳定性问题、多接口场景问题、多线程并发、多项目以及不同人员并发操作的情况。

你们持续集成是怎么做的?

持续集成的话,一般都是跟部署结合一起一起使用,比如测试环境更新后,自动触发用例执行。另外,可以设置每晚定时自动构建。

有了jmeter等开源的接口自动化平台,为什么还要代码来做自动化?

哈哈,这个也是我想问那些自己写代码做自动化的,以及现在的一些培训机构教的java或者python自动化的模式,为什么不选用开源的框架或平台。其实,大家都心知肚明,自己写脚本写框架,更能体现你的水平,能够拿到的薪资更高。

自己写代码,在一定程度上,可以省去对工具的学习成本,虽然说工具的使用不难,但是要把工具用好也不容易,并不是只有写代码才能体现出你的能力。而且,写代码之前,要先了解一下现有工具的一些功能,看下有没有必要自己写代码封装框架。

你主要负责参与哪部分框架搭建,你们怎么合作共享代码的?

代码传递的话,一般都是通过git仓库去管理,然后再通过分支去管控,这个可以参考开发的代码分支管理。

数据驱动,关键字驱动怎么做的?

数据驱动的话,有相应的包直接可以支持。关键字驱动的话,可以参考Robotframework框架,我所理解的关键字驱动,其实就是一种代码约定。

这套框架覆盖了开发多少代码量,怎么统计的?

如果是统计代码覆盖率的话 ,一般都会用到相关的插件去进行统计,比如jacoco

总共多少测试用例,执行一次要多久,覆盖多少接口?

这个属于用例设计方面,主要考察你对项目的理解 ,对用例设计的把握,用例设计的覆盖度。

接口关联怎么处理的?

可以将依赖接口返回的数据存到一个项目级别的全局变量里面,然后在用例里面去识别某种特定格式的写法,按照变量去进行处理。

接口鉴权怎么做的?

鉴权的话一般接口需要传token或者签名之类的,发送接口请求的时候才会校验通过。前几天看一位大佬分享的测开平台的设计,鉴权的话可以考虑绑定在接口域名级别,不用每个case都去单独处理一遍。

数据参数化,数据驱动,excel读取数据怎么做的?

参数化的设计可以参考postman、jmeter的方式去进行处理。excel读取数据也有专门的库去进行操作,之前在网上看到别人写的一个读取excel的代码,不是一次性将数据都读取出来,而是使用yield关键字去进行处理。还有就是用例设计的时候,是考虑将数据放在一个页签,还是分不同的页签去处理,这个涉及到框架层面以后每加一个页签是否都需要改动代码。

数据库什么时候去校验的,哪些场景使用到了?

进行接口断言或者是做一些初始化数据准备或者数据清理的时候,就有可能需要去操作数据库。

接口自动化数据传递方式及区别?

这里我理解的应该是在考察发送请求的时候,数据放在params、data以及json参数中的区别。

 总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

   Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录好项目D19

记录好项目 你好呀,这里是我专门记录一下从某些地方收集起来的项目,对项目修改,进行添砖加瓦,变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个网上商城管理系统 一、系统介绍 需求设计主要参考天猫商城的购物流…

【Linux】—— 进程的环境变量

序言: 在上期我们已经对进程PCB以及进程状态进行了详细的解释说明。今天,我将带领大家学习的是关于进程的环境变量的问题。 目录 (一)孤儿进程 1、基本介绍 2、代码演示 (二)环境变量 1、基本概念 2…

使用git管理matlab代码

matlab使用git管理代码 设置 Git 源代码管理 - MATLAB & Simulink - MathWorks 中国 在 R2020b 之前,必须安装命令行 Git 客户端,才能使用 Git 合并 MATLAB 中的分支。有关详细信息,请参阅安装命令行 Git 客户端。 1.在 Git 中注册二进…

Groovy系列三 Java SpringBoot 整合 Groovy

目录 一、概述 一、在Java中使用Groovy: 二、在Groovy中使用Java: 三、几种范式的不同、优缺点 Java调用Groovy的类和方法: Groovy调用Java的类和方法: 使用GroovyShell执行Groovy脚本: 使用GroovyClassLoader加…

4.0ORBSLAM3之局部建图线程概述

1.简介 局部建图线程是ORBSLAM3的核心线程之一,在初始化SLAM系统时被创建和启动,主要作用是为跟踪线程(跟踪局部地图)以及回环检测线程(回环检测)服务,并进行局部地图优化以及时消除轨迹的累计误差。局部建图线程主要维护一个由共视图Covisi…

JSP网上订餐管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 网上订餐管理系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0&a…

java压测工具 Jmeter初使用

一. 下载及安装教程 1. 有博主总结的很好,这里直接放传送门: 【Jmeter】win 10 / win 11:Jmeter 下载、安装、汉化、新机迁移、版本更新(Jmeter 4 以上版本均适用) 2. Jmeter 自定义创建桌面快捷方式 3. JMeter插件…

手写vue-diff算法(三)updateChildren

前文回顾 上一篇提到,新老儿子节点比对可能存在的 3 种情况及对应的处理方法: 情况 1:老的有儿子,新的没有儿子 处理方法:直接将多余的老dom元素删除即可; 情况 2:老的没有儿子,…

基础知识--客户端·服务端·代理

目录 一、客户端 1.什么是客户端 2.客户端分类 二、服务端 1.什么是服务器 2.服务器的作用 3.服务器工作原理 4.服务器的组成 服务器硬件 服务器软件 5.补充 三、代理 1.代理的分类 正向代理 反向代理 两者的区别与联系 2.总结 一、客户端 1.什么是客户端 …

【八股】【C++】(二)函数、类、模板

这里写目录标题 形参与实参的区别函数调用过程指针和引用当函数参数回调函数友元函数重载匹配运算符重载直接初始化与拷贝初始化函数指针C中struct(结构)和class(类)的区别C有哪几种构造函数构造函数的执行顺序析构函数的执行顺序…

设计消息模块的业务层Web层

目录 业务层 一、定义Message业务接口 二、定义Message业务实现类 Web层 一、获取分页消息列表 二、根据ID查询消息 三、把未读消息更新成已读消息 四、删除消息 业务层 一、定义Message业务接口 创建 MessageService.java 类 public interface MessageService {pub…

mybatis-plus使用@Delete注解批量删除实战

使用Delete注解批量删除 1、控制器调用 // test // http://localhost:3000/function/test // 删除操作按钮权限 Transactional GetMapping("/test") public JSONObject testBatch() {// Arrays.asList(1, 2, 3)JSONObject result new JSONObject();try {functionM…

Django+vue3权限菜单rabc设计和动态路由

本次是基于Django和vue实现 github源码:nineaiyu/xadmin-server: xadmin-基于Djangovue3的rbac权限管理系统 (github.com) 服务器设计及部分代码 权限控制的话,可以基于Django的permission进行控制,并通过访问api的URL操作 核心代码如下 …

stable-diffusion使用openpose报错

依据教程 &#xff1a; https://post.smzdm.com/p/awz2l2xg/ 使用 stable-diffusion教学之ControlNetlora换脸 报错&#xff1a; urllib.error.URLError: <urlopen error [WinError 10054] 远程主机强迫关闭了一个现有的连接。> File "E:\ai\sd-webui-aki-v4\ext…

【数据挖掘】时间序列教程【五】

(说明:本文接上回:【数据挖掘】时间序列教程【四】_无水先生的博客-CSDN博客) 上面介绍的傅里叶变换的问题在于,无论是正弦/余弦回归模型形式还是复指数形式,它都需要 操作以计算所有傅里叶系数。有n 数据点和有n/2 可以计算傅里叶系数的频率。每个频率系…

Springboot3新特性异常信息ProblemDetail详解

环境&#xff1a;Springboot3.0.5 概述 RFC 7807定义了为HTTP响应中错误的可读详细信息&#xff0c;以避免需要为HTTP API定义新的错误响应格式。HTTP [RFC7230]状态码有时不足以传达关于错误的足够信息。 RFC 7807 定义了简单的JSON[RFC7159]和XML[W3C.REC-XML-20081126]文…

7.MHA高可用配置及故障切换

文章目录 MHA高可用配置及故障切换MHA概念实验配置时间同步与主从复制安装MHA服务SSH免交互认证验证MHA服务是否开启启动服务 故障模拟恢复故障过程 MHA高可用配置及故障切换 MHA概念 MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切…

计网实验第四章:IP

问题集1&#xff1a; 1.192.168.31.7 2. 上层协议为ICMP&#xff0c;并且其字段值为1 3. 20字节 56字节 - 20字节 36字节 解释&#xff1a;如图所示 4. 这个报文段没有分段发送 原因如图&#xff1a;按照下图所示 标志位显示没有更多的分段。 5. 同一地址发送的这两个…

1.计算机是如何工作的(下)

文章目录 4.编程语言&#xff08;Program Language&#xff09;4.1程序&#xff08;Program&#xff09;4.2早期编程4.3编程语言发展 5.操作系统&#xff08;Operating System&#xff09;5.1操作系统的定位5.2什么是进程/任务&#xff08;Process/Task&#xff09;5.3进程控制…

[LangChain]简介快速入门

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;人工智能。 目录 1、简介2、快速入门2.1、LLMs2.2、聊天模型2.3、提示模板2.4、链2.5、代理2.6、内存 1、简介 …