【呕心沥血】整理全栈自动化测试技术(三):如何编写技术方案

news2024/9/23 13:16:34

前面两篇笔记我介绍了自动化测试前期调研注意事项和前置准备阶段切入点,有同学在后台提问:

“做完前期的调研和准备工作,领导要求写一个落地方案并评审,自动化测试的落地方案该怎么写”?

首先这个要求我觉得挺正常,一方面评审可以查漏补缺完善细节,另一方面也可以考察具体的落地经验和能力。

其次,我认为技术方案其实有个通用的模版,或者说抽象的经验参考,这也是本篇文章我想聊的话题。

结合个人的工作实践和思考,我认为构成一个技术方案,有如下五点要素:

  • 背景现状:当前的业务、技术表现,遇到了什么问题;
  • 痛点挑战:这些问题对业务和技术带来了哪些痛点,要解决痛点面临哪些挑战;
  • 落地方案:为了解决上述的痛点和挑战,打算从哪些方面用什么手段在什么时间来解决;
  • 产出价值:产出是什么,从哪些维度衡量产出,用哪些指标评估问题的解决程度和创造的价值;
  • 总体规划:整体规划是什么,短中长期里程碑是什么,要投入哪些资源,需要谁协同配合,对业务和团队价值;

下面的内容,我会从上述五点要素来展开说明。

阐述背景现状

首先,在编写技术方案的时候,第一也是最重要的一点,一定要阐述清楚项目背景或当前现状。

我发现很多同学有所谓的技术偏执,遇到问题第一反应是解决问题,拿着锤子满世界都是钉子。

但其实,我更建议在遇到问题时,首先应该考虑如下几点:

  1. 当前问题是偶发问题还是频发问题;
  2. 类似的问题在其他团队/场景是否存在;
  3. 除了方案A,有没有方案B或者方案C来解决问题;
  4. 如果不做该方案,当前问题造成的损失是否可以接受;

这样思考问题的好处在于:

  1. 避免陷入技术陷阱,在低层次挣扎;
  2. 找到更高维度的解决方案,解决更大更多的问题;
  3. 降低重复解决低级问题而带来的资源浪费和精力分散;

那如果要落地自动化测试,背景或者说现状怎么写呢?可以参考如下例子:

  1. 业务范围大,业务场景复杂,每次发版要回归的case太多;
  2. 业务趋于稳定,但测试时间较少,可能无法发现更多更细节的问题;
  3. 迭代周期比较快,测试人力资源不足,回归测试无法覆盖更多的场景;

如上例子仅供参考,阐述背景的原因在于体现当前面临的问题,以便引出后续的解决方案,这是有的放矢。

列举痛点挑战

上面列举了三条当前现状的例子,从中可以发现,当前的现状带来了哪些痛点和挑战。总结如下:

  1. 测试case比较多,回归耗时(时间);
  2. 业务稳定但测试时间不足,容易漏侧(质量);
  3. 测试人力资源不足,会导致测试时间变长或加班赶工(成本);

还记得之前我在软件工程的文章中提到的质量三要素吗?他们分别是时间+范围+成本。

当然,日常工作中还有可能有其他痛点,比如测试用例中很多前置动作都是重复性场景,比如日常测试效率不高需要提高测试过程效率,再比如测试团队的技术建设等原因。

列举痛点和挑战的目的在于,即承接了上面的现状和问题,又可以为后续的技术方案铺路,整体逻辑要清晰合理

说明落地方案

阐述了现状背景,列举了痛点挑战后,接下来就是要说明通过什么方式来解决这些问题,这就是落地方案。

一般在编写技术方案时,我个人的经验是如下几点必须重点说明:

  1. 技术方案针对的需求或业务范围(比如核心业务,核心服务,高频流程);
  2. 技术方案的选型、对比结果和demo效果是否适合当前的团队(成熟稳定的工具+活跃的生态&丰富的文档+简单的上手难度+较低的维护和二次开发成本);
  3. 方案落地所需要投入的资源(人力+时间+购买的资源)、需要哪些团队&人协同配合(沟通协作管理成本);
  4. 方案落地有哪些关键节点&里程碑(落地步骤1-2-3-4-5,分别在什么时候达成什么效果解决什么问题);
  5. 不同里程碑阶段,用哪些指标度量评估问题得到了解决,项目达到了预期效果;

技术方案编写完成后,一定要拉上领导和相关同学以及配合方进行评审。一方面是查漏补缺,另一方面也体现出自己的专业能力,当然有的时候最好能和协作团队达成利益一致,这样可以获得更好的支持配合。

罗列产出价值

具体的落地方案评审结束,接下来就要重点聊聊项目产出和价值了。

产出决定了你的工作量,价值决定了你的KPI和年终绩效,因此这点还是很有必要重点说明的。

当然,衡量产出和价值,一定需要具体的可量化的指标,否则无法量化的东西无法谈价值。

以自动化测试为例,我个人的观点是基于实际的目的出发来制定度量指标。举例:

自动化测试目的

细分类型

度量指标

如何度量

效率

造数据效率

  1. 每周造数条数
  2. 平均造数耗时
  3. 造数任务调用量

和手动造数耗时对比

冒烟测试效率

冒烟执行耗时

和手动冒烟测试耗时对比

线上回归效率

回归执行耗时

和手动回归测试耗时对比

覆盖率

接口覆盖率

  1. P0/P1接口覆盖率
  2. 总体接口覆盖率

梳理核心接口,投入最多资源精力

用例覆盖率

  1. P0case覆盖率
  2. P1case覆盖率

梳理核心case,投入最多资源精力

业务场景覆盖率

  1. 正向场景覆盖率
  2. 逆向场景覆盖率
  3. 核心场景覆盖率

根据业务场景,case by case度量

过程质量

构建执行成功率

自动化任务执行成功率

低于某个阈值判定脚本质量不通过

用例执行通过率

自动化case执行成功率

低于某个阈值判定提测质量不通过

制定度量指标时,建议遵循如下几点:

  1. 切忌面向指标/面向KPI做度量;
  2. 考虑到冗余成本,指标不宜过多;
  3. 制定指标是为了提升质量,而非做数据;
  4. 根据做自动化测试的目的来制定度量指标;
  5. 度量指标对比应该以是否解决了痛点为依据;
  6. 度量指标是辅助评估依据,并不是唯一正确的结果;
  7. 制定指标应考虑到哪些指标更实际有效,从解决问题角度出发;
  8. 度量指标不要单一的评估,应结合多个维度来综合评估开展质量度量;

概括总体规划

聊完产出和价值,方案基本就算完成了,但为了锦上添花,大家可以考虑阐述自己对于项目的总体规划和构思。比如:

  • 当前现状是A;
  • 第一阶段要达成B效果,解决C问题;
  • 未来半年要达到D效果,这样做的好处的E;
  • 长期来看,遮掩做对业务和技术团队的价值是F;

有句话我觉得说的挺对的,惠而不费的话要多说&事要多做。

  总结:
现阶段很多人都在说软件测试太内卷了,工作太难找了,竞争太激烈了。那么如何在这样的现状下使得自己更具有竞争力呢?笔者认为大家需要迅速学习软件测试的硬技能,提升自己的业务能力,早日摆脱初中级测试的Title,虽然测试人员众多,但是高级的软件测试人员还是很稀缺,有很多人挂着高级测试的头衔却还在干着初中级测试的活。在掌握这些硬技能的同时,软技能的培养同样重要,沟通能力、自主学习能力越来越被企业看重。

如果不想被这个时代淘汰,就要做好持续学习的准备。下方给大家准备了全套的软件测试,自动化测试全套教程。

【需要的可以点击下方官方推广小卡片扫码备注000免费领取】

 

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

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

相关文章

2023.02.12 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.本文贡献5.相关工作5.1 Temporal Recommendation5.2 Sequential Recommendation6.方法6.1 Problem Formulation6.2 Input Embedding6.3 Self-Attention Structure6.4 Model Training7.实验7.1 数据集7.2 实验结果7.3 多时间嵌入的效果…

Vulkan教程(12): Graphics pipeline Introduction (图形管线概要)

Vulkan官方英文原文:https://vulkan-tutorial.com/Drawing_a_triangle/Graphics_pipeline_basics/Introduction对应的Vulkan技术规格说明书版本: Vulkan 1.3.2Over the course of the next few chapters, well be setting up a graphics pipeline that i…

你知道MySQL中like 关键字也能用索引嘛?

上篇文章中,我和大家分享了索引的两个使用规则: 索引上不要使用函数运算。使用覆盖索引避免回表。 当然,凡事有个度,用哪一种策略也要结合具体的项目来定,不能为了 SQL 优化而抛弃了业务。 在前文的基础上&#xff0…

Mac安装Homebrew排坑大全..

官网:https://brew.sh/BACKGROUND: 安装Homebrew嘎嘎报错!question one网络不通,需要配置一下github.com的hostError:fatal: unable to access https://github.com/Homebrew/homebrew-core/: error:02FFF036:system library:func(…

电子电气架构——基于CANoe实现两路CAN线间网关仿真

基于CANoe实现两路CAN线间网关仿真 魔都的天气也很魔性,白天酷热无比,现在晚上九点又狂风大作,凉爽宜人。 天气的不可预见性与个人生活极其相似,都有随机、不可控的成分,自己能做的就是不懊悔昨天已发生,不寄托于未来未发生,只想过好当下这时光。 老规矩,分享一段喜…

【不知道是啥】浅保存哈

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

Linux系统安全之iptables防火墙

目录 一.iptables防火墙基本介绍 二.iptables的四表五链 三.iptables的配置 1.iptables的安装 2.iptables防火墙的配置方法 四.添加、查看、删除规则 1.查看(fliter)表中的所有链 iptables -L 2.使用数字形式(fliter)表所有链 查看输出结果 iptables -nL 3.清空表中所…

算法刷题打卡第88天:字母板上的路径

字母板上的路径 难度:中等 我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "…

【Java|golang】1138. 字母板上的路径

我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。 在本题里,字母板为board [“abcde”, “fghij”, “klmno”, “pqrst”, “uvwxy”, “z”],如下所示。 我们可以按下面的指令规则行动: 如果方格存…

【计组】理解Disruptor--《计算机组成原理》(十五)

Disruptor 的开发语言,并不是很多人心目中最容易做到性能极限的 C/C,而是性能受限于 JVM 的 Java。其实只要通晓硬件层面的原理,即使是像 Java 这样的高级语言,也能够把 CPU 的性能发挥到极限。 一、Padding Cache Line&#xff…

mysql中mvcc实现机制和原理

目录 1.什么是mvcc? 2.mvcc中的快照读和当前读有什么区别和联系? 3.mvcc的作用是什么? 4.mvcc的实现机制和原理是什么? 1.什么是mvcc? mvcc全称是(Multi-Version Concurrency Control) 多版本并发控制,是数据库管理过程中的一种并发控制…

keras+IMDB情感分析

目录简介IDMB数据集数据预处理数据加载数据清洗保存经过清洗后的数据训练测试数据集分割文字编码词嵌入模型构建模型训练训练效果模型评分模型预测及混淆矩阵查看F1 Score、召回率等信息预测新的影评总结本博客参考: 【python自然语言处理 周元哲著】 【keras中文文…

数据库索引篇(二叉树/B-Tree)对比结构讲解

我们可以先看一下 二叉树的一个结构 简单将数据分成左右两侧 左侧小于36 右侧大于36 在下面再以这种方式继续划分 但二叉树的结构就有一个非常大的弊端 如果我们后续插入的数据全部小于 或 大于36 他就会 变成这样 一个链表 查询效率大大降低 因为 比如 你想找什么数据 都会…

岁月闲思——时间给我地思考

岁月闲思——时间给我地思考 2022年6月10日,明天又一个周末,成人地时间总是让人感觉一天很慢,一周以及一年反而很快。 下班到家,吃过长辈做的手工凉皮,得空坐在电脑面前敲击点文字,记录下时间留给自己地印…

Docker--consul

目录 前言 一、Consul 简介 1.1、 consul 概述 1.2 、consul 的两种模式 1.3、consul 提供的一些关键特性 二、Consul 容器服务更新与发现 三、consul 部署 3.2、查看集群信息 四、registrator服务器 consul-template 五、consul 多节点 前言 服务注册与发现是微服…

软件测试面试十大必考题目(通用)

目录 (1) 为什么想进本公司? (2) 喜欢这份工作的哪一点? (3) 自己的优缺点为何? (4) 对公司的了解有多少? (5&#xf…

C++创建多线程的方法总结

下个迭代有个任务很有趣,用大量的线程去访问一个接口,直至其崩溃为止,这就需要多线程的知识,这也不是什么难事,总结一下C中的多线程方法:std、boost、pthread、windows api。 目录 一、多线程预备知识 二…

图解浏览器渲染页面详细过程

渲染详细过程 产生渲染任务,开启渲染流程 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。 在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程。…

IDEA 常用快捷键回顾

一 Alt 数字键 1. Alt 1: 打开项目 2. Alt 2: 打开Favorites 3. Alt 3: 打开Find 4. Alt 4: 打开Run 5. Alt 5: 打开Debug 6. Alt 6: 打开当前所在文件 7. Alt 7: 打开Structure 8. Alt 8: 打开Services 9. Alt 9: 打开Git日志 二 Ctrl 其他键 1. Ctrl…

【Flink】详解JobGraph

概述 JobGraph 是 StreamGraph 优化后的产物,客户端会将优化后的 JobGraph 发送给 JM。接下来的文章涉及到一些前置知识点,没有看前几期的小伙伴最好看一下前几期: 【Flink】详解StreamGraph【Flink】浅谈Flink架构和调度【Flink】详解Flin…