你知道什么是selenium吗?你知道为什么要用它吗?如果你想知道这两个问题的答案,那就等着读完这篇文章的全部内容吧,因为你会很高兴自己花了值得的时间来了解下一份工作的核心是什么。
自动化测试正席卷全球&Selenium Certification是业界最受欢迎的技能之一。
什么是Selenium?
Selenium是一个开源工具,用于自动执行在Web浏览器上执行的测试(可以使用任何Web浏览器进行Web应用程序的测试)。等一下,在您忘乎所以之前,让我再重复一遍,使用Selenium只能测试Web应用程序。我们既不能使用Selenium测试任何桌面(软件)应用程序,也不能测试任何移动应用程序。
这是一件令人沮丧的事,不是吗?我能感受到你的痛苦。不过别担心,有很多工具可以用来测试软件和移动应用程序,比如IBM的RFT、惠普的QPT、Appium等等。但是,本文章的重点是测试动态Web应用程序,以及为什么Selenium是最适合这一目的的。
Selenium有哪些优势?
-
测试脚本可以用以下编程语言中的任何一种编写:Java、Python、C# 、PHP、Ruby、Perl和.Net
-
测试可以在以下任何操作系统中执行:Windows、Mac或Linux
-
可以使用任何浏览器进行测试:Mozilla Firefox、Internet Explorer、Google Chrome、Safari或Opera
-
可以与TestNG&JUnit等工具集成,用于管理测试用例和生成报告
-
可与Maven、Jenkins&Docker集成,实现持续测试
-
我们只能使用Selenium来测试Web应用程序。我们不能测试桌面应用程序或任何其他软件
-
Selenium不能有保证的支持。我们需要利用可用的客户社区
-
无法对镜像进行测试。为了进行基于图像的测试,我们需要将Selenium与Sikuli集成
-
没有本地报告设施。但是我们可以通过将其与TestNG或JUnit等框架集成来克服这个问题
由于Selenium是开源的,因此不涉及许可成本,这是与其他测试工具相比的主要优势。
软件测试需求
软件测试是一切归根结底的地方。今天的技术世界完全由机器主导,它们的行为由驱动它的软件控制。这些机器会完全按照我们希望的那样运行吗?每次都是这样吗?到处都是吗?这些问题的答案在于软件测试。
归根结底,软件应用程序的成功率将控制您的业务增长。即使是网络应用程序也可以这么说,因为今天的大多数企业都完全依赖于互联网。
以任何一家电子商务公司为例。无论是亚马逊、E-Bay还是Flipkart,他们的业务都依赖于其网站上的客户流量和基于网络的移动应用程序的流量。
想象一下,如果发生了一些灾难性的事情,比如许多产品的价格被限制在10美元,所有这些都是因为代码中“不容易阅读”的部分中的一个小错误。那么我们可以做些什么,我们如何防止下一次发生这种情况?通过在部署之前测试代码,对吗?所以,这就是软件测试的需要。但是,Selenium是什么呢?它是软件测试工具吗?嗯,Selenium是一个自动化测试工具!在我进一步说明之前,让我澄清一下,软件测试有两种类型:手动测试和自动化测试。Selenium是作为一种自动化测试工具创建的,目的是克服手动测试的缺点/局限性。
手动测试面临的挑战
手动测试是指QA测试人员手动测试(Web)应用程序。
需要在每个环境中使用不同的数据集手动执行测试,并记录每个交易的成功/失败率。
请看上图中的一个可怜的家伙,他手动验证记录的交易。
他面临的挑战导致疲惫、无聊、工作延误、失误和因体力所致的错误。这导致了Selenium(自动化测试工具)的发明。
自动化测试胜过手动测试
自动化测试每次都胜过手工测试。为什么?因为它速度更快,需要的人力资源投入更少,不容易出错,经常执行测试,支持轻量执行,支持回归测试和功能测试。
让我们举一个与前面提到的例子类似的例子。假设有一个登录页面,并且我们需要验证是否所有的登录尝试都成功,那么编写一段代码来验证是否所有的事务/登录尝试都是成功的(自动测试用例执行)就非常容易了。
此外,这些测试可以配置为在不同的环境和Web浏览器中进行测试。还能做些什么呢?您可以自动生成结果文件,方法是将其安排在一天中的特定时间。然后,您还可以根据这些结果自动生成报告。
关键是自动化测试使测试人员的工作变得简单得多。看看下面的图片,它显示了一个更宽松的环境,在这个环境中,相同的测试仪正在工作。
Selenium工具套件
-
Selenium RC(现已贬值)
-
Selenium IDE
-
Selenium 网格
-
Selenium WebDriver
Selenium有哪些成分?
Selenium RC(遥控器)
在讨论Selenium RC的细节之前,我想退一步谈谈Selenium项目中的第一个工具。
Selenium Core是第一个工具。但是,由于同源政策,Selenium Core在跨域测试方面遇到了障碍。同源策略禁止Javascript代码访问托管在与Javascript启动位置不同的域上的Web元素。为了克服同源策略问题,测试人员需要安装Selenium Core(一个Javascript程序)和包含被测试Web应用程序的Web服务器的本地副本,以便它们属于相同的域。这导致了Selenium RC的诞生,它被认为是当时的ThoughtWork的工程师保罗·哈曼特(Paul Hammant)。
RC通过使用HTTP代理服务器来“欺骗”浏览器,使其相信Selenium Core和正在测试的Web应用程序来自同一个域,从而克服了这个问题。从而使RC成为一个双组件工具。
1.Selenium RC Server
2.Selenium RC Client-Library包含您的编程语言代码 RC Server使用简单的HTTP GET/POST请求进行通信。请看下图以了解RC架构。
Selenium IDE(集成开发环境)
2006年,来自日本的Shinya Kastani将他的Selenium IDE原型捐赠给了阿帕奇的Selenium项目。这是一个Firefox插件,可以更快地创建测试用例。IDE实现了记录和回放模型,其中测试用例是通过记录用户与Web浏览器的交互来创建的。然后可以回放这些测试任意次数。
查看下面Firefox的IDE插件的屏幕截图。
什么是Selenium网格
Selenium Grid是由Patrick Lightbody开发的,最初名为HostedQA(最初是Selenium v1的一部分),并与RC结合使用以在远程机器上运行测试。事实上,使用网格,可以在多台机器上同时执行多个测试脚本。
在Hub-Node体系结构的帮助下,实现了并行执行。一台机器将承担集线器的角色,其他机器将成为节点。集线器控制在各种操作系统内的各种浏览器上运行的测试脚本。在不同节点上执行的测试脚本可以用不同的编程语言编写。
GRID仍在使用中,可以与WebDriver和RC一起使用。然而,维护一个拥有所有必需的浏览器和操作系统的网格是一项挑战。为此,有多个在线平台提供了一个在线Selenium Grid,您可以访问该网格来运行您的Selenium自动化脚本。例如,您可以LambdaTest。
它有2000多个浏览器环境,您可以在这些环境中运行测试,并真正实现跨浏览器测试的自动化。
什么是Selenium WebDriver
Selenium WebDriver由Simon Stewart于2006年创建,是第一个可以从操作系统级别控制浏览器的跨平台测试框架。与IDE相比,Selenium WebDriver提供了创建和执行测试用例的编程接口。编写测试用例,以便标识网页上的web元素,然后对这些元素执行动作。
Selenium WebDriver的优势
-
支持7种编程语言:Java、C# 、PHP、Ruby、Perl、Python、.Net。
-
支持在Firefox、Chrome、IE、Safari等多种浏览器上测试
-
可在Windows、Mac、Linux、Android、iOS等不同操作系统上进行测试
-
克服了Selenium v1的限制,如文件上传、下载、弹出窗口和对话框屏障
Selenium WebDriver的不足之处