自动化测试中框架较多,其中Selenium,WebDriver,Selendroid,Appium的关联性相对啰嗦。因此,从网上搜罗了些资料,稍做总结。不想长篇大论,也不想说理论代码,只为理清关系。
一切都得从Selenium说起。
2004年,ThoughtWorks的Jason Huggins发起了Selenium项目。Selenium共经历三个版本,2004年的1.0版,2006年的2.0版,2016年的3.0版。
1.0版的Selenium包括三个部分,Selenium IDE(插件,用于录屏,并转化代码),Selenium Grid(扩展工具集)和Selenium RC(Remote Controller)。其中Selenium RC是主要部分。
Selenium基于javascript,为了规避javascript在不同浏览器上可能引发的安全性问题,Selenium project与WebDriver project的合并,升级为Selenium2.0,其中WebDriver与Selenium RC的角色类似,但为了兼容性,2.0版本中并未将Selenium RC移除。
关于WebDriver Project的历史,网上说的不多。它与Selenium的不同之处在于,WebDriver采用适配器的方式,与不同浏览器进行对接。因此,在使用时,需要下载不同版本的Driver。而与Selenium的合并,也解决了其自身的问题。例如,可以支持更多的开发语言,接入更多的浏览器。
Selenium与WebDriver合并后,Selenium2.0就等价为WebDriver了,对于Selenium2.0的学习,其实是对WebDriver API的学习。
3.0版本直到2016年才发布,该版本彻底移出了Selenium RC,对开发环境也有了限制(例如只支持jvav8以上版本,对不同的浏览器也有最低版本要求)。相对而言,2.0版的通用性更高。
从测试的角度来说,Selenium从头至尾都是对web的测试框架,而对Android的支持只是其分支,而该分支即为Selendroid。
Selendroid可以视为web版的Robotium,它基于Instrumentation,需要在相同的进程内,有相同的签名的情况下进行测试。
Appium则是另外一段故事。
2011年,Zoosk的Dan Cuellar为解决IOS自动化测试的某些问题,开始了一个称为IOSAuto的项目,该项目基于UIAutomation架构。在2012年的Selenium Conference上进行了首次展示。机缘巧合,Jason Huggins此时正在负责IOS测试支持,IOSAuto为其提供了一些思路。针对IOSAuto,Jason Huggins给出了一些建议,例如开源,Python版本等。之后IOSAuto更名为Appium,寓意Selenium for Apps。此外,起初的Appium并不支持4.2以下的android设备,之后集成了Selendroid,来解决这一短板。
2014年,Appium发布了1.0版本。至今,最新版本为1.7.2。相对Selenium而言,该框架并不仅限于web测试,同样支持android的native,hybrid。
以上总结,若有错误理解,也希望童鞋拍砖,指出问题。
参考文章
(1)Selenium发展史
(4)初识Selendroid
(5)Appium历史
(6)Appium中国行总结