在我看来,著书立说是神秘而神圣的,非有大才之人不能为之,非胸有丘壑者不敢为之,一直以来对文人写手心存敬畏,对著作等身的高产大牛们的景仰之情更是如滔滔江水奔流不息。此前,虽然也想过基于某个主题写本书,然而本人才疏学浅,对照身边如云的大牛和谦谦君子们,就不敢随便造次了,加上没有适合下手的契机和主题,写书就一直停留在梦想阶段。直到2015年,我负责的产品系统的自动化建设工作做了里程碑总结,心想,也许可以就我在自动化测试建设和实施方面的经历和经验,梳理一下做个总结跟大家分享,为将来可能做这块工作的后来人提供一些参考和借鉴,如果能切实帮到一些同学,让他们少走弯路,那自然就更美好了。加上,期间还有二、三好友有意无意的怂恿鼓动,酝酿了一段时间之后,我和Bree就此想法聊了一通,双方坦诚的交换了意见和立场,达成了共识,可谓一拍即合。因而斗胆执笔,在此后的一年多时间里,从午休到周末,挤各种业余时间,开始了本书的漫漫编写之路。
记得最先的自动化测试,是从自学QTP开始的,那会,QTP在GUI自动化测试的领域里风头正劲大行其道,还记得刚学习的时候,下班后就在家钻研工具写好测试代码,上班的时候把研究的成果应用到工作中,每次看见系统按照自己的预期构想跑起来的时候,心里充满了欢乐和满足。当然,就web的GUI自动化测试来说,Selenium等工具崛起有段时间了,QTP自身的弊端越来越明显且积重难返,多少有些昨日黄花的味道,想想有些可惜。
后来,因公司的业务需要,我受命负责建设公司各条产品线、系统的自动化测试体系,刚开始自己摸索,逐个击破,从无到有,从B/S到C/S,从BPT到TC,从到基于GUI到基于接口,到控制嵌入式机器的指令集从而实现自动操作的预期目标,及至源码级自动化测试(Junit等),一步一个脚印的积累,渐渐的自动化测试团队的人员也增加起来了,我也有了帮手而不再是单打独斗孤军奋战,再后来,测试工具从标准化工具到内部定制的测试平台都有了,自动化测试系统从1期升级成了2期,并研究应用了基于Jenkins的持续集成平台,把 svn、被测系统、多个自动化测试系统、测试代码和数据集成到了一起并有计划的统一调度,自动化测试演进为测试自动化,渐渐的建立起了公司的自动化体系,并形成固定的机制和良性的循环。
尼采说一切真理都是弯曲的,事物总向真相的彼岸螺旋式前进,回想自动化测试建设的过程亦颇曲折远不是一帆风顺,最有压力的时候莫过于每周公司例会向领导汇报自动化测试的工作进展,领导每次过问进展都很难回答,正如大家知道,自动化测试的基础建设不是一蹴而就的,需要有至少半年甚至更长的建设周期才能看到效果,而在开始阶段成效出来之前,硬着头皮跟领导汇报和说明个中原委是很难受的,当时真有些如坐针毡时不我待的感觉,巴不得使出浑身解数尽快推进好使成果快点出来——这点,相信有过类似经历的同学多少有些感同身受吧。然而正是这曲折的逆境让人得到历练快速成长,在持续不断的解决各种疑难杂症的过程中锤炼了自己,说是凤凰涅磐脱胎换骨显然夸张了,然而相比从前的确有了明显的进步。
逐渐的,公司的自动化测试建设运行上了轨道,部分成果开始显现出来:无人值守使有限的硬件资源和测试时间得到了更充分的利用、回归测试和对比测试快加高效,等,团队的成就感、士气和质量信息有了明显的提升。然而,新的问题又来了,随着时间的推移,测试系统开始面临新的问题,包括功能和性能方面的问题,比如测试数据越来越庞大,测试系统在加载和响应方面越来越慢、原来的设计在兼容和扩展方面的局限性带来的问题,又比如产品本身的变更要求测试系统、工具作相应的调整等。测试系统在应用期间的维护和升级问题,也需要提前考量。
任何事情在推行过程中都不可避免会碰到各种阻力、障碍,在质疑的声音面前,坚定的信念和扎实的执行力是最佳的回应。比如,定制测试系统在开发阶段时,常常为了一个功能点是否需要实现而和各方争得面红耳赤不可开交(当然是因为工作上看法不同的争论),现在回想起来,很感谢、庆幸当初的一些坚持,其效果是显而易见的:到现在,有些极其重要又极其无聊的测试工作完全可以用自动化来替代和实现了,此后这些模块再也没有在生产环境出过问题捅过篓子。保障了质量,也减轻了部门兄弟本来就不轻松的测试工作以及心里负担。
内容简介:
本书重点讲手机App应用的自动化测试。含自动化测试方法论、资源准备、测试工具、测试框架及搭建方法、脚本语言、调试方法和技巧、维护方法、测试案例、报告分析、问题追溯等。下面将一一道来。
第一章,有人说,2013年是移动互联网的元年,如果是这样,那么到了2015年移动App的应用市场早已风生水起日臻成熟,手机应用的测试再次成为测试领域不能回避的主旋律。在第1章,扼要的介绍了手机应用App测试的主要场景,但并未展开仔细讲而是点到为止,毕竟本书的重点是讲面向App的自动化测试,如果读者感兴趣另请查阅相关资料。
第二章,资源是有限的,既要达成自动化建设目标,又不能影响现有日常工作的开展,保障输出的测试质量。人力、时间甚至硬件等资源不时出现冲突频频受到掣肘,如何在有限的资源下突出重围完成工作目标?在本章节对此进行了剖析,提出解决之道。
第三章,在纷繁芜杂的各种测试解决方案里头何去何从,怎么选择怎么割舍,如何找到适合自己的那一款?脚本语言哪家强?分层的测试设计的套路是什么、具体怎么实现和应用?啥是云测试?这些问题,在本章节可以找到答案。
第四、五章,引入新生事物并基于此搭建测试环境是很繁琐的,这点相信很多人有体会,环境弄好了,后面的工作就有如水到渠成了。然而,操作系统、工具类型、软、硬件版本等等这些都是影响环境最后是否好用的因子,稍有不慎可能就得返工或就此埋下隐患,导致后续可能出现一些莫名其妙的问题,很浪费时间、容易产生挫折感。本书充分考虑了这些细节,在本章节,就基础环境和Appium环境的搭建、配置进行了详细的阐述和说明,并做到图文并茂,使读者一目了然。
第六、七章,Android自动化测试基础知识,包括识别原理,组件类型、调试技巧、识别工具等。
第八~十三章,系统的介绍了Monkey、UiAutomator和Appium的前世今生,它们都是基于手机App应用的自动化测试工具,这些章节结合实例系统阐述讲解了它们工作原理、对象识别、代码开发、测试数据设计及维护、运行及报告等方面的区别联系。
[if !supportLists]n [endif]Monkey:App随机测试的利器,全面的讲解了Monkey在参数分析、异常处理、白名单黑名单方面的设置和应用并以具体的实例中应用。
[if !supportLists]n [endif]UiAutomator:App自动化测试的重器,是App自动化测试的主流平台之一,章节详细介绍了UiAutomator的API应用、调试技巧、案例分析和报告解析。
[if !supportLists]n [endif]Appium:Appium是本书的重点章节,是App自动化测试的神器,章节详细介绍了元素定位方法、API实例详解及应用举例。
[if !supportLists]n [endif]组合框架:集成了TestNG、Maven、Log2j等工具,以Appium为核心构建成的框架,从中可以发现如何让框架的功能变得更为强大而全面,使日志生成、报告分析等模块用起来更加得心应手。此章是集大成者,它融会贯通了前面各章的主要内容,需重点学习。
希望
去年开始执笔的时候,市面上定位于App自动化的书不多,到今天已经有些问世了,如果要问本书在同类书籍中凭什么脱颖而出,我想,其中比较重要的一点,就是书中的每一点体会每个案例,都来源于实际工作的沉淀和感悟,每个案例、每个步骤之间步步为营环环相扣,都是执笔者亲自操作、调试并截图记录,经得起推敲,耐得住琢磨。评审阶段,本着“No pain, No Gain”的自虐精神,秉承宁缺勿滥的宗旨理念,对有争议的、容易引起理解分歧的地方反复推敲不断精简修缮,为的是让书里的内容尽可能深入浅出简单易懂,降低学习和应用的门槛及成本,为读者提供切实有效的帮助和参考。
在本书编写的过程中,是一个自我学习和完善的过程,期间对相关的知识点查漏补缺,对理解不够深刻的知识点重新整理,力求理解到位。从实践中总结和修正了理论,反过来理论指导了工作的开展,在理论和实践之间来回游刃穿梭。然而肯定还有不少不足之处,还需要继续优化和完善,衷心的希望读者能提出宝贵意见给予批评指正。
鸣谢
感谢搭档Bree,日理万机之余仍不忘投入精力到重点章节的编写中,本书的诞生离不开你的努力,谨献上鲜花一枝,聊表我的敬意和谢意。
感谢在我工作期间、在本书编写期间对我有过指导和帮助的领导、和师长、同事、朋友,在此献上鲜花若干!