selenium优缺点
谁不喜欢深背景的命名故事? 在2000年代初期,一家名为Mercury Interactive的公司通过其工具Astra Quick Test统治了测试自动化领域。 这不是可以想象的最好的产品。 例如,您只能在Windows计算机上运行测试,仅支持少量浏览器版本,并且必须使用一种语言编写脚本-VBScript。 当软件工程师Jason Huggins构建新的创新测试自动化工具时,他通过引用化学元素和建议作为汞中毒的解毒剂Selenium(Selenium)来命名自己的作品。 这个工具就是我们今天要回顾的。
Selenium是一套开源软件测试自动化工具,已成为质量保证世界中的事实产品。 通过使用几种编程语言的列表,所有主要操作系统和浏览器的支持,Selenium当前在Netflix,Google,HubSpot,Fitbit等公司的生产中使用。 整个套件提供了针对不同测试问题和需求的一系列解决方案。 在本文的进一步内容中,我们将讨论这些工具,以及Selenium自创建十年以来仍保持相关性的原因。 但是现在,让我们研究一下使Selenium如此重要的是什么。
Jason Huggins的2004年创作是一个JavaScript框架,旨在使其创建者摆脱重复的手动测试。 最初可预测为JavaScriptTestRunner的产品可以直接在浏览器中执行测试,在页面上驱动交互,并在没有人工输入的情况下重新运行它们。 该工具在Huggins意识到其潜力之后就开始流行起来,使其开源并重命名为Selenium Remote Control。 它的创新之处在于,没有其他工具可以允许测试人员使用他们选择的编程语言与浏览器对话。
但是,很明显浏览器在JavaScript上应用了安全限制,从而无法使用该工具的全部功能。 当时Google是Selenium的狂热用户,但工程师们在限制方面苦苦挣扎。 其中之一,西蒙·斯图尔特(Simon Stewart),开始开发一种可与本机浏览器进行本地通信的产品,他称之为WebDriver。 Selenium将力量与WebDriver结合在一起,改变了我们十多年来测试软件的方式。
要开始Selenium之旅,请查看以下迷你入门包:
Selenium产品阵容中的第一个产品是Selenium Remote Control(现在称为Selenium 1)。 由于其上述限制以及随后与WebDriver的合并,因此很快不推荐使用它,并且不再支持它。 整个Selenium基础架构可以通过下图显示,我们可以突出显示仍受到社区大力支持和认可的三个主要产品:Selenium WebDriver,Selenium IDE和Selenium Grid。 让我们快速描述它们中的每一个。
今天的Selenium套房在大多数情况下,当人们谈论Selenium时,它们的意思是Selenium WebDriver。 产品开发中最大的一块就是该产品。
WebDriver中的测试自动化工作方式通常与出租车驾驶进行比较。 出租车驾驶和测试自动化共有三名参与者:客户/测试工程师,汽车/浏览器,出租车司机/ WebDriver。 根据这种类推,测试人员命令WebDriver与元素交互,就像客户向出租车驾驶员发出指令一样。 然后,WebDriver向浏览器(汽车)发出听起来像这样的命令: 单击该按钮时,请单击该按钮。 然后,浏览器提供有关Web元素的值和状态的WebDriver信息,这些信息随后将发送到脚本。 如果您想进一步了解质量保证活动,请参阅我们全面的软件测试白皮书 。
在本文中,我们将主要讨论Selenium WebDriver的优缺点。
这个Firefox附加组件被一半的测试人员拒之门外,另一半则庆祝。 并非用于生产,它易于学习并且非常适合原型任务。 您不需要编程技能即可在Selenium IDE中成功运行,因为它基本上会在浏览器中记录您的操作并重复执行。 但是,有许多官方和非官方的插件允许您构建Frankenstein的IDE怪兽,它很可能会成为可用于生产的工具(我们将在稍后讨论)。 对于发现Selenium WebDriver太高了切入点的公司,使用在顶部带有一些插件的IDE可能是一个可行的解决方案。
Selenium Grid允许您同时在多台计算机和浏览器上运行并行测试。 该工具的主要功能是节省时间。 如果您必须运行100个测试,但是您使用Selenium Grid设置了四个虚拟机或物理机,那么,如果您在一台计算机上逐个运行这些测试,则将花费大约四分之一的时间。 考虑到脚本通常在浏览器上的运行缓慢,使用性能改进技术(例如并行测试)可以解决此问题。 当一台计算机正在运行Firefox,另一台计算机正在运行Firefox时,也可以使用它在不同的浏览器中并行测试一个应用程序。 您可以使用Grid创建不同的配置,并结合不同版本的浏览器和操作系统。 不用说,在大型生产环境中使用Grid可以节省大量时间。
最后,是时候讨论市场上每年出现的许多出色的测试工具如何使旧的Selenium保持良好状态。
Selenium不是市场上唯一的自动化测试工具,而是唯一可以与付费产品竞争的免费工具。 正如您在自动测试工具比较中可能已经看到的那样, Katalon Studio是唯一可行的选择,但是它没有提供太多的语言选择,在Linux上不起作用,并且根本没有支持者。 Selenium的开源状态使具有陡峭学习曲线的工具成为初创企业和独立开发人员的低切入点。 毫不奇怪,当Selenium仍然坚守时,甚至更大的公司也不会急于转向付费选项,并赠送几千美元的维修费用。
在这些词付诸实践之前,Selenium就遵循了Agile和DevOps的叙述。 Selenium的整体性质完全属于敏捷, DevOps或持续交付背后的主要原则。 这到底是如何实现的?
使用Selenium,您还可以测试本地,混合或Web移动应用程序,尽管您需要其他软件。 有两个主要选项-Appium和Selendroid 。 它们都基于Selenium,因此已经精通Selenium的开发人员在测试移动应用程序时可以应用相同的原理。
两种工具都是开源的,并具有强大的社区支持。 主要区别在于Appium支持iOS,Android和Windows设备,而Selendroid仅专注于Android。 Selendroid也与Appium捆绑在一起,因此当您测试Android 2.3至4.3版本时,该程序将自动切换到Selendroid。
似乎使用Appium是更合乎逻辑的选择,因为它并不限制您使用一个操作系统。 但是,如果您打算专门测试Android,则仅使用Selendroid更为有意义。 它还具有一些漂亮的功能,例如“热插拔”-您可以插入设备并拔出它们而不会中断测试,从而增加了可以同时测试的仿真器或硬件设备的数量。
您可能还想了解另外两个利基工具:
Selenium提供的灵活性在测试自动化领域几乎是无与伦比的。 首先,我们有十种受支持的语言,其中包括Java,Ruby,C#,PHP,JavaScript,Perl和R,它们都是当今最常用的编程语言 。 它也是涵盖Linux测试的唯一主流工具。 有关受支持的浏览器版本的详细列表和更新列表,请参阅此页面 。
Selenium支持的语言,平台和浏览器数据驱动的研究公司iDataLabs提供了有关软件测试工具市场的有趣见解 。 您可以看到,Selenium在所有软件测试工具中所占的市场份额达到惊人的30.59%,其最接近的竞争对手UFT所占市场份额刚刚超过12%,这是惊人的统计数字。
根据iDataLabs,超过25,000家公司正在使用Selenium作为现代自动化测试的先驱之一,Selenium也吸引了像Google和初创公司这样的主要公司的开发者爱好者。 质量检查专业人员的工作清单包括将Selenium熟练程度作为必需技能之一。
有Selenium的替代品,我们前面已经提到过,但是它们的价格从数千美元到1万美元不等。 拥有出色的免费工具可以使老测试人员忠于Selenium,而新测试人员则成为忠实拥护者。
从对在线课程的需求来看,他们正成为粉丝。 Udemy,Lynda.com和Coursera提供了几种学习Selenium的选项。 数百个分步的YouTube教程, 一个关于Quora的主题以及25,000个关注者,以及有关StackOverflow的55k个问题,预示着庞大的社区正在蓬勃发展,这为市场提供了更多的Selenium人才。
Selenium可以通过各种插件扩展到其标准功能之外。 Appium和Selendroid是其中两个。 在此页面上 ,您将看到Selenium官方认可的第三方插件,但您可以在Github上找到更多不受支持的插件。 一定还要在Google上搜索“ Selenium plugins
这些插件不仅适用于WebDriver,而且适用于Grid和Selenium IDE。 后者特别广泛,能够加强功能弱的工具并使之准备投入生产。
在不提及软件产品带来的一些痛点的情况下,我们永远不会称赞软件产品。 Selenium也有一些。
当今的自动测试趋势之一是无代码测试。 这种方法允许任何不具备深入编程知识的人都可以执行测试。 一些测试工具(例如TestComplete,Ranorex或Tricentis)通过在代码层顶部构建用户友好的UI并启用两种模式之间的切换来提供此选项。 测试人员仍然可以编写脚本并接收详细的反馈,但是如果需要,可以跳过编码部分。
但是,Selenium不允许进行无代码测试。 您需要对其中一种编程语言有很好的了解,这可以缩小可以参与测试过程的人员的范围。 许多公司,特别是初创公司,倾向于聘用最好的编码器来编写产品功能,并让技术水平较低的人员参与自动化测试。 这不适用于Selenium。
在质量检查过程中,自动执行图像验证会遇到困难。 决定图像是否在屏幕上正确显示的最简单,最有效的方法是手动检查。 虽然大多数产品使用手动和自动测试相结合是正常的,但这是漏洞的主要来源,因为该任务很快就会变得重复并且测试人员往往不经常检查。
解决此问题的常见方法之一是图像比较 。 您有一个图像样机,程序应将其与测试期间显示的图像进行比较。 TestComplete,Ranorex,Katalon Studio以及其他一些已经包含此功能。 要在Selenium中执行此操作,您需要第三方软件。 Sikuli是一个常见的选择。 这是一个基于图像的识别工具,可以与Selenium很好地集成在一起,但是它有局限性-它必须在相同的虚拟或物理屏幕上运行,并且不能识别动画。
用Selenium寻求帮助是一把双刃剑。 上面我们提到了丰富的教程,问题,答案以及指向聊天室的链接,您可以在其中向社区寻求帮助。 不利的一面是,提供帮助的是社区,而不是产品创建者。 找到解决您非常规问题的解决方案或定制请求的帮助是可能的,但是很困难。 如有需要,您可以联系咨询或服务公司以寻求商业支持。 Selenium在其生态系统页面上提供了此类公司的简短列表。
测试人员,开发人员,项目经理–他们都需要访问测试结果,最好以图表,表格的形式可视化并由屏幕截图支持。 当最终信息可能丢失或无法与最需要的人交流时,编写脚本和执行测试有什么意义?
缺少自动生成的报告是Selenium面临的最大挑战之一。 要捕获Selenium中的测试失败,您必须在失败时拍摄一张屏幕截图。 这与团队快速诊断问题所需的可读格式相差甚远。 尽管不同的供应商提供报告功能以及数据驱动的见解和团队合作工具集成,但Selenium必须依靠第三方解决方案。 以下是最受欢迎的:
如果Selenium突然宣布要走付费路线,将会发生什么? 当完全免费提供给您时,很难批判某些东西,但是如果我们突然不得不为它们付出代价,陷阱将是多么痛苦?
Selenium并不是完美的,但是它足以使测试人员付出更大的努力,而忽略无代码趋势。 当您准备花几个小时在网上寻找解决方案,而不是获得付费时,它就会达到最佳效果。 而且,它还保留着一些与当今的工程叙述相称的优胜劣汰:更快的交货速度,小部分易于处理,立即收到反馈。
Selenium是一个通用的用例。 它并不会掩盖所有其他测试自动化工具,特别是如果您有预算的话。 但是它的垄断性质使您在三思而后行之前却三思而后行。 也许还不错。
这篇文章是我们“善与恶”系列的一部分。 有关最流行技术的利弊的更多信息,请参阅该系列的其他文章:
Xamarin移动开发的好与坏
JavaScript全栈开发的好与坏
Node.js Web应用程序开发的利弊
ReactJS和React Native的优缺点
Swift编程语言的优缺点
.NET Framework编程的利与弊
角度发展的好与坏
Java编程的利与弊
最初在AltexSoft技术博客上发表 “ Selenium测试自动化工具的 优缺点 ”
翻译自: https://hackernoon.com/the-good-and-the-bad-of-selenium-test-automation-tool-49f3a6b29920
selenium优缺点