我两年的工作历程

离开A公司,去了一家创业公司,0开始组建自动化团队,为了早点看到自动化效果,所以我优先选择在接口层做自动化。因为当时只有我一个人做所以我就想着尽可能少代码,易维护,所以选择通过excel管理api的方式来做接口自动化。 大概做法:

  1. 在excel配置所有接口信息(接口名,接口地址,请求方式,请求参数,最基础的校验点等等)
Paste_Image.png

2.编写个框架(poi+log4j+httpclient+testng整合),写个方法做到逐行读取excel文件,自动发起请求,并自动化做一些最基本脚本(状态码,必须包含什么字段等)并把结果写回到excel。
  
这种方式虽然免去了一个一个脚本写代码的麻烦,但这个过程其实心里知道存在下面两个问题:

  1. 接口校验不全,只能保证服务没挂,很难保证接口数据是否准确
  2. 开始意识到如果自动化组不扩大,难成事(一个人的思路有限)

遇到这两个问题一开始我当然希望通过添加人来解决问题,后来因为很多原因始终招不到人,所以我就开始内部发展,想让现有的QA更多的参与到自动化进来,但是因为他们不懂代码所以我一边每周定期给他们上课,另一方面就是引入soapUI工具来做接口自动化,但这个工具用不到2个迭代就被我抛弃了原因一来工具用的是破解版经常崩溃二来soapUI生成导出的脚本是一个xml文件,而且多人参与非常难合并。
  我又把excel管理api驱动的方式拿出来,改了下变成了(详细可见 http://blog.csdn.net/meyoung01/article/details/46008439 )简单说就是(httpclient+testng+poi+log4j+mybatis框架的整合),这会我只做了通过读取excel来拼接我的请求,而所有的返回我都通过代码去校验,这样校验完善了,当然这样就意味着一个api我需要写多个case了,增加了不少代码量,当然通过封装,其实每个接口写法都大同小异,又这段时间的简单培训带了QA,后面基本上这活就交给她了,这过程excel维护也一直是个工作量,也是考虑过把excel里面的api维护也自动化完成,后来因为发现开发文档维护很差,所以只是提了想法并没真正实践。
  在创业公司除了做api,还一大块就是UI自动化。UI自动化当时web端我选用的是webdriver,移动端我那会比较生疏,通过对市面上流行的UI自动化逐个写demo了解优缺点后(当时画了个图 http://naotu.baidu.com/file/4196dc577d4c220ceca11fd90f0077a5?token=541f96728fa87f75

auto.png
)选用的是appium。 因为跟webdriver框架用法等极像,所以封装过程也类似而且同时支持ios和android。
  那webdriver这套的封装大概做了:

  1. 重新封装driver类
  2. 封装查找元素的方法做到智能等待
  3. 常用操作的二次封装
  4. log4j 整合实现每个步骤打印log便于调试和定位问题
  5. 常用类整合例如日期,随机数excel处理等
  6. Testng整合 重新封装Assert类,而外添加了几种校验方式和重新封装fail方法,失败自动截图。重新封装IAnnotationTransformer和TestListenerAdapter 做到失败自动截图和自动化重跑
  7. 编写case采用page-object+数据驱动的理念
  8. 结合jenkins 完成每日构建和代码变更自动构建以及构建失败自动化发邮件和测试报告
      在创业公司还帮QA完成了公共用例的编写,case等级的定义等问题

离开创业公司去了一家上市公司,当时冲着团队玩BDD去的和团队一个移动端自动化做得还不错的人去。
  刚进去这边团队已经玩几个月的bdd了,采用的是ruby语言cucumber+calabash+webdriver,第一个迭代完全是边学边做中完成,没有过多想法。当第二个迭代开始,老大要求提高自动化的覆盖率,而那时我们已经感觉很多能自动化的case我们基本完成了,想要提高覆盖率需要着手解决那些我们之前认为无法自动化或者难以自动化实现的case,通过统计其实我们发现很多case没法自动化基本都是因为校验难做或实现成本很大的,例如QAcase描述XXX控件显示XX颜色,XXX控件在靠左显示什么的等等。这时我们商量提出半自动化做法。
  半自动化做法实现还是相对简单,半自动化的case我们自动化脚本能做到前面的when的操作,无法完成then的操作,所以我们就执行到这类then操作时进行截图,并把截图图片和then语句同时调用api传给一个半自动化校验平台,这个半自动化校验web平台其实简单的实现了:

  1. 截图的图片展示
  2. 对应then语句的展示
  3. 通过人工校验判断是否通过。
      这样每次跑完所有脚本,之前很多还需要QA手工去校验的case现在只需要去平台上面通过人为的去判断图片展示和then描述是否一致。
      bdd玩一段时间,原本设想着开发一旦提交代码,我们就可以立即去执行新功能的自动化脚本,然而最后这过程我们一直处于追赶状态,我们一直无法做到提前介入,这时我们再次进行反思,总结出若干个问题点,其中一个比较主要原因就是我们除了要编写feature对应的脚本外,还得去维护QA编写的feature,为啥?因为不同的QA对同一意思的一句话会有不同的描述例如:我用XX账号登录;我在XX页面用XX账号登录;我登录用XX账号等等。。。这些对我们而言处理的脚本都是一致的,但是这样的语句我们发现了我们得去修改feature,没发现我们可能就会再去实现一遍,这个过程工作量增加了非常多。
      咋办?我们开始不仅仅给开发提供页面定位元素id,还给QA提供每个控件的操作语句,QA从我们定义的语句中去copy拼接成case,但其实实践来看这个过程是失败的,因为看似我们自己的工作量少了,QA却纠结了,也多了得跟QA交流的工作。
      这时我就提出做个feature编写的平台,一开始我画了几个简单原型:
Paste_Image.png
Paste_Image.png
Paste_Image.png

提出这个想法做featureIDE完全就是为了:

  1. 减少QA编写feature的工作量
  2. 减少同一句话不同描述。
      通过几轮讨论下来,最后我们决定做的是一个平台。这个平台基本思想是bdd+keyword+po+数据驱动,理想化就是QA用自然语言写完feature,我们自动化人员可以不去写一行代码,这个case就可以被执行。我们自动化人员去定义句式(页面元素类型是可以枚举的,元素操作也是可以枚举的,根据元素确定操作的思路)例如:我在XX页面点击XX按钮。 然后cucumber胶水层完全匹配到这句话,并把XX页面和XX按钮作为参数通过某个接口去拿到提前定义好的这个按钮的定位方式。这样一个元素的定位方式有了,操作有了。自然calabash实现就容易了。

当然关于这个平台我们还有无限设想,很多未完成的功能,我们完全朝着一个产品化方向去思考。

这个平台我参与了整个过程的需求讨论和部分自动化代码实现。慢慢的发现我们的自动化实现完成了,基本工作量在平台前后端,为了避免没活干,刚好又出现性能问题,所以我主动去接了性能测试。
  性能测试,工具VS平台?
  通过跟之前性能测试人员和开发等沟通考虑开发也经常会自测需要测试提供脚本而jmeter仅仅是一个工具,一来不方便完成脚本的共享 ,二来发现开发迭代频繁,而QA难提供性能测试历史记录包括报告和场景。所以我开始考虑抛弃jmeter,而采用web平台。通过小段时间了解后,最后引入nGrinder平台,该平台分为controller,agent和monitor三个模块。 controller用例管理测试,脚本,测试报告和分发脚本等,agent主要用于发起并发,monitor模块用于收集监控数据等。
  在使用过程中因平台已经好几年没人维护了,存在一些bug,所以去修改了个别bug,并对提供的方法做了简单封装并在脚本开发过程中加了poi第三方库,完成了通过excel完成的执行脚本需要的数据准备,最后一个接口的脚本简化到大概如下:

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,081评论 25 707
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,961评论 6 13
  • 什么是基金:就是专业的人帮你去投资 基金有什么好处:根据投资的种类不同所所获的收益也不同。 我们为什么去买基金: ...
    缘是你的俊阅读 398评论 0 4
  • 墨的浓淡 很难调 不过还是坚持 写完一张纸 友约酒 微醺
    张耘菩阅读 262评论 2 3
  • #悟空传# 生我何用?不能欢笑;灭我何用?不减狂骄。 开始不是这样的 童稚 纯粹 愤怒 挣扎 狂哉 为一切无法掌...
    最爱的桐嘉阅读 225评论 0 0