7月11日,由 TesterHome社区 主办的 中国移动测试大会 在北京举行,国内资深测试专家陈晔、恒温、芈峮、徐达峰等齐聚一堂,另外还有来自知名自动化测试框架 Appium 的开发者Jonathan Lipps和Dan Cuellar给大家分享了Appium和它背后的一些有趣的小秘密,最有意思是Dan还现场演示了Appium与机器人结合的真机测试场景。这是 Appium开发者第一次走进国内分享,相信这次大会能促进国内外移动测试行业更多交流,让国内的移动测试行业和国外整体水平接轨,以下是对这两个演讲的总结。
Jonathan Lipps 是Sauce Labs的工程主管,同时也是Appium目前的项目负责人及总架构师。
Appium是原生和混合移动移动应用自动化测试的跨平台解决方案,支持iOS、Android本地应用以及Hybrid和Mobile Web应用的测试,支持真机和模拟测试,支持本地和云端部署。它从2012年发布第一个版本,经过两年多的迅猛发展,到目前已经到1.4.8版本,拥有100多名贡献者。更多Appium的历史可参看 这里 。
Appium的设计哲学如下:
Appium的特性和它未来的发展路线都必须遵循这些设计哲学,它们确保Appium始终向正确的方向前进。
Appium在底层使用Apple和Google的自动化测试框架来进行测试。分别如下:
在使用上,Appium采用C/S架构,客户端用于封装WebDriver API,读取用各种语言编写的测试脚本并转换为测试命令发给服务端,目前支持的语言有Java、JS、Python、Ruby、PHP、 Objective-C、Perl。服务端使用Node.js搭建HTTP Sever接受测试指令并发送给测试目标。服务端能够部署本地和云端,目前使用Appium搭建云测试的有 Sauce Labs 和国内的 淘测试 等。
接下来Jonathan介绍了一些编写Appium的技术细节,包括Desired Capabilities、Sessions、寻找界面元素以及与界面元素/WebView/Device的交互。目前在Android上还支持同时测试多个设备。
对于测试人员来说,在本地部署Appium可以很方便的进行本地测试开发,但对于持续集成的流程不够友好。在云端部署Appium可以改变这一点。
Jonathan介绍了一些Sauce Labs的设计理念和使用方法,在本地使用Appium进行测试是串行的,如果要测试大量设备,只能一个一个的测,需要消耗很多时间,Sauce Labs将每个Session放到不同的虚拟机里,因此可以进行并行的测试。这也是目前云测试服务的理念。不过,目前国内大多数云测试服务使用Robotium框架,仅支持Android原生应用的测试,和Appium比起来在功能上有所不如。原Appium使用者切换到Sauce Labs很简单,只需将appiumServer从本地改为Sauce Labs提供的地址即可。此外Sauce Labs还支持测试指令的安全传输。
最后,Jonathan介绍了Appium的未来计划。 在即将到来的Appium 1.5中,开发团队将对Appium服务端进行重构,使用ES6来编写代码以获得更简洁清晰的结构,同时有更好的拓展性。未来Appium还会继续其跨平台理念,支持Windows Phone、BlackBerry等平台的应用测试。关于Appium的开发进展可以查看它Github上的 里程碑 ,Jonathan也欢迎国内测试人员参与到Appium的开发当中来。
接下来是 Dan Cuellar 的分享,他是Appium的创始人,目前是FOODit的首席测试工程师。他分享了Appium的发展历程、运营这样一个开源项目的经验、Appium的十个小秘密,以及激动人心的Appium机器人。
Appium虽然有着先进的理念和强大的功能,但它也不是一下子就广为人知的,Dan和其它创始人为了推广项目付出了很多精力,以下是他们采用的一些方法:
这些方法也值得国内开源作者的借鉴。
经过这些手段,Appium逐渐为人所知,参与项目的志愿者多起来,这时项目出现了失控,Dan甚至一度不能提交代码,还因为其它演讲者已经发表了关于Appium主题演讲,而被大会拒绝接纳。不过Dan认为失控是好现象,志愿者们为Appium提供了Android和和各种语言脚本的支持,并且无需亲自去回答每一个问题了。不过为了控制失控现象,项目必须更加规范,比如提交的代码必须编写单元测试、撰写高质量的发布说明和提交说明。
对于发起一个开源项目,Dan总结了一些正确的做法:
当出现分歧时,事先约定一致认可你们的思想及目标将会很有帮助,分歧和冲突最好公开讨论解决。如果分歧实在难以解决,那么就创建分支吧,对于项目来说,失去一些开发者是个损失,但也不是什么大不了的,存在多个类似的项目并不是一件坏事,竞争带来进步,用户喜欢有可选择。最终,最了不起的那个会胜出。
对于Appium为何能够成功,Dan总结道:从第一天开始,他们就有一个清晰的指导思想和目标,尽可能多的吸纳成员,打造一个活跃的社区。另外,支持尽可能多的语言和平台,使用已经存在的、大家熟悉的工具。他们所有的决定都是为了使他们成为一个活跃的社区,他们为之奉献,去出席参加每一个可以与Appium相关的会议、论坛,在第一年里,他们回答了社区中每一个问题。有了正确的方向和目标,再加上努力,这就是Appium成功的秘诀。
接下来,Dan分享了Appium的10个小秘密:
Dan之前甚至使用Appium操作机器人发出了第一条由机器人发出的Twitter。(不过在国内演示时打不开Twitter,你懂的。)
最后,Dan以乔布斯的一段话作为结尾,送给国内的测试人员:
一但你发现一个简单的事实,生命就能变的更宽广。这个事实就是──所有环绕在你周围,被你称之为「生活」的东西,是被那些并不比你要聪明的人所建构出来的。你可以改变它、可以影响它、可以打造属于你自己的东西,并提供给其他人使用。
一旦你明白了这个事实,你就再也不会像从前一样了。
如果你想了解更多两位开发者的分享,可以在StuQ在线查看 演讲PPT ,演讲的视频也将在整理完成后在StuQ上公布,感兴趣的读者可以关注。