自动化测试的十大雷区【刚入门必看】
虽然从自己的错误中学习也不错,但从别人的错误中学习总是更好的。
作为一个自动化测试人员,分享常见的容易犯的10个错误,可以从中吸取教训,引以为鉴。
一、必要时才自动化
新人小王接到为Web应用程序自动化测试脚本的任务时,既高兴又紧张,因为这是他进入团队的第一个任务。第一印象至关重要,他也希望给团队留下完美的第一印象。小王被要求自动化Web应用程序其中的一个模块,但他想表现得更好、做更多的自动化,于是选择了另外的模块。然而结果是他撞进了死胡同,没有完成。其实小王想做些新尝试并没有错,错在没有咨询前辈就试图自动化该模块。事实证明,这个模块用不着自动化,因为集成的系统可能会导致多重误报。
我在新的自动化测试人员身上看到过很多次这种情况。毕竟,好奇心可以引领前进。当学习自动化测试时,会想尝试在每个项目中引入自动化,但这是不必要的。可能有足够的能力自动化某件事,但这件事是否足够可行?虽然众所周知自动化可以节省时间和精力,但回答以下问题非常重要:“为什么要将此项目自动化?”得到了确切务实的答案后,再为自动化开绿灯。
二、定义范围
定义将要执行的测试的范围是非常必要的。作为新手自动化测试人员时,总是试图测试所有的东西,并使每个测试都自动化。问题是尽管可以成功地自动化所有测试,但这既不实用也不可行。
首先,代码中有很多部分并不需要频繁的测试,但可能需要占用大量时间为其开发框架或脚本。比如当测试一个网站时,自动化网站的每个元素并在其上运行脚本是没有用的,这不值得花时间和精力。
其次,自动化所有的东西会增加测试自动化百分比,这会提供书面上很好的数据,让自己觉得完成了一项出色的工作,然而实际上并非如此。
定义测试的范围,只考虑能够及时提供实际价值的自动化测试的可行代码,做出明智选择。
三、准确选择自动化测试工具
自动化测试人员最常见的另一个错误是没有选择正确的自动化测试工具。一个项目包含许多专注于不同测试目标的组件。这些目标应分为不同的工具,以帮助更有效地实现这一目标。
例如,如果想测试一个网站的API,最好使用Postman;但如果你想确保Web应用程序在不同浏览器间的完美呈现,那么在线Selenium Grid将是自动化跨浏览器测试的最佳选择。
四、与其他测试人员良好协调
测试团队中有很多人,大家具备不同的技能。例如,有人可能擅长业务测试,而其他人可能擅长功能测试。然而,这不是不与他们讨论任务进展的理由。协调是加速产品交付的关键。了解谁在做什么、使用什么工具、对测试自动化的编程语言是否满意。
这有助于帮助排除自动化测试脚本的故障,万一事情不顺利,就会知道该寻求谁的帮助,了解团队也可以帮助自己在需要的时候进行协调。正如在最后一点中所讨论的,一个项目可能需要不同的工具来实现组合的目标,可以让擅长不同工具的测试人员发挥自己的作用。
五、检查投资回报率
仅仅将测试人员的工资作为与整个测试过程相关的成本考虑进去是一个非常新手级的错误。显然,情况并非如此。
例如希望对网站执行跨浏览器测试,测试人员的工资当然是成本的一部分。但如果团队不知道这种类型的测试或与之相关的任何工具,那么还需要通过培训来提升他们的技能,这会产生额外成本。此外,还需要有合适的自动化测试工具或者框架来执行自动化浏览器测试。当然,也可以考虑开源框架。
这只是一个例子。同样,在对Web应用程序执行自动化测试的过程中,您还会遇到其他投资。但是,他们肯定会出现。因此,应仔细考虑测试成本,并牢记您将获得的这些投资回报。如果回报率较低,则需要更改策略并再次计算。但最终,您需要在整个测试过程中获得良好的投资回报率。
六、过度依赖无代码测试
虽然无代码自动化测试工具的学习曲线很短,很容易入门,但它们不会帮助构建自动化测试人员配置文件所需的相关技能集。作为初学者,它们很好地帮助新手起步,但随着自身技能的发展,就会意识到它们并不像期望的那样有用。如果决定用无代码自动化工具的智慧参加自动化测试人员的面试,或者一直单独用无代码自动化来自动化复杂的web应用程序,那么将经历一段艰难的时光。
可靠性是这类工具的另一个大问题。在一天结束的时候,需要了解代码,以便调试自己的自动化测试套件执行出错的地方。此外,如果面对一个复杂的网站,那么就不会发现无代码自动化测试工具可以像你想的那样灵活。建议不要逃避代码,而是要熟练地学习它。最重要的是,这将是个人简历上的一大魅力。因此,作为自动化测试人员,请确保避免这种常见的错误。
七、维护测试设计
测试设计是将一般测试目标转换为有形测试用例和条件的过程。作为开发人员,我们倾向于认为既然测试需要编码,为什么开发人员不能完成这项工作?如果是这样的话,那么测试这个岗位也就不存在了。
作为初学者,不理解测试设计的重要性可能是作为自动化测试人员最大的错误。任何时候测试任何东西都是荒谬的想法。为了有效地进行测试,测试人员需要设计测试,然后对其进行编码。设计测试有助于创建有意义的测试,并使整个测试过程非常高效。
八、关注代码重用性
测试用例对它所应用的代码并不是唯一的。在一个项目中,会出现许多类似的组件,它们需要类似的测试设计和测试套件。比如,在使用Selenium进行跨浏览器测试时,我们发现Web页面的四个元素都是输入字段,并且需要类似的测试用例。在这里,可以通过仅为第一个元素编写测试来复制粘贴代码。虽然这将给出预期的结果,但问题是将来开发人员可能会以某种方式更改元素。现在,要更改测试用例,就需要更改所编写的每个测试套件中的代码。所有的时间都将浪费在寻找和修改这些测试代码上。
为了避免这种情况,应该始终关注代码的可重用性。与其一次又一次地粘贴代码,不如用适当的参数构造一个函数,并在每个元素上调用该函数。这样,如果将来有任何更改,只需要修改函数,就可以开始了。
九、100%自动化是一个神话
跟计算机领域经典的“人月神话”一样,这里的“神话”同样指不可能达到的天方夜谭。
不要相信这种神话,因为作为一个自动化测试人员,这将是一个严重的错误。作为自动化测试领域的新手,对于将自动化引入到项目中都会很兴奋。但这会让人犯错误,认为自动化测试可以完全取代手动测试过程。随着时间的推移,我们将知道这是不可能的。百分之百用自动化测试取代手动测试是一个神话,它永远不可能实现。
作为这方面的初学者,不要试图实现这样的目标。又回到第一条,只有在必要时才进行自动化,并且只对那些需要自动化的项目进行自动化。
十、遵循从头开始
在测试时,会遇到不同类型的问题。需要设定目标并对这些问题进行分类。一种基础方法是用较小的模块而不是大模块开始自动化测试。
作为自动化测试人员,最大的错误之一是开始自动化时使用更大、更复杂的模块。可能缺乏对每个用户交互中涉及的入站和出站流程的认识;甚至可能缺乏处理棘手的测试用例的熟练程度;可能最终会浪费大量的时间,但却一无所获。所以从小处开始,从基础的方法中增加自动化测试的覆盖率。
第一次踏入自动化测试领域,难免犯一些错误,这些错误会造成时间、金钱、精力的浪费。希望这篇文章能对自动化测试新人有所帮助,帮大家避免踩这些不必要的坑。
相关文章:
自动化测试的十大雷区【刚入门必看】
虽然从自己的错误中学习也不错,但从别人的错误中学习总是更好的。 作为一个自动化测试人员,分享常见的容易犯的10个错误,可以从中吸取教训,引以为鉴。 一、必要时才自动化 新人小王接到为Web应用程序自动化测试脚本的任务时&…...
【Android源码篇】用grep搜索源码内容关键词
前言 选项: • -w:只匹配整个单词,不会部分匹配 • -r:递归搜索 • -n:显示行号 • -i:忽略字符大小写 • -I(大写i):忽略二进制文件 • -I:忽略文件内容&am…...
腾讯云轻量应用服务器卡死怎么连接?
腾讯云轻量云服务器卡死怎么解决?使用腾讯云自带的VNC登录连接轻量服务器,或使用腾讯云OrcaTerm一键免密登录轻量实例。如果是确定数据没问题,也可以使用控制台自带的重启实例。 腾讯云轻量应用服务器参考:https://curl.qcloud.co…...
Charles安装及抓取APP接口
一、Charles使用 Charles是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,…...
Linux开发工具:yum和vim的使用
目录 一. Linux下的软件 1.1 软件安装的三种方法 1.2 采用yum安装软件 1.3 yum源的问题 二. vim开发工具的使用 2.1 vim的三种基本模式 2.2 命令模式下vim的常用指令 2.2.1 定位相关指令 2.2.2 光标移动相关指令 2.2.3 插入相关指令 2.2.4 复制粘贴相关指令 2.2.5 替…...
Java基础重温巩固
方法 方法与方法之间是平级关系,不能嵌套return表示结束当前方法 基本数据类型和引用数据类型 基本数据类型:数据存储在自己的空间中 引用数据类型:数据存储在其他空间中,自己空间存储的是地址值 值传递 传递基本数据类型时&…...
Text2SQL 语义解析数据集、解决方案和学术论文资源整合
目录 什么是Text2SQL? Text2SQL语义解析数据集 Text2SQL解决方案 Text2SQL相关学术论文 欢迎大家,我是你们的博主,今天我们来讨论一个非常有趣且有挑战性的话题 —— Text2SQL。这个话题涉及到自然语言处理 (NLP),数据库查询语言 (SQL)&…...
redis集群+哨兵配置实操宝典
本地安装redis 配置集群和哨兵 1、下载安装redis #wget http://download.redis.io/releases/redis-5.0.12.tar.gz #下载安装包 #yum -y install gcc #安装依赖包 #tar -zxvf redis-5.0.12.tar.gz #cd redis-5.0.12 #make 2、主备配置 我们采用一主两备的结构 主机 192.168.3.…...
nginx的语法
概览 Nginx是一个高效、稳定的开源Web服务器和反向代理服务器,也可以用作邮件代理服务器、负载均衡器和HTTP缓存。以下是Nginx配置文件的一些基本语法和组成部分: 配置块(Block Directives):Nginx配置文件由许多嵌套的…...
华为OD机试之英文输入法(Java源码)
英文输入法 题目描述 主管期望你来实现英文输入法单词联想功能。 需求如下: 依据用户输入的单词前缀,从已输入的英文语句中联想出用户想输入的单词,按字典序输出联想到的单词序列, 如果联想不到,请输出用户输入的单词…...
一个团队管理者应该干什么?
文章目录 一、前言二、搞好团队气氛三、上下都要处理好四、做好计划并监督执行,控制风险。五、小结 一、前言 话说管理这个东西是猪有猪的想法,狗有狗的想法。所以不会有一个定论,总是有人定义这个管理方式,那个管理方式。看的管…...
服务器数据库文件加载到 MySQL
要将数据库文件加载到 MySQL 中,您可以使用以下步骤: 1. 确保 MySQL 服务器正在运行。您可以使用以下命令检查 MySQL 服务器的状态: sudo systemctl status mariadb 如果 MySQL 服务器没有运行,请使用以下命令启动它&…...
6-《网络面试》
6-《网络面试》 1.http是什么?http的工作机制?http报文?1.1 http工作机制:1.2 URL和http报文 2. HTTP请求方法和状态码3.Get和Post的区别4.HTTP的Header解析1.text/html2.x-www-form-urlencoded3.multipart/form-data4.applicatio…...
[高光谱]高光谱数据的获取与展示
一、环境准备 需要安装spectral包,这个包专门用于高光谱数据展示。 pip install spectral 二、数据加载 要预先准备原始高光谱的.mat数据和分类数据gt.mat(ground-turth);然后使用scipy.io中的loadmat(.)将其读入程序。 from scipy.io import loadmat…...
veth网卡的多队列及RPS
背景: 3.10内核下容器使用的veth网卡,默认开启的是一个队列,导致在某些单线程多TCP链接的应用场景下,出现某个CPU软中断高的情况。之前处理的方案一直是开启这个veth网卡的RPS,让其在多流场景下可以去分散到其它CPU上…...
国内的程序员数量是否已经饱和或者过剩?
首先,国内程序员数量确实在逐年增加,特别是近年来互联网行业迅猛发展,促进了技术人员需求的增长。然而,要判断程序员是否饱和并不是简单地看人数。下面我们细分几个角度来看看这个问题。 1、合格的程序员数量不够 国内的IT领域和…...
flutter不能抓包
需要获取手机IP地址设置才能抓包,获取IP地址,需要跟原生通讯获取, 1:获取IP地址 安卓代码: /*** 原生和flutter通讯交互*/ class MainActivity : FlutterActivity() {var methodChannel: MethodChannel? nullover…...
从桌面端到移动端,.NET MAUI为什么对WPF开发人员更简单?
.NET多平台应用程序UI(. NET MAUI)的市场吸引力与日俱增,这是微软最新的开发平台,允许开发者使用单个代码库创建跨平台应用程序。尽管很多WPF开发人员还没有跟上 .NET MAUI的潮流,但我们将在这篇文章中为大家展示他的潜…...
[Python]... 和pass
2.9 … 和pass 在Python中pass语句是用来在语法上需要一个语句的地方占位的。它不会执行任何操作。 ...是一个特殊的值,表示省略或未完成的代码。它可以用来实现抽象基类,也可以用来在语法上需要一个语句的地方占位,通常情况下,.…...
【信息安全案例】——软件解密技术(以OllyDbg为例)
目录 🕒 1. 软件解密技术🕘 1.1 概述🕘 1.2 爆破🕘 1.3 跟踪注册🕘 1.4 写出注册 🕒 2. 破解相关问题🕘 2.1 破解程度🕘 2.2 破解线索 🕒 3. 实验:使用 OllyD…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...
医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor
1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...
Selenium 查找页面元素的方式
Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素,以下是主要的定位方式: 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...
npm install 相关命令
npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖(默认&…...
迁移科技3D视觉系统:重塑纸箱拆垛场景的智能革命
一、传统拆垛场景的困局与破局之道 在汽车零部件仓库中,每天有超过2万只异形纸箱需要拆垛分拣。传统人工拆垛面临三大挑战: 效率瓶颈:工人每小时仅能处理200-300件,且存在间歇性疲劳安全隐患:20kg以上重箱搬运导致年…...
