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

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

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,针对手机端做自动化的,但是目前手机端做起来比较困难,暂时不考虑,这里也不先写。

测试脚本编写规范

  • 案例的选择

以下三点不做:

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

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

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

以下两点必做:

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

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

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

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

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

软件测试面试文档

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ STL之stack的使用及模拟实现

文章目录 1. 介绍2. stack的使用3. 栈的模拟实现 1. 介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现的,容器适配器即是对特定类封装作…

(M)unity2D敌人的创建、人物属性设置,遇敌掉血

敌人的创建 1.敌人添加与组件设置 1)添加敌人后,刚体添加,碰撞体添加(一个碰撞体使猪在地上走,不接触人,另一个碰撞体组件使人和猪碰在一起产生伤害) ①刚体 ②碰撞体一 设置的只在脚下&a…

springboot整合MongoDB实战

目录 环境准备 引入依赖 配置yml 注入mongoTemplate 集合操作 文档操作 创建实体 添加文档 查询文档 更新文档 删除文档 环境准备 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-da…

优先级队列(堆)详解

优先级队列&#xff08;堆&#xff09;详解 目录 堆的概念堆的存储方式堆的基本操作优先级队列模拟实现PriorityQueue接口介绍堆排序Top-k问题 1、堆的概念 如果有一个关键码的集合K {k0&#xff0c;k1&#xff0c; k2&#xff0c;…&#xff0c;kn-1}&#xff0c;把它的所…

SAP 五个报废率设置简介(上)

通常在生产制造过程中都会面临报废率的问题,生产工艺路线的问题,原材料质量的问题,总会有一些产品在生产过程中被做成报废品,通常报废率的设置有时候会遵循行业的标准设置,亦或者根据工厂生产中统计的历史数据分析后根据不同的产品设置不同的报废率,从而在执行物料的采购…

VM下Unbunt虚拟机上网设置

系列文章目录 VM下虚拟机上网设置 VM下虚拟机上网设置 右击VM软件中你需要设置的虚拟机&#xff0c;选择设置 宿主机如果你用的是笔记本外加WIFI连接选择NAT网络模式 进入虚拟机看能否上网 不行的话&#xff0c;进入虚拟机点击&#xff0c;选择最后一栏&#xff0c;编辑连接 点…

华为认证的HCIP考实验考试么?

HCIP在考试的时候不考实验&#xff0c;只考笔试&#xff0c;只是不同方向的HCIP认证考试的考试科目不同&#xff0c;有的考一科&#xff0c;有的考二科&#xff0c;有的考三科&#xff0c;具体看方向来定。HCIA和HCIP只考笔试。HCIE考笔试和实验。 虽然HCIP不考实操&#xff0…

《WebKit 技术内幕》学习之七(1): 渲染基础

《WebKit 技术内幕》之七&#xff08;1&#xff09;&#xff1a; 渲染基础 WebKit的布局计算使用 RenderObject 树并保存计算结果到 RenderObject 树。 RenderObject 树同其他树&#xff08;如 RenderLayer 树等&#xff09;&#xff0c;构成了 WebKit 渲染的为要基础设施。 1…

【数据结构】链表(单链表与双链表实现+原理+源码)

博主介绍&#xff1a;✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦&#xff01; &#x1f345;附上相关C语言版源码讲解&#x1f345; &#x1f44…

python04-变量命名规则

python需要使用标识符来给变量命名。 标识符&#xff0c;我来解释下&#xff0c;就是给程序中变量、类、方法命名的符号&#xff0c;简单理解就是起一个名字&#xff0c;这个名字必须是合法的名字&#xff0c; 对于Python来说&#xff0c;标识符必须是以字母、下划线(_)开头&…

鸿蒙自定义刷新组件使用

前言 DevEco Studio版本&#xff1a;4.0.0.600 1、RefreshLibrary_HarmonyOS.har&#xff0c;用于HarmonyOS "minAPIVersion": 9, "targetAPIVersion": 9, "apiReleaseType": "Release", "compileSdkVersion": "3.…

用户画像系列——在线服务调优实践

前面文章讲到画像的应用的几个方面&#xff0c;其中画像的在线服务应用主要是在推荐场景、策略引擎场景&#xff0c;这两部分场景都是面向线上的c端服务。 推荐场景&#xff1a;根据不同的用户推荐不同的内容&#xff0c;做到个性化推荐&#xff0c;需要读取画像的一些偏好数据…

【方法】如何把Excel“只读方式”变成可直接编辑?

Excel在“只读方式”下&#xff0c;编辑后是无法直接保存原文件的&#xff0c;那如何可以直接编辑原文件呢&#xff1f;下面来一起看看看吧。 如果Excel设置的是无密码的“只读方式”&#xff0c;那在打开Excel后&#xff0c;会出现对话框&#xff0c;提示“是否以只读方式打开…

什么是甘特图?谁还不知道?做管理的来看看!

在现代商业社会&#xff0c;项目管理已成为不可或缺的技能。而甘特图作为一种强大的项目管理工具&#xff0c;正逐渐受到越来越多人的青睐。那么&#xff0c;什么是甘特图&#xff1f;又有什么工具可以绘制甘特图呢&#xff1f;本文将为你一一解答。 一、甘特图的定义 甘特图…

Unity - 简单音频视频

“Test_04” 音频 使用AudioTest脚本控制Audio Source组件&#xff0c;在脚本中声明"music"和"se"之后&#xff0c;在unity中需要将音频资源拖拽到对应位置。 AudioTest public class AudioTest : MonoBehaviour {// 声明音频// AudioClippublic AudioC…

Vulnhub-dc4

靶场下载 https://download.vulnhub.com/dc/DC-4.zip 信息收集 判断目标靶机的存活地址: # nmap -sT --min-rate 10000 -p- 192.168.1.91 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-21 16:36 CST Stats: 0:00:03 elapsed; 0 hosts completed (1 up…

三、MySQL之创建和管理表

一、基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只 能是一团乱麻,无从下手。 在 MySQL 中, 一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。 …

在字节5年被优化,太难了。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 先简单说下&#xff0c;涵哥是某不知名 985 的本硕&#xff0c;17 年毕业加入字节&#xff0c;以…

自学网安-DNS

01DNS Domain Name Service域名服务 作用&#xff1a;为客户机提供域名解析服务器 02域名组成 2.1域名组成概述 如"www.sina.com.cn"是一个域名&#xff0c;从严格意义上讲&#xff0c;"sina.com.cn"才被称为域名(全球唯一)&#xff0c;而"www"…

layui 自定义日期选择器今日、昨日 、本周、本月、上个月等

1、layui 日期选择器 laydate日期选择器 <div class"layui-input-inline"><input class"layui-input" id"dateTime" placeholder"日期范围"> </div><script> layui.use([laydate], function () {laydate.ren…