如何估算测试工作量

(一)常规的估算测试工作量的方法

作为一个管理者,你是否被询问到某个项目要花多少时间,多少人力测试;或是作为一个普通的测试员,你是否被询问到要花多少时间来完成某个任务或是一次回归测试?我想大多数在软件行业的人或多或少都会碰到这样的关于工作量估计的询问。那么你是怎么回答的呢?你对你自己的回答有信心吗?你是否最终发现实际上花去的时间和原本估计的时间大相径庭呢?

不同的人会使用许多不同的方法来估算及安排他们的测试工作量。不同的组织根据项目的类型,项目的内在风险,涉及的技术等而使用不同的方法。但是大多数时候测试工作量是和开发工作量合在一起的,没有一个单独的数字。

首先让我们来看看一些常规的估算测试工作量的方法:

1. Ad-hoc方法

这种方法下的测试工作量不基于任何确定的期限。工作一直继续直到达到一些由管理或市场人员预先定下的时间表。或者,一直到用完了预算的经费。
这种情况普遍存在于非常不成熟的组织,并且时常有100%的错误差数。

2.开发时间的百分比法Percentage of development time

.这个方法的基本前提是测试工作量依赖于开发时间/开发工作量。首先,开发工作量使用例如LOC或FP方法被估算出来,然后使用一些探索性的方法来限制测试的工作量。这种方法变化比较大而且通常基于以前的经验。

通常预留项目的总花费时间的35%给测试。

  • 5-7%给组件和集成测试
  • 18-20%给系统测试
  • 10%给接收测试(或回归测试等)

3.类比法(经验值法或历史数据法)

根据以前或相似项目(主要在项目性质,领域,规模上有相似)所积累的经验或历史数据来估算工作量。类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。需要收集以下相关的历史数据:

  • 在设计和实现阶段花费的时间
  • 测试工作的规模,例如用户需求的数量,页面数,功能点
  • 数据样式,例如实体,字段的数量
  • 屏幕或字段数量
  • 测试对象的规模,例如KLOC

4.WBS(work breakdown structure)估算法

将项目或产品分解为具体的工作,然后分别对各个工作进行时间估算,最终求和得出项目或产品的测试工作量/时间。

5.Delphi 法

Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式可以减轻估算的偏差。Delphi法鼓励参加者就问题相互讨论。这个技术,要求有多种相关经验人的参与,互相说服对方。

Delphi法的步骤是:

1、协调人向各专家提供项目规格和估计表格;

2、协调人召集小组会各专家讨论与规模相关的因素;

3、各专家匿名填写迭代表格;

4、协调人整理出一个估计总结,以迭代表的形式返回专家;

5、协调人召集小组会,讨论较大的估计差异;

6、专家复查估计总结并在迭代表上提交另一个匿名估计;

7、重复4-6, 直到达到一个最低和最高估计的一致。

6.PERT估计法

PERT对各个项目活动的完成时间按三种不同情况估计:一个产品的期望规模,一个最低可能估计,一个最高可能估计。用这三个估计用来得到一个产品期望规模和标准偏差的Pert 统计估计。Pert 估计可得到代码行的期望值E, 和标准偏差SD。

(二) 代码行分析方法

测试工作量的估计往往和软件开发的规模是紧密相关的.很多软件公司往往是在估计了即将要开发的软件规模后才做测试工作量的估计,然后求和得出项目的最终工作量估计.这种方法比较适用于有经验积累,测试和开发模式稳定的公司或项目,提供了一个比较准确,有参考的数字.但同时由于其完全依赖其前提-开发工作量的估计,显得比较脆弱,如果开发工作量出现较大偏差,测试工作量也就变得毫无用处.在加之代码行本身就存在着许多问题和局限,所以在选择其做为项目估算方法时需要好好了解它的原理,优缺点进而有选择性的使用.

代码行, 是来源与英文line of code.那么代码行分析方法就是就是对软件产品的源代码的行数进行测量.但是仔细想想,可能会有以下疑问:

  • 是计算物理行数,还是程序的命令数量?
  • 空行是否计算?
  • 注释是否计算?
  • 预定义文件是否计算?
  • 不同版本如何计算?
  • 这里面是否设计到一系列的规则定义问题?
  • 开发过程种的配置脚本,编译脚本是否计算?
  • 共享文件(例如共享的开发库文件种的头部文件)如何计算?

那么现在的一般规则是计算物理行数,不计算空行,不计算注释.对于其他选项,一般为计算源文件根目录下的所有文件.所以代码行指的是指所有的可执行的源代码行数,包括可交付的工作控制语言 (JCL : job control language) 语句、数据定义、数据类型声明、等价声明、输入 / 输出格式声明等。常使用的单位有: SLOC(single line of code)、KLOC(thousand lines of code)、 LLOC(logical line of code)、PLOC(physical line of code)、NCLOC (non-commented line of code)、DSI(delivered source instruction)。其中SLOC和KLOC比较常用.

代码行分析方法对技术人员是有意义的,因为它的确从某种程序上反映了软件的规模,并且是物理上可测量的.但是这种方法也存在如下诸多问题.

  • 在需求、计划、设计阶段因为本身没有代码行,需要靠估算来解决。总体上估算准确度不高,除非有多年的类似项目经验。估算的准确程度取决于是否有同类项目的数据和估算人员的经验。在编码、测试、实施阶段可以直接数出来。
  • 在满足客户的要求以及反映进度方面的能力差强人意,对于管理者意义不大.因此项目很难从整体上跟踪代码行数的指标采取行动.
  • 近来可视化编程工具的大量采用,以及模板库,类库的广泛采用,在程序的结果中有大量自动生成的代码或者复杂的自动配置脚本或资源文件设置,在采用这些工具的项目中,用代码行分析方法得到数值的意义已经大大降低.
  • 对于不同的编程语言来说,代码行也缺乏可信转换方式.

尽管代码行方法有很多缺点,但是由于它容易使用,操作成本低(如果采用适当的支持工具),还是推荐使用代码行作为软件项目管理的参考和补充手段.

(三) COCOMO模型

代码行分析方法作为一种度量估计方法,在20世纪80和90年代得到非常广泛的发展,在业界开发了又许多中估算工作量和进度的参数模型,其中最著名的就COCOMO模型,它的最新版本是COCOMO II模型.

COCOMO,英文全称为constructive cost model,中文为构造性成本模型.它是一种精确、易于使用的,基于模型的成本估算方法,最早由勃姆 (Boehm) 于 1981 年提出。从本质上说是一种参数化的项目估算方法,参数建模是把下那个目的某些特征作为参数,通过建立一个数字模型预测项目成本(类似于居住面积作为参数计算的整体的住房成本).

在COCOMO模型中,工作量调整因子(Effort Adjustment Factor, EAF)代表多个参数的综合效果,这些参数使得项目可以特征化和根据COCOMO数据库中的项目规格化.每个参数可以定位很低,低,正常,高,很高.每个参数都作为乘数,其值通常在0.5到1.5之间,这些参数的乘积作为成本方程中的系数.

COCOMO用3个不同层次的模型来反映不同程度的复杂性,他们分别为

  • 基本模型 (Basic Model). 是一个静态单变量模型,它用一个以已估算出来的源代码行数 (LOC) 为自变量的函数来计算软件开发工作量。
  • 中间模型 (Intermediate Model). 则在用 LOC 为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。
  • 详细模型 (Detailed Model) 包括中间 COCOMO 模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。

同时根据不同应用软件的不同应用领域,COCOMO模型划分为如下3种软件应用开发模式:

  • 组织模式(Organic Mode).这种应用开发模式的主要特点是在一个熟悉稳定的环境种进行项目开发,盖项目与最近开发的其他项目有很多相似点,项目相对较小,而且并不需要许多创新.
  • 嵌入式应用开发模式 (Embedded Mode).在这种应用开发模式种,项目受到接口要求的限制.接口对整个应用的开发要求非常搞,而且要求项目有很大的创新,例如开发一种全新的游戏.
  • 中间应用开发模式 (Semidetached Mode).这时介于组织模式和嵌入式应用开发模式之间的类型.

COCOMO 模型具有估算精确、易于使用的特点。在该模型中使用的基本量有以下几个: (1)DSI( 源指令条数 ) ,定义为代码行数,包括除注释行以外的全部代码。若一行有两个语句,则算做一条指令。 (2)MM( 度量单位为人月 ) 表示开发工作量。 (3)TDEV( 度量单位为月 ) 表示开发进度,由工作量决定。 (4)COCOMO 模型重点考虑 15 种影响软件工作量的因素,并通过定义乘法因子,从而准确、合理地估算软件的工作量。

但是COCOMO也存在一些很严重的缺陷,例如分析时的输入时优先的,不能处理意外的环境变换,得到的数据往往不能直接使用,需要校准,只能得到过去的情况总结,对于将来的情况无法进行校准等.

(四)功能点分析方法之一-原理篇

功能点分析法 (FPA:function point analysis) 是一种相对抽象的方法,是一种”人为设计”出的度量方式,主要解决如何客观,公正,可重复地对软件地规模进行度量的问题.

FPA 法由 IBM 的工程师艾伦 · 艾尔布策 (Allan Albrech) 于 20 世纪 70 年代提出,随后被国际功能点用户协会 (IFPUG:The International Function Point Users‘ Group) 提出的 IFPUG 方法继承,从系统的复杂性和系统的特性这两个角度来度量系统的规模,其特征是: “ 在外部式样确定的情况下可以度量系统的规模 ” , “ 可以对从用户角度把握的系统规模进行度量 ” 。功能点可以用于 “ 需求文档 ” 、 “ 设计文档 ” 、 “ 源代码 ” 、 “ 测试用例 ” 度量,根据具体方法和编程语言的不同,功能点可以转换为代码行。经由 ISO 组织已经有多种功能点估算方法成为国际标准,如: ① 加拿大人艾伦 · 艾布恩 (Alain Abran) 等人提出的全面功能点法 (full function points) ; ② 英国软件度量协会 (UKSMA : United Kingdom Software Metrics Association) 提出的 IFPUG 功能点法 (IFPUG function points) ; ③ 英国软件度量协会提出的 Mark II FPA 功能点法 (Mark II function points) ; ④ 荷兰功能点用户协会 (NEFPUG:Netherlands Function Point Users Group) 提出的 NESMA 功能点法,以及软件度量共同协会 (COSMIC:the Common Software Metrics Consortium) 提出的 COSMIC-FFP 方法,这些方法都属于艾尔布策功能点方法的发展和细化。

功能点分析方法具体包括两部分,一部分是测量的具体步骤和方法,通常称为功能点规模测量方法(Functional Size Measurement, FSM),另一部分则是功能点分析方法的具体应用.除非特别说明,通常的情况下并不分开讨论,而是统称为功能点分析方法(Functional Point Analysis, FPA),包括对应用软件的规模测量活动和后续应用测量结果进行适当的项目管理活动.

功能点分析方法有一些相对完整的,自成体系的概念,主要包括基础功能部件(Base Function Component, BFC), BFC类型,边界,用户,本地化,功能领域,功能规模,功能点规模测量的范围,功能点规模测量过程,功能点规模测量方法,功能性需求,质量需求,技术性需求,数值调整以及调整因子等15个关键概念.

功能点分析的基本计数就是依据标准计算出的系统 ( 或模块 ) 中所含每一种元素的数目:

① 外部输入数 (EI : external input) :计算每个用户输入,它们向软件提供面向应用的数据。输入应该与查询区分开来,分别计算。

② 外部输出数 (EO : external output) :计算每个用户输出,它们向软件提供面向应用的信息。这里,输出是指报表、屏幕、出错信息,等等。一个报表中的单个数据项不单独计算。

③ 外部查询数 (EQ : external query) :一个查询被定义为一次联机输入,它导致软件以联机输出的方式产生实时的响应。每一个不同的查询都要计算。

④ 内部逻辑文件 (ILF : internal logical file) :计算每个逻辑的主文件,如数据的一个逻辑组合,它可能是某个大型数据库的一部分或是一个独立的文件。

⑤ 外部接口文件 (EIF : external interface file) :计算所有机器可读的接口,如磁带或磁盘上的数据文件,利用这些接口可以将信息从一个系统传送到另一个系统。

转载:http://www.uml.org.cn/xmgl/201007295.asp

时间: 2024-08-27 01:31:18

如何估算测试工作量的相关文章

如何估算测试工作量(一)常规的估算测试工作量的方法

如何估算测试工作量(一)常规的估算测试工作量的方法作为一个管理者,你是否被询问到某个项目要花多少时间,多少人力测试:或是作为一个普通的测试员,你是否被询问到要花多少时间来完成某个任务或是一次回归测试?我想大多数在软件行业的人或多或少都会碰到这样的关于工作量估计的询问.那么你是怎么回答的呢?你对你自己的回答有信心吗?你是否最终发现实际上花去的时间和原本估计的时间大相径庭呢?不同的人会使用许多不同的方法来估算及安排他们的测试工作量.不同的组织根据项目的类型,项目的内在风险,涉及的技术等而使用不同的方

测试管理-测试工作量估算实践

测试工作量估算是整个测试过程中不可忽视的环节,关乎项目整体的交付计划及时间工期安排.预估的越准确,对项目整体节奏的把握更有利. 我们首先要强调,估算估算,本身就带有预测性质,其准确程度是要受到多方面因素制约的,尤其是信息的充分性. 越是大型的复杂项目,对于估算的要求就越高:反之,小规模“短频快”的项目则对于估算要求不那么高. 1. 估算办法 如何得出对于测试时间的准确估算,可以从三种思路去保证: 参照以往项目的经验 依靠专家经验进行估算 使用专业的估算算法 项目中常见的估算形式有自上而下式的,也

测试工作量的评估方法

测试排期是整个测试过程非常重要的环节,关乎项目整体的上线计划及版本节奏.测试排期首先要评估测试的工作量.所以测试工作量评估的越准确,对项目整体节奏的把握更有利. 工作量评估得过多影响上线节奏,人员工作强度变低影响效率,工作量评估过少,造成的影响更大,如果可以通过加班消化还好,如果消化不了项目会延期,错过活动等等,对测试口碑的影响将是毁灭性的.尤其是一些紧急的需求,要求快速上线,更有可能开发的改动方案要参考测试的工作量,如果测试回归工作量过大,为了满足上线要求开发有可能会更换开发方案.此时如果测试

全程软件测试之测试需求分析与计划

全程软件测试之测试需求分析与计划 在项目启动之后,就要着手软件项目的计划,包括软件测试计划.软件测试计划是整个开发计划的组成部分,同时,它又依赖于软件组织过程.项目的总体计划.质量文化和方针.在测试计划活动中,首先要确认测试目标.范围和需求,其中"测试需求分析"是关键任务,然后在测试需求基础上制定测试策略,并对测试任务.时间.资源.成本和风险等进行估算或评估. 无论何时进行估算,我们都是在预测未来,并会接受某种程度的不确定性.软件项目计划的目标是提供一个框架,不断收集信息,对不确定性进

5.2 测试计划和估算

5.2 测试计划和估算 2015-06-23 5.2.2. 测试计划活动(K3) 对整个系统或部分系统可能的测试计划活动包括: 确定测试的范围和风险,明确测试的目标: 定义测试的整体方法(测试策略),包括测试级别(按测试阶段或层次)的定义.入口和出口准则的定义: 把测试活动整合和协调到整个软件生命周期活动中去(采购.供应.开发和运维): 决定测试什么?测试由什么角色来执行?如何进行测试?如何评估测试结果? 为测试分析和设计活动安排时间进度: 为测试实现.执行和评估安排时间进度: 为已定义的不同测

测试基础:

为什么需要软件测试? 很多时候: 每当LOL更新一个新英雄或者某个英雄太强,场场五杀,由于过分变态,游戏玩家纷纷投诉,这个英雄太bug了!赶紧把刀妹削弱了!这个英雄的手太长了,让我们削弱刀妹吧! 菜逼如你在玩火热的吃鸡(绝地求生)时,要不是有系统保护,可能在落地之前就被干死了,落了地还没见着人,就被啪啪啪给打死了,你肯定大喊一声,这他娘的有bug!快把老子的8倍镜拿过来,看看是哪个菜逼开的枪!!! 再比如大家现在都喜欢用微信支付宝,如果你滴扫一下,你的微信提示你扣款了998元,但是商家说没收到,

我的测试用例设计-01测试用例的个人见解

刚入行的时候,看了很多关于测试相关的文章,记得有一篇说到测试用例是测试灵魂让我印象深刻.如今,我入行几年了,越发深感测试用例的设计重要性,可以这么说,测试用例的设计与管理是测试工程师的核心技能.我发现很多测试的同行都向往去追求新的测试工具,测试技术手段而忽视测试用例的设计,测试用例的设计其实是测试方法.测试思路的体现,如果一面追求技术手段而忽视方法思路的锻炼,本人就觉得有点本末倒置. 说到此,突然就联想到一个武侠小说的例子.武侠小说里华山派有分剑宗和气宗两个派别,网络上也很多在讨论究竟剑宗厉害还

如何估算大型项目的工作量

我是一个九人开发团队的领头人.一般来说,我们所从事的是(项目)支持和强化的工作,但是有的时候,我们被要求完成一项大型工作,而这项工作大到肯定可以被作为一个项目来看待.我们所面临的问题是:我们很难估算需要在这些大型项目上所花费的工作量和时间.通常我们对工作量的估算不足,所以搞得在最后几个星期里才拼命加班完成所有的工作.我正在尝试先预估工作量,然后在未来将其翻倍.有没有什么简单的方法能够解决这个问题?--Kurt 回答: Kurt:在先前的专栏里,我们看到了在估算大型工作的工作量问题上,很多支持人员

Project Management: 软件项目估算与计划不是一般的难!

摘要:估算.计划.计划跟踪是项目管理的主要工作,难度之高超乎你想象!光靠学习项目管理理论难以管好项目,而往往真能管好项目的都是那些在具体项目中滚打出来的实干人士.本文将会让你全面学习项目估算.计划.计划跟踪的知识,体验实际项目管理的难度,学到提高项目管理水平的一些方法. 大纲:1.从建筑工程说起2.估算要估啥?3.估算如何做出来?4.计划有什么内容?5.计划是如何做出来的?6.如何跟踪计划?7.优秀项目经理是怎样炼成的? 特别声明:如需转载此文,请给出指向本网站的连接,如下:作者:张传波摘自:h