一文让你了解UI自动化测试

2024-01-24

测试都起什么作用 - 是项目的保险,但不是项目的救命草;测试无实际产出,但作用远大于实际产出;测试是从项目维度保证质量,而不是测试阶段。

UI自动化 (下面简称自动化) - 基于UI进行自动功能测试,以Web端作为例子,一般的UI功能自动化都是基于HTML的Dom内容进行操作,一般都是使用webdriver + JavaScript的方式进行,目前最流行的一套基础框架就是Python + Selenium。

什么时候进行脚本开发 - 很多测试人员或者项目负责人都认为, 自动化测试 一般都在项目稳定之后才使用脚本对项目进行稳定性测试或者一些回归测试中,但随着项目组织架构的完善和目前大环境太卷(?)了,其实每个迭代的新需求都可以直接使用自动化测试来进行,前提是需要:

1. 开发人员需要尽早提供完善的Dom结构内容

2.测试组全部人员都需要具备脚本开发能力。

自动化脚本只有20%的作用,最重要的是测试案例的选取,一切的测试依据都来自于测试案例,记住自动化的用处,是用来找快速找缺陷的。

目前项目组的所负责的系统需求较多,测试案例数量也较多,测试场景复杂,测试数据制作复杂,并且有部分系统已经趋于成熟,所以打算开始进行UI自动化测试。

UI自动化测试其实是一门【水】很深的工作,因为UI自动化测试是需要根据前端页面元素,也就是HTML脚本来进行元素提取、操作、验证的测试流程,另外再加上项目的测试环境软件硬件的因素,在编写自动化测试脚本的时候需要考虑到很多的情况出现而要去判断当前页面出现的元素到底是什么情况,不然脚本的稳定性很不好,维护工作也会非常的高。另外在编写自动化脚本的时候,你会慢慢的熟悉你项目系统前端页面的代码,当下很多前端开发人员在制作新的项目前端页面时都会直接用现成的组件生成,这种HTML代码会使你开发脚本时难上加难,因为里面的标签命名根本就是乱来的(可以说是看得出一个前端开发人员的水平?)

目前项目组中所负责的需求分为两种:手机端(Native+H5),PC Web端。

因为我们是属于App的一个渠道方,Native方面并不是我们组内人员开发的(其实主要大公司在代码方面管得很严无法拿到Native的iOS和Andriod的代码所以这个需要和他们管沟通,不然无法做App的UI自动化),我们的前端开发主要做的是里面的H5页面,并且手机端的需求现在还经常有变化,所以手机端的UI自动化还不纳入UI自动化的执行范围,我们主要做的是PC Web端的UI自动化。

这篇文章(其实可以说是笔记)主要来讲一下我在做这个项目的UI自动化测试的过程以及心得。

文章主要讲的是:介绍UI自动化、组内UI自动化的架构、测试脚本的编写规范/心得

  • 什么是UI自动化测试
  1. UI自动化测试,指的就是使用工具或者脚本对需要测试的软件的前端界面在预设的条件下和已经的测试数据下运行系统或者应用程序,并获取其前端页面显示的数据结果进行校验,评估得出测试结论。
  • UI自动化测试可用于哪里
  1. 基于测试渠道可分为:手机App、Pc web端、手机Web端等;
  2. 基于测试阶段可分为:冒烟测试、回归测试、生产验收、兼容性测试
  • 为什么要使用UI自动化测试
  1. 目前测试案例数量过多导致人工执行测试案例耗时过长,并且会出现无法执行完该执行的测试案例导致版本无法按预期上线;
  2. 案例的步骤繁琐,场景复杂,制作测试数据的过程复杂,导致人工执行时间过长;
  3. 需求简单,无前端功能开发的需求可以使用UI自动化进行测试并得出结论;
  4. 可以帮助开发人员进行自测。
  • 哪些测试可以执行UI自动化
  1. 已经比较成熟的项目,暂无任何大的改动需求的项目;
  2. 人工执行耗时长,流程繁琐的项目;
  3. 单纯的数据校验,列表功能校验;
  • 怎么执行自动化测试
  1. 开发提测前自用,配置环境和工具,下载脚本执行,可通过测试报告查看执行情况和结果;
  2. 冒烟测试中,测试在开发提测后执行,通过测试报告查看执行情况和测试结果;
  3. 回归测试中,测试人员执行执行纳入回归测试的测试脚本并执行
  4. 生产验收,UI自动化测试脚本可用于生产验收中,无须手动操作就可验证生产的情况。
  • 哪些可以做,哪些不能做?

*验功能不要验样式

ui自动化是无法识别你当前页面的图形形状以及颜色这类,就算是兼容性也只能从功能层面来验证,当然除非使用了图形识别组件这类功能的话另说。

  • UI自动化测试的利与弊

利处:快捷、方便、无须手工操作

  1. 对回归测试来讲一般情况下,回归测试里面的案例都很多都是之前的版本需求中的案例,在迭代多了之后回归测试中的案例就会慢慢的增加,到最后就会出现一个在封板之后执行回归测试案例时会执行不完的情况,使用UI自动化测试之后,以前的回归测试案例可以不需人工执行,等脚本执行完之后查看脚本测试报告和截图,成功失败一目了然,然后测试人员可以把注意力放在了当前迭代的需求中。
  2. 对于冒烟测试来讲(无前端改动的需求前提下),开发提测前都需要进行自测,他们可以在电脑上配置好UI自动化测试的环境后,利用工具自己执行进行自测;测试人员也可以利用脚本在开发提测之后使用进行自测。

弊端:脚本编写成本高、案例开发时间长、需要长期维护

  1. 一脚本编写成本高主要是分为要懂代码,对系统熟悉程度高,懂得一些编程的规范;为什么要懂代码?这里说的并不是说要非常厉害的那种,主要说的是最起码要可以阅读html、Js、Python、Java等,因为在对页面元素进行提取的时候你必须要根据Html页面上的代码来写的,这种基础的知识还是需要有的;对系统熟悉程度高是指的是你很熟悉你要写脚本的系统的业务流程很熟悉,包括他正常情况流程怎么走的,出错情况下会是怎么走的,会有什么提示这些你都要知道,因为这些场景都必须在写脚本的时候考虑进去,从而提升你脚本的稳定性,减少维护成本,为什么懂编程的规范其实和上一条差不多,主要是提升脚本稳定性,减少维护成本,后面脚本的编写心得会讲一下这个。
  2. 部分案例开发时间长,主要说的是一些场景比较复杂的流程,和数据制作的过程比较繁琐,需要你不停的调试你自己的脚本。
  3. 长期维护是必须的,因为你的系统的一些需求可能会使其他功能有变化,这个时候你的测试脚本需要考虑到这些场景的时候,你就要去修改你的脚本了,另外还有就是你的数据,有时候系统原因或者你的测试数据是其他关联系统的导致数据失效了,这个时候你必须保证你的数据是有效的,所以必须有个前置步骤来检查你的数据,这个后面如何维护数据会详细再写一下。

项目结构

目前自动化项目处于初期试实行阶段,并没开发得很强大的功能,因为首先要保证可以走得通走得稳,并且每个测试同学都可以用的前提下去开发的,所以采用的是Python 3.6+ Robot Framework Ride + Selenium2Library(PC Web)这一套比较传统的框架,代码由GitLab上管理,其实这一套框架即使是没什么代码基础的测试同学或者还是懂代码的测试同学也好,用起来也是非常的方便的。

有AppiumLibrary,针对手机端做自动化的,但是目前手机端做起来比较困难,暂时不考虑,这里也不先写。

测试脚本编写规范

  • 案例的选择

以下三点不做:

随便点一下就能验证的不做;

一条案例多个验证点的不做;(这种案例本来就有问题,必须把这种案例拆分)

界面图形验证,图片验证,颜色区分不做;(有过要我验证报表图形的,折线图、扇形图这种,其实可以通过验证时截图)

以下两点必做:

前期数据准备步骤复杂流程长;

一个验证点的步骤复杂流程长;

  • 数据的管理
  • 脚本稳定性
总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文让你了解UI自动化测试 的相关文章

  • 软件测试|使用matplotlib绘制多种折线图

    简介 在数据可视化领域 Matplotlib是一款非常强大的Python库 它可以用于绘制各种类型的图表 包括折线图 本文将介绍如何使用Matplotlib创建多种不同类型的折线图 并提供示例代码 创建模版 在绘图之前 我们可以先创建我们的
  • 软件测试|Python中如何提取列表中索引为奇数的元素

    简介 在Python中 我们经常需要从列表中提取特定位置的元素 如果我们想要提取列表中索引为奇数的元素 可以使用一些简单的方法来实现这一目标 本文将介绍如何在Python中提取列表中索引为奇数的元素 并提供示例代码来帮助大家更好地理解这个过
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|Selenium StaleElementReferenceException 异常分析与解决

    简介 Selenium 是一个流行的自动化测试工具 用于模拟用户与网页交互 然而 当我们在使用 Selenium 时 可能会遇到一个常见的异常 即 StaleElementReferenceException 这个异常通常在我们尝试与网页上
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 一篇文章带你了解Python常用自动化测试框架——Pytest

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!

    前言 作为一名测试工程师 工作中在对测试结果进行数据比对的时候 或多或少要和数据库打交道的 要和数据库打交道 那么一些常用的sql查询语法必须要掌握 最近有部分做测试小伙伴表示sql查询不太会 问我有没有sql查询语法这一块的文档可以学习
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到9月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • Web自动化测试 —— capability参数配置

    一 capability概述 capability是webdriver支持的标准命令之外的扩展命令 配置信息 配置web驱动属性 如浏览器名称 浏览器平台 结合selenium gird完成分布式 兼容性测试 官网地址 https www
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • 一文从0到1手把手教学UI自动化测试之数据驱动!

    在UI的自动化测试中 我们需要把测试使用到的数据分离到文件中 如果单纯的写在我们的测试模块里面 不是一个好的设计 所以不管是什么类型的自动化测试 都是需要把数据分离出来的 当然分离到具体的文件里面 文件的形式其实有很多的 这里主要说明JSO
  • Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候 当时 看了一下官方的文档 大概是类似Sikuli的一个工具 主要用来做游戏自动化的 通过截图的方式用来解决游戏自动化测试的难题 最近 移动端测试的同事尝试用它的poco库来做自动化 看样子还不错
  • 软件测试面试:还没有自动化测试项目经验,3个项目帮你走入软测职场!

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自

随机推荐

  • Phonegap垂直滚动

    我正在为 ios 构建一个phonegap 应用程序 并且遇到垂直滚动问题 即使没有任何内容 网络视图中似乎也会有一些像素滚动 这会影响我在 html 中内置的绝对定位的导航栏和选项卡栏 这是我的 html 页面 没有内容 但我仍然得到图像
  • Promise 重试,直到使用 Typescript 成功/失败

    我的移动应用程序会连续将多个文件上传到服务器 这些文件通常来自连接强度有问题的偏远地区 为此 我想尝试几次发送文件 我还想在失败时继续尝试下一个 导出结束时显示所有错误消息 即 已上传 10 个文件 3 个失败 但是 我无法弄清楚带有承诺的
  • 两行Xerces程序中的异常

    下面的代码给了我一个例外XMLFormatTarget行 但如果我更改字符串 C test xml to test xml 效果很好 test cpp Defines the entry point for the console appl
  • 将引号之间的逗号替换为空格

    您好 我的表中每一行都有如下数据 0150566115 HEALTH 401K IC ON ICON HEALTH 401K 1 08 21 2014 我想要的是删除双引号 之间的每个逗号 然后用逗号 分割字符串的其余部分 我不想检查双引号
  • std::sort 与本地类型比较

    下面的例子 file mysort cc include
  • Python 抓取 JSON 并将其转换为 CSV

    我对 python 很陌生 这可能是一个可怕的问题 但事情是这样的 我正在尝试从特定网站抓取数据并将该数据转换为 CSV 我已经设法获得一个可用的 scraper 并将文件保存在我的计算机上 然而 当我尝试再次将 JSON 加载到 pyth
  • swift:以编程方式创建 UILabel 固定宽度,根据文本长度垂直调整大小

    我见过涉及自动布局的垂直调整大小的答案 但是UILabel我正在创建的仅在运行时需要 我可能需要从零到多个这样的标签 示例 忽略颜色 短文本 注意与长文本宽度相同 较长的文本 注意与较短的文本示例宽度相同 并具有更多行用于添加文本 如果文本
  • Firebase - 当 Websocket 被公司代理/防火墙阻止时,是否有一个标志可以强制进行长轮询?

    我正在开发一个简单的企业 AngularJS 应用程序 并计划使用 Firebase 作为后端 我必须支持的浏览器是IE8和Chrome 最新 我已经成功修复了前端中所有与 IE 相关的问题 并且可以成功从我的 Firebase 检索数据
  • Eclipse:垂直排列函数参数

    我在 Windows 7 专业版上运行 Eclipse 3 7 2 如果我输入这样的方法声明 private void processCode String codename boolean doSomethingElse int num
  • 使用 Swift 将数据发布到服务器

    很快我几天来就一直面临这个问题 我不知道我在这里开始的错误是我的 viewcontroller swift import UIKit import Foundation var otp 0 class ViewController UIVi
  • JVM实现接口和纯抽象类的区别?

    我和我的朋友想知道 JVM 内部的接口和纯抽象类之间是否真的存在区别 或者它是否只是真正的语法糖 我真的不明白为什么会有差异 但它可能并不那么牵强 就字节码而言 classfile 而言 它们是完全不同的 From 4 1 类文件结构 ht
  • 需要示例 Java 代码来运行 shell 脚本 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试了许多不同的例子 但它不起作用 我真的很感激一些运行 shell 脚本的示例 Java 代码 您需要 Runtime getRunt
  • 重命名 BitBucket 上配置的 git 项目的最简单方法

    我有一个托管在 BitBucket 上的项目 我可以重命名它吗 如果没有 并且我需要创建一个新的存储库 有人可以告诉我最简单的方法吗 并在 BitBucket 上创建新的存储库 令我困惑的一个具体原因是是在本地还是从 bitbucket 网
  • Oracle:设置查询超时

    我有一个 PL SQL 程序 它通过透明网关对 AS400 数据库进行查询 有时AS400不响应查询 可能是网络问题 并且PL SQL程序挂起 有没有什么方法可以为 Oracle 查询设置超时 以便在经过一定时间后出现异常 您是否尝试过设置
  • 如何创建 Java cron 作业 [重复]

    这个问题在这里已经有答案了 我正在编写一个独立的批处理 Java 应用程序来从 YouTube 读取数据 我想设置一个 cron 作业每小时执行某项工作 我搜索并找到了为基本操作执行 cron 作业的方法 但不适用于 Java 应用程序 您
  • 从自定义视图检索继承的属性

    我已经定义了一个父级styleable对于一些自定义视图如下
  • 如何在 F# 中创建作为值类型的 Union 类型?

    普通 F 可区分联合是引用类型 我怎样才能创建一个simple 非递归且仅包含值类型字段 F 中的联合类型是值类型吗 根据一些互联网搜索 我当前 无效 的尝试如下所示
  • 如何在 C# 中获取驱动程序的日期和版本?

    这是我的代码 我可以获取名称 描述 ManagementClass MgmtClass new ManagementClass Win32 SystemDriver foreach ManagementObject mo in MgmtCl
  • C++中的引用

    一 引用的概念 引用不是新定义一个变量 而是给已有变量取一个别名 编译器不会为引用变量开辟内存空间 而和它引用的变量共用一块内存空间 注意 由于C 兼容C 所以 既可以是引用符号 也可以是取地址 int a 0 int b a cout l
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM