zoukankan      html  css  js  c++  java
  • 接口测试原理、流程、用例设计、面试相关问题

    转载的大佬文章:https://blog.csdn.net/gaofengyan/article/details/92647301

    接口测试的原理是模拟客户端向服务器发送报文请求,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的一个过程。
    接口测试流程:

        模拟客户端连接服务器(服务器提供的端口是否可访问)
            ↓
        客户端发送报文请求
            ↓
        服务器端接收请求并做处理
            ↓
        检查返回的预期结果并与实际结果对比
            ↓
            结束
    接口测试用例设计:

      接口测试的主要测试对象是接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖所有接口是很难的一件事情,且实际过程中任意内部接口的变动都可能导致我们测试用例的不可用。

      所以通常情况下我们主要测试最外层的两类接口:数据进入系统接口和数据流出系统接口

      数据进入接口是模拟执行外部系统的接口(调用外部系统的参数为本系统使用)

      数据流出接口是验证系统处理后的数据是否正常

      在设计用例时还需要确认外部接口提供给使用这些接口的外部用户什么样的功能,外部用户真正需要什么样的功能

      接口测试用例设计和测试用例设计基本一致,用例设计的内容应该包括:主要测试功能点(测试目的)、预置条件(网络环境、系统状态)、测试数据、测试步骤以及预期结果。

    接口测试能发现哪些问题
    面试题1:你平常做接口测试的过程中发现过哪些bug?

    这个问题其实回到起来很简单,只要做过接口测试的,总能发现几个BUG吧,把你平常发现的bug说2-3个就可以了。
    面试官出这个题,主要是想知道你是不是真的做过接口测试,毕竟现在很多小伙伴简历都是写的假的(你要不写估计面试机会都没有,没办法,为了生存,能理解)
    比如上面说的,提现输入框,在页面上输入负数,肯定是无法提交过去(前端页面会判断金额),如果我不走前端,直接用接口工具发请求,输入一个负数过去。
    (假设服务端没做提现金额数据判断)
    余额=当前余额(100)-提现金额(-100),那么提现-100,余额就变成200了,也就是越提现,余额越大了

    可以用接口工具去直接请求接口,也可以fiddler抓包,抓到接口后修改金额为负数

    所以,接口测试的必要性就体现出来了:
    1.可以发现很多在页面上操作发现不了的bug
    2.检查系统的异常处理能力
    3.检查系统的安全性、稳定性
    4.前端随便变,接口测好了,后端不用变
    5.可以测试并发情况,一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
    6.可以修改请求参数,突破前端页面输入限制(如金额)

    接口测试怎么测
    面试题2:平常你是怎么测试接口的?

    通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。

    参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。

    接口安全:
    1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
    2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
    3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
    4、密码安全规则,密码的复杂程度校验

    异常验证:
      所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。

    性能测试
    接口并发情况,如上面提到的:一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
    接口响应时间,响应时间太长了,肯定需要优化,一般都是毫秒级别。

          

    数据依赖
    面试题6:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?

    用一个全局变量来处理依赖的数据,比如登录后返回token,其它接口都需要这个token,那就用全局变量来传token参数

    依赖第三方
    面试题7:依赖于第三方数据的接口如何进行测试?

    这个标准答案是:mock

    接着面试官会问你,如果mock的,然后你就顺着坑继续挖,搭建mock服务,参考这篇【https://www.cnblogs.com/yoyoketang/p/9348552.html】

    抓包
    面试题8:当一个接口出现异常时候,你是如何分析异常的?

    1.抓包,用fiddler工具抓包,或者浏览器上f12,app上的话,那就用fiddler设置代理,去看请求报文和返回报文了
    2.查看后端日志,xhell连上服务器,查看日志

    弱网
    面试题9:如何模拟弱网测试

    fiddler和charles都可以模拟弱网测试,平常说的模拟丢包,也是模拟弱网测试

    分析bug是前端还是后端的
    面试题10:如何分析一个bug是前端还是后端的?

    平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug
    这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
    请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯


    ————————————————
    版权声明:本文为CSDN博主「高风言」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/gaofengyan/article/details/92647301

  • 相关阅读:
    分解质因数算法
    js 的 Math 对象
    字符串操作
    简化求质数算法
    数值类型小数点后是否可以接零问题
    新博第一篇,思考的重要性与求质数算法
    一、制作屏幕录像
    四、同步线程
    常见问题
    jni数据处理
  • 原文地址:https://www.cnblogs.com/qqxin/p/11788209.html
Copyright © 2011-2022 走看看