-
提供封装的浏览器操作接口
-
测试用例可以快速迁移到其他框架下执行
考量了以上的需求,我们认为 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) {
(http://localhost:3010/test
)
.waitForElementVisible(‘#testid’, 5000)
.getText(“#testid”,function(result){
this.assert.equal(result.value.length,32);
});
browser.end();
}
};
5. 运行测试
到此为止,我们简单的测试工程已经搭建完毕。现在我们回过头去,执行我们最开始配置的 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年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-qkhUhnxU-1712762138027)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!