接口测试的康庄大道

小吐槽

接口测试其实对很多人来说并不陌生甚至熟悉,不过在聊正文前跟大家先吐个槽。

其实接口可以很简单,像这样:

或者像这样:

没错,接口测试可以这样简简单单,那么问题来了,为什么还要写接口测试的框架呢?

像上面所有的例子只是简单看看接口是否启动而已,但事实上真正要测接口其“用例量”是非常多的,当面对上百上千的用例时还能用这种“原始”的方式来测试吗?

如果你的回答:“是”,那我劝你就不用往下看了——> 传送门退出。

OK,看到这里小伙伴们回答应该都是“否”吧,下面我将正式开始讲讲我的接口测试实践之路了。

我所使用(设计)的接口测试框架的基础脑图,如下:

相信有些朋友已经发现了,没错这个框架是用Python写的。Python的各种好相信用过的人都深有体会了,这里就不再赘述。

下面将根据这个脑图细细道来。

一、首先basic_service_entity是所有interface_entity的父类,它为子类提供了4个主要功能:

1) _set_data_pattern (tip override)

就是为了提醒使用者在定义的子类的时候,一定要覆盖这个内部方法。为什么要覆盖这个方法?因为在实践中经常会发现,接口的参数会根据具体业务的不同其组合也不同。

比如:

在情况A下只能通过流水号查询;

在情况B下可以通过外部ID和内部ID查询但不能通过流水号查询。

这时就需要在判断了对吧,因此将这些业务参数的组织统一放到这个方法中,进行统一处理。

2) __getattr__(response handle)

这个反射特殊方法,相信用过python都应该知道吧,没用过同学也可以百度下。通过这个特殊方法,我们可以很方便的将取出response的内容,比如在response内容为{“code”:”3000”, “message”: “ok”} 那我可以这样 entity.code entity.message 很方便把值取出。怎么实现?其实很简单,对于json的返回值做一个取相对位置的json解析模块就行了。大家也看到了,除了json外还有xml和rpc,思路其实是一样的,最终都是通过反射将想要的值方便的取出。

3) basic_interface_verify

这个方法主要集中了业务的response基本验证raise自定义异常类。这个自定义异常类很重要,但我们要进行错误验证时就能精确try except自定义异常进行错误验证,甚至能在一些不稳定点进行“重试”都会依赖这些自定义异常。

4) send_request

最终将组织好的request发送出去。大家可以看到不仅仅是http还有soap和rpc都是通过这个方法的调度发送出去的,也就是说basic_service_entity并不会实现发送request的功能,而是调度发送request的实现。

二、父类介绍完了,下面介绍下子类吧。从图中可以看到子类其实很简单,因为大部分功能都被父类做掉了,所以子类基本就是Ctrl-c Ctrl-v的活啦。

1) __init__处理实例化一些基本参数如:url这类参数。并将参数处理传给父类__init__就是super().__init__

2) 子类的重点,_set_data_pattern就是如刚刚在父类中介绍的一样,根据具体这个接口业务组织参数的pattern而不是data。

为什么是pattern?其实在实际测试中我们并希望将每个参数都做赋值,我们只需赋值一些业务关键点的参数,所以在这个方法中我只是组织了pattern最终的data是可以通过“外部”传入的也可以不传 。这点很关键。

一般来说我将一个接口定义成一个entity子类模块,所以entity子类会有很多,也就是interface_entity * N

三、图中interface_entity * N和main_api有联系,那main_api是做什么的呢?

其实main_api就是这些松散的interface_entity集合到一起组成“黑箱”对“外”提供使用。这个对“外”就是指提供给unit test或robot framework这些测试运行框架最终实现“用例自动化”

四、最后大家可以看到就是DB验证这块了,我在图中画了3个节点,DB_assertion、ORM、DB_factory。

这3者关系很简单:底层就是ORM,通过DB_factory动态创建session,最后在DB_assertion中组织DB验证点同时提供给unit test或robot framework使用。

目前来说DB验证这块设计还是很弱的,有点不好意思拿出来讲,不过呢,在接口测试中DB验证还是很重要的,所以必须拿出来晒晒让大家见笑了。

后记

这次主要讲的还是这套接口测试框架的“架子”并没有实现的代码,写作初衷是通过这次分享起一个抛砖引玉之用,将我这些年来实践总结下来的经验和思想与大家做一次探讨,请大家轻喷哦!

我会在下次分享逐步的详细介绍其中的具体实现,欢迎关注。

本文作者:陈汉东(点融黑帮),目前就职于点融网infra部门,担任高级测试开发工程师,爱好电影、游戏、唠嗑。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,620评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,585评论 1 114
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,946评论 6 13
  • 心血来潮给自己写点东西。 今天是2015最后一天,明天也是我十八岁生日,过了今晚零点,我就是个成年人了。 虽然往年...
    待锦世繁华阅读 989评论 0 0