API测试自动化——基于CDIF的SOA基本功能(实例篇)
今天我们通过一些实例来体验一下API的自动化测试,感受一下基于CDIF的SOA的一些基本功能。
传统的测试工具在测试一个API的时候,必须手动填写这个API所需要接收的所有信息,比如一个查询航班动态的API,他接收两个输入字段,一个叫flight, 一个叫date,那么测试这个API的用户,需要手动填写所有这些信息:flight=MU3532 & date=2017-03-02。而的测试工具基于CDIF的测试中就不需要写flight和date这两个字段,直接在API测试网页上填MU3532和2017-03-02就可以了。甚至这个2017-03-02也不用手动填,可以用鼠标从日期框里选中。这在信息类别较多的API中,优势就非常明显了。同时,在查询的右侧可以清晰地看到整个API调用过程中输入和返回的数据,大大地方便了开发人员调试接口。

类似这样简洁的测试页面,目前国内的API市场网站也有提供。但都是手动画的网页,不能改动!不能改动!不能改动! 那么问题来了:如果某一个API开发者想要增加一些服务、变更一些服务,比如上面提到的航班查询API中加入城市(city)的查询,也就是需要改变参数的时候,API开发者就必须打电话告诉API管理者,告知其API又加了个新参数,需要在测试工具里再画一个新的输入框,让用户可以填写。然后就要人工处理,把这个测试网页重新生成一次,增加一个新的输入框。这样的手动过程是极其不方便的。百度apistore所有免费API之所以关闭,管理起来很麻烦应该是一个重要的原因。

而基于CDIF,如果某一个API开发者又想加个新字段参数叫city,或者变更任何参数,那么他只要上传一个新的API包就行了。CDIF的测试工具会自动生成一个新的输入框,客户甚至感受不到发生过变更,只要在那个输入框里填写city字段的内容就行了,比如“上海”。和传统的API测试工具如postman, soapUI等使用的方法不同,该API测试工具在用户添加新的API时;或者为已有API添加新字段时,会自动为新API生成友好的测试界面,并且把测试输入数据和返回结果清晰地展现在页面上,没有任何技术背景的人也会操作测试界面。而且这个过程中无需任何人工干预另外,对于那些稍复杂点的数据,比如数组类型的API参数,测试者点击"add"就可以页面上添加新输入项,类似这样的能力是现有的测试工具无法提供的。
知道这意味着什么吗?意味着码农不用再加班写代码画框了!不用再为这个APP应用的变更写文档了!意味着更好的交互性。
同时,大家可以发现这个基于CDIF的API测试工具甚至还会对输入数据做校验,确保非法的数据无法被提交。这种数据校验能力不仅仅存在于测试中,基于CDIF的API管理框架在处理真实的API调用数据时也同样拥有,确保了用户API接口的安全性。使用这个测试工具的时候,可以看到如果输入的是非法的数据,比如下面的手机在网查询API中,填写不对,测试工具无法提交,框体变红。只有合法的数据才会被通过,框体为绿色。
知道这意味着什么吗?这就意味增加了一层数据防火墙!大大增加了API接口的安全性,同时节省了这个API的流量!安全!流量!


它另外一个优势在于,API测试基于CDIF可以是全自动化的。这里说的全自动化是指的喂给API吃任意的伪造数据,测量API是不是足够健壮,会不会崩溃或者反应不正常。这种能力现在所有的REST API测试工具都没有的。API推出之前,开发者通常都希望对他做足够多的测试,测量他在各种数据输入条件下的反应。但是REST API测试工具就很难做到这一点。而这种输入伪造数据的API测试可以在灵长的网页连续跑三天三夜,输入完全不同的各种伪造数据,测量API会不会出问题。
什么都自动化了……码农们终于可以开始干些有创造性、有意义的事情了!
API测试自动化——基于CDIF的SOA基本功能(实例篇)的更多相关文章
- API的文档自动生成——基于CDIF的SOA基本能力
当前,作为大部分移动app和云服务后台之间的标准连接方式,REST API已经得到了绝大部分开发者的认可和广泛的应用.近年来,在新兴API经济模式逐渐兴起,许多厂商纷纷将自己的后台业务能力作为REST ...
- app测试自动化之混合APP(之前的三篇为原生APP的操作)
混合开发的App中,经常会有内嵌的H5页面:定位方法与原生APP不同,需要上下文切换 #获取所有上下文contexts=dr.contextsprint(contexts)#打印当前上下文(有点问题应 ...
- CDIF: 基于JSON的SOA软件框架
通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnec ...
- CDIF:基于JSON的SOA软件框架
通用设备互联框架(CDIF)是一个具备中美知识产权保护的,基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnec ...
- 基于CDIF实现的——API在线自动化测试
传统的测试工具在测试一个API的时候,必须手动填写这个API所需要接收的所有信息,比如一个查询航班动态的API,他接收两个输入字段,一个叫flight, 一个叫date,那么测试这个API的用户,需要 ...
- 一种基于openflow的虚拟化层软件flowvisor的API测试
注明:本文并不对openflow进行分析,本人也是略略知道这个概念,对flowvisor也只是对其API有所测试,更深的源码并未涉及,只是希望该文能对以后的flowvisor研究者提供些许帮助. 一: ...
- API 测试的具体实现
目录 API 测试的具体实现 基于 Spring Boot 构建的 API 使用 cURL 命令行工具进行测试 使用图形界面工具 Postman 进行测试 如何应对复杂场景的 API 测试? 总结 A ...
- 使用JMeter进行RESTful API测试
使用JMeter进行RESTful API测试 在哪里设置实现最优脚本重用的属性 由于支持云的应用程序通常可以轻松.快速地进行复制和部署,所以可以在多种环境中对其进行测试.如果您需要在多个环境中测试和 ...
- 测试自动化:java+selenium3 UI自动化(1) - 环境搭建
1.前言 我大概是在2012年第一次正式接触到自动化测试,那个时候跟随我的团队一起,就当时项目的UI自动化尝试做出了探索. 在我离开那家公司的时候,我们的自动化测试体系仍然难言完美,但是也已经达到了非 ...
随机推荐
- spring+struts2+ibatis 框架整合以及解析
一. spring+struts2+ibatis 框架 搭建教程 参考:http://biancheng.dnbcw.net/linux/394565.html 二.分层 1.dao: 数据访问层(增 ...
- AngularJs ng-repeat指令中怎么实现含有自定义指令的动态html
今天用angular写table的时候,遇到了一个问题.在ng-repeat中,含有动态的html,而这些html中含有自定义指令. 因为希望实现一个能够复用的table,所以定义了一个指令mySta ...
- [.NET] RabbitMQ 的行为艺术
RabbitMQ 的行为艺术 序 好像,今天已经是 2 月 28 号了. 听说,29.30.31 号放假. 据说,有图,有真相. 目录 简介 环境搭建 示例一:简单的 Hello World 示例二: ...
- 每天一个Linux命令(07)--mv命令
mv命令是move的缩写,可以用来移动文件或者将文件改名,这也是个常用命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目录 目标文件或目录 2.命令功能: 视mv命令中第 ...
- Sleeping会话导致阻塞原理(下)
背景 最近给客户做优化时,有几个客户都存在.SLEEPING 会话中开启了事务,导致的大量阻塞,从而产生严重的性能问题.虽然在之前的文章我分享了Sleeping会话导致阻塞原理(上) .说明了什么是S ...
- Javascript原型链和原型继承
哇好久都没有写随笔啦,整个人都慵懒啦. 为了不让大家忘记我,把以前写过的一些慢慢发出来. 在JS 中, 有两条链子,作用域链 和 原型链. 作用域链相对容易理解,两点 - 函数限定变量作用域,就是说, ...
- Android开发,Eclipse创建aidl接口时,出错
Android开发中,当我们需要调用远程Service时,我们一般通过远程接口(RMI)来实现的,而Android的RMI需要AIDL(Android Interface Definition Lan ...
- JavaWeb之MVC模式
一.什么是MVC设计模式? MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Contr ...
- 去掉Dedecms幻灯片的标题文字和绿色背景
在操作dedecms站群中的站,因为看到首页的幻灯片Flash显示标题和文字,显得有点突兀,觉得应该去除dedecms 幻灯片默认的文字标题和背景,这样会感觉舒服些,下面教大家如何在模板当中去除ded ...
- php 与redis 结合 使用predis
分为2步骤 1.下载predis 2.使用predis,让php与redis进行通信 <?php require('autoload.php'); $redis = new Predis\Cli ...