新手区 利用 jenkins 关联 Job 方式结合 RobotFramework 完善测试 Setup 以及 Teardown 操作

terrychow · 2016年06月09日 · 最后由 捕虫人 回复于 2020年09月15日 · 6024 次阅读
本帖已被设为精华帖!

利用 jenkins 关联 Job 方式完善 RobotFramework 测试 Setup 以及 Teardown 后操作

1.前言

本人还有不到一个月就正式参加工作满一年,在这一年收获最大的是利用工作中的机会学会了基本的自动化测试,具体的就是利用 jenkins+RobotFramework+Selenium 的方式实现了项目 Web 端的自动化测试,其实在这一过程中没有得到什么具体的指导,都是平时游览于各大测试论坛慢慢学习积累下来的,所以可能我说的东西很多大牛都会觉得小儿科,我就当写一下总结,这是我第一次发帖,之前都只是看别人的帖子,反正都什么不足的地方欢迎各路大神喷我,好,进入正题吧

2.Jekins 关联 Job 方式

这个都说到烂了,就不再多说了,就说我遇到的问题,我这里自动化测试其实有几个过程,其实是走持续集成的方法 (可能只是看起来而已),就是从收到开发代码 build 成功的 hook 开始,触发测试环境获取新的安装包部署,检查部署是否成功,执行自动化测试,输出测试报告发送邮件或其他通知方式,过程大概是这样

(1) 说明一下那个测试通知和邮件报告的,因为有一个通知方式是直接接入到我们项目的(通讯工具),所以这里就补充了一下,说到这里有人会想到,自动化测试这一块可以直接放到 RobotFramework(以下简称 RF),但更新测试环境和发送通知和邮件测试报告这些模块如果直接放到 RF 的 Setup 和 Teardown 显然会有些鸡肋,毕竟想让自动化测试的执行过程更加独立,而且更好地控制整个流程,一开始我也想不到什么好方法,后面某天突然脑袋一闪想起 Jenkins 是有关联 Job 的功能,一切解决了,后面就开始我上图的设计了

(2) Jenkins 的 Job 可以如下图这么分

a、第一执行的 Job 是更新测试版本的 Job,这个 Job 是通过收到开发代码 build 成功的通知之后自动触发的,具体怎么触发用过 jenkins 的小伙伴都应该知道,就不多说了,获取了新包之后就会更新部署测试环境,在此之前测试环境会清理一遍环境,更新完成之后检查是否更新版本成功,目前我自己设置的检查点可能还有点简单,看新包是否有成功部署到测试环境,前端方面看是否能正常打开页面登录,后端方面调登录接口是否能正常登录返回正确数据,都通过的话,更新就算成功了,更新测试版本的 Job 构建为 stable 后就会触发执行自动化用例,如果更新失败就会发送更新失败的通知到相应负责人(一般就是我了=。=),然后就去检查测试环境情况,把环境等问题都弄 ok 了,再手工触发一下,所以要执行自动化测试的前提是测试环境新版本可以用啊,都不能用还怎么测呢

b、执行完自动化测试用例后,如果出现非 Stable 的情况,就会触发失败用例重跑的 Job,至于 RF 的失败用例重跑的方法,之前也有很多人问,在这里就说一下,在本地操作是这样的

要结合 Jenkins 的话只要能拿到对应的 output.xml 就能做到了,这里就不多说了,自己摸索试试,然后就可以将失败的用例重跑,一般也就重跑一次,都完成之后就触发发送测试完成通知的 Job,一般是执行用例的 JOB 为 Stable 或重跑用例的 JOB 完成后关联自动触发,主要是邮件测试报告和消息通知,说到邮件测试报告,RF 的测试报告有个坑就是报告源码里有 JS,邮件都不会支持 JS 的话,除非你想来 XSS,所以只能用别的方法了,说到这里先展示一下我自己做的邮件测试报告

  • 测试通过(第一期)

  • 测试失败的(今天优化了一下)

这个测试报告分 4 个模板,版本信息,测试基用例统计,跳转链接和失败的测试用例展示,版本信息是直接去测试环境取的,测试用例统计是通过调 jenkins 的 api 获得的,怎么获得,来到页面点一下这个你就明白了

在点点就会看到

这样子测试用例统计就能做了,然后第三模块就是那几个跳转到 jenkins 看测试报告和测试日志,最后的失败测试用例的获取是通过 python 爬虫实现的,就是把 job/3/robot 下 fail test 那里爬下来,自己作一下优化展示就好,就这样,邮件的一个比较基本的测试报告也完成了,整个自动化测试的过程大概就是这样子,现在在我们项目中每天都会跑一次来过每个 dev 版本的核心功能,这样一来把自动化测试过程的 Setup 和 Teardown 都很好地分离开来,也方便以后地扩展和维护

3.结束语
其实我这一年学习的还不只是这个,自己还学了一下性能测试等,在测试的过程中自学了 python 语言,基本上下班回家每个晚上都是呆在电脑面前看各大论坛的大神的帖子,或者一些学习的资源平台来学习的,也正好工作方面有很多机会让我把学到的直接投入到工作中使用,得以实践和巩固,但作为职场上的新人,自己还是需要更虚心踏实地学习,不能一步登天,也不要认为自己目前学多了点懂多了点就很厉害,比你厉害的人还多得很,学海无涯苦作舟,在这里愿结识更多的大牛来指教指教我这一后辈,我也很想和同辈的小伙伴一起共同交流学习,一起进步,反正就是希望能在测试这一职业上发挥自己的价值,实现自己,好吧,欢迎大家指导和给出您宝贵的建议,谢谢了

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 14 条回复 时间 点赞

佩服!!!羡慕!!!刚开始进入行业就学习这么深

—— 来自 TesterHome 官方 安卓客户端

#1 楼 @lamianxiaodian 这些也是逼出来的,上级要求做,自己也想做得尽善尽美一点,一开始做都是在挖坑,这些坑都填了 3 个多月才填完

—— 来自 TesterHome 官方 安卓客户端

点个赞

terrychow [该话题已被删除] 中提及了此贴 06月25日 01:37
恒温 将本帖设为了精华贴 06月26日 21:11
13楼 已删除
terrychow 对 Jenkins+ANT+Jmeter 接口测试的实践 中提及了此贴 11月21日 10:04

我也是被逼着做,现在做了一个多月,robot 里的用例写了不少,就差搭建 jenkins 持续集成了。但现在出现个小问题,jenkins 登录显示登录无效

yangqinyuan 回复

登錄無效,是怎麼樣的無效,這些都沒說明清楚,別人很難幫到你的

您好~
我想请教下,你的邮件发送报告,内容模板是在 email-ext 插件的邮件内容中配的麽?
如果是的话,是用 HTML?这个邮件内容好像不支持 python 写,还是你用的 Jelly 或者 Groovy 脚本?

浅浅蓝 回复

自己用 Python 另写模板的,不是用 jenkins 插件

terrychow 回复

噢噢 好的 我研究下 谢谢。🎁 🎁 🎁

terrychow 历历在目的 2 年 测试生活 中提及了此贴 06月10日 22:28

更新测试版本,更新判定如果成功执行自动化测试,这个在 jenkins 怎么设置呢

仅楼主可见
仅楼主可见

请教一下,像这种如果执行自动化脚本期间,触发了更新,有做处理吗

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册