接口测试常见面试题

  1. http协议和https的区别?

        http协议:超文本传输协议,信息是明文传输;

        https协议:是由SSL+ http协议构建的加密传输协议。。

        两者使用的端口不一样,http:80,https:443

    2. 常见的post提交数据的方式有哪些?

          四种:取决于Content-Type请求头

  • Content-Type:application/x-www-form-urlencoded

        特点:数据类型是字典,相当于通过表单方式去提交数据,数据的格式:a=1&b=2

  • Content-Type:multipart/form-data

        特点:报文包含有文件上传。

  • Content-Type:application/json

        特点:报文都是字符串类型

  • Content-Type:binary

        特点:报文类型是以二进制的方式上传文件。

 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代码实现。

接口测试常见面试题_第1张图片

 

你可能感兴趣的:(servlet,java,开发语言)