接口自动化面试题目(python自动化面试题)

json和python中字典的区别?Json是轻量级的数据交互格式,以key-value的键值对形式来保存数据,结构清晰,可以说是目前互联网项目开发中最常用的一种数据交互格式。字典,同样是以key-value的键值对来保存数据,是python中的一种数据类型。你做接口自动化测试时,测试数据放哪里?1)对于一些基础配置比如数据库配置可以放到properties文件(yaml文件)2)接口测试需要…

大家好,又见面了,我是你们的朋友全栈君。

json和python中字典的区别?

Json是轻量级的数据交互格式,以key-value的键值对形式来保存数据,结构清晰,可以说是目前互联网项目开发中最常用的一种数据交互格式。

字典,同样是以key-value的键值对来保存数据,是python中的一种数据类型。

你做接口自动化测试时,测试数据放哪里?

1) 对于一些基础配置比如数据库配置可以放到properties文件(yaml文件)

2) 接口测试需要用到的数据可以放数据库表,也可以放到excel中。

什么是数据驱动?

数据驱动就是通过excel,或者xml,数据库等数据结构来维护测试数据,通过相应的技术去处理,拿到测试数据用于测试,从而实现测试数据与代码的解耦,数据驱动测试的本质是高级的参数化

excel中如何设计你的用例?

1) 所有的接口信息维护在一个表单

2) 关于接口的用例数据维护在一个表单

3) 接口传参一列来传,通过构造json格式的字符串即可解决传多个参数的问题,同时提升了用例的可维护性

excel中的数据怎么拿出来?

通过第三方库openpyxl来完成,项目只需要引入openpyxl库,通过它提供的api即可完成对于excel的操作,甚至于我们自己也可以做一些二次封装,使得操作更方便。一行数据就是一个用例。

如果有些接口做了鉴权(需要鉴定权限),怎么实现这些接口的自动化测试?

首先需要明确接口是通过什么机制来实现的鉴权

1) 如果是通过会话id(JSESSIONID)来实现鉴权的,那么先调用完登录接口–》拿到它返回的这个数据–》存储起来–》后面再调用其他接口的时候直接带上这个数据过去就可以了。

2) 如果是通过token来实现鉴权的,那么同样只需要在调用完登录接口–》拿到它返回的这个数据–》存储起来,后面操作同上。

先回答上面的一个基本实现步骤,然后再补充以下一些实现细节:

a. 怎么取到这个JSESSIONID或者token

这个信息怎么取首先得明白它是怎么返回来的,可能为以下两种方式:

1) 登录接口的响应头

2) 登录接口的响应报文

需要找开发确认,不同方式不同取法。

b. 怎么存储这个JSESSIONID或者token

1) 文件中(excel、properties文件都可以)

2) 数据库

3) 代码里面自己定义的公共静态变量,作为一个共享的数据

c. 请求其他需要鉴权的接口时,怎么带过去这个数据

先找开发人员确认,再调用需要鉴权的这些接口怎么携带这个鉴权的信息(票)。一般不外乎这么几种:

1) 拼接在url上传过去用于服务器验证

2) 设置到请求体中

3) 通过请求头带过去

弄明白怎么传过去以后,就设法从保存了这个鉴权信息的地方取出来–》传过去

什么是会话?

所谓会话就是session,而session是一种服务器的缓存技术,由服务器端创建,用户登录了系统,一般就会把登录用户的信息保存到这个session对象中,然后把此会话对应的id(JSESSIONID)返回,因此大部分系统都会用到session机制来实现鉴权。Session保存数据方式也是以key-value的形式。

什么是token?

所谓token其实就是服务器端返回的一个字符串(有点类似于:xys73494954sdhcdr83435这么一串),这个数据是基于什么算法生成的需要找开发确认,一般这个数据是唯一的,服务器每次返回的token都会不一样。Token之所以可以用来做鉴权,原理如下:用户a调用了登录接口–》登录了系统b–》服务器端生成了一个唯一的token信息(假设为c),然后会拿用户的编号id(假设为d)做了一个映射:c-d,然后将这样的映射关系存到数据库或redis等缓存中,然后再返回这个token给客户端–》客户端再调用其他需要鉴权的接口时,只需要将缓存起来的这个token带过去验证–》服务器根据此token检查是否有登录用户信息来判断此请求是否是一个已登录授权的用户。(这里客户端怎么取到这个token,怎么存,再次请求时怎么带过去,上面接口鉴权部分已解释)。

某个接口请求,参数依赖上个接口的返回数据,怎么处理(接口关联)?

场景:b接口在调用的时候参数依赖于a接口的返回数据。

处理方案:

a接口调用完–》从响应中取出b依赖的这个参数–》保存起来–》b调用的时候,取出这个信息–》当做参数传过去即可。

保存方案:

参考问题5中的数据保存方式

接口调用依赖第三方的接口b,而b接口还未提供给你,如何处理?

通过mock框架搭建自己的mock系统/平台(其实就是自己开发接口),模拟这个第三方接口mock一个出来即可,这样就解决了这个依赖。

接口测试的垃圾数据如何清理?

可以自己准备单独的环境(独立的数据库),这样接口调用产生的数据可以在整个套件执行完后通过执行sql脚本来完成数据删除

做接口自动化时怎么做的数据验证?

数据验证主要包括两个方面:

1) 接口响应报文的验证

利用jsonpath取出响应数据(大多数情况是json)中的关键字段的值,通过Assert断言这些关键字段的值是否符合预期。预期值和jsonpath取值表达式可以配置在excel中。

2) 数据库表数据的验证

做表数据验证要先明白两点:

a. 表数据验证首先得明白这个接口的基本业务,会影响到哪些表,哪些字段的数据,然后才能准备查询sql去有针对性的查数据。

b. 并不是所有用例的执行都会操作数据库,影响到表数据,因此只有影响到了表数据的用例,才准备查询脚本。

具体做法:

Excel用例准备aa,bb,cc三列,aa传脚本,bb,cc两列分别用来回写用例执行前的sql查询结果和用例执行后的sql查询结果,两个数据对比即可知道数据变化是否满足预期。

如何提升测试套件的执行效率?

1.减少excel读写,减少不必要的io操作

2.excel数据读取测试数据,全部存储到静态变量中)。

3.excel数据回写,尽量通过批量方式去写。

你用过单元测试框架吗,是什么框架,有哪些常用操作?

用过,unittest 或者 pytest,这些测试框架都支持我们去定义测试套件,达到管理我们测试用例代码的作用,同时这些测试框架提供的一些丰富注解不仅能很方便的控制测试用例的执行顺序来控制整个测试流程,还能为各种测试场景的实现提供支撑。

常用操作:

seutp,teardown,适合单个测试用例的初始化、环境清理。

seutpClass,teardownClass:适合测试类的全局初始化、环境清理。

assertXXXX: 各种断言方式

testLoader的discover: 用来发现测试用例

testSuite的addTests: 用来装载测试用例

@ddt  数据驱动

htmlTestRunner:用来生成html测试报告

说说你对接口的理解?

接口是服务,是功能点实现,是数据传递的通道,也是服务器端的一个实现了某种协议(比如http协议..)和映射机制(当访问一个url时就会通过服务器端的映射处理机制解析后,落到对应的处理函数)的函数,接口参数就是函数的参数,接口的响应数据就是函数的返回值

请简单说一说get、post这两种请求方法的区别?

Get:

a. 一般对于从服务器取数据的请求可以设置为get方式

b. Get方式在传递参数的时候,一般都会把参数直接拼接在url上(例如:http://xxx?id=1&type=2)

c. Get请求方法可以传递的参数数据量是有限的(因为一般参数是拼接在url上,而浏览器对于url的长度是有限制的)

d. Get请求因为是直接将数据拼接在url上,所以安全性不如post强(相对),但是get的执行效率要快于post

Post:

a. 一般往服务器提交数据的请求会设置为post方式

b. Post方式传递参数一般都会把参数放在请求体,而不会拼接在url

c. Post请求方法可以提交的数据量不受限制

d. Post请求传参相对于get要安全(相对不是绝对),但是post的执行效率不如get。

在浏览器中输入URL,回车之后发生了什么?

1.解析地址

2. 浏览器查询,是否存在浏览器缓存中,如果没有

3.Tcp连接,想服务器发送请求

4.服务器返回接口,并且在浏览器中添加缓存

5.前端渲染页面

======================================

(1)URL 解析

(2)DNS 查询

(3)TCP 连接

(4)处理请求

(5)接受响应

(6)渲染页面

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127989.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 诺基亚S60手机c盘、d盘、e盘、z盘的作用

    诺基亚S60手机c盘、d盘、e盘、z盘的作用诺基亚S60手机c盘、d盘、e盘、z盘里文件夹的用途详细诠释
        一、【C盘】
      手机的C盘如同Windows的C盘,是用来放置SymbianOS的地方,所以我们需要给操作系统预留足够的空间(比如用来存放软件运行时生成的临时文件)。对于已扩充了MMC卡的机器,建议把应用软件和游戏都尽量安装到MMC卡上。
      手机内存和常驻内存的软件有关,如输入法、主题背景开机后就会常驻内存,正在运行的软件和游戏也会占用内存,增加动态内存的办法就是减少常驻内存的程序,用任务管理软件

    2022年7月11日
    24
  • Landsat系列卫星数据应用介绍

    Landsat系列卫星数据应用介绍目录1.LandSat介绍1.1Landsat-5介绍1.2Landsat-7介绍1.3Landsat-8介绍1.4LandSat影像下载网址:2传感器简介2.1Landsat5TM2.2Landsat7ETM2.2.1产品描述2.2.2Landsat7波段参数2.3Landsat8卫星2.3.1Landsat8产品…

    2022年7月23日
    10
  • vue $listeners $attr_vue query

    vue $listeners $attr_vue query1、vm.$attrs2.4.0新增类型{[key:string]:string}只读详细包含了父作用域中不作为prop被识别(且获取)的特性绑定(class和style除外)。当一个组件没有声明任何prop时,这里会包含所有父作用域的绑定(class和style除外),并且可以通过v-bind=”$attrs”传入内部组件——在创建高级别的组件时非常有用。简单点讲就是包含了所有父组件在子组件上设置的属性(除了prop传递的属性、class和styl

    2022年10月10日
    1
  • 普通正态分布如何转换到标准正态分布中_正态分布化成标准正态的公式

    普通正态分布如何转换到标准正态分布中_正态分布化成标准正态的公式1.普通正态分布转换标准正态分布公式我们知道正态分布是由两个参数μ\muμ与σ\sigmaσ确定的。对于任意一个服从N(μ,σ2)N(\mu,\sigma^2)N(μ,σ2)分布的随机变量XXX,经过下面的变换以后都可以转化为μ=0,σ=1\mu=0,\sigma=1μ=0,σ=1的标准正态分布(standardnormaldistribution)。转换公式为:z=X−μσz=\…

    2022年9月21日
    2
  • leetcode 792_leetcode5421编码

    leetcode 792_leetcode5421编码给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输出:true示例 2:输

    2022年8月9日
    5
  • Spring学习——Spring常用数据库访问设置

    Spring学习——Spring常用数据库访问设置

    2022年2月24日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号