Web端UI自动化测试环境搭建及并行方法

312 阅读3分钟
原文链接: mp.weixin.qq.com

奇技指南

web端UI自动化测试由于维护工作量大,被测试开发人员吐槽颇多,但通过合理的配置需求,以及隔离定位、查找、操作的设计思想,可减小维护工作量。今天给大家分享一下我在Web端UI自动化测试环境搭建中的体验,希望可以帮到一部分同行。

本文转载自Qtest之道。

背景介绍

发展多年,web端UI自动化测试由于维护工作量大,被测试开发人员吐槽颇多,但通过合理的配置需求,以及隔离定位、查找、操作的设计思想(具体可参考之前的推文哦),可减小维护工作量。UI自动化测试模拟真实用户操作,仍有其价值。基于浏览器的UI自动化测试,环境搭建是一个繁杂的过程,在此给大家叙述下我的体验,希望可以帮到一部分同行。

另外,当页面功能庞大,测试用例数量成百上千时,常用的单进程执行测试花费时间太长,我们该怎么处理呢?这时候,多进程并发是一个选择。多窗口方式由于难操作,不可取。可以采用多浏览器方式,每个浏览器进程执行无交集的模块测试,相互之间数据不依赖

搭建过程

在centos7.1测试服务器上,python+selenium+chrome环境搭建基础内容包括:

安装图形化桌面

  $ yum groupinstall "GNOME Desktop"

安装vnc服务

安装vnc服务器,修改配置文件,启动vnc并设置开机自启动,以便重启后vnc也一直在线,不给咱掉链子

$ yum install tigervnc-server

$cp/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service

$ cd /etc/systemd/system

$ vim vncserver@:1.service

[Unit]

Description=Remote desktop service (VNC)

After=syslog.target network.target

[Service]

Type=forking

User=autotestuser

ExecStart=/usr/bin/vncserver :1 -geometry 1280x1024 -depth 16 -securitytypes=none

-fp /usr/share/X11/fonts/misc

ExecStop=/usr/bin/vncserver -kill :1

[Install]

WantedBy=multi-user.target

“-geometry 1280x1024”必须加上,否则页面展示有缺失,无法点击。

$ systemctl enable vncserver@:1.service

$ systemctl start vncserver@:1.service

$ netstat -lntp | grep vnc

本地安装vnc client,如VNC Viewer,连接服务器验证图形化界面正常。

安装稳定版chrome浏览器

安装稳定版chrome浏览器(需提前配置google-chrome的源,否则找不到rpm包)

$ yum install google-chrome-stable

安装Python第三方库管理工具pip

   $ yum install python2-pip

安装selenium 

$ pip install -U selenium

安装chromedriver

https://sites.google.com/a/chromium.org/chromedriver/home 下载chromedriver , 配置在PATH路径或者在脚本中指定路径。这里需要注意chromedriver与google-chrome版本一致性,过高版本的chromedriver不支持太低版本的chrome浏览器。

以上都是基础环境搭建,在自动化测试开发中,我们可以根据用例需要部署相应的环境,如Paramiko,requests等。

在开发奇云UI自动化测试时,由于产品布局问题,全部用例执行一遍时间太长,引入了并发测试方法。由于selenium工具依赖于webdriver,import时单独置于模块文件中。使每个进程独立调用webdriver,每个进程单独控制一个浏览器进程,隔离后续页面操作。

如何多进程执行测试?多进程执行任务是一种常用的方法,这里安利下python中非常好用的多进程包multiprocessing,开发者只需要定义一个函数,借助这个包,可以轻松完成并发执行。下图中pool.map中的第一个参数即为开发人员自定义的函数,函数内启动单个浏览器执行一个用例集测试,第二个参数即定义为用例集名称列表。

最后来看下360奇云项目中UI自动化并发执行的效果图吧,同时三个浏览器执行不同模块的测试,大大缩减了回归测试时长。

界世的你当不

只作你的肩膀

 360官方技术公众号 

技术干货|一手资讯|精彩活动

空·