热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

什么是Selenium—自动化测试入门指南

你知道什么是selenium吗?你知道为什么要用它吗?如果你想知道这两个问题的答案,那就等着读完这篇文章的全部内容吧,因为你

你知道什么是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插件的屏幕截图。

  • 插件仅适用于Mozilla Firefox;不适用于其他浏览器

  • 无法测试动态Web应用程序;只能记录简单测试

  • 不能使用编程逻辑编写测试用例脚本

  • 不支持数据驱动测试
    在这里插入图片描述


什么是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元素,然后对这些元素执行动作。

  • Firefox驱动程序(壁虎驱动程序)

  • Chrome驱动程序

  • Internet Explorer驱动程序

  • Opera驱动程序

  • Safari驱动程序和

  • HTM单元驱动程序

    Webdriver是RC的升级,因为它速度快得多。它的速度更快,因为它可以直接调用浏览器。另一方面,RC需要RC服务器来与Web浏览器交互。每个浏览器都有自己的驱动程序,应用程序在此驱动程序上运行。


Selenium WebDriver的优势

  • 支持7种编程语言:Java、C# 、PHP、Ruby、Perl、Python、.Net。

  • 支持在Firefox、Chrome、IE、Safari等多种浏览器上测试

  • 可在Windows、Mac、Linux、Android、iOS等不同操作系统上进行测试

  • 克服了Selenium v1的限制,如文件上传、下载、弹出窗口和对话框屏障


Selenium WebDriver的不足之处

  • 无法生成详细的测试报告

  • 无法测试图像

    无论面临什么挑战,这些缺点都可以通过与其他框架的集成来克服。对于测试图像,可以使用Sikuli,对于生成详细的测试报告,可以使用TestNG。

在这里插入图片描述


推荐阅读
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • jenkins中 Slave使用Docker
    原因就不说了,网上的自动化测试Docker教程太不靠谱,还是学学官网吧。目的:在现在各种虚拟化的大条件下,还在建立N个节点机 ... [详细]
  • 开发笔记:Python之父重回决策层
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之父重回决策层相关的知识,希望对你有一定的参考价值。在GuidovanRossum(吉多· ... [详细]
  • docker整体了解
    Docker是一个基于LXC技术构建的容器引擎,基于Go语言开发,遵循Apache2.0协议开源Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移 ... [详细]
  • Ununtu 12.04 x64位安装docker
    什么是DockerDocker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目。它基于Google公司推出的Go语言实现。项目后来加入了Linux基 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • Jenkins里创建job项目(linux)
    常见自由模式项目在Jenkins里点击,打开后输入项目名称、选择“Freestyleproject”并确定。     源码管理:在项目列表面板点击刚才创建的空项目,打开后点击源 ... [详细]
  • 1、概述首先和大家一起回顾一下Java消息服务,在我之前的博客《Java消息队列-JMS概述》中,我为大家分析了:然后在另一篇博客《Java消息队列-ActiveMq实战》中 ... [详细]
  • 去网上在线生成一个favicon.ico图标,然后把下面的代码复制到页面的head ... [详细]
  • 怎么把Jenkins 服务配置为流水线源? |云效流水线Flow
    云效Flow支持将Jenkins服务配置为流水线源,流水线源,作为Flow流水线的输入源头,可以从文件托管服务或者其他第三方服务中获取原料,并将这些原料放入到工作区。那么我们该如何 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
author-avatar
b1b
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有