我理解的接口测试(二)

上文中,谈了一些接口测试的概念和原理。接口测试的原理很简单:模拟调用方往接口放数据后再校验拿出来的数据。原理说起来的确很简单,但如何模拟、如何调用、如何校验?这些问题你必须在接口测试开始之前都得找到答案。

如何模拟?



目前,有很多的接口测试工具,例如:postman、jmeter、SoapUI、robotframework+协议lib、firefox插件RESTClient等,是的,可以用来做接口测试工具很多,不同的工具能够模拟协议也不尽相同。所以,需要先知道被测应用的接口是什么协议?HTTP、HTTPS、SOAP、XMPP、DUBOBO、FTP、SMTP等,确认接口协议后,再来挑选需要使用的接口测试工具。但作为一个靠谱的测试人员,应该提前储备这些测试工具的使用方法,在测试需求到来之时能直接上手开展接口测试。

如何调用?



虽然所有的接口测试工具都能手动调用,但从长远来看,更应该去使用支持No Gui(命令行)运行测试集的工具。因为,在前期我们用来做接口手工测试的测试集能很快转换为接口自动化测试的测试集,再接入到我们的CI平台(eg.jenkins、Travis CI等),通过Svn操作或定时任务触发,构建=>发布=>接口测试=>测试报告=>邮件,从而达到持续集成(持续集成不仅仅是接口测试),快速发现问题。

如何校验?



接口测试工具都会展示返回数据,并提供展示模板(json、html、xml等),我们除了校验数据是否正确以外

  • 校验返回的数据格式是否符合协议文档(例如:协议定义返回的数据格式是int,那么返回的数据不应该是“1”,而应该是类似1这样的数据)
  • 校验返回的数据结构是否符合协议文档(例如:协议定义返回的数据结构中name为必返回,那么返回的数据中必须包含name)
  • 校验指定场景下,非必返回的数据是否返回(例如:协议文档中的字段sex非必返回,只有当请求值sex为空时才返回,那么在构造测试用例中,要构造请求值sex为空的请求数据,再校验返回的数据中是否包含字段sex,没有则用例执行失败)
  • 校验数据持久化正确性(例如:需求定义查询时保留查询记录,那么校验返回数据之外,还得校验数据是否正确持久化,有没有存到相关数据库表或缓存服务器中)

从长远来看,更应该去使用校验手段更多的接口测试工具(能断言返回数据、能查询并断言数据库和缓存服务器、能横向扩展校验功能),从而确保全覆盖的接口自动化测试。

下图就是主流测试工具的横向对比,仅供参考

总结下:

  • 无编程能力、要快速上接口测试,推荐:postman
  • 要陆续推进、深耕接口测试,推荐:Jmeter
  • 想同时推进UI和接口,推荐robotframework
  • 基于SOAP协议的接口测试,推荐:SoapUI

事实上,被测应用并不只是单个模块,很可能是多个产品构成的复杂架构,这种情况,如何最优的进行接口测试?下篇讲解

部分说明:

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

Martin Fowler说过,"持续集成并不能消除Bug,而是让它们非常容易发现和改正。"

在编程语言中,“1”和1是不同的数据类型,前者是字符串,后者是整数

数据持久化:持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)

时间: 2024-10-01 23:59:47

我理解的接口测试(二)的相关文章

【转载】理解矩阵(二)

原文:理解矩阵(二) 接着理解矩阵. 上一篇里说“矩阵是运动的描述”,到现在为止,好像大家都还没什么意见.但是我相信早晚会有数学系出身的网友来拍板转.因为运动这个概念,在数学和物理里是跟微积分联系在一起的.我们学习微积分的时候,总会有人照本宣科地告诉你,初等数学是研究常量的数学,是研究静态的数学,高等数学是变量的数学,是研究运动的数学.大家口口相传,差不多人人都知道这句话.但是真知道这句话说的是什么意思的人,好像也不多.简而言之,在我们人类的经验里,运动是一个连续过程,从A点到B点,就算走得最快

理解ThreadLocal(之二)

想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理.首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景. 以下是本文目录大纲: 一.对ThreadLocal的理解 二.深入解析ThreadLocal类 三.ThreadLocal的应用场景 若有不正之处请多多谅解,并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://ww

OWIN的理解和实践(二) – Host和Server的开发

原文:OWIN的理解和实践(二) – Host和Server的开发 对于开发人员来说,代码就是最好的文档,如上一篇博文所说,下面我们就会基于Kanata项目的一些具体调用代码,来进一步深入理解OWIN的实现和作用. 今天我们先针对Host和Server来实现一个简单的应用. 我们的开发环境是:  VS2013 Update 3,  .Net Framework 4.5.1 Host开发 如上篇博文提及,Host具有如下特点: 实现一个宿主进程 负责Server的启动和关闭 负责Middlewar

深入理解zabbix(二)

深入理解zabbix(二) 1.Zabbix Web操作深入 1.1 Zabbix Web下的主机和模版以及监控项的添加方式 (1)创建一个模版 我们所有的功能几乎都是在模版中定义的 我们再点进新创建的模版查看,模版里几乎可以设定我们需要的所有功能 (2)在模版里创建应用集 应用集的作用就是将众多的监控项进行一个分类,方便我们的管理 (3)在模版里创建一个zabbix自带的监控项 (4)监控项里的键值我们到底要如何写?我们需要学会照葫芦画瓢 我们选择一个系统模版Template OS Linux

我理解的接口测试(一)

接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 接口 应用(模块)提供对外信息交互的功能.其实可以把被测模块想象成一个黑盒,那么接口就是用来从盒子里拿东西(data)和放东西(data). 接口测试验证点 网上很多资料说验证返回字段.验证数据持久化内容等,那我的理解是:验证接口的意图! 接口不会平白无故的设计,接口的设计是为具体的业务功能服务,而我们对

理解支持向量机(二)核函数

由之前对核函数的定义(见统计学习方法定义7.6): 设χ是输入空间(欧氏空间或离散集合),Η为特征空间(希尔伯特空间),如果存在一个从χ到Η的映射 φ(x): χ→Η 使得对所有的x,z∈χ,函数Κ(x,z)=φ(x)?φ(z), 则称Κ(x,z)为核函数,φ(x)为映射函数,φ(x)?φ(z)为x,z映射到特征空间上的内积. 由于映射函数十分复杂难以计算,在实际中,通常都是使用核函数来求解内积,计算复杂度并没有增加,映射函数仅仅作为一种逻辑映射,表征着输入空间到特征空间的映射关系.例如: 设输

深入理解http(二)------http的缓存机制及原理

一.概念基础 参考原文:https://blog.csdn.net/hiredme/article/details/73468040 http的缓存,主要存在于本地浏览器和web代理服务器中. 在这里,我们讲的是浏览器缓存. 1. 响应头ETag(Entity Tag) Etag用来表示一个资源.在服务器返回响应时包含这个值,不同的资源response返回不一样的Etag.在下次请求相同的资源时,浏览器会在 if-None-Match中带着Etag的传给服务器,如果服务器发现Etag和上次相同,

深入理解多线程(二)—— Java的对象模型

上一篇文章中简单介绍过synchronized关键字的方式,其中,同步代码块使用monitorenter和monitorexit两个指令实现,同步方法使用ACC_SYNCHRONIZED标记符实现.后面几篇文章会从JVM源码的角度更加深入,层层剥开synchronized的面纱. 在进入正题之前,肯定有些基础知识需要铺垫,那么先来看一下一个容易被忽略的但是又很重要的知识点 -- Java对象模型 . 大家都知道的是,Java对象保存在堆内存中.在内存中,一个Java对象包含三部分:对象头.实例数

第2课:通过案例对SparkStreaming 透彻理解三板斧之二:解密SparkStreaming运行机制和架构

本篇博文将从以下几点组织文章: 1. 解密Spark Streaming运行机制 2. 解密Spark Streaming架构 一:解密Spark Streaming运行机制 1. DAG生成模板 :DStreamGraph a) Spark Streaming中不断的有数据流进来,他会把数据积攒起来,积攒的依据是以Batch Interval的方式进行积攒的,例如1秒钟,但是这1秒钟里面会有很多的数据例如event,event就构成了一个数据的集合,而RDD处理的时候,是基于固定不变的集合产生