今天我们就来说一说UI自动化的语言、框架和自动化库的选择。
企业应用的自动化测试,通常包括接口的自动化和UI界面的自动化。
UI自动化,根据应用类型的不同,包括Web端、Mobile端、桌面端应用、混合应用等。在做这些应用的自动化的时候,往往选择一些开源的库来做,比如 Selenium,Appium,这些开源库通常支持多种语言来开发。
在所有的语言中,国内用来做自动化使用到比较多的语言是Java,Python和Node.js。由于Java作为历史悠久的语言,存在着很多Java语言开发的项目,这些项目在添加自动化的时候,也习惯性的采用同一种语言开发。Python由于容易掌握,以及近几年人工智能的兴起,它也越来越多的运用到项目中去。Node.js作为一门全栈语言,对于创业公司或者全栈工程师来说,Node.js是最得心应手的。一个全栈工程师可以担当从前端到后端,从后端到自动化测试任务的角色,通常学习一个JavaScript语言就能全部搞定。
技术总是不断向前发展,不断迭代更新。更新的趋势总是向着更容易,更快,更高效的方向发展。那么在新的一年中,应该如何把握自己的学习时间,更高效的来掌握一门自动化技术呢?
我来说说我的看法:Node.js 和Python 相比Java 来说,语法都比较精简,学习起来更容易。如果您想快速上手自动化,可以暂时不用考虑Java。下面主要就Node.js 和Python 来探讨一下。
应用开发
Node.js 是现在Web App开发的标配,有大量的库可供使用,Pyhton的Web框架的模板也是基于Html和JavaScript,所以JavaScript是自动化工程师必备的技能。如果你掌握了JavaScript,完全可以用Node.js来开发Web应用。而Web自动化的原理简单来说就是找到页面上的元素,然后进行操作。如果你用JavaScript开发了网页,那么自动化的时候完全可以使用JavaScript的Selenium库来做。
如果你熟悉Python,使用Node.js,可以给你带来惊喜。如果你不熟悉Python,直接学习使用Node.js,也完全没压力。
Node.js开发最大的好处是可以前端和后端的融合,都是JavaScript开发的,有利于前端人员快速做后端应用,另外现在Node.js还有大量的工具,比如阿里在前端和后端都开源了大量的Node.js。相对这块来说,Python有些不温不火。
自动化库的支持
Web端
Node.js 的Web在自动化库除了经典的 selenium-webdriver,还有类似的wd,webdriverio库的支持,另外 webdriverio也可以做手机端的自动化。
Node.js另外一个比较火的是Puppeteer,是Google Chrome团队开源的端到端自动化测试框架,可以做UI自动化测试,也可以做为爬虫工具。作为Headless方式运行,Puppupteer更快,更省资源,它主要支持nodejs开发脚本。
而Python在web自动化库可供选择的主要就是Selenium了。
移动端
手机移动端应用最广泛的就是Appium,支持Node.js 和Python。另外也有一些公司基于Appium 封装的开源库,比如阿里的Mocaca,可以测试Native,Hybird,H5等多种应用类型。
在移动端上可供选择的库都不少。根据个人使用习惯选择即可。
其它框架
除了这些提供自动化技术的库,还有一个很重要的部分就是自动化驱动的框架。Node.js提供了很多框架,包括mocha、jasmine、cucumber.js。其中mocha、jasmine既可以适用于自动化单元测试,也可以驱动TDD(测试驱动)、BDD(行为驱动)的开发。而cucumber.js是专业做行为驱动的自动化测试的工具,近来在开源社区很活跃,已经更新到最新的5.0版本。
开发工具方面也需要考虑。Python主要用的是PyCharm,是JetBrain出的。JavaScript有很多开发工具,从微软的VSCode、开源的Atom、免费的Sublimb,和专门针对JavaScript测试自动化的工具CukeTest。另外最新的CukeTest内置了Windows应用自动化库,除了可以使用开源的工具进行Web,API,移动端的自动化,还可以进行Windows以及Qt应用的自动化。
总结
在自动化方面,Node.js生态发展很快,特别是在国外。它能满足的测试的类型从API、Web、手机移动端和Windows应用。如果你准备开始学习自动化技术,我个人建议Node.js会是更好的选择。
网友评论