超实用的测试万能法则 —— 帕累托分析!

20/80原则来源于意大利经济学家维弗雷多•帕累托(Villefredo Pareto)提出的财富占比帕累托原则:80%的财富是掌握在20%的人手中的,而余下的80%的人只占那剩余的20%财富,而后这个理论延伸为:至关重要的少数和微不足道的多数。

帕累托理论可以用在方方面面,不管是时间管理、人员管理、还是个人规划,任何一个你能想到的对象,都可以尝试将它切分为至关重要20%和并不重要的80%。

如果延用到软件测试之中,它可以帮助我们更好地处理测试管理、测试计划制定, 测试用例设计精度控制, 以及用例执行权重配比等问题。

最神奇的是,我们甚至可以利用已发现的缺陷,结合帕累托效应来反向追踪、定位质量隐患区域,而这一点也是测试理念中的“缺陷集群效应”的体现:通常在少数模块中包含了大部分在发布前测试中发现的缺陷,或者是造成大部分运行失效的原因。

预测的缺陷集群效应或实际观察到的缺陷集群效应,应作为风险分析的重要输入,并进行集中测试。

一个软件产品中,80%区域都是比较安全的,理论上会存在剩余的20%缺陷,存在较高风险的只是少数区域。

但这里的区域并不代表广义上的功能或模块,不可能存在完全没问题的功能,也不存在集中所有问题的个别功能。所以这里的区域,是一个具备一定特性(共性)而归类成的抽象概念,并不是自然划分或业务划分出来的功能或模块。

测试80%精力应该分配在最重要的20%功能上, 即核心功能、核心模块和高风险区域。

产品层面划分

以产品层面来区分功能模块,可以分为:核心模块、高使用率模块以及安全性模块;这些模块应当被分配更多的测试精力。

此处的测试精力体现在所有测试功能内容上,包括测试方案、测试时间、测试用例占比、测试执行强度、探索性/随机测试的测试时间等。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

功能、特性层面划分

以功能、特性层面,来区分重点区域,可分为影响最大的处理区域、高集成度区域(具备与多种模块交互的区域)和功能核心区域,这些区域应当被分配更多的测试精力。

这里的测试精力则体现在测试用例设计深度、测试执行强度、探索性/随机测试的发散度和时间等。

测试者执行层面划分

以测试者执行层面,来区分测试精力分配,则是80%测试精力应分配给自己手上最核心(最重要)的任务部分,主要用于优化工作效率上。其余的20%分配给其余模块和细节部分。

对于手上的测试工作内容都很重要,不分主次。

这时候主要考虑的角度是是否存在可以优化的工作,其主要的解决思路是:把可优化部分通过工作优化来降低时间占用,从而将80%时间用于不可优化部分(间接提高工作效率)。

例如:

  • 1. 选用更快捷并且可以达到同样测试目的方法或手段;

  • 2. 选用规避性的测试方式或业务流程 (不影响当前测试点)来直接绕过比较耗时或被阻塞的区域;

  • 3. 尽可能拆分测试对象,尤其是尽量分离出可以静态测试的部分,来大幅度节省时间。

对于手上的工作内容比较杂乱,且带有非测试执行性质工作(测试工作依赖的周边隐含工作)。

这时候的考虑的角度主要是如何尽可能的减少其他工作内容的时间占比,来保障将80%时间用来做关键测试工作(测试工作中隐含工作,如测试数据准备,环境调试、维护,沟通协调,设备等资源准备等)。

主要的解决思路有两种:

1. 工作内容切分:秉承着越专精越高效,工作越集中越高效的原则

将一个涵盖很多工作内容的大组,切分成分别负责不同内容的小组,来协作完成全部工作。这样对于不同小组自身的核心工作就各不相同,但都可以做到80%以上占比的集中性。

组内所有人员均处理同一工作内容,不如将人员分给独立处理不同工作内容的小组。

2. 分别提高各工作内容的效率:单元化的分别提高效率,来释放足够时间给核心测试工作。

例如自动化数据创建;预调试(Health Check)来提前识别环境问题以便及时规避问题,从而减少时间浪费;

通过流程优化来减少沟通成本;

设备和测试用例分布精确化、分工化来降低每个测试人员的测试成本等。

以B/S架构的银行系统为例,整个系统由前端、网关、后端、服务器,可能还包括数据中台,这几部分组成。

在个人账户功能中,核心模块是与个人账户相关的后端服务,即80%的重点要放在后端服务和数据库的验证上,关键是数据的传输和验证。

那么为了保证这个功能的正确,又需要花费80%的精力在前期需求的澄清和验证上,尤其是各个字段的数据类型和长度限制,这里是往往容易发生问题的点,也是上文提到的高使用率模块;

安全性模块在这里则是分散在系统端到端操作的各个环节中,从前端向后端则依次是UI界面、网关、后端服务接口、服务器数据库。

这些环节中对于数据的校验是用最小成本获得最大收益的典型,只需要对校验功能和特殊值及边界值进行验证处理,就可以避免系统测试时很多奇奇怪怪的问题。

而此时,UI元素的显示等边缘功能,就是可以用剩余的精力来进行覆盖,对核心模块的测试,就可以使用深度测试来对应用场景和特殊场景进行覆盖。

用这样的精力分配,可以保证在模块层面,将大部分的精力集中测试这些关键模块和功能,是可以起到事半功倍的效果的。

以功能特性来区分的话,从业务角度来划分是非常清晰的,以提到的个人账户功能为例,基本功能是查询、存取款,围绕着基本功能,则是衍生业务,属于高级程度功能模块,例如理财、基金、信用卡等等;

而基本功能的查询,则是影响最大和最核心的功能区域。按照这样的分类,则需要将最主要的精力集中在核心模块上,每次查询的结果返回,则都需要和数据库及后端接口返回进行端到端的处理。

以上给出的是对“帕累托”效应的应用思路,根据每位测试工程师不同的分类,可以进行自己的划分,灵活地分配精力和测试深度。

通过对帕累托效应的灵活运用,结合测试理论,可以很快地将测试任务进行有效排序,做到集中精力应对关键问题,从而提升测试效率,确保测试质量。

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

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

相关文章

程序员副业之无人直播助眠

介绍和概览 大家好,我是小黑,本文给大家介绍一个比较轻松简单的副业,无人直播助眠副业。 这个项目的核心就是通过直播一些助眠素材来赚钱。比如你可以放一些舒缓的雨声之类的,吸引观众进来。然后,咱们可以挂个小程序…

案例分析——如何优化跨境直播网络

跨境直播 风口已至 这些年越来越多商家加入直播带货行列,各种玩法日渐成熟。而TikTok作为当前国外最火爆的直播平台,不少卖家都会定期做TikTok直播引流,但时常会面临着远程访问导致直播画面模糊、卡顿掉线、延迟高,甚至可能限流黑…

YOLOv5改进 | Neck篇 | 利用Damo-YOLO的RepGFPN改进特征融合层

一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN(重参数化泛化特征金字塔网络),利用其优化YOLOv5的Neck部分,可以在不影响计算量的同时大幅度涨点(亲测在小目标和大目标检测的数据集上效果均表现良好涨点幅度超级高!)。RepGFPN不同于以往提出的改进模块,其…

剧本杀小程序/APP搭建,增加玩家游戏体验

近年来,剧本杀游戏成为了年轻人娱乐的新方式,受到了年轻人的追捧。 剧本杀是一种新型的社交游戏,在游戏中,玩家不仅可以进行角色扮演,也能够交到好友,符合当下年轻人的生活模式。 小程序、app是当下剧本杀…

刚学C/C++,使用的是CLion,想要在同一个项目里面运行多个相互独立脚本?

前言: 正常来说,一般一个项目只会有一个程序入口点。C和C程序的入口点是main函数。在一个项目中,只能有一个main函数,否则编译器会不知道从哪个main函数开始执行。 但是,作为初学者,我就是想用CLio…

TMC4671闭环调试步进、伺服、音圈、永磁、无刷电机

一、IDE 连接开发板 下 面 讲 解 IDE 和 开 发 板 连 接 的 详 细 操 作 。 这 里 我 们 选 择 用 主 控 板 TMC671-EVALTMC6200-EVAL 开发板做讲解。其它型号的开发板也是大同小异 的操作步骤。 1.首先我连接好开发板,并给开发板上电 连接好的开发板如下…

bootstrap5实现宠物商店网站 Cat-Master

一、需求分析 宠物商店网站是指专门为宠物商店或宠物用品商家而建立的在线平台。这种网站的功能通常旨在提供以下服务: 产品展示:宠物商店网站通常会展示宠物食品、玩具、床上用品、健康护理产品等各种宠物用品的图片和详细信息。这样,潜在的…

JAVA中小型医院信息管理系统源码 医院系统源码

开发框架:SpringBootJpathymeleaf 搭建环境:jdk1.8idea/eclipsemaven3mysql5.6 基于SpringBoot的中小型医院信息管理系统,做的比较粗糙,但也实现了部分核心功能。 就诊卡提供了手动和读卡两种方式录入,其中IC读卡器使用…

李沐-《动手学深度学习》-- 01-预备知识

一、线性代数知识 1. 矩阵计算 a. 矩阵求导 ​ 当y和x分别为标量和向量时候,进行求导得到的矩阵形状,矩阵求导就是矩阵A中的每一个元素对矩阵B中的每一个元素求导 ​ 梯度指向的是值变化最大的方向 ​ 分子布局和分母布局: b. 常识 ax…

Mybatis分页插件PageHelper的配置和使用

文章目录 每页10条记录,取第一页,返回的是前10条记录每页10条记录,取第二页,返回的是第11条记录,到第20条记录, MySQL对分页的支持 简单来说MySQL对分页的支持是通过limit子句。请看下面的例子。 limit关键…

听GPT 讲Rust源代码--compiler(26)

File: rust/compiler/rustc_target/src/abi/call/mips.rs 在Rust源代码中的rust/compiler/rustc_target/src/abi/call/mips.rs文件是关于MIPS架构的函数调用ABI(Aplication Binary Interface)定义。ABI是编程语言与底层平台之间的接口规范,用于定义函数调用、参数传…

【Python学习】Python学习4-运算符

目录 【Python学习】Python学习4-运算符 前言算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级参考 文章所属专区 Python学习 前言 本章节主要说明Python的运算符。主要有 算术运算符 比较(关系&…