目前互联网发展已经有二十年了,从最开始的简单的工业互联网到现在生活的方方面面,比如出行、聊天、医疗、汽车、管理等各个方面,从之前的开发兼任测试,就是开发测试一人都干,到现在的需要指标才能上线更新,保证项目质量,不管是大公司还是小公司,都注重质量。
话不多说,进入正文。本文是自己面试中碰见的,也是大部分公司经常问题。暂不牵扯到接口性能,性能的知识更多,更广、更细。
软件测试基础本文就暂不细说,一般都是测试方法,测试理论这些,随便看看就好了,这些不管是应届生和已经有工作经验的大佬来说都很少问了。
1.get和post的区别(经典)?
get通过URL传输数据,post用URL和请求体传输数据是
get没有post安全,但不是绝对的,因为可以抓包
get数据大小有限制,post没有
2.http与https的区别(经典)?
https需要申请ca证书,一般免费证书比较少,需要收费
http是超文本传输协议,信息是明文传输,https是具有安全性的ssl加密传输协议
http与https连接方式不同,端口不一样http:80 https:443
http连接无状态,https是由ssl+http协议构成的可加密传输,身份认证的网络协议,安全
3.https的连接过程?
把这个流程记下来,汇总一下变成自己的语言,到时候回答的时候尽量详细
4.请简述cookie与session、token的区别(经典)?
1.Cookie数据存放在客户的浏览器上,session是放到服务端 token是接口测试的鉴权码一般情况下登录后才可以获取token,然后每次请求接口都要带上token
2.Cookie不是很安全,别人分析存放本地的cookie并进行cookie七篇,考虑到安全应当使用session,session会在一定时间内保存在服务器上,当访问增加时,应该使用cookie,减轻服务器性能
3.可以将登录信息等重要信息存放为session,其他放在cookie上
5.http协议的了解?
超文本传输,端口80 特点(无记忆功能‘快速)是由请求和相应组成,请求有:请求头、请求行、请求正文组成,响应由响应头、相应行、响应正文组成
6.接口用例的设计与执行?
https://www.toutiao.com/i7012495041432142340/
7.多接口业务怎么测试?
自己可以举例一下自己测的接口,关联型接口都有都需要把参数传过来,需要设置全局变量,把上个接口的值作为下个接口的请求值。
8.举几个自己碰到的coke与说明?
200 OK - [GET]:服务器成功返回用户请求的数据
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功
202 Aceepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401 Unauthorized -[*] :表示用户没有权限(令牌、用户名、密码错误)
403 Forbidden -[*] :表示用户得到授权(与401错误相对),但是访问被禁止
404 NOT FOUND -[*]:用户发出的请求针对得到是不存在的记录,服务器没有进行操作,该操作是幂等的
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功
简单的总结一下:
1xx - 信息提示:这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。
2xx - 成功:这类状态代码表明服务器成功地接受了客户端请求。
3xx - 重定向:客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
4xx - 客户端错误:发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。
5xx - 服务器错误:服务器由于遇到错误而不能完成该请求。
9.在项目中如何用jmeter进行接口测试?
1) 把线程组数量设置为1,循环次数设置为1
2) 配置好全局变量URL通过配置元件---用户自定义的变量添加
3) 增加配置元件http请求默认值,放置在用户定义的变量之后
4) 添加事务控制器管理和组织测试用例
5) 在事务控制中添加http请求添加测试用例中的接口请求信息
6) 添加对应的断言元件进行断言
10、jmeter中如何设置断言?
右击请求---断言---响应断言---响应断言界面输入要检查比对的项,设置好断言后,执行接口测试如果是通过的,查看结果树不会有任何提示,如果断言失败,就会有红色报错。如果接口返回的数据是json数据,也可以添加json断言
11、jmeter参数化的方式有哪几种可以实现?
1) 配置元件---用户定义的变量元件可以设置全局变量
2) 函数助手对话框中可以选择比如随机字符串、随机日期、随机数字作为参数化
3) 可以使用csv文件作为参数化,通过配置元件中的csv data set config元件进行设置即可
12、做接口测试工作的意义是什么?
这个是开放性题目,面试官主要考察对测试的理解。
根据测试的金字塔模型来说接口测试是测试左移的最方便,最简单的测试,当然牛B的测试做白盒测试,这个是在接口测试之前,相当于单元测试。
1.接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,其修复问题的成本越低
2.接口测试非常快速、UI自动化执行一个测试用例10S左右、接口测试用例执行的话,需要的时间是毫秒级的
3.丰富的工具框架与平台,相比UI自动化来说成本更低。
13.怎么抓包?
1.设置代理,需要被抓的对象跟抓包工具处于同个局域网下
2.安装证书,不管是APP或者web都要安装证书,安装成功后iOS需要信任。
备注:https本人研究过一周,安卓因为系统限制,暂不能抓取https。
1.要么开发把证书写到代码中 2.要么使用iOS fiddle也可以抓取部分https但不能全部抓取。
14.怎么判断一个问题是前端还是后端?
抓包看接口数据,如果是数据问题就是后端,不是数据问题就是前端问题
15.接口测试中需要有那些注意点?
接口中返回的数据必用字段要看返回的类型是否跟接口文档一致,不然会导致前端出问题
接口中返回了图片地址,要手工去进行图片的测试(大小、内容)
接口完成查询功能的时候,数据返回的排序显示
接口测试的时候,关注参数的默认值、必填项
16.TCP的三次握手与四次挥手(经典)?
备注:(这是我自己的理解,简单通俗易懂,如果要看标准的请百度,那个太长了自己背不下来)
三次握手?
第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x
• 第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y
• 第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1
四次挥手:
第一次:客户端请求断开FIN,seq=u
• 第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v
• 第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1
• 第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1
17.为什么三次握手和四次挥手?
• 三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里
• 四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。
18.为什么客户端最后还要等待2MSL?
• 客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发,这样客户端还有时间再发,重启2MSL计时。