接口测试及常用工具

一、什么是接口测试?

  接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

、为什么要做接口测试?

  1、接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。

  2、从安全成面来说:只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。其次,前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

说了这么多如何设计接口测试用例呢?设计测试用例的时候可以重这9个方面进行考虑:

  1、基本功能测试(业务测试):

    必须要清楚业务流程规则和每个接口的使用场景方式,设计符合业务逻辑和接口使用场景的用例。保证每个接口的基本功能正常

  2、边界分析测试:

    在基本功能的基础上,就开始考虑输入输出参数的影响,主要采用的方法有等价类划分和边界值等方法。

      覆盖所有的参数

      组合可选的参数

      参数有无或者为空

      参数的顺序、个数和类型

      参数数值类型数值大小和输入参数的范围

      参数字符串长短

      参数包含特殊字符

   3、参数的组合测试:

     上述根据边界值的基础上,考虑输入条件的各种组合和输入条件之间的相互制约,尽可能多的去覆盖参数的组合。

   4、异常情况测试

    接口实现是否对异常情况都进行了处理,有些内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何异常都进行处理,比如:某个接口需要先登录获取 sesssion,如果直接调用该接口应该给出相应提示,是否提示登录失败。

   5、重复提交接口的幂等级测试

    简单说就时针对连续重复提交的情况的进行测试,特别是涉及到交易金额的场景,需要验证软件是如何处理的。

   6、多用户并发测试

    就是两个以上用户同时操作使用同一场景时,可能引导争夺资源,死锁等现象。

   7、事务性测试

    这里是针对一个业务流程含有多个操作步骤,其中一个操作失败,整个操作就需要回滚,或者是调用前一个接口的逆向接口进行操作取消。

   8、大数据量时测试

    就是在数据库数据比较多,比如百万级别的时候,向数据库增删改查操作的效率

   9、环境的异常测试

    有关系的系统出现宕机、请求超时或者是无响应的时候,接口要返回正确的提示信息,业务逻辑要正确,不可出现业务逻辑不一致的情况。

好了设计完测试用例,后面就要执行测试并验证测试结果的正确性,下面说一下测试验证点需要关注的几个方面:

  A、接口返回数据

   a) 返回json数据的层次关系是否与文档一致,不能出现json格式返回的数据的结构与文档不符,否则前端数据或者是其他系统调用接口时数据显示就会有问题。注:接口返回的数据是json格式,数据是通用的,适用于任何的系统。

   b)数值类型数据: 特别是金额,负数、小数转为json输出是否正确

   c) 接口返回数据与接口文档一致

   d)接口返回数据和数据库一致

   e) 接口返回数据符合业务逻辑(比如转账功能,从一个账户扣款,另一个要增加相应金额)

   f) 对于列表,应该根据请求参数,也应该验证列表的长度是否与期望值一致

   g) 负面测试用例,应验证ERROR INFO是否与实际相匹配

  B、数据库    

   a) 接口传入数据与插入DB的数据一致性:

           b) 前端某个操作涉及后台DB多张表时,每张表都要检验数据正确性。

       

  C、安全层面:

   a) 后端接口返回给前端的数据包含敏感信息(如:姓名、身份证号、卡号、手机号、加密后的密码等)时,不能明文传输,需要加密。

        b) 后台打日志要求对于敏感信息不能打出,或者进行加星号脱敏后打出,具体有:

             1) 身份证号,用户密码(含加密后),用户手机号码,用户姓名,银行卡号

             2) 身份证号码脱敏字段为生日时,生日在日志中不能打出

   D、性能层面:

    a) 接口响应时间: 接口处理数据的时间也是测试需要关注的一个点。牵扯到内部就是算法与代码的优化

    b) 接口数据包大小:接口传递的数据包大小也需要关注,特别是返回给前端的接口,要把不同接口数据包大小需要做限制。

    c) 并发承载能力:多用户并发时接口可以承载合同中的并发量。

 

三、接口测试常用工具

1、jmeter的使用

  首先讲下咱们平时脚本中经常使用的3点,分别是检查点、关联、参数化。

  检查点:首先jmeter的检查点是用断言来实现的,在lr中是有专门的检查点函数,那么为啥要使用检查点呢?其实检查点的作用就是自动检测业务请求是否真正成功的,尤其是在压测接口的时候我们通常强调事务请求的成功率,而工具判定请求是否成功是按照服务器返回的状态码来判定的,只要不是4XX(客户端请求错误)或者是5XX(服务端异常)才会判定请求是错误的,但是登录如果失败,服务器不会返回上述4Xx和5XX的状态码,此时jmeter就会认为请求是成功的,所以像这类无法去判定请求业务的需要加检查点去检测请求是否成功。

  关联:啥时候使用关联呢?就是后面的请求需要使用前面的请求返回的动态变化的值,不然请求就会被认为不合法被服务器拒绝请求。一般关联的地方大致分为两大类,一类是服务器需要校验的动态变化的值,另一类是int类型的整数,在数据库中与其他数据参数关联关系,或者是补齐请求中where条件等。这里不再赘述。

 

猜你喜欢

转载自www.cnblogs.com/zpbk1991/p/8574663.html