一个测试工程师的持续集成实践史
作者:网络转载 发布时间:[ 2013/7/18 13:40:47 ] 推荐标签:
我是09年07月加入国际站测试部,那时候已经有了公司自己的自动化框架Pwatir,将以前QTP脚本全部迁移过来。对自动化脚本的重复使用基本上只在全网回归中。那时候一周三个发布日,两天发小需求,发项目。发布当天将发布分支代码部署到一个回归环境,然后运行我们所有的自动化脚本(不出问题2小时,出了问题N小时),通过了发布,通过不了回滚。发布日有专职的自动化回归人员值班,负责环境部署和脚本执行。他在群里一吼回归自动化过,皆大欢喜,开始发布;他吼有问题过不了,大家一起回滚,当天发布失败。每个发布日都是一个苦逼的日子,发布的每个环节都很费时,上午各个开发将自己小需求代码合并到发布分支,下午等待自动化回归,晚上预发布和正式发布验证,基本上每个发布日都像上战场,大家都身心疲惫,搞不好发布失败,大家又去挤下一个发布日。
为了解决发布效率问题,开始优化各个环节,自己负责了预发布自动化值班。那时知识有限,只能写一些脚本取代手工来自动化完成各个工作,比如环境部署,脚本触发,报告发送等。为了加快执行,还到处找执行机虚拟化软件,然后虚拟机调优。后来顺畅多了,全网回归从环境部署到执行完一般1小时内搞定,被抽去边测项目边值班了。
10年过年后,参与了一个较大的技术项目,从设计评审开始介入(技术项目无业务需求评审),主要是想推进开发写单元测试,开发不想写,我们协助帮开发写写单元测试。结果还真能发现比较多的问题,有一些sqlmap写错的问题,大部分还是开发写好一个底层方法后,随着上层调用场景越来越多改来改去改出来的问题。当时为了能持续的运行单元测试,自己部署了一个Hudson然后把项目的开发分支监控起来,用antx test去构建(那时候还没转maven),算是第一次实践。在这个项目中,由于自己一直在全网回归值班,所以也想将自动化脚本在自己项目中用用,但是项目环境和回归环境是独立的,所以等全网回归运行结束后,建了一个Hudson任务将项目代码部署到回归环境然后运行脚本,作为一个项目测试的辅助。
11年出了一个非常好用的系统,那是Aone,开发合并代码不再那么痛苦了,但全网回归还是那么痛苦,各种环境问题,各种脚本问题,各种执行机问题,每个发布日都压在一个回归点上,引发了开发老大的强烈不满,影响发布效率。于是我们想到尽量将一些测试独立应用的用例在项目中提前运行掉,预发布时只需要运行一些较大的联调用例即可。项目中如何定时运行,我们还是想到了Hudson,通过调用Hudson API,一个项目小需求需要到我们系统里的表单填一下Hosts绑定,选择一下你需要运行的自动化模块,自动创建一个Hudson任务定时运行看结果了,很简单的思路用了一段时间,测试用用还是能提效不少。后来大部门测试架构组出来做了一个CIC持续集成系统,由于使用复杂,配置过多,还是自己的一些小平台靠谱。
12年我们发现开发单元测试已经有所好转,每个业务产品线基本上都是测试先介入慢慢推,然后老大层面也看重这个质量。代码Bug一般有纯代码问题,业务问题等。单元测试是过滤纯代码问题的,神马变量写错啊,sqlmap写错啊,代码漏写或者写错啊,代码合并解决冲突搞错啊等,让测试用一系列严谨的测试用例来发现真的不值。应该测试更关注业务联调,特殊异常,安全漏洞等。接口,UI自动化脚本等当作项目测试的辅助。12年初于是开始将我们自己的小平台扩大起来,做了一个Amon和Aone打通,先把项目的单元测试结果实时反馈到项目相关人员,先试点在扩大,开发反馈还不错,因为不需要开发做任何操作,CI代码能得到结果,何乐而不为。于是我们乘热打铁,将接口自动化,UI自动化配合着环境自动部署一并搞上去,形成了现在项目小需求持续集成的情况。现在我们的发布效率,周一到周四,项目小需求基本上是随到随发(发布区块模式),项目测试,项目集成回归加自动化回归把关。
说的比较粗,分享的是一个过程,具体的话每个小系统都有它背后一连串的故事。后讲讲现有我们一个项目的持续集成实践:
开发过程:Aone创建项目=>开发拉分支=>开发提交代码=>开发提交发布=>正式发布
| | |
Amon自动匹配创建集成任务=>单元测试任务反馈结果 全网回归
|
一键自动部署环境
|
UI自动化,接口自动化任务反馈结果
这么简单,前面与SCM系统打通,后面是围绕着开发拉分支和提交代码后来展开,系统并不复杂,更多持续集成的专项问题,我们交给其他子系统和测试框架来完成。
接下来在做的是提交代码前如何检查,发现开发很喜欢将提交代码变成让SVN保存代码,结果每次提交的代码质量不佳;化的自动化匹配,减少多余自动化集成的运行等等。不是很会写正式东西,当随笔写了。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11