UI自动化测试方案及各个环境部署步骤

news/2024/10/21 15:50:34

Saas后台UI自动化测试方案
一、背景

  1. saas后台功能繁多,人工回归工作量大;
  2. 版本持续迭代周期快,无足够的人力资源进行全量回归测试,特别是后端架构变动时,影响范围很广,导致测试占用时间太多。

二、目标

目标一:对冒烟测试、主功能回归测试进行自动化,这样可以持续,快速的分析新需求加入,版本质量是否有影响,避免回归不到位引起之前功能的问题。
目标二:在版本快速迭代的过程中,自动化测试的目的并不是在于发现更多的bug,而是为了产品质量的保证,充当版本质量的守门神,不是为了发现更多bug,而是为了保证版本没有问题,其实更多的bug还是需要手工测试去发现的。

三、框架介绍
(一)框架技术

  1. 语言:python
  2. 模块: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报告

构建结果验证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74212.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

织梦数据库在哪个文件夹

织梦CMS数据库连接文件的内容及其参数说明:<?php // 数据库连接信息 $cfg_dbhost = localhost; // 数据库主机地址 $cfg_dbname = dedecmsv56gbk; // 数据库名称 $cfg_dbuser = root; // 数据库用户名 $cfg_dbpwd = 123456; // 数据库密…

020 计算属性简写

注意,只有当计算属性只需读取而不需修改,即没有setter时才能用简写

重磅 | 乐维CMDB V7.0正式发布

在企业数字化转型过程中,IT基础设施的管理和优化变得尤为重要。CMDB(配置管理数据库)作为当代IT运维管理的一大利器,能够实现企业IT资产的可视化、智能化管理,有效提高IT服务的效率和质量,获得越来越多企业的认可与应用。然而,CMDB的建设过程却充满了挑战,失败率居高不…

IIC通讯协议笔记

iic通讯协议片上外设iic主发送器主发送器通讯过程 发送开始位后等待EVT5,发送从机(slave)地址等待EVT6和发送要写入从机的寄存器等待EVT8,发送数据等待EVT8_2片上外设主接收器发送过程接收过程

【C#】【DevExpress】自定义单元格右键菜单,去除单元格编辑时,载入系统的默认菜单

使用GridView,自定义单元格的右击菜单,可以通过监听事件PopupMenuShowing,实现新增菜单。1 private void gridView1_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)2 {3 GridView view = sender as GridView;4 if (v…

2024年游戏买量应该怎么玩?

App中运行小游戏的技术价值和业务价值都是显著的:通过小程序容器技术,承载多样化的小游戏运行在自有App内,实现跨平台的游戏资源共享,降低买量成本,此为「降本」。进一步的,在App内快速引入多小游戏应用,为用户提供多样化的内容,以提升App内用户体验和留存率,增强用户…

JAVA基础之十-不常用但是又希望能看懂的关键字/保留字

对于绝大部分JAVA工程师而言,大部分的关键字也是能够看懂的,但还是相当一部分比较不常见的关键字,妨碍了代码阅读。 本文力图收集一些个人认为在CRUD机械工作中可能比较少见的一些关键字/保留字。 此类关键字主要用于修饰方法和类。 收集过程会持续一段时间,现在暂时没有时间…

django admin 后台中添加自定义的 html 页面

实现效果配置 简历模板html 文件{% extends "admin/base_site.html" %}{% block content %} <h1>自定义 HTML 页面</h1> <p>{{ your_variable }}</p> {% endblock %}admin 中添加代码, 主要是 get_urls 以及 对应的的视图from django.urls i…