ui自动化分享

一、主要内容

  1. 常用的自动化测试技术
  2. 常见的UI自动化框架及对比
  3. UI自动化实现分层构思及实现
  4. 测试用例编写方式

二、常用的自动化测试技术

自动化测试和敏捷软件开发常常是成对出现,但敏捷中的自动化往往说起来容易做起来难。大多数开发人员都已经认识到测试自动化的好处:它加快了测试速度、降低了成本、增加了覆盖率等。

随着系统功能,以及系统模块的不断迭代更新,没有足够的自动化测试,我们无法应对越来越多的功能和越来越大的回归测试范围,即使是对应的开发也无法精准地评估出本次修改可能影响的范围,甚至可能因为疏忽导致出现影响主流程的严重问题。

因此对于自动化来说,其最重要的目的是避免错误,而我们的日常工作重点是主动发现错误,两者是一个相辅相成的关系,自动化可以帮助我们完成很多枯燥的回归工作,从一次又一次的重复流程中解放,让我们有更多的精力投入其他环节,进行更多的探索性测试以及测试左移,提高测试覆盖度,从更深层次确保软件的质量。

而自动化的投入产出是另一大重点,业界以往主要遵从 Mike Cohn 推广的方法,即敏捷测试自动化金字塔,运用它可以给自动化成本带来最大收益,提高自动化的投资回报率,确保从自动化中获得最大收益。
在这里插入图片描述

但是近年来,随着自动化在各行业公司的不断推行与实践,传统的金字塔模型也得到了一定的优化,成了菱形金字塔。在自动化实施的过程中,由于各方面因素影响,单元测试更多得交给开发同学进行覆盖,因此自动化测试金字塔逐渐从三角形转变成了菱形。

api接口层

运行所有单元测试并通过之后,就可以进入 API层测试阶段,由于接口文档需先于系统交付,因此可以提前进行该层的测试准备工作。在api层应尽可能地采用自动化,无需ui即可测试大部分逻辑和业务,流程维护会更容易、测试执行会更快,且比 UI 测试更快、更健壮。

UI 测试

UI 测试一般用于高频功能的回归,因为编写成本以及维护成本高。在这一步,只是要确保用户界面本身正常工作,系统的所有其他方面都已经过测试。
只测试端到端最重要的部分,流程从用户登录开始,以如交易成功消息这样的最终操作结束。关注与浏览器或 UI 相关的事情也很有帮助。运行 UI 测试后,可以将更多精力投入手动和探索性测试。

三、常见的UI自动化框架

UI自动化框架分类
UI自动化框架对比
最后综合优缺点,选取了selenium作为UI自动化的框架。

四、UI自动化实现分层构思及实现

UI 自动化测试领域有一个规范的设计模式是 page object 模式。 意思是测试用例不会直接定位页面元素, 而是把每一个页面封装成一个类。 在这个类中封装页面元素。 然后测试用例调用 page 类来操作页面元素完成测试用例。如下图:

目前实现的框架也是以经典的PO模式进行分层,在page文件夹中封装每个页面的元素以及业务逻辑操作,在case文件夹中调用page层的内容以及方法,执行测试。

除此以外,为提高UI自动化编写效率,还额外支持了Selenium IDE录制生成测试用例执行,能够录制页面操作后生成测试用例,录制完成后仅需调试几次,确保元素定位方式通过后即可生成对应测试用例,以极快的速度完成流程的覆盖。这种模式也有一定的缺点,录制完成后就无法进行PO模式的分层了,后期如页面变动,需要找到对应的内容进行修改,对工具使用的熟练度有一定的要求。

近两年,行业中也根据新的前端框架特性衍生出了新的想法,比如首先根据VUE等组件库的定义对组件进行封装后再进行定位,通过功能分层减少每一层所负责的功能,有修改后可以以较小的成本更新测试用例,将维护成本降低了极多,但是同时也增加了框架的实现难度及用例编写的成本,后续会根据实际使用探索是否有必要做该件事。

五、pytest+selenium ui自动化框架简介

ui-auto

项目介绍(目前仅供内部使用)

web-ui自动化框架的测试项目, 使用的技术框架:Selenium,Pytest等,主要包括的功能有日志管理, 配置文件管理, 测试用例的数据和用例分离, 自动化测试, 测试报告Allure自动化报告等。

目前支持两种用例编写模式:selenium IDE录制生成用例、页面-用例分层模式编写用例。

软件架构
软件名称软件版本备注说明
Python3.8.10不低于3.6.0
Selenium4.1.0https://www.selenium.dev/zh-cn/
loguru0.5.3python日志框架
openpyxl3.0.9excel数据表格读取
PyYAML6.0读取yaml配置文件
pytest6.2.5执行python测试用例
pytest-rerunfailures10.2重试执行测试用例
allure-pytest2.9.45生成html测试报告
其他默认执行pip install -r requirements.txt
模块说明
功能模块说明
allure-report生成可视化html测试报告
base基础组件层 selenium框架原生的api的一个通用的封装
common通用组件封装 包括读取yaml配置文件, 读取excel测试用例数据,以及各种断言的实现
config基础配置层 包括项目路径的配置 业务数据的配置yaml文件,以及项目环境配置
case测试用例层 编写的测试用例, 本项目使用的是pytest测试用例
data测试数据, 存放的是excel格式的测试用例数据,支持数据驱动
database存放对照图片
log存储所有log文件
page页面层 封装每个页面的元素及业务逻辑操作
run.pypytest的启动执行文件 存放在项目的根目录
pytest.inipytest的配置文件
errorScreenshots项目错误的截图文件保存路径
安装教程
  1. 执行pip install -r requirements.txt
  2. 下载allure,并将allure文件夹设置环境变量
技术要点
  1. selenium web自动化
  2. pytest 测试框架
  3. 日志管理框架loguru
  4. PyYAML yaml配置文件的使用和解析
  5. openpyxl excel数据文件的读取
  6. 装饰器设计模式的使用
  7. allure测试报告
  8. parameter参数化测试用例数据管理,rerunfailures自动重试机制
  9. cv2图像对比

六、安装教程

  1. 安装pycharm(可选,用户体验好)

  2. 配置git ssh,并拉取代码:

  3. 生成SSHkey:打开git bash
    创建.ssh文件夹,进入.ssh文件夹后,运行ssh-keygen -t rsa -C
    YOUR_EMAIL@YOUREMAIL.COM 命令,其中-C后面是你注册gitlab时所使用的邮箱名,生成key
    配置SSHKey:打开 http://ci.xiaopeng.local:1081/,右上角账户名→ Settings→ 左侧菜单SSH
    Public Keys→Add Key,复制上一步生成的public
    key(即复制文件/c/Users/Xpeng/.ssh/id_rsa.pub中的内容)到弹出的文本框中,保存即可
    配置提交代码的用户名邮箱,打开git bash,执行如下命令: git config --global user.name
    “输入你的gitlab用户名” git config --global user.email “输入你的小鹏邮箱” git clone
    ssh://git@gitlab.xiaopeng.local:10022/hdmaptest/uiauto.git

  4. 安装Python3.8.10(可选,大于3.6.0版本)

  5. 执行pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

  6. 解压allure,将allure文件夹设置环境变量

  7. 完成测试用例编写后,运行run.py

七、用例编写

7.1 selenium IDE录制

  1. 首先安装chrome插件

  2. chrome打开开发者模式,安装插件并打开

  3. 创建或打开已存在的项目(建议每次录制完成后将ide文件和测试用例保存在一起,方便后期重录)
    界面
    selenium ide

  4. 录制完成后点击执行case,如有失败的则根据Log调整对应元素定位方式,可通过F12打开开发者工具,点击左上角小箭头后点击元素,复制对应xpath,在target中输入 xpath=复制内容 进行定位。如果不确定定位是否能成功,可使用F12打开控制台,输入
    $x(‘你的元素的xpath’)

    $$(‘你的元素的selector’)
    查看能否找到元素

  5. 调试通过后,切换至测试用例界面,点击对应测试用例右侧三个点,选择export导出pytest格式用例。
    将用例放入对应case文件夹,修改第一个红框内容,新增第二和第三个红框的内容(相当于用了框架的conftest中提供的webdriver),右键名称即可单条执行该case调试。

7.2 PO模式分层编写

首先在page文件夹中新建对应项目文件夹,在项目文件夹下新建每一个页面的py文件。

封装该页面的所有关键元素,可用 road_button,或是直接使用中文作为变量名称,只要后续使用中能够清晰地知道该元素的使用方式即可!
封装业务逻辑函数以及校验结果函数,可以根据使用粒度进行划分,如果觉得该步骤会被多次使用,一定要将其封装为一个单独的函数,在case层即可多次调用。
在case文件中新建对应项目文件夹,在项目文件夹下新建case,一个页面的case可以建在一个Py文件中,用例中除了一些不通用的步骤外,其他应尽量饮用page层的内容完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值