1. 什么是接口测试?为什么要做接口测试?

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

由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

2. 后端接口测试测什么?

  从下面这张图可以看出后端接口测试主要测了些什么:

3. 怎么做接口测试?

  一般情况下,由于我们项目前后调用主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送和接收。所以我们下面整理了一下使用Jmeter工具进行http接口测试。

  3.1 开发接口测试案例的整体方案

    第一步: 分析出测试需求,并拿到开发提供的接口说明文档;

      第二步: 从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点;

      第三步: 和开发一起对接口测试案例进行评审;

      第四步: 结合开发库,准备接口测试案例中的入参和出参数据,并整理成csv格式的文件;

      第五步: 结合接口测试案例文档和csv格式的数据文档,做接口测试案例的自动化案例开发。

  3.2 接口自动化适用场景

    目前设计的自动化接口测试案例有两个运行场景:

    (1)测试前置、开发自测:一个新的自动化接口测试案例开发完成后,直接发给接口对应的开发,安排在开发本地环境执行,一旦开发确认完成接口开发,就开始执行接口测试案例,基本上可以实时拿到测试结果,方便开发快速做出判断。(开发本地运行的方式就是打开JMeter工具,导入JMX文件,开始执行可。)

    (2)回归测试:开发本地测试通过后,或整个需求手工测试通过后,把自动化的接口测试案例做分类整理,挑选出需要纳入到回归测试中的案例,在持续集成环境重新准备测试数据,并把案例纳入到持续集成的job中来,这些用于回归的接口测试案例需要配置到持续集成平台自动运行。

  3.3 接口测试环境准备

    Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html

    Jmeter, 下载地址:http://jmeter.apache.org/download_jmeter.cgi

    插件的下载安装地址: http://www.jmeter-plugins.org/

  3.4 创建工程

    1.打开Jmeter:下载好Jmeter后,双击bin目录下的jmeter.bat文件:

    

    2.添加线程组:在“测试计划”上点击鼠标右键-->添加-->threads(Users)-->线程组,添加测试场景设置组件,接口测试中一般设置为1个“线程数”,根据测试数据的个数设定“循环次数”。

    

    3.添加“HTTP Cookie管理器”:

    

    4.添加“Http请求默认值”组件,当被测系统有唯一的访问域名和端口时,这个组件很好用:

    

    5.在“HTTP 请求默认值”组件配置页面,填写被测系统的域名和端口,http请求的实现包版本以及具体协议类型,线程组里的所有“HTTP Sampler”可默认使用此设置。

    

    6.在“线程组”里添加“HTTP 请求”的Sampler

    

    7.在HTTP请求设置页面,录入被测接口的详细信息,包括请求路径,对应的请求方法,以及随请求一起发送的参数列表:

    

    8.设置检查点:在被测接口对应的“HTTP 请求”上,添加“响应断言”:

    

    9.在设置页面上添加对相应结果的正则表达式存在性判断即可:

    

    10.添加监听器:方便查看运行后的结果

    

    运行结果:

    

  上述步骤完成了一个简单测试案例的创建,复杂测试案例均在此基础上扩展完成。使用Jmeter工具开发的接口测试案例,一个子系统建议放在同一个 “测试计划”中,流程测试可以通过“线程组”来区分,这样也便于设定不同的测试数据个数。比较独立的接口,可以统一放在一个线程组内,顺序完成测试。

  流程性接口的测试:如果要测试的接口可以组成一个流程,只需要顺序添加多个“HTTP 请求”的Sampler,各请求之间可以提取需要在上下文传递的数据作为参数,以保证流程中数据的一致性。

4. 接口测试持续集成

对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:

  a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

  b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等

  c) 问题定位:报错信息、日志更精准,方便问题复现与定位。

  d) 结果校验:加强自动化校验能力,如数据库信息校验。

  e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。

  f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

5. 接口测试质量评估标准

  a) 业务功能覆盖是否完整

  b) 业务规则覆盖是否完整

  c) 参数验证是否达到要求(边界、业务规则)

  d) 接口异常场景覆盖是否完整

  e) 接口覆盖率是否达到要求

  f)  代码覆盖率是否达到要求

  g) 性能指标是否满足要求

  h) 安全指标是否满足要求

什么是接口测试?为什么要做接口测试?相关推荐

  1. 理解什么是接口测试?怎样做接口测试?

    目录 一 什么是接口? 二 接口都有哪些类型? 三 接口的本质及其工作原理是什么? 四 什么是接口测试? 五 问什么要做接口测试? 六 怎样做接口测试? 七 接口测测试点是什么? 1.基本功能测试: ...

  2. 谈一谈什么是接口测试?怎样做接口测试?

    扫盲内容: 1.什么是接口? 2.接口都有哪些类型? 3.接口的本质是什么? 4.什么是接口测试? 5.问什么要做接口测试? 6.怎样做接口测试? 7.接口测测试点是什么? 8.接口测试都要掌握哪些知 ...

  3. 什么是接口测试?怎样做接口测试?

    扫盲内容: 1.什么是接口? 2.接口都有哪些类型? 3.接口的本质是什么? 4.什么是接口测试? 5.问什么要做接口测试? 6.怎样做接口测试? 7.接口测测试点是什么? 8.接口测试都要掌握哪些知 ...

  4. 面试官:你谈一谈什么是接口测试?怎样做接口测试?这样回答让他竖起大拇指!

    内容大纲: 1.什么是接口? 2.接口都有哪些类型? 3.接口的本质是什么? 4.什么是接口测试? 5.问什么要做接口测试? 6.怎样做接口测试? 7.接口测测试点是什么? 8.接口测试都要掌握哪些知 ...

  5. 接口入参形式_极光小课堂|手把手教你做接口测试

    接口测试是项目测试过程中非常重要的一环,测试的对象是接口,所以提早介入测试,对代码逻辑进行全面验证,就会更早的发现程序的问题.同时,接口测试比UI测试效率更高,并且更容易验证极端和异常的情况. 那么什 ...

  6. 做接口测试最重要的知识点

    1.为什么需要进行接口测试 目的就是要绕过前端限制对应用服务程序进行校验. 2.进行接口测试之前,需要准备做什么准备? 接口测试得有接口文档,才能进行测试,不然我们寸步难行,当然还得知道是否需要在特定 ...

  7. jmeter性能测试报告_用 JMeter 做接口测试的优劣浅析

      2018年由软件质量报道做的调查报告表明,受调查的测试人员中约有40.67%的人使用JMeter作为接口测试的自动化测试工具(排在商业化或者开源工具中的第一),剩下的为Postman(28%),以 ...

  8. 接口测试用python怎么做_请问一下python怎么做接口测试工具?

    茅侃侃 之前使用过urllib和urllib2做接口测试,在做的途中,感觉使用urllib2直接进行的get,post 请求并没有那么好用.作为测试人员,所需要的测试工具应当以方便为第一要务,测试的耗 ...

  9. 为什么python 为什么没有接口_python做接口测试的必要性

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

  10. 如何用java对接口发送请求_7. 用Java做接口测试1-发送HTTP请求和接收HTTP响应

    前面的文章介绍了使用Postman.Fiddler做接口测试,现在咱们进入代码阶段.我会使用Java做示例,讲解如何使用Java做接口自动化测试.所以,这一部分需要一些Java代码基础,需要掌握jav ...

最新文章

  1. R2LIVE: 一个鲁棒实时的雷达-惯导-视觉紧耦合的位姿估计和建图系统
  2. android Camera照相机技术(一)
  3. hdu 5464(简单dp)
  4. 安卓app 获取view的id_隐私保护问题不小 研究表示1325个安卓APP未经授权获取用户数据...
  5. Ubuntu开启防火墙
  6. python anaconda和pycharm_Pycharm下 Anaconda和Conda的使用
  7. html搜索框美化代码单词,CSS 漂亮搜索框美化代码
  8. ppt如何旋转流程图_张伟随笔37:我书写方程式和画流程图的方法
  9. VS2010测试工具对应LoadTest2010创建sql
  10. LeetCode 1733. 需要教语言的最少人数(哈希+枚举)
  11. android剪切 图片,android 剪切图片
  12. tf.Variable,tf.get_variable,tf.variable_scope,tf.name_scope区别分析
  13. python模块导入与使用
  14. 使用whistle代理
  15. idea:java注释模板配置
  16. 数据分析师的日常工作是什么?
  17. I.MX6U嵌入式Linux应用编程学习
  18. mysql手动中止查询语句
  19. 跨境电商业务之云号码
  20. AC自动机 从入门到模板

热门文章

  1. htc详细了解事件(转)
  2. 重启nginx报错解决办法
  3. 爱立信财报不振:贵族的沉疴 转型的困局
  4. 310K 是多少度?
  5. Delphi 创建文件并写入内容,以及FileCreate释放的方法
  6. VMware ESXi 8.0U1 Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
  7. 百度大脑黑白图像上色-老照片的春天
  8. 全球最具收藏艺术家-曲建杰专题报道
  9. 2022年全球市场PCB板对板连接器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  10. DBA高手楼方鑫:从ebay到支付宝