测试动态 / 质量专栏 / 使用Jasmine框架和Selenium进行自动跨浏览器测试
使用Jasmine框架和Selenium进行自动跨浏览器测试
2021-08-17 浏览次数:2447

在当今快节奏的软件开发世界中,我们经常会发现用于开发的新技术和新语言,随之而来的是相关市场中的测试自动化工具和框架。选择正确的工具和框架集十分必要,因为它们会影响代码的准确性和软件的TTM(上市时间)。

JavaScript是被广泛用于Web自动化测试的编程语言之一,它支持许多用于Web UI测试的Selenium自动化测试框架。在所有可用的测试框架中,Jasmine JavaScript测试框架被证明是最合适的,因为它提供了稳定且功能强大的架构,Jasmine很容易上手,也很容易实现测试场景。

在使用Jasmine进行Selenium自动化测试的本教程中,我们从自动化测试的角度研究了Jasmine JavaScript测试框架的本质。我们还将学习如何设置它,然后是示例代码的编写和执行。

一、Jasmine简介

Jasmine是一个开源的JavaScript测试框架。它是一个行为驱动(BDD)的、受开发启发的框架,独立于任何其他框架。它用于同步和异步JavaScript测试场景中的单元测试。除了对JS的有力支持外,它还为Python、Ruby和其他基于JavaScript的语言提供了广泛的支持。此外,它可用于不同的版本,如standalone、node.js等。使用Jasmine的另一个好处是它是一个独立的框架,对语言、浏览器和平台的依赖最小(甚至没有)。

Jasmine JavaScript测试框架不需要DOM,并且非常容易设置。此外,它提供了一个完美且易于阅读的语法,如下例所示:

二、为什么使用Jasmine作为JavaScript测试的测试框架?

了解了Jasmine的概述之后,让我们看看使用JavaScript Selenium自动化测试进行Web UI测试的主要特性(或优势):

  • 易于设置且易于编写测试;

  •  运行速度非常快,并且对Jasmine核心没有外部依赖;

  •  它带有开箱即用的支持,可满足所有测试需求;

  •  可以使用相同的框架运行浏览器和node.js测试;

  •  具有一个广泛而活跃的社区与定期更新的支持和开发文档;

  • 支持在框架中使用监测实现测试替代;

  • 它甚至支持使用Jasmine-jQuery扩展测试前端代码;

  • 除了行为驱动开发之外,它还支持测试驱动开发;

  • 与其他JavaScript测试框架不同,Jasmine测试框架具有内置断言;

  • 它带有一个内置的测试运行器,可用于运行浏览器测试;

  • 提供丰富的内置匹配器,可用于匹配期望并向测试用例中添加断言,比如toEqual、toBe、toBeTruthy、toBeFalsy、toContain、toBeDefined、toBeUndefined、toBeNull、toBeNaN等。

三、将JasmineJavaScript测试框架与Selenium结合使用的优势

Jasmine和Selenium分别广泛用于JavaScript自动化测试和Web UI自动化测试。在处理基于JavaScript的Web UI项目时,最好将这两种工具结合起来,充分利用它们:

  •  Jasmine JavaScript测试框架和Selenium自动化测试在开源、易于实现和扩展方面相得益彰;

  •  它们与几乎所有浏览器和平台兼容的能力是另一个额外的优势;

  •  通过使用Selenium Grid,可以通过并行执行更快地进行Jasmine测试。

四、Jasmine入门

在了解了一些关于JavaScript中Jasmine测试框架的内容和原因后,接下来,在Selenium Jasmine教程的这一部分中,我们将了解Jasmine的工作流程并了解编写测试场景的基础知识。

假设我们需要使用Jasmine JavaScript测试框架测试文件test.js,输出文件SpecRunner.html,它将运行来自spec.js的所有测试用例,输入Lib,然后在浏览器中显示结果。

  • Lib:由内置JavaScript文件组成,有助于测试项目中的各种功能和其他JS文件;

  •  SpecRunner.html:一个常用的html文件,它将在浏览器中呈现测试运行的输出;

  •  test.js:该文件包含实际的功能/被测代码,将在spec.js和lib文件的帮助下进行测试;

  •  spec.js:也称为测试用例文件,它包含要测试文件的所有测试用例。

以下是Jasmine测试的基本构建block:

Suite Block

Suite构成了Jasmine JavaScript测试框架的基本构建block。一个Suite由用于测试特定文件的测试用例或规范组成,由两个block组成:describe()block和it()block。

ldescribe()

describe()用于对在it()下编写的相关测试用例进行分组。除非测试套件是嵌套的,否则顶层只有一个describe()。在这种情况下,它需要一个字符串参数来命名该特定describe()block中的测试用例集合。

it()–包含规范/测试用例

这用于定义describe()block内的规范或测试用例。

Jasmine中的每个规范至少包含一个断言,这里称为期望。如果所有期望都通过规范,则称为合格规范。另一方面,如果规范中的一个或多个期望失败,则称为失败规范。

注意:由于it()和describe()block都是JavaScript函数,因此所有基本变量和范围规则都按照js代码应用于它们。此外,它们可以包含任何有效的可执行代码。这意味着describing()级别的变量可供测试套件中的所有人和it()级别访问。

 

 Expectations or Matchers

Expectations or Matchers是在Jasmine JavaScript测试框架中实现断言的一种方式。这是在期望函数的帮助下完成的,该函数将测试用例产生的实际值作为输出。

然后它与匹配函数链接,该函数获取该测试用例的预期结果,评估它们以给出布尔结果。如果期望匹配,则返回值为真,否则为假。Jasmine还提供了通过在匹配器之前添加not来检查否定断言的实用程序,以获取所需的期望函数。

所有的expect函数都在it()block下,每个it()block可以有一个或多个expect()block。Jasmine提供了广泛的内置匹配器,并允许你通过自定义匹配器扩展匹配器。

下面通过一个小例子来了解describe()、it()和expect()block的用法和实现过程。我们将测试名为Addition.js的文件,该文件具有相应的规范文件,其中包含的测试用例为AdditionSpec.js。

Jasmine JavaScript测试框架还使用嵌套的describe()block为嵌套套件提供支持。以下是一个带有嵌套相同Addition.js的规范文件的示例。

五、使用独立的JasmineDistribution进行Selenium自动化测试

要开始使用Jasmine,请按照以下提到的步骤完成系统设置。

第一步:从官网下载最新版本的Jasmine;

第2步:从此页面下载所选版本的独立zip;

第3步:在你的系统中创建一个新目录,然后向其中添加一个子目录;

第4步:将下载的独立zip移动到此子目录中并在此处解压缩。解压缩后,你的目录结构应如下所示。

 

第5步:为了验证设置,请在你的Web浏览器中加载SpecRunner.html。如果你看到类似下面的输出,这意味着你已经在你的系统上完成了Jasmine的设置。

让我们看看如何修改它以使用AdditionSpec.js和Nested_AdditionSpec.js运行我们的Addition.js测试用例。

首先,我们将从src和spec文件夹中删除所有现有文件,为示例添加文件。执行此操作后,文件夹结构将如下所示。

更新文件后,我们还需要执行我们的规范,即根据我们在SpecRunner.html中的更改更新对spec和src文件夹下文件的引用。

打开SpecRunner.html,如下所示。

只需更新src和spec部分中的文件名并保存它,你就可以再次加载SpecRunner.html以查看结果。

六、使用npm设置Jasmine环境进行Selenium自动化测试

为了开始使用JavaScript中的Jasmine框架进行Selenium自动化测试,我们需要在我们的系统中进行一些先决条件设置:

步骤1:确保系统上安装了最新的JavaScript版本。此外,检查你系统上的node.js和npm,并根据需要升级到最新版本。

第2步:导航到要创建测试用例的目录,执行它,并通过触发npm命令安装Jasmine。

第3步:完成此操作后,我们将在同一目录中安装Chrome Driver和Selenium WebDriver,以在本地Selenium Grid上执行Jasmine Selenium测试用例。

第4步:完成所有这些后,我们就可以使用init命令初始化我们的Jasmine项目了。

jasmine init

你应该能够看到一个spec文件夹,该文件夹将进一步用于添加测试用例文件。对于这个Selenium Jasmine JavaScript教程,我们将使用以下.js文件。

在此示例文件中,我们自动化了一个场景以导航到登录页面,然后验证页面上的欢迎消息。我们使用了本地Selenium WebDriver并在Chrome浏览器上运行测试。要执行测试用例,如果你与文件处于同一目录级别,请使用以下命令。

触发后,你将看到系统上打开一个chrome浏览器选项卡并重定向到给定页面,验证成功后,浏览器关闭,终端显示如下日志。

到这里,本教程就结束了,开始使用Jasmine和JavaScript编写你的第一个Selenium自动化测试代码吧!

参考文章:https://www.lambdatest.com/blog/selenium-jasmine-javascript-testing-framework-tutorial/

文章标签: 自动化测试
热门标签 换一换
软件崩溃 稳定性测试 API测试 API安全测试 网站测试测评 敏感数据泄露测试 敏感数据泄露 敏感数据泄露测试防护 课题软件交付 科研经费申请 软件网站系统竞赛 竞赛CMA资质补办通道 中学生软件网站系统CMA资质 大学生软件网站系统CMA资质 科研软件课题cma检测报告 科研软件课题cma检测 国家级科研软件CMA检测 科研软件课题 国家级科研软件 web测评 网站测试 网站测评 第三方软件验收公司 第三方软件验收 软件测试选题 软件测试课题是什么 软件测试课题研究报告 软件科研项目测评报告 软件科研项目测评内容 软件科研项目测评 长沙第三方软件测评中心 长沙第三方软件测评公司 长沙第三方软件测评机构 软件科研结项强制清单 软件课题验收 软件申报课题 数据脱敏 数据脱敏传输规范 远程测试实操指南 远程测试 易用性专业测试 软件易用性 政府企业软件采购验收 OA系统CMA软件测评 ERP系统CMA软件测评 CMA检测报告的法律价值 代码原创性 软件著作登记 软件著作权登记 教育APP备案 教育APP 信息化软件项目测评 信息化软件项目 校园软件项目验收标准 智慧软件项目 智慧校园软件项目 CSRF漏洞自动化测试 漏洞自动化测试 CSRF漏洞 反序列化漏洞测试 反序列化漏洞原理 反序列化漏洞 命令执行 命令注入 漏洞检测 文件上传漏洞 身份验证 出具CMA测试报告 cma资质认证 软件验收流程 软件招标文件 软件开发招标 卓码软件测评 WEB安全测试 漏洞挖掘 身份验证漏洞 测评网站并发压力 测评门户网站 Web软件测评 XSS跨站脚本 XSS跨站 C/S软件测评 B/S软件测评 渗透测试 网站安全 网络安全 WEB安全 并发压力测试 常见系统验收单 CRM系统验收 ERP系统验收 OA系统验收 软件项目招投 软件项目 软件投标 软件招标 软件验收 App兼容性测试 CNAS软件检测 CNAS软件检测资质 软件检测 软件检测排名 软件检测机构排名 Web安全测试 Web安全 Web兼容性测试 兼容性测试 web测试 黑盒测试 白盒测试 负载测试 软件易用性测试 软件测试用例 软件性能测试 科技项目验收测试 首版次软件 软件鉴定测试 软件渗透测试 软件安全测试 第三方软件测试报告 软件第三方测试报告 第三方软件测评机构 湖南软件测评公司 软件测评中心 软件第三方测试机构 软件安全测试报告 第三方软件测试公司 第三方软件测试机构 CMA软件测试 CNAS软件测试 第三方软件测试 移动app测试 软件确认测试 软件测评 第三方软件测评 软件测试公司 软件测试报告 跨浏览器测试 软件更新 行业资讯 软件测评机构 大数据测试 测试环境 网站优化 功能测试 APP测试 软件兼容测试 安全测评 第三方测试 测试工具 软件测试 验收测试 系统测试 测试外包 压力测试 测试平台 bug管理 性能测试 测试报告 测试框架 CNAS认可 CMA认证 自动化测试
专业测试,找专业团队,请联系我们!
咨询软件测试 400-607-0568