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

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元素的显示等边缘功能,就是可以用剩余的精力来进行覆盖,对核心模块的测试,就可以使用深度测试来对应用场景和特殊场景进行覆盖。

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 创建组件组件

组件:用于将某个功能的 HTML、CSS、JS 封装到一个文件中,提高代码的复用性和可维护性。 创建组件 一、在根目录中创建 components 文件夹,右键点击新建组件。 二、输入组件名称、选择默认模板、点击创建组件。 三、在组件中正常编写内容即可…

数据结构OJ实验6-二叉树的遍历以及应用

A. DS二叉树—二叉树构建与遍历(不含框架) 题目描述 给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘#’表示,例如AB#C##D##),建立该二叉树的二叉链式存储结构&…

H266/VVC多样化视频编码工具概述

全景视频编码 全景视频: 具有360度全包围视角的球面视频。 全景视频编码: 包括H266在内的视频编码算法都是以平面视频为对象的,为了采用传统的视频编码编码算法,全景视频需要转换为平面视频,其中经纬图等角映射&#…

适用于 Windows 的免费U盘数据恢复方法详解

笔式驱动器(Pen Drive)是一种方便、小巧、便于携带的数据存储设备,也称为U盘、拇指驱动器、U盘等。“笔式驱动器”的名称来源于其外观,即体积小、体积小、方便携带。与传统笔相似,尽管它实际上并不能书写。 有几个功能…

如何把硬盘(分区)一分为二?重装系统的小伙伴不可不看

注意事项:本教程操作不当会导致数据丢失 请谨慎操作 请谨慎操作 请谨慎操作 前言 相信各位小伙伴都会切土豆吧,本教程就是教大家如何切土豆切得好的教程。 啊哈哈哈,开玩笑的。 比如你有一个D盘是200GB,想要把它变成两个100G…

3D空间漫游技术的日趋成熟,让博物馆数字化大放异彩!

随着科技的飞速发展,互联网已经成为人们生活中不可或缺的一部分。在这个数字化时代,博物馆也紧跟时代潮流,将传统的实体博物馆与现代科技相结合,诞生了一种全新的博物馆形式——3D线上博物馆。这种新型博物馆凭借其独特的魅力&…

vue组件scoped的作用 目的: 解决多个组件样式名相同, 冲突问题

在style上加入scoped属性, 就会在此组件的标签上加上一个随机生成的data-v开头的属性,下面一起来看一下,希望对大家有帮助。 vue组件-scoped作用 需求: p标签名选择器, 设置背景色 问题: 发现组件里的p和外面的p都生效了 解决: 给Pannel.vue组件里sty…

设计模式之单例模式的懒饿汉

懒汉式 说白了就是你不叫我我不动,你叫我我才动。 类初始化模式,也叫延迟占位模式。在单例类的内部由一个私有静态内部类来持有这个单例类的实例。因为在 JVM 中,对类的加载和类初始化,由虚拟机保证线程安全。 public class Singl…

一个H3C交换机周期性断网并自动恢复的排查案例

一个朋友发我一个H3C日志,这个交换机是汇聚层交换机,1和2口是trunk口,其它接口是access接口,17-21口据说接的都是监控、终端。日志里面看到大量的拓朴改变,好几个网口up、down的日志,怀疑是环路&#xff0c…

Vue3——element-plus表格组件怎样得到当前行的id

实现方法&#xff1a; <el-table-column property"address" label"操作" show-overflow-tooltip header-align"center" v-slot"scope"><el-button type"success" click"editBtn(scope.row.id)">编辑…

视频转音频软件哪个好? 11 个高效的视频转音频转换器分享

网络上拥有数百个值得观看和聆听的音乐视频。但要聆听喜爱的音乐&#xff0c;用户必须观看整个视频&#xff0c;即使只有音乐让他们兴奋。那么&#xff0c;如何从视频中提取音频呢&#xff1f;简单的答案是使用视频到音频转换器将视频转换为音频格式并将其保存在您的设备上以供…

pyqt6 + pycharm 搭建+使用入门

首先安装PyQt6和PyQt6-tools。使用如下命令&#xff1a; pip install PyQt6 PyQt6-tools 但是运行后会报如下错误&#xff1a; 这个时候按照提示执行命令升级pip即可 python.exe -m pip install --upgrade pip 配置pycharm&#xff1a; 打开pycharm&#xff0c;进入setting&am…

创建专业电子邮件签名:提升个人与品牌形象的实用指南

电子邮件签名乃是品牌建设中常被忽略的一环。试想一下&#xff0c;若名片只是普通的、手工切割的复印纸&#xff0c;上面用黑体打印着你的联系方式&#xff0c;那将是多么平凡无奇。这将显得廉价、乏味且不专业——这正是人们不愿如此的原因。相反&#xff0c;他们渴望让自己的…

每日一博 - 多租户技术及其三种数据存储策略

文章目录 概述应用程序隔离数据隔离小结 概述 多租户技术&#xff08;Multi-Tenant Technology&#xff09;是软件即服务&#xff08;SaaS&#xff09;架构中的一项核心技术&#xff0c;允许单一软件应用或服务同时服务于多个客户&#xff08;即“租户”&#xff09;&#xff…

[每周一更]-(第81期):PS抠图流程(扭扭曲曲的身份证修正)

应朋友之急&#xff0c;整理下思路&#xff0c;分享一下~~ 分两步走&#xff1a;先用磁性套索工具圈出要处理的图&#xff1b;然后使用透视剪裁工具&#xff0c;将扭曲的图片拉平即可&#xff1b;(macbook pro) 做事有规则&#xff0c;才能更高效;用什么工具&#xff0c;先列举…

大模型日报-20240105

骁龙888实时运行&#xff0c;美团、浙大等打造全流程移动端多模态大模型MobileVLM https://mp.weixin.qq.com/s/-KnewDBeCN7a1XPk22u9Pw MobileVLM 是一款专为移动设备设计的快速、强大和开放的视觉语言助手。它结合了面向移动设备的架构设计和技术&#xff0c;包括从头开始训练…

【激活函数】PReLU 激活函数

1、介绍 PReLU&#xff08;Parametric Rectified Linear Unit&#xff09;激活函数是ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数的一种改进。它是由 He et al. 在 2015 年提出的&#xff0c;旨在解决ReLU激活函数的一些局限性。 # 定义 PReLU 激活函数 prelu…

从vue小白到高手,从一个内容管理网站开始实战开发第六天,登录功能后台功能设计--API项目中的登录实现(二),工厂模式创建数据库连接

一、回顾 在第五天的时候我们开始创建后台所以需项目,并创建项目所需要的相关实体类,具体内容没有掌握的小伙伴可以看点击下面的链接去学习。 从vue小白到高手,从一个内容管理网站开始实战开发第六天,登录功能后台功能设计--API项目中的登录实现(一)-CSDN博客文章浏览阅读…

记一次实战云渗透总结

点击星标&#xff0c;即时接收最新推文 云渗透思路 所谓的云渗透通常指SaaS或PaaS渗透&#xff0c;即将服务器端的某些服务搭建在云服务器上&#xff0c;源代码的开发、升级、维护等工作都由提供方进行。从原理上看&#xff0c;云渗透思路与传统渗透思路相差无几。站点必须由底…

竞赛练一练 第24期:NOC大赛每日一练,scratch题目刷题第3天,包含答案解析

023年NOC大赛创客智慧编程赛项图形化复赛模拟题一,包含答案解析 本次题目来源:NOC 大赛创客智慧编程赛项图形化复赛模拟题(一) 第一题: 制作一个生日贺卡小程序. 1.点击绿旗后蛋糕出现在 (0,-80) 的位置,大小为 100,造型为 cake-b2.当碰到鼠标指针时,将造型切换为 cak…