15年在Ctrip技术上的一点收获
自动化测试
上半年参与Ctrip移动UI自动化框架的开发,原始代码是从ebay借鉴的,对于Ctrip太过复杂,我删减掉很多。这也是首次工作之中开发框架,感觉还是很好的,只是之前的工作一直注重敏捷,唯快不破,而做框架是很难快起来的,要熟悉用户的习惯,相应领域知识,并熟知相关技术,还要能预测短时间内的变化。那段时间内通读了TestNG、HttpCore、FreeMarker、Selenium、Appium、ddmlib等源码及Http权威指南/RFC文档,JSONWP等协议,也看了些Android系统相关的书籍,试图去了解所做的领域,总的来说是幸福的。阅读源码也更快了,多看,多试。
TestNG
TestNG,通常基于它做扩展而已,主要通过实现TestNG的Listener来完成Case调度的管理及运行结果报表的定制。TestNG的核心在于实现一个正确并高效的Case调度执行器,我们的扩展代码将被Hook到TestNG的这个Task Graph中。
API自动化
API,Http权威指南,RFC文档
UI自动化
UI测试除了快速按步骤写脚本,Page Object Pattern是其精髓,虽然模式通常让工程师变得刻板懒惰,但的确可以更简单快速的解决问题。Page Object本身就是对UI世界很好的抽象,而UI元素被抽象为Page Object的属性,通过Annotation/Attribuite,动态生成这些UI元素的Locator代理。抽象意味着与特定实物分离,自然就可以一套代码,相近业务达到跨平台,脚本的维护也更遵循人的思维方式
构建
5月份左右,部门人员动荡太大,被派到Build组做支持,确切的讲,一个组走光了,我去做TS,压力相当的大,前3个月,人真是有点废了的感觉,也没有太多的学习了,后来慢慢好点的时候,也只好看Build相关的知识了。
在构建领域无一平台或语种可以像Java那样完整(不服来辩)。从灵活强大的Ant工具到约定胜于配置的标准化构建生命周期Maven,再到极具表达力(DSL)幸福构建的Gradle,足足进化了15年。当然另外一个更为庞大的Node平台火速发展也不过近3~5年。
优秀的工程师总是少的,就如同构建的价值难以被重视,构建工具在为开源的便捷化也作出了巨大贡献,提供了生产与消费组件的平台。构建通常需要解决依赖关系,计算输出,重要的是一个正确高效的TaskGraph执行引擎。
Rock the World
去eBay的测试meeting时,看到茌成的PPT上Performance is a Faith点亮了我,很多时候我会怀疑努力写好代码的价值,满足需求的情况下,把代码写好,并不需要解释。也正是这种信仰坚持去关注用户的根本需求,提高用户体验,抓住技术的本质,才能真正的Rock the World!