精华内容
下载资源
问答
  • 一个软件系统越庞大,需要用到的接口相对越,同时接口的复杂度和接口的设计都需更好的设计和提升。那么,什么是 API 测试?API 测试其实是一种用程序或工具来发送数据,同时验收系统的返回值的方法。这种测试...

    89475b41bbd140abe34e29f88e440d11.png

    首先,我们想,什么是 API ?

    简单来说,API,是应用程序接口(Application Programming Interface,又称为应用程序编程接口),是软件系统不同组成部分衔接的约定。一个软件系统越庞大,需要用到的接口相对越多,同时接口的复杂度和接口的设计都需更好的设计和提升。

    03cf8d99db8b685e0da733ad5fb3e0bf.png

    那么,什么是 API 测试?

    API 测试其实是一种用程序或工具来发送数据,同时验收系统的返回值的方法。这种测试更偏向于业务实现逻辑。常见的网络协议有 TCP、Http、webservice、socket 等,http?和 webservice 都是基于 TCP/IP 协议的应用层协议,webservice 是基于 http 的 soap 协议传输数据。我们今天主要说最常见的基于 http协议的API 的测试。

    一般来说,API 测试是除去单元测试和白盒测试之外最能够从底层发现问题的测试方法。那么,API 测试需要注意哪些技术细节呢?换句话说,怎么做一个好的 API 测试呢?

    我们从以下四点说起:

    1 、用例设计

    如果把 API 看做一个黑盒的话,那么我们首先可以设计基于边界值法、等价类划分法等的黑盒用例,这些设计思想其实占据很大成分。常见的比如参数值的边界,参数缺失/多余,参数空/非空,特殊字符等;对于复杂的参数,比如结构体/数组链表等,可以考虑其最大长度限制/内置特殊字符等。

    其次,请求方式/不合法的数据格式/不合法的cookie 也会影响到一个接口的返回值。还有,有些接口涉及到加密解密,需要传一些密钥值,一些非合法秘钥的检验,来观察 API 的响应情况。最后,如果手里有很详细的接口文档,把每个 return code 都覆盖到,很有必要。比如正常是 200 OK,此外还有400(不合法请求),401(未授权),429(太多请求)等,或其它一些自定义的 error code,覆盖的过程,也是把工程代码分支覆盖的过程。

    84392278682df583601e5c8a72b5c4cf.png

    2 、请求工具

    一般用 Chrome 浏览器的话,postman 的使用频次应该是最多的了。也可以下载postman 等位客户端。之前用 Firefox 浏览器的时候,还用过 HttpRequester。不管用哪种,方法一样。

    首先,填写好测试 URL,选择测试方法(GET/POST/PUT/DELETE),设置 Header(常用的有 content-type/Cookie 等),设置 authorization type(Basic Auth等),最后在 body 中填充测试数据。接下来,点击 send 就好啦,这样就发送了一个请求到你的目标 API 了。

    这里面比较复杂的可能就是 body 了,常用的格式有 form-data, x-www-form-urlencoded, applictaion/json 等。用哪种格式,正规的接口文档里开发同学就会注明。此外,postman 有一个功能很 nice,就是它可以配置环境变量。把配置信息抽象成类,不同环境对应不同的实例,初始化设定后,在 request 请求中通过实例成员变量来引用不同的值,从而在需要的时候通过切换环境来选择不同的配置信息。比如:我配置了一个env1 环境,并添加了一组 key 和 value,那么当我引用{{}}这个变量时,就会替换成你所配置的。

    be5db5f9a8e15c0b4386e05cbc642a92.png

    eace5b6af9f202f99e032f784dc22e6b.png

    cc41a62310123120b3e802f71283108e.png

    3 、程序设计

    首先是选择用哪种语言和相应的请求包,比如 python 的话常用的就是 requests 库,而Golang 的话你可以使用 net/http 包或是 gorequest 包。拿 python 来说,短短十来行代码就可以模拟发送一个请求。

    b30fb830b57dadd9cecd4f56bad47ad2.png

    但是难点并不于此。

    如何组织用例?

    一般来说,用例可以分为单个接口用例和场景用例,单个接口很简单,针对一个接口的参数设置边界值,对应校验不同的返回;场景用例涉及到多个接口的调用,用以简单模拟用户行为。

    测试数据应该放在哪里?

    测试数据可以放在用例里,也可以放在 json/yaml 等配置文件中。如果涉及到图片/视频等比较大的测试文件,最好不要存在本地,可以在测试服务器搭建一个简单server,比如使用 ngnix,接下来只需要访问这些测试文件的链接就好了。

    使用哪种风格的测试框架?

    现在基本有 BDD 和 TDD 两种框架之分,我更倾向于使用 BDD,也就是“行为驱动测试”。这个风格有两个优点:

    1.场景分级,易读清晰,方便定位失败的用例

    2.新手好上手,BDD 的过程就是写 case 的过程。下面是它的一个流程图。

    3d2c0d99697434d67605a807944291fc.png

    4 、接口分析

    如果你的团队里面,能够维护一份完整细致的接口文档,当然是最好的。如果没有的话,那么,优先去推动开发生成一份合适的 API 说明文档吧。如果达不到这个阶段,但是也要做自动化,那么你就要掌握基本的抓包分析工具,能够自己去抓包分析形成API 文档。

    所以接口分析是很必要的,也属于接口测试的高阶提升。比如接口定义是否冗余,接口的请求字段是否冗余,接口调用是否得到了所有期望的信息,接口调用是否合理方便,接口是否做到最数据库进行了正确的变更,接口的平均响应速度是否在可接受范围等。这些指标的分析,有时候可以反馈给开发同学,对优化整体性能也是有益处的。同时,这些分析可以帮助你更好理解这个过程的来龙去脉,理解这些 API 做了什么,又产生了什么影响。

    总之,API 测试上手很简单,但做得好,做成工程化还真需要费一点力气,一些技术细节的把控和提升,会无形中提升整体的测试水准;而如何让 API 测试真正在我们的日常工作中发挥出最大作用,也需慢慢研究和调整的。

    展开全文
  • 接口测试与管理作为接口生命周期的一部分,有着不可分割的关系。接口发布前需要经过严格的接口测试,发布后则需要...而接口则需要形成场景测试用例,用于验证测试流程接口管理 接口管理涵盖了接口测试,是接口

    接口测试与管理作为接口生命周期的一部分,有着不可分割的关系。接口发布前需要经过严格的接口测试,发布后则需要对接口进行管理。并随着接口逐渐成为程序的核心,接口测试与管理也越发重要。

    接口测试

    接口测试作为验证接口是否可正常运行的步骤,是程序的质量保证。在接口测试中,测试人员需要将接口测试作为应用程序测试来看待,例如边界值、特殊值法,都可以用于接口测试。

    为了使测试有迹可循,每一次测试还需要生成相应的测试用例。

    而多个接口则需要形成场景测试用例,用于验证测试流程。

    接口管理

    接口管理涵盖了接口测试,是接口生命周期管理的简称,其中接口管理最基本的是接口文档管理。现如今项目开发迭代的速度越来越快,对接口文档的灵活性与快捷性要求越来越高,若文档跟不上研发的速度,项目经过迭代更新,并伴随着人员流动,变得难以维护,而一份好的接口文档能跟上项目快速迭代的脚步。

    编写一份高质量的接口文档往往比接口开发更难。接口本身的基本信息多,接口文档还需记录接口的创建时间、版本等信息。

    接口工具

    接口工具可以方便我们快速对接口进行测试,并通过工具自身功能实现接口管理(如本文演示的Eolinker)。若现阶段考虑对项目的接口进行统一管理,包括接口文档、测试、监控、网关等,可以考虑使用一款强大的接口工具。不仅能简化管理流程,还可以提高整个项目的安全性与稳定性。 演示地址:www.eolinker.com

    展开全文
  • 这次,结合自己之前的经验,然后查阅了各种网上的资料,以此文章简单总结下接口测试:了解什么是接口测试,接口测试如何进行。 一、什么是接口测试 接口测试是项目测试的一部分,正如其名,它测试的主要对象是接口...

    接口测试基础-什么是接口测试及其测试流程

     

    通过我之前工作项目中有过一些测试接口功能、性能、稳定性的经验。但是一直没有对自己的经验进行总结。这次,结合自己之前的经验,然后查阅了各种网上的资料,以此文章简单总结下接口测试:了解什么是接口测试,接口测试如何进行。

    一、什么是接口测试

    接口测试是项目测试的一部分,正如其名,它测试的主要对象是接口,是测试系统组件间接口的一种测试。

    百度百科对接口测试的定义:接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。

    一般来说接口测试按测试对象分为两种类型:模块接口测试、web接口测试;web接口测试又可以分为服务端接口测试和外部接口测试。

    模块接口测试其实就是单元测试的基础,适用于分别开发一些功能模块,数据会在这些功能模块之间传递。服务端接口测试,就是测试客户端/浏览器与服务端接口,一般开发人员都分为前端开发和后端开发,他们之间的怎么进行接口交互,可以参考我之前的文章接口测试基础-了解http请求。外部接口测试,其实相对而言的,这个接口不是本系统内部的,而是调用的是第三方的接口,如支付宝授权登录,需要调用支付宝授权接口。

    接口测试是一种完整的测试体系,也分为接口功能测试、接口性能测试、接口稳定性测试、接口安全性测试。

    接口测试也可以分为参数测试和场景测试。参数测试就是对单个接口的入参和出参进行详细的测试,包括入参默认值、必传项、非必传项、业务逻辑、兼容性测试(是否兼容不同版本的前端)、错误码、异常类型、安全加密等。场景测试,就是指单个接口组成的连续的场景,比如注册功能,需要包括发送验证码接口、注册接口,其中注册接口包含的功能有验证注册账号和注册验证码功能。

    二、接口测试的测试流程(免费领取Python自动化学习资料  工具,面试宝典面试技巧,加QQ群,785128166,群内还会大佬技术交流)

    了解了接口测试是什么之后,怎么做接口测试呢?接口测试的流程其实和功能测试流程类似:接口测试计划-接口测试用例-接口测试执行-接口测试报告。测试用例设计的依赖对象主要是需求说明书和接口文档。

    接口测试因其不是针对普通用户,而是针对的另外一个系统组件,所以不能直接测试,需要使用工具测试,比如服务端http接口测试,常用的工具有jmeter、postman、httpclient等。用工具测试,所以目标就是准备要测试数据测试脚本后直接执行即可, 在进行测试执行编写时,有如下的原则:

    1.不同的接口参数覆盖不同的业务场景;

    2.在后台构造合适的数据来满足接口的测试用例;

    3.根据接口的返回值,断言其是否返回期望结果,并查看数据库验证;

    4.测试用例涉及多个步骤的,应对涉及的步骤都验证

    5.删除测试过程中产生的结果,确保每个用例执行前都是一个清洁的环境

    展开全文
  • 》》》推荐阅读《《《1、性能测试学习笔记-场景设计2、性能测试的重要意义3、性能分析流程及方法4、应用系统性能调优之性能分析关键词:参数化、http请求、json、并发、接口测试接口测试时, Jmeter是常用的工具。...

    065c530aca9584850bd51ab8d455f95c.png

    》》》推荐阅读《《《

    1、性能测试学习笔记-场景设计

    2、性能测试的重要意义

    3、性能分析流程及方法

    4、应用系统性能调优之性能分析

    关键词:参数化、http请求、json、并发、接口测试
    做接口测试时, Jmeter是常用的工具。那么怎么用这个工具来做接口测试呢?
    一、首先,先了解下,什么是接口?什么是接口测试?
    接口实现系统模块与模块或系统与系统间进行交互的功能。一般现在使用的比较多的是基于HTTP协议为基础的接口(包括WebService协议或者Tuxedo协议),还有就是PRC接口。但是接口的本质其实是发送一个request报文给服务器,然后服务器返回一个response的响应报文。
    接口测试即发送特定的request报文给服务器(包含正常数据的报文、异常数据的报文等),然后看查看返回的response报文是否和我们的期望值符合。从而验证业务是否正常实现了。
    本文用一个例子来说明下如何用Jmeter来进行接口测试。
    二、接口测试的流程
    一般是这样的:
    1.首先要根据接口文档,对请求参数进行测试点分析,罗列测试点
    2.开评审会议,根据测试点写测试用例,测试用例评审,
    3.然后是执行测试用例。可以用jmeter(或者Posterman),在上面输入参数和查看返回值。
    4.测试报告
    5.产品上线以及测试总结。

    三、示例
    例如:我们要测试一个接口,该接口的输入参数有好几个,然后我们需要测试找个接口。
    该接口需要输入7个参数。有两种方法可以满足我们的需求
    1.  因为输入数据是json格式,我们可以将输入参数放在Body data中
    首先打开Jmeter,默认创建一个测试计划,我这边起名字叫接口测试示例
    然后创建一个线程组,cb0b7e6eaad76e3e971881b13832434a.png创建一个Http Request:3904dcf08b1ffa36a1fc5693dedcc735.pnghttp请求配置如下:047a7288f6596429351813374546aed6.png因为是json格式,我们配置一下报文头格式0a67f610b0cd3de8752b69316b67b919.png6114098a4c270bd8a61f8281bef6c6bb.png 
    然后配置下监听器,对于接口测试来说,使用结果树比较合适65d130180b62039bb795382ac44efa2f.png点击执行按钮,执行后,可以通过结果树查看结果fb598a7ee30369f1b8683cae56c00435.png2.  可以将请求报文放在一个txt文件(或csv文件)中
    创建线程组、Http 请求、Http 头、查看结果树等都和方法一一样,不同的是,request中的报文,我们可以放在一个txt文件中,然后去读取这个txt文件中的配置。
    首先,增加一个CSV Data Set Config38192521d06ad51eaaa3e4da2a769bab.pngCsv Data Set的配置如下:acb8ef9a65a06553da95ab657d37f03e.png参数都配置在aaa_config.txt中,如下:4e42e8c6d92a26c73930be3d99b12f1e.png

    注意:Csv Data Set的配置的变量名称和Http Request参数中配置的变量名要保持一致

    点击执行按钮,结果如下:1bee800d82a513c6ae019e102bd7ac4f.png

    当要测试的场景很多时,用第二种就可以一次执行测试多个场景,比如txt文件中可以配置多个测试场景,如下图所示:36c601d178df5c71a98e6a4b69b96c45.png可以在线程组中设置多个用户一起执行,比如设置并发数为4e92127bd682977537102214a17034024.png执行结果如下,

    ee1ade1e12ce08ef121be7452674d3eb.png2b64e16b57c7e97ae32f0365343d221c.png 
    会发现,这两种场景都被执行到了。

    说明:这只是比较简单的测试接口的方法,在使用过程中,根据实际业务场景,可以添加一些集合点、断言、逻辑控制器之类的。这些在我的其他的博文中有说明,这里不在赘述。

    》》》推荐阅读《《《

    1、性能测试学习笔记-场景设计

    2、Web站点性能调优完全攻略

    3、应用系统性能调优之性能分析

    4、Windows监控——性能指标详解

    6、性能测试的重要意义

    7、软件性能测试的本质_致命版

    8、性能分析流程及方法

    9、性能测试流程

    10、性能测试从需求分析开始

    11、性能测试指标

    12、双活数据中心揭秘之—DB2 PureScale

    13、循序渐进学习oracle

    14、软件项目管理中的十个误区

    15、功能测试方法总结及常见面试问题

    16、MQ来账通道及队列配置

    17、Linux命令大全整理

    18、JMeter工具简单介绍

    19、性能瓶颈分析方法

    20、性能测试-LoadRunner操作流程之一

    22、性能测试-LoadRunner操作流程之二

    23、性能测试-LoadRunner操作流程之三

    24、性能测试-脚本编写之一

    25、性能测试-脚本编写之二

    26、性能测试-脚本编写之三

    27、性能测试-性能调优之一

    28、性能测试-性能调优之二

    0d1b8ed2808a77ec416c0a3d68796cb1.png

    展开全文
  • apipost对于接口流程测试有一个环境变量设置,这里的环境变量设置是对于测试环境和正式环境可以很好的区分,只需要把正式环境和测试环境不同的url创建成不同的环境变量使用的时候调用他们就可以明确的分辨了。...
  • apipost对于接口流程测试有一个环境变量设置,这里的环境变量设置是对于测试环境和正式环境可以很好的区分,只需要把正式环境和测试环境不同的url创建成不同的环境变量使用的时候调用他们就可以明确的分辨了。...
  • apipost对于接口流程测试有一个环境变量设置,这里的环境变量设置是对于测试环境和正式环境可以很好的区分,只需要把正式环境和测试环境不同的url创建成不同的环境变量使用的时候调用他们就可以明确的分辨了。...
  • ApiPost对于接口流程测试有一个环境变量设置,这里的环境变量设置是对于测试环境和正式环境可以很好的区分,只需要把正式环境和测试环境不同的url创建成不同的环境变量使用的时候调用他们就可以明确的分辨了。...
  • 优点:1、支持用例管理2、支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能3、支持批量运行4、支持用例导出、导入5、支持云端保存用例【付费用户】可以说POSTMAN满足了HTTP接口测试的大部分功能...
  • 在测试接口的时候,有的接口需要测试随机传入大量数据,查看数据库是否正常,但是大量的随机数据全靠自己手写会很慢,而且是通过json传递的...在我们需要大量生成随机数据进行测试的时候就可以使用流程测试。 这里运
  • 对于后端开发来说,日常接口文档的编写,接口的调试,以及配合qa去做接口测试大约会占据我们日常百分之三十及以上的工作量。我们现如今开发阶段的开发一个接口的工作流程大概是:1.在wiki对应的项目上去编写接口文档...
  • 在测试接口的时候,有的接口需要测试随机传入大量数据,查看数据库是否正常,但是大量的随机数据全靠自己手写会很慢,而且是通过json传递的...在我们需要大量生成随机数据进行测试的时候就可以使用流程测试。 这里运
  • 做为后端开发人员,要求独立开发完成某个接口后,开发人员自己需要先测试通过后再提交给测试人员进行测试,否则会出现到测试人员哪里业务流程根本就走不通,或者BUG会过多的情况等。市场上有很优秀的,完善的接口...
  • 首先我们在Eolinker的自动化测试中创建一个流程测试用例,里面有两个测试步骤,在第一个步骤中,请求体填写需要加密的参数。 按需求在前置脚本或后置脚本,编写加密脚本。获取请求参数的值,进行加密后赋值为全局...
  • 接口测试-1

    2019-06-17 10:29:00
    4、如何进行接口测试? 5、接口测试是否可以比页面测试更高效? 针对以上方面,可以开展讲解的部分又可以细化: 1-1接口测试的目的:验证接口的正确性。 接口测试的正确性从业务层面开展:单个接口可以正常执行...
  • API接口测试理论

    2020-09-26 16:21:49
    如:app与Server间如何进行数据交换,传递 意义 确保主要流程及系统的稳定性 将BUG控制在项目前期 缩短产品的研发周期 检查服务器的异常处理能力 方法 通过编写脚本代码进行测试 通过工具进行测试 如 Jmeter 手工在...
  • DevOps不是单一的技术或者工具,甚至不只是一个流程,而是包含应用设计、敏捷开发、持续交付和监控运维等一系列流程,涉及到企业文化、团队协作流程个方面,它可以被理解为一系列可以高速、高质量进行软件开发的...
  • API接口测试01理论

    2016-05-28 14:52:00
    接口测试是系统组件间及个系统之间的测试 如:app与Server间如何进行数据交换,传递 意义 确保主要流程及系统的稳定性 将BUG控制在项目前期 缩短产品的研发周期 检查服务器的异常处理能力 方法 ...
  • 关于测试一个接口的面试题

    万次阅读 多人点赞 2017-04-21 17:08:54
    面试中,都会问道如何测试一个接口?我尝试着用自己现有的知识进行回答,等以后某年某月自己回来看看时自己提升了多少。分析:这个题是一个开放性的题,答得好要涉及到全面的测试,功能测试,安全测试,性能测试...
  • 如何提早介入测试

    2018-04-25 19:38:16
    现在很公司的项目流程都是全部开发完成后提交到测试环境进行测试,导致测试人员在开发编码过程中很清闲,除了完成测试用例之外没有其他事情可做,而当进入测试阶段又会变的非常忙碌。如果bug较的话可能还要天天...
  • 前言 自动化测试应用越来越...作为用python做测试的我,要做接口自动化时,如何去对请求数据进行加密呢? 解决方法 基于此,首先去找开发了解一下具体的加密过程,甚至可以画一个加密流程图出来。 一种方法...
  • 前言自动化测试应用...作为用python做测试的我,要做接口自动化时,如何去对请求数据进行加密呢?解决方法基于此,首先去找开发了解一下具体的加密过程,甚至可以画一个加密流程图出来。一种方法是:用python代码...
  • 用将此项目作为学习使用python进行dubbo接口测试的服务端程序。 1. 创建Dubbo项目 1.1 使用Maven创建模块项目 因为这是一个demo项目,我希望将dubbo provider和comsumer都放到一个工程中方便管理。所以我这里创建...
  • 前言自动化测试应用...作为用python做测试的我,要做接口自动化时,如何去对请求数据进行加密呢?解决方法基于此,首先去找开发了解一下具体的加密过程,甚至可以画一个加密流程图出来。一种方法是:用python代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 381
精华内容 152
关键字:

多接口流程测试如何进行