热门标签 | 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。

在这里插入图片描述


推荐阅读
  • 无论你是刚毕业的大学生,还是想在职业中寻求进步的经验丰富的IT专家,这些提示都可以帮你成为DevOps工程师。DevOps工程是一个备受称赞的热门职业。不管你是刚毕业正在找第一份工 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 自1995年问世以来,Java已历经14年的演变,在快速发展的信息技术领域中展现出持续的活力与创新。如今,Java不仅是一种编程语言,更发展成为一个多功能平台、活跃的开发者社区及成熟的技术生态系统。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
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社区 版权所有