http协议:超文本传输协议,信息是明文传输;
https协议:是由SSL+ http协议构建的加密传输协议。。
两者使用的端口不一样,http:80,https:443
2. 常见的post提交数据的方式有哪些?
四种:取决于Content-Type请求头
特点:数据类型是字典,相当于通过表单方式去提交数据,数据的格式:a=1&b=2
特点:报文包含有文件上传。
特点:报文都是字符串类型
特点:报文类型是以二进制的方式上传文件。
3. 常见的请求头以及它们的作用是什么?
Accept:客户端接收的数据格式。
X-Requested-With:异步请求。Ajax异步请求。无刷新。
User-Agent:发送请求的客户端的类型。
Content-Type:请求的内容的报文格式。
Cookie:Cookie信息。
4. get请求和post的区别?
都可以向服务器提交数据,并且会从服务器获取数据。
区别:
① 传参方式不同:get通过地址栏的方式传参,post通过表单报文方式传参。
② 传参长度不同:get的参数有长度限制,post没有。
③ 一般情况下,get是获取数据,比如查询,post提交数据,比如:增删改。
④ Get只发送一个tcp数据报文(包含请求头和data),post发送两个报文(1.请求头,返回·100,2.data,返回200)
5. 接口请求中常用的返回状态码
1XX:信息提示。
2XX:成功。
3XX:重定向。(发送一个请求时,这个请求多次请求了服务器的多个资源)
4XX:客户端错误。
5XX:服务器错误。
6. cookie,session,token有什么相同点,不同点?
相同点:都是用于鉴权并且都是服务器生成的。
不同点:
① cookie保存在客户端的浏览器上,cookie不安全,可以去分析存在在本地的cookie进行cookie欺骗。
② session保存在服务器的内存,默认保存30分钟,比cookie安全,缺点就是当登录的用户越多,比较占用服务器的资源。session一般会生成一个sesionid(名称自定义),sessionid可以通过cookie传输。
③ token存储在服务器的数据库里面,通过一个接口或通过登录获取,然后后续所有的接口都必须要传token才可以请求成功。token也可以通过cookie传输。
7. 你们公司是如何做接口测试的?(包括︰接口测试流程,方案以及用例设计)
① 获取接口文档,熟悉单接口以及链路接口(接口业务流程)的业务,包括接口地址,鉴权方式,入参,出参,错误码等。
② 编写接口测试用例并评审
正例(1-2个)︰单接口返回成功场景,链路接口业务流程实现。(功能业务流程);
反例:
鉴权异常∶空,错误,过期......
参数异常:空,类型异常,长度异常
错误码异常:
其它异常∶接口黑名单,接口调用次数限制。分页(少于0,0,中间页,最大页,超过最大页);
③ 使用接口测试工具或代码的方式执行接口测试;
重要考虑以下情况:
接口关联,接口参数加密,是否动态参数,接口参数是否签名,是否需要带请求头。
④ 实现持续集成并输出接口测试报告,有Bug提bug。
8. 如果没有接口文档怎么做接口测试?
方式①:可以使用Fiddler 抓包工具抓取接口数据之后整理成接口文档,如果有不清楚的字段,找时间集中找开发验证,然后在进行接口测试。
方式②∶可以通过Jmeter的代理录制功能,先把接口请求录制下来形成接口文档,然后再逐一的进行接口测试。
9. 接口测试中,依赖登录状态的接口如何测试?
依赖登录的接口本质上是每次发送请求的时候需要带上cookie和session才能够发送成功。在请求时需要添加上cookle和sessionid。
① 如果是通过Postman来测试,Postman会自动去管理
② 如果是通过Jmeter来测试,需要增加Cookie管理器组件。
③ 如果是通过代码来实现接口测试,那么需要生成sesion对象,然后通过sesion对象来发送请求。|
10. 你平常做接口测试的过程中发现过哪些bug?
① 常规Bug ∶接口没实现,没有按接口文档返回结果,输入异常值(空值,特殊字符),接口报错,没有返回合理的错误提示。
如:购买商品接口,其中有价格参数,我去测试时把商品的价格改成-3,购买成功。
② 权限Bug :
如∶测试修改商品信息接口,接口文档要求只有商家和超级管理员才有权限修改,我传入一个普通用户的ID或者是传入其他商家的ID,修改成功。
注意:接口测试就是为了避免绕过前端验证,直接访问后端接口的BUG。
11. 你在接口测试中是怎么校验结果是否正确?
① 状态码检验,验证返回的状态码为200.
② 业务校验:
a. 错误码为0
b. 当接口响应报文比较短,比较固定的情况下,校验完全一致。
c. 当接口响应报文比较长,比较多的情况下,校验最核心的业务信息。
d. 当接口响应报文为非常复杂的多层级XML格式或JSON格式,通过Xpath,JSONpath,正则表达式的匹配方式获取到最关键字的业务节点,然后再校验。
e. 查询数据库校验或者是通过其他接口校验。
12. 如何分析一个bug是前端还是后端的?
通过抓包工具抓包,然后查看请求报文,如果请求报文对比接口文档有问题,那么就是前端的问题,如果请求报文没有问题,那就看返回报文,返回的数据不对,那就是后端开发的问题。
13. 依赖于第三方数据的接口如何进行测试?
接口关联〔依赖)是项目中的接口依赖于本项目的接口。
可以通过Postman搭建Mock服务,但是Postman的Mock服务有访问次数限制,一天只能访问1000次。也可以通过Servlet ,Flask等技术来实现接口Mock服务。
14. 对于加密接口,签名接口如何进行测试?
加密接口:在调用接口的时候,首先要弄清楚接口的加密方式什么什么?
如∶
① 对称式的加密方式(私钥加密)∶不常用的有DESAES,常用是Base64加密方式。
② 非对称的加密方式(双钥加密): RSA加密方式。
③ 只加密不解密(MD5加密)
④ 自定义加密规则。混合加密方式。
了解加密规则(签名规则)之后,在请求接口之前先要对参数做对应的加密(签合)之后在发送请求。单一加密方式,postman和Jmeter有些是支持的,postman使用javascript脚本实现,Jmeter使用beansheI中的java代码实现。