接口测试面试题汇总
- 前言
- 接口测试是怎么做的
- cookie、session以及token的区别
- 接口测试执行中比对数据库吗?
- 谈谈你对HTTP协议的了解?
- get和post请求有什么区别?
- 常见响应状态码有哪些,代表什么意思
- 接口测试如何设计测试用例?
前言
- 越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢?
- 主要是平常的功能点点点,大家水平都一样,是个人都能点,面试时候如果问你平常在公司怎么测试的,你除了说点点点,还能说什么呢,无非就是这个项目点完了点那个项目, 这就是为什么各行各业的只要手指能点得动的人都来转行软件测试了。
- 面试的时候面试官希望你除了点点点,还能更深入一点的思考页面上看不到的功能,也就是接口测试了。接口测试指的是上图的API层
接口测试是怎么做的
接口测试我们是在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的值等。
cookie、session以及token的区别
-
cookie数据存放在客户的浏览器上,session数据放在服务器上。而token是接口测试时的鉴权码,一般情况下登陆后才可以获取到token,然后在每次请求接口时需要带上token参数。
-
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session,session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面应当使用cookie
-
可以将登陆信息等重要信息存放为session;其他信息需要保存,可以放在cookie
接口测试执行中比对数据库吗?
- 肯定啊,因为接口返回值的数据来源于数据库,接口对数据的操作还要进行深层次的数据库检查!
- 可以Python+Mysql进行数据库数据验证
谈谈你对HTTP协议的了解?
超文本传输协议,端口为80,特点(无记忆功能、快速)是由请求和响应两部分组成请求由请求头、请求行、请求正文组成;响应是由响应头、响应行、响应正文组成,之前我们公司的接口是采用https协议的。
https http+ssl协议 端口443 面向安全的超文本传输协议
get和post请求有什么区别?
- get和post请求都是客户端向服务器提交的一种请求方式
- get是明文传输参数、倾向于请求服务器资源。比如打开网站
- post传输数据不可见,安全性高,倾向于向服务器提交数据,比如注册等
常见响应状态码有哪些,代表什么意思
- 1xx:指示信息–表示请求已接受,继续处理
- 2xx:成功–表示请求已被成功接收、理解、接受
- 3xx:重定向–要完成请求必须进行更进一步的操作
- 4xx:客户端错误–请求有语法错误或请求无法实现
- 5xx:服务器端错误–服务器未能实现合法的请求
接口测试如何设计测试用例?
接口测试一般考虑入参形式的变化和接口的业务逻辑,一般设计接口测试用例采用等价类、边界值、场景法居多!
接口测试设计测试用例的思路如下:
-
接口业务逻辑测试?(正例)
接口逻辑测试是指根据业务逻辑、输入参数、输出值的描述,对正常输入情况下所得的输出值
是否正确的测试,也就是测试对外提供的接口服务是否正常工作。 -
模块接口测试?(反例)
模块接口测试是为了保证数据的安全及程序在异常情况下的逻辑的正确性而进行的测试。?模块接口测试的主要包括以下几个方面:?
1)鉴权码token异常(鉴权码为空<没有鉴权码>,错误的鉴权码,过期的鉴权码)。
2)其他参数异常。
1、必填项检查
2、参数的长度、类型、格式异常:
常规参数:(数字、字符串、日期)
参数长度:6-18位。或身份证、电话的长度。
参数类型:数字(精度),字母,中文,带空格的参数,特殊字符。
日期格式:日期:年月日,年月日时分秒,日期格式(包括/,-,:等)。
3)错误码异常覆盖。
4)接口测试其他的关注点
接口有翻页时,页码与页数的异常值测试
数据库的增删改查,比如一个post接口操作完成后,通过列表页接口看下新的数据是否和刚才的post一致
- 接口返回的图片地址能否打开,图片尺寸是否符合需求
- 当输出参数有联动性时,需要校验返回两参数的实际结果是否都符合需求。
- 所有列表页接口必须考虑排序值
- 所有功能都要考虑兼容旧版本