1、你们公司的接口测试流程是怎样的?(有没有感觉熟悉,貌似在哪里听过)
接口测试我们是在XX项目做的,主要有XX接口,XX接口,XX接口等。
1、首先是从开发那里拿到API接口文档,了解接口业务、包括接口地址、请求方式,入参、出参,token鉴权,返回格式等信息。
2、然后使用Postman或Jmeter工具执行接口测试,一般使用Jmeter的步骤是这样的:
1、首先新建一个线程组。
2、然后就是新建一个HTTP请求默认值。(输入接口服务器IP和端口)
3、再新建很多HTTP请求,一个请求一个用例。(输入接口路径,访问方式,参数等。)
4、然后创建断言和查看结果树。
3、最后调试并执行用例,最后编写接口测试报告
4、其实我们做接口的时候也碰到了蛮多的问题,都是自己独立解决的,比如返回值乱码(修改jmeter的配置文件为UTF-8编码方式),比如需要登录后才能取得token鉴权码并且这个鉴权码在下面的请求中需要用到(使用正则表达式提取器提取token的值等。
2、请简述一下cookie、session以及token的区别(有没有感觉整个是万年不变的面试题)
(1)cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
(2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie
(3)可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie
3、接口测试如何设计测试用例?(必问)
接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多!
接口测试设计测试用例的思路如下:
1.接口业务逻辑测试?(正例)
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值
是否正确的测试,也就是测试对外提供的接口服务是否正常工作。
2.模块接口测试?(反例)
模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。?
模块接口测试的主要包括以下几个方面:?
1)鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。
2)其他参数异常。
1、必填项检查
2、参数的长度、类型、格式异常:
常规参数:(数字、字符串、日期)
参数长度:6-18位。或身份证、电话的长度。
参数类型:数字(精度),字母,中文,带空格的参数,特殊字符。
日期格式:日期:年月日,年月日时分秒,日期格式(包括/,-,:等)。
3)错误码异常覆盖。
4)接口测试其他的关注点
接口有翻页时,页码与页数的异常值测试
数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致
接口返回的图片地址能否打开,图片尺寸是否符合需求
当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。
所有列表页接口必须考虑排序值
所有功能都要考虑兼容旧版本
4、接口测试执行中比对数据库吗?
肯定啊,因为接口返回值的数据来源于数据库,接口对数据的操作还要进行深层次的数据库检查!
5、谈谈你对HTTP协议的了解?
超文本传输协议,端口为80,特点(无记忆功能、快速)是由请求和响应两部分组成请求由请求头、请求行、请求正文组成;响应是由响应头、响应行、响应正文组成,之前我们公司的接口是采用https协议的。
https http+ssl协议 端口443 面向安全的超文本传输协议
6、get和post请求有什么区别?
get和post请求都是客户端向服务器提交的一种请求方式
get是明文传输参数、倾向于请求服务器资源。比如打开网站
post传输数据不可见,安全性高,倾向于向服务器提交数据,比如注册等
7、响应状态码有哪些?
1xx:指示信息–表示请求已接受,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
8、在接口测试过程中发现的bug多不多?能举几个栗子?
这个问题其实回到起来很简单,只要做过接口测试的,总能发现几个BUG吧,把你平常发现的bug说2-3个就可以了。 面试官出这个题,主要是想知道你是不是真的做过接口测试,毕竟现在很多小伙伴简历都是写的假的(你要不写估计面试机会都没有,没办法,为了生存,能理解) 比如,提现输入框,在页面上输入负数,肯定是无法提交过去(前端页面会判断金额),如果我不走前端,直接用接口工具发请求,输入一个负数过去。 (假设服务端没做提现金额数据判断) 余额=当前余额(100)-提现金额(-100),那么提现-100,余额就变成200了,也就是越提现,余额越大了。
9、接口测试中有哪些要注意的测试点?
11.1)接口中返回了图片地址,要手工去进行图片的测试(大小、内容)
11.2)接口完成查询功能的时候,数据返回的排序显示
11.3)接口测试的时候,关注参数的默认值、必填项
10、接口执行测试后返回结果做对比,一般比对哪部分内容?
之前必须要对比的就是返回状态码,其次再去对比返回其它关键内容
11、为什么开展接口测试?
13.1)接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,其修复问题的成本越低
13.2)接口测试非常快速、UI自动化执行一个测试用例10S左右、接口测试用例执行的话,需要的时间是毫秒级的
12、之前在接口测试过程中,使用的工具是什么?
postman或jmeter(5.1)
13、之前用过抓包工具没有?如何使用的?
之前在项目中用过fiddler抓包工具进行HTTP协议请求的抓取
打开fiddler之后,默认浏览器配置了127.0.0.1 8888端口的代理,在fiddler设置好过滤策略后,打开需要进行抓包的网站进行操作,就可以进行抓包
14、json数据是什么,你平时如何解析json数据?
一种开发常用的数据报文格式,由键值对和数组两种格式构成。可以通过工具bejson网站等
15、postman你在工作中使用流程是什么样的?
-
编写好用例
-
在postman先建好url环境变量
-
根据接口用例所属的模块新建集合管理
-
在集合中不同模块下录入测试用例
-
录入测试用例的时候根据预期结果在tests页签中增加断言
-
导出通过Newman去运行
16、postman中设置环境变量有什么用?
在之前项目中,接口测试测试的环境有开发环境,测试环境等,为了测试的时候方便,就在postman设置环境变量,到时所有接口都引用该环境变量,这样就不用为了切换环境导致每次都去修改被测系统接口的主机地址;点击右上角环境变量管理按钮-新建环境变量,在脚本中使用{{变量名}}去调用
17、在接口测试中关联是什么含义?如何用postman设置关联?
关联就是把上一个接口返回值的部分截取出来,作为下一个接口的参数,能让接口串联运行
在postman中设置关联的步骤如下:
-
先通过正则表达式提取的方式或json取值的方式把下一个接口需要的信息从上一个接口截取出来
-
使用设置全局变量的代码把取出来的值保存到全局变量
-
在下一个接口中,使用{{全局变量}}代替要替换的静态值
18、postman支持什么类型的协议测试?
http和https协议的
19、postman参数化有哪几种方式?
内建变量、pre-scripts编写js脚本、批量运行时导入csv或json格式的文件
20、Newman如何执行postman脚本?
Newman run 脚本名称 也可以添加参数生成html报表等
21、jmeter之前用的是什么版本?如何安装的?
jmeter用的是5.1.1版本,安装如下:
先在电脑上安装jdk1.8或以上的版本,然后从官网下载最新的安装包,解压后,进行环境变量的配置,配置好后即安装完成
22、在项目中如何用jmeter进行接口测试?
-
把线程组数量设置为1,循环次数设置为1
-
配置好全局变量URL通过配置元件—用户自定义的变量添加
-
增加配置元件http请求默认值,放置在用户定义的变量之后
-
添加事务控制器管理和组织测试用例
-
在事务控制中添加http请求添加测试用例中的接口请求信息
-
添加对应的断言元件进行断言
23、jmeter中如何设置断言?
右击请求—断言—响应断言—响应断言界面输入要检查比对的项,设置好断言后,执行接口测试如果是通过的,查看结果树不会有任何提示,如果断言失败,就会有红色报错。如果接口返回的数据是json数据,也可以添加json断言
24、jmeter中如何实现关联?
先从上一个接口中通过正则表达式提取器或jsonpath解析器截取下一个接口需要的参数值保存到变量,然后在写一个接口中通过${变量名}去获取
25、jmeter添加http请求默认值元件有什么作用?
添加并设置好后,相当于给所有的http请求取样器都设置了默认值,既不用填写取样器中的比如主机地址、端口、代理等,都可以使用http请求默认值设置的
26、jmeter参数化的方式有哪几种可以实现?
-
配置元件—用户定义的变量元件可以设置全局变量
-
函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为参数化
-
可以使用csv文件作为参数化,通过配置元件中的csv data set config元件进行设置即可
27、接口测试用例的设计要点有哪些?
对于这个问题我们可以从接口的组成来进行分析,一个接口主要有请求地址、请求方法、请求参数,其中请求地址和方法都是固定的,
所以我们主要应该从请求参数入手,主要可以从以下几个方面考虑:
1、参数字段个数:必填字段和可选填
2、参数合法性:输入输出合法、非法参数
3、边界:请求参数边界值等
4、容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
5、响应数据校验:断言、数据提取传递到下一级接口
6、逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
7、性能:对接口模拟并发测试,逐步加压,分析瓶颈点
8、安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证操纵敏感数据)
28、post和get有什么区别?
这个问题应该是每一个做接口测试人员都能回答的问题,但是要注意说到重点:
1、get方法的参数是在URL中,post的参数是在body中 (本质区别)
2、get方法的安全性没post的高
3、get方法能被缓存而post不可以
4、GET请求在URL中传送的参数是有长度限制的,而POST没有。
当然还有其他的很多区别,但是回答这几个主要的就差不多了。
29、你会使用哪些抓包工具?
抓包工具有很多种,但是我们技术人员最常用的不外乎就是Fiddler、青花瓷、F12这几种,所以选一个你自己最常用的就可以了。
当然面试官接下来的问题多半会问你为什么会用抓包工具?公司不是有接口文档吗?
30、使用抓包工具做什么?
对于中大型公司里面的开发人员都会编写好有完整的接口文档,那我们做接口测试的时候对照接口文档不就可以了吗?所以对于还
没有真正接口项目经验的小伙伴就不知所措了。那么我们测试人员抓包其实一般都是为了验证我们测试的数据在接口传递过程中是否正常
或者为了判断某个问题是前端问题还是后端问题。
31、怎么判断一个bug是前端问题还是后端问题?
这是很多面试官都会问到的问题,而且在工作中为了防止前端开发和后端开发人员相互踢皮球也是我们测试人员必须要掌握的知识点,
其实很容易判断,我们可以先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对,请求报文没问题,那就看返回报文,返回的数据不对,那就是后
端开发的问题,这样我们测试人员才能有自己的判断,而不是任由开发相互扯皮。
32、你们公司是用什么做接口测试的?
每个公司做接口测试所使用的工具都是不一样的,有的会使用postman来做一些简单的单接口测试,但是对于一定数量的接口测试postman就很难胜任了,所以这时候不少公司就
会选择开源的jmeter来做,因为脚本也相对比较好管理维护也方便。
但是对于不少公司来说jmeter也满足不了自己的要求,这时候就会有测试人员自己编写测试框架(也就是测试开发),然后通过编码自己设计完成自己公司需要的功能。
33、接口测试框架你会吗?
很多小伙伴都会说我会使用unittest、pytest再或者testNG,其实这些框架对公司来说还不能满足要求,应该说我们的框架是在unittest或者pytest框架之上进行二次封装集成了
邮件系统和测试报告以及日志、重跑等功能,然后再说这样设计的优势,这样就会让人觉得这人是懂具体的框架实现过程的。
34、你们接口测试用例是在哪里?
这要看你们公司是用的什么工具来做接口测试的了,假如是postman和jmeter那么用例就是直接在它们的请求文件里面,但是假如是有自己的框架那么用例一般都在表格或者表里面的。
原文链接:
https://www.cnblogs.com/zhangshaoning/p/12563860.html
原文链接:
https://www.cnblogs.com/csmashang/p/12661361.html