• 6
  • 14
分享

互联网时代的到来,互联共享成为主旋律。多个互联网公司之间的合作越来越深入,越来越紧密,接口测试的重要性显得越来越突出。今天就把我接口测试的思路分享出来,希望可以给大家指明测试的方向,开拓大家的测试思维。

从一个模型说起,进行接口测试两年多了,不断的测试,不断的摸索,将接口测试抽象成如下模型:

967767-20170906154717116-592134760.png

模型很简单,就是四个模块,为了更好的说明这一点,我接下来展开来说。

第一:接口文档测试

对于接口接口文档是双方约定的最基础的约定,数据能否正常传输依赖于接口文档,接口文档定义的标准、规范。对于这个接口来说已经完成了大部分的工作。

从接口文档中我们要剖析出以下的点展开测试:

【1】首先明确请求的数据类型是什么,主流的有Json、http等请求。

【2】对接口文档中定义的必录项一一进行测试,看某必录项缺失时,作为接收的一方是否有合理提示。

【3】对于文档中定义的非必录项一一进行测试,看某非必录项缺失时,作为接收的一方是否可以正常接入信息。

【4】对于日期格式进行测试。支持的是yyyy-MM-dd还是yyyyMMdd还是yyyy/MM/dd这种格式进行验证。

【5】对于有效数字保留进行测试。一般接口文档要求保留最多两位小数,此时要验证整数、保留一位小数、保留三位小数时接收方的响应。(等价类划分)

【6】对于常见的身份证号、手机号要进行长度、容错性测试。

【7】对于枚举值,要一一进行测试。(运用等价类划分的方法)

【8】对于请求方的数据还要对照接口文档确认是否完全按照接口文档定义的数据类型进行传输的。看一个小小的接口文档对于测试来说有这麽多的门道。肯定需要引起大家的足够重视。

第二:进行完接口文档的测试。

那么最起码接口是满足基本功能要求的,此时我们就要基于各种业务场景,测试其接口的内部逻辑。因为针对业务不同,具体逻辑也五花八门,我只概括的进行总结,希望大家能根据自己测试的接口展开扩展。

【1】遇到时间,要确认各种业务场景下是否有因为时间而影响的场景。举个例子来说:一个借款人要来银行借款,银行的审批时间为7天,但是借款人在第8天才进行审批请求,此时已经超过银行的规定了,接口必然需要进行差异处理。

【2】遇到金额想到是否存在等式和不等式的关系。还拿借款人来银行借款这个例子来说:借款人借款之后,需要进行还款,还款请求中有还款总金额、还款本金还款利息金额。此时我们肯定要分析出:

还款总金额=还款本金+还款利息(等式成立)

还款总金额、还款本金必须>0(不等式成立),才是正确的请求。

【3】遇到运维阶段的需求改动,一定要想到历史数据的处理。这个也很好理解。还拿借款来说,银行答应借款人的借款期限是三个月,后来业务收缩,决定缩小期限变为2个月。那么已经按照3个月借款的借款人怎么办呢?肯定还是按照3个月期限进行还款。此时就需要我们的程序一定要兼容历史数据也要适用于新数据。我们测试的时候也必须考虑这一点。

【4】独立存在的逻辑场景,这个需要切实根据自己测试的功能进行总结,不在多说。建议可以将这部分建立自己的质量地图,后期维护的时候肯定会叫自己事半功倍。

第三:下面我们要进行数据库的测试。

针对接口数据库部分的测试其实占有很大的比重,我们应该着重注意测试以下方面:

【1】业务流转如何映射在数据库。一般都是靠状态、流程节点进行区分。

【2】各个表的更新如何映射业务流程。即一个接口的接入哪些表只是单纯的存储数据,哪些表是更新数据,更新的数据有哪些。一定要清晰。

【3】各个表的流转之间是不是有异常处理。举个例子来说:接口A成功接收后,需要存储表tab1和tab2,且存储完tab1才去存储tab2,此时数据库发生异常,存储完tab1但是存储tab2失败,此时需要验证功能是否回滚,是否有这部分的异常处理。

第四:其他异常流测试。

这个其实有点探索性测试的意味,到生产上遇到的异常会五花八门。这里我只说下自己的情况。

【1】dubbo重试机制引起的雪崩,测试过微服务的人都知道,运用阿里的dubbo服务搭建的接口,当消费者调用服务者的时候,如果由于网络异常原因,第一次调用失败,dubbo重试机制会自己在发送几次。此时大概率会发生数据重复存储的问题。

【2】重复申请处理,一般程序第一次接收正常,要确认第二次再次申请是不是有重复校验,不会有高并发的风险。

【3】极端情况,要知道我们测试的程序,任何固化的东西都不可信任,都可能产生风险,需要我们一一确认。具体来说依然拿借款的例子来说:借款人向银行借款,必须经过申请->银行审批->放款这个流程进行,但是借款人直接出发程序的放款机制,此时还没有经过银行审批,那程序是不是有正常处理策略,需要我们一一测试。

掌握了以上的测试流程,不管遇到什么样的接口都会手到擒来,测试其实就是一个重在分析、贵在思路的过程!希望用我的经验给大家启发,接口测试并不难,征服它的道路上我们一路同行!


本文出自51讲堂讲师海宝的博客园。原文链接:https://www.cnblogs.com/haibaowang/articles/7485880.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 软件测试其实就是对程序进行一些操作,来发现程序所存在的缺陷,衡量软件的质量,并对其是否能满足设计要求进行评估的过程。软件测试方法分类基于直觉和经验的方法Ad-hoc测试方法:强调测试人员根据自己的经验,不受测试用例的约束,放开思想,灵活地进行测试。ALAC测试方法:Act like a customer,像客户那样做,对常用的功能进行测试;错误推测法:有经验的测试人员根据自己的工作经验和直觉测出程序可能存在的错误,从而有针对性地进行测试。基于输入域的测试方法等价类划分法边界值分析法基于组合及其优化的方法判定表法因果图法pair-wise方法正交试验法基于逻辑覆盖的方法语句覆盖判定覆盖条件覆盖判...
            0 0 1146
            分享
          • 本文实现一个WebDriver测试脚本,介绍WebDrive的常用命令、UI元素定位的策略以及在脚本中的使用,还有Get命令。你将学到:· 脚本创建· 代码走查· 测试执行· 定位Web元素· 定位符类型及其语法· 总结一、脚本创建脚本创建部分仍然使用之前创建的“Learning Selenium”项目和“gmail.com”作为被测试应用程序(AUT)。场景:启动浏览器,打开“Gmail.com”。验证页面标题并打印验证结果。输入用户名和密码。单击登录按钮。关闭web浏览器。步骤1:在“Learning Selenium”...
            1 2 3233
            分享
          •   在web前端自动化测试过程种,经常会遇到各种弹出窗口:如浏览器新标签页的页面弹出窗口,告警、确认式的js弹出窗口,文件上传的windows弹出窗口等等。针对此类弹出窗口的处理,是前端自动化测试绕不过去的一个坎。接下来,我们来简单了解下这类弹出窗口的原理,和使用selenium+webdriver自动化方法处理方式,以及举例说明使用selenium ide工具的处理方法。  一、几种弹出窗口介绍  1.页面弹出窗口  1)模态弹出窗口和非模态弹出窗口  页面弹出窗口,即点击一个链接之后可能会打开一个新的浏览器窗口,跟之前的窗口是平行关系。  页面弹出窗口又可以分为:模态弹出窗口和非...
            12 12 1895
            分享
          • polita3.0的框架接口如何编写测试用例如何运行测试用例在利用caster平台进行接口管理以后,我们可以将所有的中心放在编写测试用例case。这个教程可以帮助大家快速上手添加测试用例。1、polita3.0的框架接口```python ├── bin                   这里定义了怎么生成open-api ├── ci    &...
            0 0 2159
            分享
          • TL;DR, 不需要!背景年前老东家裁员,我了解到的是原来不跟业务,纯做测试中台的几个同事基本都躺枪了,而技术不太行但是业务比较熟练的同事都留下了。这一波去中台化就很明显了。由于我在老东家也做测试中台,结合最近工作的感触,想聊聊这个事儿:测试到底需不需要中台?测试到底是干什么的我认为,测试工作的本质,就是平衡质量与效率。为了不出事故,总不能一点儿不测吧;为了能尽快发布,总不能事无巨细的测吧。执行质量和执行效率相同的前提下,用例越多,测试周期越长,质量越高。但是问题在于,用户会在意产品质量是不是100分么?并不是!精致的用户在意体验,严谨的用户在意稳定,大部分用户只在意能不能用。用户普...
            0 0 1136
            分享
      • 51testing软件测试圈微信