【番外篇】2W字诚意满满的新活:常见接口测试69道面试题,附带答案

最近发现面试题热度 挺好的,不过大家博客都只有面试题,从来都不带答案,顺手就码了点收集到的博客问题的答案

共69道,2W字,耗时两天(疯狂暗示)

首先,添加线程组,单击右键->添加->Threads(Users)->线程组

右键“线程组” -> “添加” -> “取样器” -> “HTTP 请求”, 输入“服务器名称或 IP”,对应的端口 ,http 默认端口 80,可以不写。
以下请求为 POST, 所有“方法”那选择“POST”,输入对应的路径,添加 参数及值。

数据补充完整后可点击菜单栏目中“启动”按钮以启动测试
简单来说,jmeter 操作过程就是:
1、新建一个线程组
2、输入 HTTP 请求
3、设置一个或者多个断言,增加监听器
4、运行后查看结果树

31.你对http请求跟webservice请求的了解

1、webService接口:是走soap协议通过http传输,请求 文和返回 文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;

2、http api接口:是走http协议,通过路径来区分调用的方法,请求 文都是key-value形式的,返回 文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等

32.接口测试为你什么要参数化

举个例子,例如购物车接口请求数据需要登录接口里面返回的token值,这个存在接口之间依赖关系的时候,我们需要把依赖字段值进行参数化
再比如接口中会有一些公共参数,每个接口里面都存在,如果值是固定的,那我们可以把这些进行参数化记录,减少在每个接口里面书写出错的问题
再比如手机 ,我传131开头的、133开头的、135开头的,如果不会参数化,就要写三个http请求,分别传这三种参数,学会了参数化,只写一个http请求就够了,以此来减少重复的工作

33描述一下Http协议

http协议又叫做超文本传输协议,在做 络请求的时候,我们基本上是使用http协议。
http协议包括请求和响应。
请求中包括:请求地址,请求方式,请求方式包括get请求和post请求,get和post的区别是get请求是在地址栏后边跟随请求参数,但是请求参数大小是有限制,不同浏览器是不同的。一般是4KB。post请求主要用于向服务器提交请求参数。post请求的参数是放到请求实体内容中的,相对get请求较为安全一些。

响应,主要包含响应的状态码,像200(),404(),500(),304(),307()
还有各种响应头信息,比如设置缓存的响应头,Content-Type内容类型,设置cookie头信息。

35.请详细阐述接口测试和UI测试在测试活动中是如何协同测试的/h1>

接口测试和UI测试这两块其实是有一部分是重叠的,UI测试是通过前端写的界面,来调用接口,而接口测试是直接调接口。所以排除前端的处理的逻辑和调用的正确性,在理论上接口测试是可以覆盖所有的UI测试。但实际过程中,如果只是在接口层覆盖所有的业务流,在UI上只测试前端的逻辑,最终的结果可能会是忽视很多原有的功能点,导致了UI测试的不充分。所以存在多人分工且时间充分的时候可以尝试接口去做业务流的全覆盖,否则不要轻易尝试。

36.系统间的接口联调测试

例如:两个系统之间的部分数据是相互读取的

  1. 在一个甲系统增加,修改A数据后,乙系统也会相应的呈现这个改动的数据;在乙系统增加,修改B数据后,甲系统也会相应的呈现这个改动的数据;
    即A部分的数据,是由甲系统来维护的,乙系统读入数据并同步;B部分的数据,是由乙系统来维护的,甲系统读取数据并同步;
  2. 在具体的操作过程中,在甲系统增加,修改A数据后,然后在乙系统查看对应的数据是否同步一致;反之亦然;
    在乙系统查看对应的数据是否同步一致为三个层面;

(1)甲系统传输过来的数据和乙系统接收到的数据是否一致;
(2)乙系统接收到数据后,会存入到自己的数据库,这个存储过程是否成功主要是考虑到甲系统传过来的数据格式是否和乙系统的格式一致)且数据存储成功与否乙系统会返回一条信息(例如:返回1,表示数据正确传输并存储到数据库了;返回0及错误信息表示数据传输或存储出了问题)
(3)然后在乙系统的界面查看,新增或修改的数据是否和接收到的数据一致;

37.参数化具体用在哪些路径上/h1>

凡是请求,基本都要带参数,带参数,就有可能进行参数化。
购物车:带参数,买的什么商品,买了几个。
搜索,关键词,排序方式,类别,热度,价格区间
分类:参数信息参数化

38.你们公司接口中常见的错误码及含义,及返回信息参数有哪些等,举例说明

名称 说明 编码
1 操作成功
2 操作失败
33 参数解析失败 一般指json格式错误
44 订单重复提交 (会返回提交成功时的承运信息)
401 身份安全验证失败
500 系统错误
999 需要登录

返回值为json格式,如下:

status 1表示成功,
message 提示信息 (必有,字符串型)
result 详细结果 (可选,类型各接口不同,相见接口内定义)
totalRow 总记录条数,用于分页使用 (可选,整型)
totalPage 总页数 (可选,整型)

39. 常见接口:

http api接口:是走http协议,通过路径来区分调用的方法,请求 文都是key-value形式的,返回 文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;

40.接口组成

接口都有那些部分组成呢br> 首先,接口文档应该包含以下内容:
1、接口说明
2、调用url
3、请求方法(getpost)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
  由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头header。
  标头 (header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔,一般存放cookie、token等信息
  有同学问我header和入参有什么关系们不都是发送到服务器的参数吗br> 首先,它们确实都是发送到服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。

41.为什么要做接口测试:

大家都知道,接口其实就是前端页面或APP等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢K,在回答这个问题之前,先举个栗子:
  比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖br> 所以,接口测试的必要性就体现出来了:
①、可以发现很多在页面上操作发现不了的bug
②、检查系统的异常处理能力
③、检查系统的安全性、稳定性
④、前端随便变,接口测好了,后端不用变

42.GET请求和POST请求的区别:

1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。

43.常见状态码:

每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:
1、2XX 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、3XX 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
3、4XX 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4、5xx: 代表服务器有异常,500代表服务器内部异常;503服务器当前不能处理客户端的请求,一段时间后可能恢复正常;504代表服务器端超时,没返回结果。

44.通用接口用例设计

①、通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
②、参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
③、接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加br> 2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验
④、异常验证:
  所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。

45.根据业务逻辑来设计用例

根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例,这个每个公司的业务不一样,就得具体的看自己公司的业务了,其实这也和功能测试设计用例是  一样的。
举个例子,拿bbs来说,bbs的需求是这样的:
1、登录失败5次,就需要等待15分钟之后再登录
2、新注册的用户需要过了实习期才能发帖
3、删除帖子扣除积分
4、…
像这样的你就要把这些测试点列出来,然后再去造数据测试对应的测试点。

46.用什么工具测

接口测试的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI等,本人首推的测试工具是postman和jmeter

47.接口测试用例模板 (可根据项目实际情况设计增减)

48.接口测试注意事项

测试的时候这几个方面:
改变请求参数,看响应结果是否和接口文档一致
查看参数是否有敏感信息(比如个人账户信息,资金信息)
查看是否对关键参数进行加密处理(密码信息)
所有列表页接口必须考虑排序值
接口返回的图片地址能否打开,图片尺寸是否符合需求;
接口有翻页时,页码与页数的异常值测试;
当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求
每个接口入参的默认值、异常类型、非空校验
入参支持多个值时,要考虑传的值的个数多的情况下,接口会不会 错

49.浏览器输入 url 按回车背后经历了哪些/h1>

在 PC 浏览器的地址栏输入一串 URL,然后按 Enter 键这个页面渲染出来,这
个过程中都发生了什么事br> 1、首先,在浏览器地址栏中输入 url,先解析 url,检测 url 地址是否合法
2、浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在
屏幕中显示页面内容。若没有,则跳到第三步操作。
浏览器缓存:浏览器会记录 DNS 一段时间,因此,只是第一个地方解析 DNS 请求;
操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,
获取操作系统的记录(保存最近的 DNS 查询缓存);
路由器缓存:如果上述两个步骤均不能成功获取 DNS 记录,继续搜索路由器缓存;
ISP 缓存:若上述均失败,继续向 ISP 搜索。
3、在发送 http 请求前,需要域名解析(DNS 解析),解析获取相应的 IP 地址。
4、浏览器向服务器发起 tcp 连接,与浏览器建立 tcp 三次握手。
5、握手成功后,浏览器向服务器发送 http 请求,请求数据包。
6、服务器处理收到的请求,将数据返回至浏览器
7、浏览器收到 HTTP 响应
8、浏览器解码响应,如果响应可以缓存,则存入缓存。
9、 浏览器发送请求获取嵌入在 HTML 中的资源(html,css,javascript,图片,
音乐······),对于未知类型,会弹出对话框。
10、 浏览器发送异步请求。
11、页面全部渲染结束。

50.cookies 机制和 session 机制的区别

cookies 机制和 session 机制的区别,这个也是经常会问的
cookies 数据保存在客户端,session 数据保存在服务器端;
cookies 可以减轻服务器压力,但是不安全,容易进行 cookies 欺骗;
session 较安全,但占用服务器资源

51.http 协议请求方式

http 协议有哪几种请求方式br> GET, POST 和 HEAD 方、OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

52. 文格式

HTTP 请求 文与响应 文格式
请求 文包含三部分:
a、请求行:包含请求方法、URI、HTTP 版本信息
b、请求头部(headers)字段
c、请求内容实体(body)
响应 文包含三部分:
a、状态行:包含 HTTP 版本、状态码、状态码的原因短语
b、响应头部(headers)字段
c、响应内容(body)实体

53.什么是 DNS/h1>

域名解析服务。将主机名转换为 IP 地址。如将 http://www.cnblogs.com/主机
名转换为 IP 地址:211.137.51.78

54.什么是 Http 协议无状态协议么解决 Http 协议无状态协议/h1>

(1)、无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需
要前面的信息
(2)、无状态协议解决办法: 通过 1、Cookie 2、通过 Session 会话保存。

55.webService 接口是如何测试的

webService 接口用 SoapUI

【番外篇】2W字诚意满满的新活:常见接口测试69道面试题,附带答案

56.在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理/h1>

用一个全局变量来处理依赖的数据,比如登录后返回 token,其它接口都需要这
个 token,那就用全局变量来传 token 参数
依赖第三方

57.json 和字典 dict 的区别/h1>

现在自动化培训烂大街,是个人都能说的上几个框架,面试如果问框架相关问题,
求职者只需一瓶 82 年的雪碧,会吹的让你怀疑人生!
所以面试官为了更清楚的知道你是停留在表面上的花拳绣腿还是有扎实的基础,
就不会问框架这种东西了。基本上问几个数据类型的基础就知道有没货了。
那么 json 和字典到底有什么区别呢学者连 python 的基础数据类型都没搞清
楚,直接撸框架,有的人学了几个月可能都迷迷糊糊的,以为 json 就是字典。
这个是肯定不对的。
首先 python 里面的基础数据类型有:int、str、 float、list、bool、tuple、
dict、set 这几种类型,里面没 json 这种数据类型。
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格
式。它基于 ECMAScript (欧洲计算机协会制定的 js 规范)的一个子集,采用完
全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得
JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生
成,并有效地提升 络传输效率。
由于你的代码是 python 写的(也有可能是 php,java,c,ruby 等语言),但是后
端接口是 java 写的(也有可能是其它语言),不同的 语言数据类型是不一样的
(就好比中国的语言和美国的语言数据类型也不一样,中国的一般说一只羊,一
头牛,美国都是 a /an 这种单位),所以就导致你提交的数据,别的开发语言
无法识别,这就需要规范传输的数据(传输的数据都是一个字符串),大家都遵
循一个规范,按一个标 准的格式去传输,于是就有就 json 这种国际化规范的数
据类型。
json 本质上还是字符串,只是按 key:value 这种键值对的格式来的字符串

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月1日
下一篇 2020年10月1日

相关推荐