接口自动化测试感想

前言

至今为止也做了快一整年的接口自动化了,在融合线上项目中,学习到了很多。抽空记录下这个项目得心路历程。

做这个项目的缘由

早早就听说过测试自动化的顶顶大名,上家公司准备采用RF这样得关键字框架来做一些UI自动化,由于自身缘由,没有参与太多,第一次听闻自动化就是在哪里。自己内心深处也特别想去看看到底测试自动化是什么样子的。是不是就可以摆脱点点点了。感谢当前的公司给与了我一个这样的机会。大boss倾向做出一个测试自动化,我直属leader当然就是做咯,所以就招了我来完成这个项目。

就有了我之前的几偏文章

接口自动化方案选型

接口选型分析

接口测试自动化------开始实现一

自动化环境安装

自动化框架操作方法参考

之前的文章也可以是我心路历程的阶段性体现,从不懂,到学习。去挖掘,去对比,去执行。去传播。

随着了解的越多,发现自己还有着更多的不懂。需要去学习和实践。

接口的理解

这个是理解接口自动化的核心要素,需要知道什么是接口?接口是怎么来的?接口有什么作用?不同的接口有什么区别?接口的必须条件是什么?什么样的接口可以进行自动化测试?

我尝试从自身角度说说我的理解,如果说错了或者不足可以和我交流下,我会修改的。

什么是接口?

其实在百度百科已经说的很清楚了,我以软件为维度来解释,如果是JAVA语言,接口你们可能更多理解为一个类所具有的方法的特征集合,是一种逻辑上的抽象。这个是JAVA语言的定义。如果在一个项目中,前端同学需要你提供接口时,可不能这样回哦。因为在广义的定义中,前端同学要的接口是你controller层中定义的参数和协议。前端同学根据你提供的协议和参数来进行调用传参数。这样的‘接口’在其他编程语言中和路由是非常类似的。又有着不同,路由只有路径没有协议。这样定义的‘接口’,从字面上来看确实更加贴合本意。恰好业界也认可,达成默认共识了。

接口是怎么样来的?

很显然接口是人为更加业务情况定义出来的,不同语言实现方法可能会不同,但是大同小异。我以JAVA为例,定义一个接口你需要确认这个接口采用什么样的协议,是http还是socket。不同的协议调用的基本库不同。假如是http协议,还需要确认请求方式是什么,是get还是post或者其他的方式。如果带有参数,那么参数的定义是怎么样的,数据持久层和数据库表结构设计等等就都慢慢出来了。当这一切都定义好了,那么一个接口也就诞生了。

接口有什么用?

在之前的网页技术当中,因为项目比较小完全可以自己内部循环,不需要这样的‘接口’出现,当后来随着技术的发展,项目体机越来越臃肿,采用了更加合理的层次结构,采用‘接口’来对业务逻辑进行解耦。包括当前较为流行的微服务也是做解耦的,通过接口的定义来实现。

不同接口有什么区别?

接口最大的不同点或者核心点就是在于它实现的协议,当前使用的有tcp/udp,后面衍生了http1.0,http1.1,http2.0,https,还有socket,soup,rpc等等,不同的协议都是针对不同业务的解决方案。

接口的必须条件是什么?

协议,请求方式,参数,这三者应该说是一个接口的组成条件。

什么样的接口可以进行自动化测试?

符合定义规范,例如http中的reastful API。逻辑清晰,有着良好的输入/输出文档。

接口自动化测试的2条支路

支路一

当前很多公司做得接口测试是:根据接口文档或接口服务对当个接口进行设计测试用例,有正向和异常,边界值测试。

好处:对接口覆盖比较全面。

缺点:没有综合考虑性价比,因为单个接口来说,前端和后端都会做很多校验,从测试角度,我们确实需要是验证这些校验是否正确执行,当时投入下去得成本,可能不能获得类似得产出。并且因为完全没有考虑或者说没有条件去考虑到该接口的实现情景上下文的关联关系,也就是说不能从 前端界面-->接口服务处理--->数据库表字段 ,来综合以一个场景化的思维来综合测试接口,这样就基本上很难发现问题。

支路二

走接口串联的路子,按照实际业务需求来设计,准确来说是把手工执行的用例转换为调用接口来执行,这样就可以考虑情景上下文的关联关系。使用接口来完成业务的逻辑测试。

好处:可以相当一部分代替人工回归测试,执行速度快,有一定的质量保证,性价比高。

缺点:缺少单个接口的测试覆盖度,可以会有一定的漏测。接口组合情况多种,测试用例的乱序组合调度需要进行解决。分层结构,结果产出,问题定位都是需要面对的问题。

我的看法

在我实践的项目中,我采用的是支路二,因为投入的成本有限,而且需要快速看到收益。最好好的办法就是,制定自动化的原则,搭建好分层结构,定义好产出。重复发挥手工测试人员的力量。优先把冒烟测试的用例给转换为自动化测试用例。感受到效果再进一步实施。

如果后期项目可以稳定执行下去可以充分在支路二的技术上加入支路一的测试方法,扩充测试覆盖度,是非常不错的。

工欲善其事必先利其器

咱们做软件的,没个利器来干活,估计效率也不高,IDE就不说了,个人喜好即可。关于接口自动化测试,那么需要根据你业务的自身情况和你团队基础来决定。工具选对了可以少走很多弯路的。基于大部分项目都应该是http协议,那么市面上就有很多工具可以选择了,整体可以分为JAVA系,Python系。

讲讲我在当前项目中,工具都使用了那些功能吧,供大家参考。

1、支持命令行CLI运行的方式。-----因为后续接入Jenkins需要。

2、整体框架能够有分层结构,方便调用。-------类似JAVA的分包,也可以调用。能够对用例模块更好的管理。

3、能够有精确的测试报告输出,日志记录和输出。------测试报告是最后的产出,也是定位问题的根本依据。

4、整体工具稳定,可维护。-----正式上线的项目,第一考虑要素是稳定可靠。所以工具最好是在持续维护的,有一定的成功案例和客户群体。

5、工具可扩展,开源协议。------工具没有完美,不同业务可以做少量的二次开发也是可以接受的。

6、可以提供hook之类的调用方式,响应结果支持多种断言。 -----实际业务中,请求和响应有可能需要加密和解密,对断言也有所不同。

基本上就是使用上诉功能了,在实际业务需求中,去尝试,根据接口文档或者抓包情况,来模拟请求,断言结果,根据报告和日志定位问题,串联接口组装成测试用例即可。

感悟

关于接口自动化,算起来已经在业界流行了很多年了。有着非常多的工具和方法来实施,但是真实在项目中的运行情况,在业界好像没有太多消息。现在突然又出现了一波web化的势头,更多的我认为应该回归本源,把基础的接口自动化做好了,做大了,做完善了。再考虑web化的事情吧,没有什么工具是完美的,QTP也凉凉了。只有跟着业务一起走,融合到业务中,才是核心。选择适合自身实际情况的框架,落地实施,才是重点,行动起来,才能有所突破和改变。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 文章来自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鹏阅读 9,158评论 2 126
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 6,664评论 5 100
  • 1****、问:你在测试中发现了一个bug****,但是开发经理认为这不是一个bug****,你应该怎样解决? 首...
    蛋炒饭_By阅读 5,267评论 1 94
  • 先说明 本篇不会讲解某种语言或某种框架,这种事情请直接找google,本篇是面向小白或对自动化不熟悉的同学,或是想...
    jb2阅读 887评论 0 4
  • 风在吹 雨在飞 秋风拨动思念的心弦 秋雨卷起相念的涟漪 从我的全世界路过的你 就此驻足 在你的全世界停留的我 不曾...
    霁希阅读 282评论 0 0