如何进行前端自动化测试?,2024年最新给2024的软件测试一些建议

  • 提供封装的浏览器操作接口

  • 测试用例可以快速迁移到其他框架下执行

考量了以上的需求,我们认为 NightWatch.js 是一款非常合适的测试解决方案。当然其他的测试框架也基本能满足需求,但是从方便易用性上考虑,我们最后采用了 NightWatch.js,该方案不仅提供简易封装的浏览器代理操作 API, 还给我们提供了方便便捷的云测试配置(下一篇文章将着重介绍此内容),就凭这两点就已经非常吸引我们了。对于前端测试新手,强烈推荐试用此框架,让你可以迅速完成曾经畏而却步的测试工作。

项目实践

项目A的本地测试实践是需要分别在两台电脑上的多浏览器中执行测试,两台电脑分别是 Windows 系统和 Mac 系统,包括了 IE 、Firefox(windows/mac)、Chrome(windows/mac)、Safari 等最新的主流浏览器。两台机子的测试是分别执行的,我们通过 Jenkins 分别定期执行机子上的测试任务,将测试结果通过邮件的方式反馈给开发人员。 Jenkins 是一个持续集成的平台,关于如果使用 Jenkins 请各位自己 Google…

在接下来的文章中,我们将只介绍在一台机子上的工程实践,对于多个机子的测试需要将如下的工程部署到不同的机子,再使用诸如 Jenkins 之类的工具进行定期执行就可以。

开始工作前,我们需要将技术关系了然于心。我们在 Nightwatch 框架下使用 Selenium 中的 driver对浏览器进行操作。不同的浏览器有不同的 Driver,整个技术栈图如图1所示:

图1

在图中 Test Runner 即为 Nightwatch,我们使用 Nightwatch 提供封装过的 API 进行 Test Case 的书写。下面我们将从零开始手把手教你如何使用 Nightwatch 启动你的第一个 Test case。

1. 安装测试所需包

在自己的前端项目中安装 Nightwatch.js,并将其保存在 package.json的 devDependencies 中。

npm install nightwatch --save-dev

2. 增加 npm script 入口

npm scripts 中加入 test 指令入口,该条指令的具体工作是使用 test.conf.js 的配置,执行名为’A’、‘B’、'C’的配置项(若为了直观查看测试的内容,可根据项目的测试浏览器和版本将名字设为 chrome52.0 , safari9.0 这样的名字,此处设为 A,B,C 是避免大家误认为是指令是自动根据名字去寻找匹配的浏览器)。更多命令的详解请参照 Nightwatch 文档。

“scripts”: {

“test”: “./node_modules/.bin/nightwatch -c conf/test.conf.js -e A,B”

}

3. 配置 Nightwatch

完成指令入口的配置工作,接下来需要完成 test.conf.js 的配置工作。在本地测试中,我们使用 Selenium 对浏览器进行代理操作。配置使用本地 Selenium 操作本机浏览器 Nightwatch 有三个重点:

  • Selenium 的配置:配置好 Selenium jar 包的路径,该包从 Selenium 的官网上下载,host 和 port 按照下文配置书写。

  • driver 的配置:cli_args 是 Selenium 参数,在这我们指定了 chromedriver 和 geckodriver 的路径,chromedriver 是用来操作 chrome,geckodriver 用来操作 safari 和 firefox(顾名思义,geckodriver 支持基于 gecko 的浏览器),都可以从网上进行下载。在项目A中,我们将其下载到前端下面的 bin 目录下。

  • 测试目标浏览器的配置:也就是A和B,每一个 Object 都是一个配置项,A是测试Chrome浏览器,B是测试 Safari 浏览器,如果没有指定版本,就使用本地最新版,更多的配置可以参考 Nightwatch 文档,可以指定系统、版本,并可以启动、禁用浏览器的某些特性,如 Cookie。

selenium : {

“start_process” : true,

“server_path”:"./bin/selenium-server-standalone

-3.4.0.jar",

“host” : “127.0.0.1”,

“port” : 4444,

“cli_args”: {

“webdriver.chrome.driver”: “bin/chromedriver”,

“webdriver.gecko.driver” : “bin/geckodriver”

}

},

test_settings: {

A: {

desiredCapabilities: {

‘browserName’: ‘chrome’

}

},

B: {

desiredCapabilities: {

‘browserName’: ‘safari’

}

}

}

诸位需要根据自己机子的实际情况进行配置,如果是Windows系统,那么将没有safari浏览器 ,而使用 IE 浏览器,这样则会需要 IE 浏览器对应的 driver。

4. 书写测试用例

在各项准备工作完毕后,就只差测试用例了,下面是项目A的一个测试用例的片段,用于检测页面上 id 为 testid 的 DOM 中的内容字符,我们期待字符的长度为 32, 如果该字符为 32 个字符,那么测试通过,否则测试失败。需要注意的是因为此 DOM 是动态插入的,所以在判断其字符前,我们使用 waitForElementVisible 来检查浏览器中 testid 的 DOM 是否已经显示,若在5秒内显示则进行下面的工作,如果没有显示,那么测试也会失败。

module.exports = {

‘@tags’: [‘unit’],

‘unit testing’ : function (browser) {

browser.url

(http://localhost:3010/test)

.waitForElementVisible(‘#testid’, 5000)

.getText(“#testid”,function(result){

this.assert.equal(result.value.length,32);

});

browser.end();

}

};

5. 运行测试

到此为止,我们简单的测试工程已经搭建完毕。现在我们回过头去,执行我们最开始配置的 test 指令,启动测试任务。你需要在命令中执行:

npm test

如果顺利的话,此时你会看到浏览器自动地打开关闭,很快就能从终端上看到如下的测试结果,图2 展示的是多个测试用例成功的结果,图3展示的是测试失败的结果(如遇到无法测试或者其它异常情况请 Google。:D)。

图2

图3

从测试结果中可以查看测试用例的测试结果,包括测试的浏览器、未通过测试的信息详情等。至此,一个从零开始的本地测试实践教程结束。

本地测试与云测试

因为本地浏览器的类型有限,一般我们更多地使用本地的多浏览器测试来完成功能验证的工作,对于要求更严的兼容性测试,我们将采用云测试的方式。云测试即云服务提供商将向我们提供更多的云主机,每台主机上运行着不同版本的浏览器。通过使用云测试服务,我们就能将测试覆盖到更多类型、版本的浏览器。

在下一篇文章中,我们仍以项目A为例子,使用 Nightwatch 框架,在此文章的基础上介绍云测试和云测试工程的搭建。

转自:[从入门到不放弃]多浏览器的自动化测试(2)-云服务测试 - 知乎专栏

在上一篇文章中,撸主已手把手教大家如何从零开始构建一个本地自动化测试工程。如果你没有看过上一篇文章,请先逐字阅读。本文将在上一篇文章的基础上主要为大家介绍两个内容:一是如何免费地搭建多机的自动化测试环境,二是如何使用云测试服务进行360度无死角的自动化测试。信息量大,请各位阅后勿焚,动手牢记。

本地测试鞭长莫及

由于一台计算机支持的浏览器种类有限,如一台 mac 上可以安装 safari, chrome, firefox, opera 等,而且通常只能安装一个版本的产品,所以本地测试多用于检验功能逻辑是否正确,或者是检验特定浏览器的特定功能。对于未知的兼容性测试,单凭本地测试是没法进行的。下文中介绍的方法将提供给测试者一种全新的测试体验,通过远程测试的方式对自己的代码进行测试。 远程测试需要搞清楚两个概念,一是客户端 (Client),一是服务端 (Server),Client 是用于运行 test cases 代码的地方,Server 则是浏览器所在地。通过 Server 上的一些 servlet 来连接 Client 和 Server 上的浏览器,实现将 test 中的用例行为在远程端的浏览器上执行。 通过浏览器和 test 执行宿主机的分离,使得test能在更多的浏览器上执行,并且更易于扩展测试浏览器的数量。在下文的实践当中,读者会对 Client 和 Server 有更清楚的了解,在此不再赘述。

自己的云测试环境

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

既然测试代码要和浏览器环境分割开来,那么我们需要在前文的基础上将浏览器安装到其他的环境中,而不是将浏览器和测试的 Node 测试环境放在同一台机子。安装完成之后需要使用服务端的 Servlet 也就是 Selenium 提供的 webdriver server 将测试环境和浏览器连接起来。具体的步骤如下: 1. 寻找到一台可用的主机: 无论是实体机还是虚拟机都是可以的,不过需要主机可以接入到测试运行主机的网络。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-qkhUhnxU-1712762138027)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值