Good Enough Testing(恰到好处的测试)

软件测试的原则 一、软件测试的原则 Good-enough原则和Pareto原则。 保证测试的覆盖度,但穷举测试是不可能的。 所有测试的标准都是建立在用户需求之上。 越早测试越好,不断的测试,测试过程与开发过程应该是相互结合的。 测试的规模由小到大,从单元测试到系统测试。 为了尽可能的发现错误,应由独立的第三方进行测试。 不能为了便于测试擅自修改程序。 以最少的测试用例覆盖最多的需求。 妥善保存测试计划、方案、... 阅读详情
 
Good Enough Testing(恰到好处的测试)
陈能技
2007-8-16
 
原文:A Framework for Good enough testing – James Bach
 
Good Enough Testing 的定义
有些测试员会问:“我怎么知道我的测试做得足够了?”
很遗憾,对于这一样一个问题,没有很客观或严谨的答案。但是我们可以在尝试回答问题前识别出来那些因素应该加以考虑。我们至少可以建立一个围绕这个问题的启发模型。
 
首先,我们来定义一下什么是Good Enough Testing。
Good Enough Testing是形成一个充分的质量评估的过程,这个过程建立在合理的代价之上,用于支持对产品作出明智的、及时的决定。
 
把定义分解成4部分:
产品质量的评估:
产品的正确性和完整性如何?
测试的代价:
测试消耗的合理的程度如何?是否在项目限制范围内?对测试的投入是否有好的回报,例如,每次测试后,是否有额外的信息可提供?
决定:
产品质量的评估是否很好地服务于项目和业务?
及时性:
对评估、决定的及时性,是否足够快,从而发挥作用?
 
有些测试员会被告知他们所做的测试不会影响产品发布的决定。如果是这样的话,测试就应该停止了。
 
相反,如果继续测试会提供技术支持或为公司的某些其它类型的决定提供基础支持,那么就应该继续测试。因为测试与某些要作出的决定联系在一起,或为提供某些数据以备将来使用。
 
某些测试是在组织或某些所谓的权威人士要求下进行的,有些测试仅仅是因为测试计划制定了,所以执行。这与Good Enough Testing的原则是违背的,Good Enough Testing是有意识的、有目的的测试,不是迷信和仪式。其实很多制定的测试计划中提到的测试是可以抛弃的,因为它们对测试项目或对利益相关方完全没有什么影响。
 
很多时候,测试计划的编写是因为某些人说:“教科书上说我们应该有这种测试”。
 
评估的组成
1、 评估产品质量
我们是如何评估和报告产品质量的?
我们是否确定质量的评估是可被证实正确的?
我们是否清楚明示和暗示的产品需求?
我们能在产品创建出来后多快地找到产品中的重要的问题?
我们的测试是否覆盖了需要覆盖的产品的各个方面?
我们是否应用了足够的测试方法类型或采用了足够的关于质量信息的资料来源来消除测试覆盖的误差?
是否在产品中存在我们不知道的重大问题的可能性?
是否存在本应该是测试发现的问题而测试员未发现,而是被其它渠道发现并报告?
 
2、 评估测试代价
测试的消耗有多大?我们能承受的测试代价是多大?
我们能否从测试覆盖中消除不必要的冗余?
是什么让测试执行困难(代价高)?
产品的可测性能否再提高?
是否有工具或技术可以使测试过程更加高效?
早点测试好还是迟点测试好?哪种情况下测试的整体成本低一些?
 
3、 检查测试对决策的作用
测试过程是否清楚管理者、开发人员或其它客户需要做的决定?
测试过程是否关注潜在产品和项目风险?
测试过程是否依赖变更控制过程和项目管理?
测试报告是否及时递交?
测试报告是否用易于理解的方式沟通?
测试过程和测试结果一样被传达吗?我们是否报告评估的基础以及融入我们的信心在里面?
测试过程是否对技术支持、发行、市场或其它需要使用质量评估的任何业务过程提供服务?
 
4、 是否及时
以上三方面都是时间驱动的。所以带来了问题:我们永远也没有足够的时间去做每一件事,所以我们要做的每一件事都是与时间赛跑。
 
整合分析
1、 我们的测试有多好?
综合前面的几个问题,考虑我们现在的测试过程中是否存在紧迫的问题?
我们的测试流程是否充分,是否能在产品质量未能达到预期目标时对项目管理提出预警?
是否存在某些潜在类型的问题是不可忍受的,如果有,我们是否有有信心我们的测试流程能发现定位这些问题?
 
2、 是否值得改进?
我们能用什么策略改进测试?
我们有能力应用这些测试策略吗?我们知道怎样应用吗?
改进测试会消耗多大?会有多麻烦?是否是利用资源的最佳方式?
能否暂时不改进?能否在一个可接受的时间范围内达到改进?
改进是否会造成反效果,引入新的bug,对士气造成影响?
改进会带来明显的不同吗?
 
测试经理不愿意面对“毫无遗漏的测试是不可能的”这一事实的话,他就会选择一个不可能完成的测试。
 
Good Enough Testing 的目的是帮助软件测试工程师摆脱测试的条条框框、主观性、被动的局面,把结构化的、合理的方法应用到复杂的、多维的问题集合中去。
 
 
 
 
 
 
软件测试的6个基本原则 1. 测试应基于客户需求 所有的测试工作都应该建立在满足客户需求的基础上,从客户角度来看,最严重的错误就是软件无法满足要求。有时候,软件产品的测试结果非常完美,但却不是客户最终想要的产品,那么软件产品的开发就是失败的,而测试工作也是没有任何意义的。因此测试应依照客户的需求配置环境,并且按照客户的使用习惯进行测试并评价结果。 2. 测试要尽早进行 软件的错误存在于软件生命周期的各个阶段,因此应该尽早开展测试工作,把软件测试贯穿到软件生命周期的各个阶段中,这样测试人员能够尽早地发现和预防错误,降低错误修复 阅读详情

相关推荐

软件测试十大原则

原则是最重要的,方法应该在这个原则指导下进行。软件测试的基本原则是站在用户的角度,对产品进行全面测试, 尽早、尽可能多地发现Bug, 并负责跟踪和分析产品中的问题,对不足之处提出质疑和改进意见。 零缺陷(Zero-Bug) 是一种理念,足够好(Good-Enough)是测试的基本原则。

软件测试的goodenough原则是指_软件测试的目的与原则

原标题:软件测试的目的与原则软件测试的目的基于Glen Myers和Hetzel两位学者的著名测试论点,将测试的目的分为两派。Glen Myers认为测试时为了发现错误而执行软件程序的过程。Hetzel认为软件测试是对软件建立信心的一个过程。对软件进行的测试越多、越充分、人们对使用该软件的信心就越强从测试的目的出发,可以把测试分为两大类:1.为了验证程序能正常工作的测试3.为了验证程序不能正常工作...

weixin_33505417的博客 3754

软件测试的十大原则

软件测试的十大原则

软件测试学习(一)

将自顶向下集成测试和自底向上集成测试结合起来,可以发挥两种的优点避免其缺点,从而有效提高测试效率,也叫做三明治集成测试;把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合来测试。测试的缺陷要符合“二八”定理,即软件80%的缺陷会集中在20%的模块中,缺陷不是平均分布的;缺陷要有重现的步骤;元素:标识符、测试标题、前置条件、输入数据、操作步骤、期望结果、所属模块、优先级、用例性质;验证软件产品是否符合这些质量特性要求的测试,包括性能测试、安全测试、兼容测试等。

qq_61271980的博客 1233

ZBrush 2021来了

这次给大家带来的是:zbrush2021.1.1 win安装教程 1.下载压缩包之后解压到文件夹当中,然后打开ZBrush_2021_Installer.exe进行软件安装, 如下图 2.在这里我们保持默认的简体中文版即可,然后点击确认,如下图 3.第三步我们点击前进即可,如下图 4.第四步我们来到许可协议,在这里我们点击我接受此协议,然后点击前进,如下图 5.第五步我们来到安装目录,在这里我们可以设置安装路径,如下图 6.在这里我将安装目录修改安装到E盘为例,然后点击下一

3D游戏建模 1187

Linux下开机异常(fsck exited with status code 4)

Linux下开机异常事情是这样的,本来我呢跑着程序听着歌,结果忽然就死机了,我只能强制关机,再次打开系统的时候,就提示这样fsck from util-linux 2.26.2 /dev/sda10 contains a file system with errors, check forced. /dev/sda10: Inodes that were part of a corrupted pr

芳草碧连天 2万+

软件测试原则

软件测试原则 1.Good-enough:一种权衡投入/产出比的原则 2.保证测试的覆盖程度,但穷举测试是不可能的 3.所以的测试都应追溯到用户需求 4.越早测试越好,测试过程与开发过程应是相结合的 5.测试的规模由小而大,从单元测试到系统测试 6.为了尽可能地发现错误,应该由独立的第三方来测试 7.不能为了便于测试擅自修改程序

chen91yang的专栏 723

线性分类器(Linear Classifier)

线性分类器 如上图所示,这是二维空间中的一个数据集,如果他正好能够被一条直线分成两类,那么我们称它为线性可分数据集,这条直线就是一个线性分类器。 在三维空间中,如果数据集线性可分,是指能够被一个平面分为两类。 在一维空间中,所有的点都在一条直线上,如果线性可分。可以理解为它们能够被一个点分开。 这里的直线、平面、点被分为决策边界。 一个 m 维空间中的数据集,如果能够被一个超平面一分为二,那么这个数据集就是线性可分的,这个超平面就是决策边界。 例如,这是二维平面上的一条直线, 它可以把平面切分成两

xuechanba的博客 1万+

Trivy Issue 分诊实战:标签分类、优先级划分与关闭流程的完整工作流

Triage(分诊)是保持 Trivy 仓库健康的核心维护机制,其目标是让维护者能快速定位、分级并响应新提交的 Issue。本篇基于 Trivy 官方维护者指南 [triage.md](https://link.gitcode.com/i/fc3d104fb97ddc5f0727b39ac93e3cba) 展开,完整覆盖其每日分诊、每周分诊、发布后分诊三条工作线,并结合仓库中的标签定义文件 [la

gitblog_00761的博客 434

Oracle-如何修复undo坏快

undo出现坏快,导致数据库宕机,无法启动

qqqyyy0422的博客 570

Spring Boot Admin 完整教程

SpringBootAdmin是一个用于管理和监控SpringBoot应用的Web工具,提供健康检查、性能指标、日志管理等核心功能。系统由AdminServer(管理服务器)和AdminClient(客户端)组成,通过Actuator端点收集数据。配置需添加Maven/Gradle依赖,通过@EnableAdminServer注解启动服务端,客户端需配置注册信息。支持UI自定义、安全认证(基本/OAuth2)、多种通知方式(邮件/Slack)及与Eureka/Consul等服务发现的集成。最佳实践包括分层监

weixin_51040479的博客 2553

Hypothesis Shrinker 基准测试实战:用 benchmark 目录对比 shrink 次数并生成图表

Hypothesis 的 `benchmark/` 目录是一套专为 **shrinker(收缩器)性能对比**而设计的基准测试工具链:先用 pytest 插件在两个代码版本上分别收集 `minimal()` 调用时的收缩调用次数,再用 Vega 规范渲染出对比图。本文以 [benchmark/README.md](https://link.gitcode.com/i/629c94ee854cf5b

gitblog_00023的博客 458

统信UOS/麒麟Kylin OS下利用pyenv实现Python多版本开发环境搭建指南

本文详细介绍了在统信UOS和麒麟Kylin OS国产操作系统下使用pyenv搭建Python多版本开发环境的完整指南。从系统环境准备、pyenv定制安装到Python版本编译实战,提供了针对国产CPU架构的特殊优化方案和常见问题解决方法,帮助开发者高效管理不同Python版本需求。

sea99的博客 1051

软件工程导论Part3 Quality Assurance软件质量保障

在软件工程中,security和safety是两个不同的概念。因此,在软件工程中,确保软件产品的安全性和软件系统的安全性是必不可少的前提条件。Insights 在软件工程中,安全性和安全性问题是非常重要的,因为它们关系到软件产品的质量和用户的安全。因此,在软件开发过程中,必须始终关注软件产品的安全性和安全性问题,并采取相应的措施来确保软件产品的安全性和安全性。在软件工程中,security 是 safety 的前提,这是因为安全是软件工程中最重要的方面之一,它涉及到保护系统免受恶意攻击和不良行为的影响。

Abigail的博客 1290

7 中望CAD二次开发-标注(一)(ZRX C++)

尺寸标注是CAD设计中最常用的功能之一,软件内置了很多标注功能,可以通过使用这些标注工具,对需要标注的长度、角度等一个个进行标注。但这显然效率很低,学习CAD二次开发,就是要把人从重复的劳动中解放出来,实现批量标注。本文介绍,如何通过二次开发进行标注。

cilvsuanna的博客 338

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

doocs/md 微信 Markdown 编辑器语法能力指南:从排版到公式图表,一篇讲透

doocs/md 是一款面向微信公众号的 Markdown 编辑器,把"写完草稿"到"能直接排版发号"之间的活儿都收进了一个窗口:基础排版、四类扩展文字样式、LaTeX 公式、Mermaid/PlantUML 图表、信息图卡片、注音和标注框,再配合外链转脚注这类针对微信环境的开关,一篇稿子在编辑器里就能走完草稿到成稿的全程。本文把这套能力按"起草 → 排版美化 → 数学与可视化 → 发布到公众号"

gitblog_00953的博客 69

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Fastify 技术设计原则全解析:驱动框架架构决策的十大核心准则

Fastify 在官方文档中明确列出了驱动自身及其官方插件一切设计决策的十项技术原则(Technical Principles),它们既是代码评审的价值标尺,也是使用者判断"某功能为何这样实现、能否满足我的场景"的底层依据。本文将以 [docs/Reference/Principles.md](https://link.gitcode.com/i/7532c7d9110a79e898e663eb2

gitblog_00403的博客 332

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Agentic Awesome Skills 实战对话全解:五个典型场景教会你如何与 Agent 技能协作

> **导读**:本文以 [docs/contributors/examples.md](https://pre-link.gitcode.com/i/7c85a5aaac2978d3ccc0797c62e1638e) 为骨架,完整复现了 AAS(Agentic Awesome Skills)仓库中五个高价值技能的端到端对话示例——功能设计、系统化排障、支付集成、营销文案与测试驱动开发。通过逐段还

gitblog_00171的博客 158

rtk Rust 开发指南:CLI 代理回退、LazyLock 正则与 Token 节省验证的核心实现模式

本文基于 RTK 仓库中的 Claude Code Agent 定义文件 [rust-rtk.md](https://link.gitcode.com/i/759c818e3b88fd0dd88bbba424cac6ea) 展开,系统讲解这个专职维护 RTK 代码库的 Rust 专家 Agent 所固化的核心工程规范:CLI 代理的命令路由与回退机制、基于 `LazyLock<Regex>` 的正

gitblog_00215的博客 589

java程序员实用英语学习总结

java程序员英语学习经验总结

工匠精神coding,终生学习 1010

What is code coverage

Code Coverage What is Code Coverage? Code coverage measurement simply determines those statements in a body of code have been executed through a test run and those which have not. In general, a code c...

weixin_30299539的博客 204

Fast R-CNN

本文提出了一种用于目标检测的 Fast Region-based Convolutional Network 方法(Fast R-CNN)。Fast R-CNN 在先前工作的基础上,利用深度卷积网络高效地对候选区域进行分类。与先前工作相比,Fast R-CNN采用了多项创新,在提高训练和测试速度的同时,也提升了检测准确率。Fast R-CNN 对非常深的 VGG16 网络的训练速度比 R-CNN 快 9×,测试时快 213×,并且在 PASCAL VOC 2012 上取得了更高的 mAP。

u013250861的博客 159

ruflo / Claude Flow Pair Programming 结对编程技能完全指南:driver/navigator 角色驱动、实时真值校验与 AI 协作实战

`pair` 是 ruflo 项目(基于 Claude Code 生态的 agent meta-harness,见 [根目录 CLAUDE.md](https://link.gitcode.com/i/5ab68437e2c5111b45d6644e79a78348))为 `claude-flow` CLI 提供的一套"人类 + AI 结对编程"技能。它以 **driver/navigator(驾

gitblog_01082的博客 831
上一篇: 启发测试计划:上下文模型
下一篇: Test Complete的Name Mapping技术
TIB
TIB
博客等级 码龄19年 2879粉丝 957原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值