接口自动化测试框架设计

需求描述
基本要求:

对服务后台一系列的HTTP接口功能测试,主要涉及POST、PUT、GET、DELETE等类型;

用例与用例之间保持独立,即低耦合。

输入:

根据各接口描述,构造不同的参数输入值,模拟客户端请求。

输出:

服务端响应(HTTP状态码/具体响应数据)。

检验:

用例执行过程中增加断言,判断用例执行成功/失败与否。

结果:

可视化的HTML/XML测试报告;

用例执行过程中日志信息记录。

CI:

与jenkins结合,完成持续构建、自动部署、自动执行,并将结果发送到相关人。

实现方法
1、采用python脚本来驱动测试;

2、调用HTTP接口,采用python封装好的API;

3、测试需要的HTTP,组装字符转处理;

4、测试数据以随机数传递到各接口对应参数,确保用例独立性;

5、设置1个/多个检查点,校验响应消息中的返回值(通过解析响应消息得到);

6、首次执行需根据实际测试环境,修改下配置文件autotest.config(注:不是每次测试

都需要修改这个配置文件,只有在变更测试环境情况下才需要修改)

测试框架
设计图:

用例执行过程示意图:

自动化使用指南
自动化概述
目前使用python的urllib、urllib2模块,封装http请求消息,完成发送json报文到后台,后台处理后,根据http response或其他,并增加断言,以判断用例执行结果是成功还是失败。

同时组织了用例生成的报告,以及与jenkins结合,实现持续集成,自动执行用例,并将结果以HTML Report方式发送到相关邮箱,及时知道构建结果。

测试准备
1、配置文件
只需保证自动化配置文件内容正确即可。配置文件存放在src/common/config/目录下,名称是:autotest.config。配置文件各参数介绍。

2、第三方模块的安装


1.png

测试用例的编写
1、所有用例的编写,放在对应功能目录下testcase目录下,且必须以test开头;

2、每一个函数就是一个测试用例,函数名的命名尽量要有意义,能根据函数名称而知道用例是做哪方面的功能测试;

3、用例要保证独立性,互相不依赖。

示例如下:

成功登录测试用例

异常登录测试用例

创建一个通知测试用例:

测试用例的执行
有两种执行方式

方式1、通过IDE执行
比如在eclipse中打开某个用例,右击选择Run Asà Python unit-test:

方式2、通过入口脚本执行
入口脚本存放在src目录下,名称:interfaceRunner.py,双击即可执行所有的测试用例:

说明:

选择性的执行用例,可在后期增加,目前只有执行全部用例函数,无选择性执行用例函数。

用例执行进度查看
双击src目录下processBar.py,即可查看用例执行进度:

在网络或server端响应较慢情况下,用例执行耗时非常长(有一次是79个用例耗时47分钟37秒);经过测试,这79个测试用例,在公网环境正常状态下,只需88秒即可完成。由此也证实了,网络不好的情况下,并不影响自动化测试用例的正常执行。

历史测试记录数据展示
每次执行用例(通过执行interfaceRunner.py完成),将测试结果(report目录下Interface_TestReport.xml文件)解析、入库到SQLite report_history表中,通过统计脚本(statInfoInfo.py)读取数据库中历史记录,以曲线图形展示用例执行成功率。

创建sqlite表相关语句:
CREATETABLE [report_history] (

[begintime] DATETIME NOT NULL,

[endtime] DATETIME NOT NULL,

[total] INT NOT NULL,

[passed] INT NOT NULL,

[failed] INT NOT NULL,

[error] INT NOT NULL,

PRIMARY KEY (begintime));

测试报告查看

测试报告在report目录下Interface_TestReport.html文件

配置文件说明

配置文件在src/common/config目录下,名称为:autotest.config,
优缺点
优点
1、直接使用JSON构造报文

构造的消息体,直接使用json表示。因为后台使用的是JSON,拿到接口文档后就可直接构造报文了,不需要转换成其他类型的报文(如果使用pyresettest,需要将json转成yaml)。

2、参数化

  所有测试用例中的host、账号隶属于的组织结构的id、接口的URL地址、接口中需要的参数/tooken等信息,都可以从配置文件/基类中获取;

1)变更测试环境,无需对测试用例进行修改,仅需修改config目录下配置文件即可;

2)cookie是动态变化的,直接从login response中获取,并传递下去,不需要手工干预,不会出现会话过期失效问题;

3)参数化的另外一个好处是,可以多样化构造报文中字段各式各样的值,测试/验证后台能否正常处理;

4)扩展性强:接口变更后(比如携带的参数调整),直接修改对应基类中构造json报文代码即可。

3、测试记录跟踪、测试结果可视化

(1)记录用例运行过程中的日志;

(2)可生成HTML和XML格式测试报告,界面直观,数据一目了然

4、用例统一管理

用例执行有一个统一的入口,可执行所有的用例(如果有需要,将来可增加选择性执行用例)

5、成功与jenkins结合,做CI(持续集成)测试
目前已成功完成与jenkins结合,进行自动构建,并将测试结果(自动化运行日志、测试报告和jenkins构建日志)发送到邮箱

自动化软件测试交流群:642830685,领取最新软件测试资料大厂面试和Python自动化、接口、框架搭建学习资料!

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