聊聊自动化测试路上会遇到的挑战~

news2024/12/31 4:18:50

一、测试范围

无论是功能测试,还是自动化或者性能测试,第一步要做的,是明确测试范围和需求指标。对于自动化测试来说,特别是UI自动化,并不是所有的功能点都适合做UI自动化。

根据具体的业务情况和项目稳定程度,选择UI自动化+API自动化结合,选择合适的业务点来进行针对性的自动化测试方案设计,才是最佳方案。

①、使用频次较高,异常判断较多,且最基础的功能,比如用户注册、登录;

②、用户端比较核心的功能,比如订单中心,会员中心;

③、促销活动页面、信息展示页等;

分层测试的概念,之前也介绍过了,分层测试金字塔如下:

从效果来看,单元自动化是收益最高的,但是单元自动化对大多数自动化测试初学者来说,难度太大。

且目前国内大部分中小型企业,开发本身的开发规范、管理等工作也做的不太好,单元自动化,实现的概率,短期内不看好。

而接口自动化,目前来说是性价比最高的一种选择。

UI自动化的投入和产出比,是三种模型中最低的,但对于越来越复杂的大型的系统,UI自动化在某些方面,也可以减少很多发布后冒烟测试的工作量。

二、系统架构

对大多数功能测试人员来说,系统架构不用太多关注,但对于自动化或者性能测试人员来说,系统架构是前期需求分析、技术方案选型设计的一个重点。

比如系统开发的编程语言,使用的数据库类型,通信服务框架(如果要进行API自动化,那么系统所采用的通信协议是绕不过去的一点),应用服务器的部署等,都是需要考虑的。

PS:我目前就职的这家企业,数据库使用的是微软全家桶套餐里面的SQL server,而我测试脚本开发语言是python,它本身对SQL server和Oracle的支持并不是很好,导致在数据库配置时候,踩了很多坑。

当然,我最后也解决了这个问题。关于数据库的支持问题,只是我遇到的问题里面的一个很小的部分。

熟悉系统架构的另一个原因是:比如系统采用的开发语言是java,自动化测试人员本身使用的脚本开发语言也是java,那么兼容性就是很好的,而且有技术问题,也可以找开发同事帮忙解决,

这样无形中也节省了很多时间,而且对自己的技术提升,也是不小的帮助。

熟悉了系统架构后,针对性的考虑自动化测试方案设计,技术方案选型,才是最好的方式,不要用固有的方式来解决不同的问题,而要用不同的技术方案解决不同的问题

三、项目情况

关于这点,个人认为应该通过分析沟通来确认系统是否适合自动化测试工作。那么,什么样的系统适合进行自动化测试?

如上图所示,我大概罗列了一些适合进行自动化测试的项目所具备的一些特征,当然,不需要全部具备,只需要满足几点即可以考虑进行自动化测试(红色线条标注部分为基本的条件)。

当然,项目情况不仅仅是这些,还有其他的一些点,也是需要考虑的,比如:

①、文档管理

文档包括需求文档、测试方案、测试用例、测试规范、开发规范、数据库表设计文档、接口文档等。

如果文档不太完善甚至没有对应的文档,那么自动化测试工作,前期的准备工作就需要投入更多的时间和精力。

PS:比如要进行API自动化,但是没有接口文档,没有数据库表设计文档,那么关于API的接口说明,入参出参说明,这将带来很多附带的工作量,而文档数据的统计,又是一件很麻烦的事情。

有时候需要数据库确认接口对数据的影响,对应的数据库表字段,如果没有相关文档说明,那么自己整理以及和DBA沟通熟悉,就需要花费很多的时间和精力。

而很多企业对自动化的认识太片面,认为自动化可以替代人发现很多BUG,且追求短期的明显效果,而如果没有较完善的文档管理,那么自动化测试人员在前期的准备阶段花费的时间将影响

leader对个人能力和工作效率的怀疑,可以说这也是目前国内很多企业存在的弊端。

问题总归是要解决的,如果遇到这种类似的问题,那么在任务拆分和工时预估时候,可以将这些因素考虑进去,计算在个人工时中,并注明原因,在和leader甚至更高层评估中,抛出存在的问题,

推动问题的解决,这也是自动化测试人员的一种价值体现。

②、流程管理

项目的需求迭代是否稳定?从需求评审到开发、测试、发布上线是否有比较规范的流程?

如果需求迭代较快或者不稳定,那么自动化测试的脚本维护工作量将成倍增长;如果没有较好的流程管理,自动化工作的进展总会遇到很多不可描述的坑,沟通成本,变更成本等,还会影响到

测试方案的设计和规划。

在自动化测试中,需要针对性的熟悉了解这些问题点,做好应对的准备。自动化测试过程中,变化是最大的挑战!!!

四、“目标”一致

这里的“目标”,指的是个人对工作的目标设定和leader对自动化工作的期望,站的角度不同,理解不同,因此期望的结果不同。并不是要达成完全的一致,我这里想表达的是沟通的重要性

个人针对系统情况,技术架构,测试范围的理解,对应的自动化测试方案设计和目标设定,应该与leader不断沟通,不断调整,达成一定程度上的一致,这样也能避免很多后续的麻烦。

当然,目标的设定,也应该根据具体的自动化测试需求,进行任务拆分,评审,不断调整,这是一个持续不断的调整的过程,需要耐心和坚持!

五、运行环境

自动化测试脚本开发,也需要基于不同的环境,而环境的选择,需要考虑不同的情况,下面一一列举说说我个人的思路:

1、SIT环境:

SIT环境,也称为系统集成环境,就是我们常说的测试环境,如果测试脚本是基于SIT环境开发调试,那么就需要SIT环境相对来说比较稳定。

但是大部分时候,SIT环境因为需要多次的提交测试,交叉影响较大,且SIT环境和生产环境还是有一定差异的(至于为什么,相信测试童鞋,都明白其中的痛点)。

2、UAT环境:

UAT环境,就是我们所说的验收环境,当然类似的,也有灰度环境等。UAT环境相对SIT环境来说,是比较稳定且和生产的一致性较高的,很适合进行自动化测试脚本开发和调试,以及日常的测试回归。

但自动化测试的作用又不限于这点,还可以进行发布后的生产冒烟,定时轮询测试等。

3、生产环境:

如果在生产环境进行测试脚本开发和调试,以及测试执行,那么就需要解决以下几点问题:

①、网络问题

一般我们的SIT和UAT环境都是部署在企业内部,网络环境也是走的内网,请求解析和外网有一定区别。在生产环境运行脚本进行回归冒烟的话,需要考虑真实的用户操作环境,不同的网络对测试结果影响。

而且测试脚本中,sleep最好能不用就不用(特别是UI自动化,强制等待容易带来很多不可控的变数)。

②、数据污染问题

生产环境进行自动化测试回归冒烟,需要对测试所产生的数据进行隔离处理,否则会导致业务受到影响,并且对生产的数据造成污染。常用的数据隔离方法如下:

测试白名单账号、网络标记、线程标记、测试数据落入对应的测试库,某些业务还可以使用MOCK对象和挡板。

关于数据隔离这几点,在性能测试中,也是需要考虑的一个重点,当然性能测试中也经常使用这些方法进行数据隔离,避免生产数据污染带来的影响。

六、服务部署

自动化测试的核心是持续集成。那么一个独立的不受影响的持续集成环境是必须的。

持续集成环境也叫作CI环境,类似的还有CD环境(持续交付)。

这些应用,在敏捷测试中,应用的比较多,不过目前行业内,我个人了解到,越来越多的企业开始搭建持续集成环境,这样做的好处是很多的,比如:

①、版本迭代提测,可以通过CI服务一键提交,节省时间,提高效率;

②、如果需要造大量的测试数据,可以通过一个小脚本,只需要进行配置,点击启动按钮即可;

③、发布生产环境时候,可以通过CI服务自动化打包部署,避免了人手工打包配置时候的误操作等问题;

④、自动化测试脚本,部署在CI环境后,只需要点击启动,或者设置出发条件,定时任务的形式,来做到生产定时轮询,发布后冒烟等测试工作;

七、测试策略

这里的策略,可以从下面几个角度来说:

1、任务拆分

确认测试范围和需求指标后,将自动化测试任务进行粒度更小的拆分,将工作内容所需时间精确到人/天的范围,按时完成任务,有问题不断调整;

2、优先级

任务拆分后,对任务进行优先级排序,通过评审沟通,确认先完成哪些任务,然后完成哪些等。

测试方案设计中,可以考虑分为第一期、第二期自动化测试任务,比如第一期实现自动化测试在一定程度上的覆盖率,先实现PC端的自动化测试,第二期可以考虑移动端的自动化测试覆盖,

第三期可以考虑自动化测试平台的开发等等。有目标有计划,根据项目变化和进度不断调整。

自动化任务的优先级排序,可以参考这几点:

①、用户使用频率越高的优先级应该最高;

②、系统基础功能应该排在优先级前列;

③、系统核心功能(比如支付、订单)应该较早的覆盖;

④、历史记录中生产出现问题叫多的功能点,应该考虑尽可能的覆盖;

3、工时预估

前期的准备工作(比如范围确认、需求分析、CI环境部署、测试方案设计、技术框架选型、文档整理等)完成后,需要针对具体的拆分后的任务进行工时预估,以确认工作阶段性的进展,

方便随时调整。工时预估需要考虑以下几点:

①、自动化测试人员个人的技术能力,特点;

②、项目情况、流程管理、系统架构的变化程度;

③、测试方案技术实现的难易程度;

八、解决问题

自动化测试道路上,全是坑!!!

工作中我们会遇到很多问题,有沟通问题、管理问题、技术难点、以及一些不可描述的问题,但只有想办法解决这些问题,我们才能在工作中不断提升,完成工作,获得该有的收获。

不同的企业存在不同的各种各样的问题,没有完美的公司,因此工作中,学会适应环境,融洽沟通,也是工作中必须的一项内容。

工作的本质就是拿钱消灾,解决问题,创造价值!!!

所以,良好的心态,坚持不懈的态度,解决问题的思路,是需要自动化测试童鞋所具备的。。。

推荐Python自动化测试学习视频

软件测试黄胖子
软件测试面试官黄财财

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

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

相关文章

Unity之Hololens2开发 如何接入的MRTK OpenXR Plugin

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

conda的安装和使用

参考资料: https://www.bilibili.com/read/cv8956636/?spm_id_from333.999.0.0 https://www.bilibili.com/video/BV1Mv411x775/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 目录 conda是啥以及作用conda的安装conda的启动conda的配置…

一招解除csdn复制限制

先看这个代码 python读取英文pdf翻译成中文pdf文件导出代码 想要复制代码,csdn有限制怎么办(csdn流氓,无耻) 解除方法 ctrlu 看效果

PIL或Pillow学习1

PIL( Python Imaging Library)是 Python 的第三方图像处理库,由于其功能丰富,API 简洁易用,因此深受好评。 自 2011 年以来,由于 PIL 库更新缓慢,目前仅支持 Python 2.7 版本,这明显…

数据仓库数据库

在当今的数字化时代,数据存储和管理是非常重要的领域。数据仓库和数据库是两个重要的数据存储和管理工具,它们有着不同的特点和用途。 一、数据仓库与数据库的定义 1. 数据仓库 数据仓库,是为企业所有级别的决策制定过程,提供所…

2023华为杯D题——基于Kaya模型的碳排放达峰实证研究

一、前言 化石能源是推动现代经济增长的重要生产要素,经济生产活动与碳排放活动密切相关。充分认识经济增长与碳排放之间的关系对转变生产方式,确定碳达峰、碳中和路径极为必要。本研究在对经济增长与碳排放关系现有研究梳理的基础上,系统地分…

postman发送图片

POSTMAN 如何发送携带图片的请求? 闲话不叙 步骤如下: 新建一个请求,在Headers中添加一对k-v : Content-Type > multipart/form-data 请求的接口: RequestMapping("/fileUploadController")public String fileUpload(MultipartFile fil…

手机无人直播手机用哪些软件系统最好?

最近手机无人直播可是风靡大江南北,只要是一个抖音用户都想装个手机无人直播软件,随时随地开启手机无人直播,抖音8亿用户想想这个市场得有多大,蛋糕有多肥。 那么问题来了,手机无人直播手机用啥软件? 推荐…

Learn Prompt-GPT-4:能力

GPT-4能力大赏​ 常识知识推理​ 一个猎人向南走了一英里,向东走了一英里,向北走了一英里,最后回到了起点。他看到了一只熊,于是开枪打了它。这只熊是什么颜色的? 答案是白色,因为这种情况只可能发生在北…

智慧银行:数字化金融时代的引领者

在当今数字化的时代,金融行业正经历着一场前所未有的变革。传统的银行模式已经不再适用,取而代之的是智慧银行的新兴概念。智慧银行不仅仅是数字化的银行,更是一个全新的金融服务范式,将科技与金融相结合,为客户提供更…

第七章 查找

一、树形查找-二叉排序树和红黑树 二叉排序树 // 二叉排序树节点 typedef struct BSTNode{ElemType key;struct BSTNode *lchild, *rchild; } BSTNode, *BSTree;五叉查找树 // 5叉排序树的节点定义 struct Node{ElemType keys[4]; // 5叉查找树一个节点最多4个关键字struct…

科普之加密、签名和SSL握手

一 背景知识 感悟: 不能高不成低不就备注: 以下内容没有逻辑排版,仅做记录 ① 加密方式 说明: 单向和双向认证遗留: 如何用openssl从私钥中提取公钥? ② 互联网数据安全可靠条件 说明: 二者相互印证 二 互联…

记录:移动设备软件开发(Android项目组织结构)

目录 Android项目管理结构ui管理ViewGroupUI控制 使用Android Studio开发Android应用简单、方便,除了创建Android项目,开发者只需要做两件事情:使用activity_main.xml文件定义用户界面:打开Java源代码编写业务实现。但对于一个喜欢…

拼多多API接口解析,实现根据ID取商品详情

拼多多是一个流行的电商平台,它提供了API接口供开发者使用。要根据ID获取商品详情,您需要使用拼多多API接口并进行相应的请求。 以下是使用拼多多API接口根据ID获取商品详情的示例代码(使用Python编写): import requ…

LeetCode【42. 接雨水】

我不喜欢等人,也不喜欢被别人等 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数…

打开深度学习的锁:(2)单隐藏层的神经网络

打开深度学习的锁 导言PS:神经网络的训练过程一、数据集和包的说明1.1准备文件1.2 需要导入的包 二、构建神经网络的架构三、初始化函数四、激活函数4.1 tanh(双曲正切函数)函数 五,前向传播六、损失函数七、后向传播八、梯度下降…

代码随想录算法训练营第23期day3| 203.移除链表元素 ,707.设计链表,206.反转链表

目录 一、链表 基础操作 二、(leetcode 203)移除链表元素 1.使用原来的链表 2.设置虚拟头结点 三、(leetcode 707)设计链表 四、(leetcode 206)反转链表 1.双指针法 2.递归法 一、链表 单链表定义…

SpringMVC学习笔记——1

SpringMVC学习笔记——1 一、SpringMVC简介1.1、SpringMVC概述1.2、SpringMVC快速入门1.3、Controller中访问容器中的Bean1.4、SpringMVC关键组件的浅析 二、SpringMVC的请求处理2.1、请求映射路径配置2.2、请求数据的接收2.2.1、键值对方式接收数据2.2.2、封装JavaBean数据2.2…

JavaBean专项练习(学生信息管理系统)(增删改查)(每步详细解释和思路)

/* 题目: 定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据学生: 1. 学号 2.姓名 3.年龄要求: 1.再次添加一个学生对象,并在添加的时候进行学号唯一的判断2. 添加完毕后,遍历所有学生信息3. 通过id删除学生信息,如果存在则删除,如果不存在则提示删除失败4. 删除完毕之…

tensorflow-卷积神经网络-图像分类入门demo

猫狗识别 数据预处理:图像数据处理,准备训练和验证数据集卷积网络模型:构建网络架构过拟合问题:观察训练和验证效果,针对过拟合问题提出解决方法数据增强:图像数据增强方法与效果迁移学习:深度…