Saas后台UI自动化测试方案
一、背景
- saas后台功能繁多,人工回归工作量大;
- 版本持续迭代周期快,无足够的人力资源进行全量回归测试,特别是后端架构变动时,影响范围很广,导致测试占用时间太多。
二、目标
目标一:对冒烟测试、主功能回归测试进行自动化,这样可以持续,快速的分析新需求加入,版本质量是否有影响,避免回归不到位引起之前功能的问题。
目标二:在版本快速迭代的过程中,自动化测试的目的并不是在于发现更多的bug,而是为了产品质量的保证,充当版本质量的守门神,不是为了发现更多bug,而是为了保证版本没有问题,其实更多的bug还是需要手工测试去发现的。
三、框架介绍
(一)框架技术
- 语言:python
- 模块:selenium(驱动浏览器)、pytest(驱动测试用例)、allure(生成测试报告)、yaml(测试数据管理)
(二)框架结构
Conf - setting 配置文件
Data - case 测试用例存放目录
Data - locs 定位元素存放目录
Logs 运行日志存放目录
Picture 截图存放目录
Report 测试报告存放目录
Test 测试用例执行目录
Utils 通用工具存放目录
Start 启动文件
(三)框架优势
i. 代码量少:通用的工具已经封装好,测试用例的模板可以复制,只需要编写定位元素和测试用例数据
ii. 运行有截图:运行过程、运行失败和断言成功与否都有截图
iii. 运行有日志:运行过程有日志记录
iv. 报告精美:报告好看
v. 支持DDT数据驱动:一个测试test文件可以支持多个测试用例执行
vi. 多浏览器兼容:可以测试谷歌和火狐浏览器
vii. 可以无头模式执行:无界面运行浏览器执行UI自动化测试(运行速度比打开浏览器界面话运行快)
viii. 支持测试报告发送邮件
ix. 支持测试报告发送飞书
(四)测试报告
总览有历史执行记录,每个场景具体的执行明细
四、多人协作
规范
a. 代码管理:gitlab
b. 包名命名规则:帕斯卡命名(每个单词首字母大写)
c. 类名命名规则:帕斯卡命名(每个单词首字母大写)
d. 方法名命名规则:单词间用下划线
e. 定位元素管理:存放data-locs文件夹,每个模块单独一个文件管理
f. 测试用例数据管理:存放在data-case目录中,每个模块单独一个文件
g. 测试用例执行管理:每个测试执行用例存放test文件中,包名命名test_开头,类名以Test_,方法名以test_*开头
相关地址
Gitlab 地址
https://gitlab.nihao.tech/nihao/QA/nihaoui.git
Jenkins 地址
http://127.0.0.1:8080/jenkins/
账号:admin
密码:admin
五、环境搭建
windows环境
安装python
下载安装相关模块
Shell
pip install selenium
Shell
pip install pyyaml
Shell
pip install allure-pytest
Shell
pip install pytest
下载allure包解压后放在python中Lib目录下
bin路径配置到系统变量path中
浏览器驱动
需要对应直接的Chrome版本,下载对应的Chromedriver
Chrome的版本就在 设置->关于Chrome这边查看
通过网址http://chromedriver.storage.googleapis.com/index.html下载驱动,比如我的浏览器是99
下载任意三个进行测试,可以正常操作即可,版本尾号比目录中的大,先试最新的
下载之后就需要将Chromedriver.exe放到谷歌浏览器目录
(如 C:\Program Files(x86)\Google\Chrome\Application)
以及python根目录(C:\Python3)(这个是因人而异的)
最后就是将谷歌浏览器环境变量添加到PATH中(如果你的谷歌目录是这个的话,就放这个C:\Program Files(x86)\Google\Chrome\Application)
注意环境变量是用户环境变量:
如果是用户变量无法启动浏览器,可以放在系统变量中
mac环境
安装相关模块
Shell
pip install selenium
Shell
pip install pyyaml
Shell
pip install allure-pytest
Shell
pip install pytest
Shell
pip install allure
浏览器驱动
需要对应直接的Chrome版本,下载对应的Chromedriver
Chrome的版本就在 设置->关于Chrome这边查看
通过网址http://chromedriver.storage.googleapis.com/index.html下载驱动,比如我的浏览器是99
下载任意三个进行测试,可以正常操作即可,版本尾号比目录中的大,先试最新的。
然后将下载好的chromedriver 移动到/usr/local/bin目录下
打开终端执行命令:
前提:先切到你下载的chromedriver存放的目录下在执行如下命令。
Shell
sudo mv chromedriver /usr/local/bin
将chromedriver添加到环境变量中
打开:open .bash_profile
Shell
export PATH=$PATH:/usr/local/bin/chromedriver
source .bash_profile
linux环境
前提:
python3.x已安装
相关依赖已安装
1、需要安装 Chrome 浏览器
Shell
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
2、安装必要库
Shell
yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts
3、安装驱动
(1)查看版本号
CSS
google-chrome --version
(2)去淘宝源找寻对应的文件
http://npm.taobao.org/mirrors/chromedriver/
或者
https://registry.npmmirror.com/binary.html?path=chromedriver/
或
http://chromedriver.storage.googleapis.com/index.html
(3)找到后,下载
Shell
wget http://npm.taobao.org/mirrors/chromedriver/90.0.4430.24/chromedriver_linux64.zip
(4)解压,赋权
Shell
unzip chromedriver_linux64.zip
mv chromedriver /usr/bin/ chome安装目录
cd /usr/bin
chmod +x /usr/bin/chromedriver
查看chromedriver版本号
Shell
chromedriver --version
六、持续集成
持续集成环境调研
a. linux集成jenkins
b. docker集成jenkins 构建镜像运行
c. windows集成jenkins
由于linux环境好狡猾,环境要求比较苛刻,兼容性不是太好,比如dp后台的输入框,linxu运行的时候,手机号没有输入成功,windows系统没有问题。查阅相关资料说明缺乏,不过有人说是环境搭建有问题,比如浏览器版本,浏览器驱动版本或者selenium版本问题....总之就是环境没有搭建好。在windows中比较容易解决,很快可以把环境搭建起来,且可以快速把本地调试好的测试代码应用在集成环境测试,不用在linux出问题在排查问题,节约时间
建议在windows系统中进行持续集成测试
集成部署步骤
前提条件:
1,Jenkins已经安装
2,已经安装python3.X版本,我目前安装的是python3.7
3,自动化测试脚本已编写完成
Jenkins集成与Allure测试报告
jenkins平台安装Allure插件
系统管理--插件管理:安装插件allure
安装 Parameterized Trigger
系统管理--插件管理:Parameterized Trigger
配置Allure Commandline
系统管理--全局工具配置:Allure Commandline
构建一个项目
新建自由风项目
配置 General
使用自定义工作空间
☑️ Use alternative credential
Credential : Gitlab API token
源码管理
本项目采用gitlab
构建任务
Shell
!/bin/bash
cd /root/.jenkins/workspace/ui_auto_digiprime_saas
python3 -m pytest -sq --alluredir=allure-results
python3 feishu.py $JOB_URL $JOB_NAME
exit 0
构建后操作构建allure报告
构建结果验证