功能点算法及在软件测试中的应用.docx

上传人:b****4 文档编号:922147 上传时间:2022-10-14 格式:DOCX 页数:11 大小:27.24KB
下载 相关 举报
功能点算法及在软件测试中的应用.docx_第1页
第1页 / 共11页
功能点算法及在软件测试中的应用.docx_第2页
第2页 / 共11页
功能点算法及在软件测试中的应用.docx_第3页
第3页 / 共11页
功能点算法及在软件测试中的应用.docx_第4页
第4页 / 共11页
功能点算法及在软件测试中的应用.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

功能点算法及在软件测试中的应用.docx

《功能点算法及在软件测试中的应用.docx》由会员分享,可在线阅读,更多相关《功能点算法及在软件测试中的应用.docx(11页珍藏版)》请在冰豆网上搜索。

功能点算法及在软件测试中的应用.docx

功能点算法及在软件测试中的应用

功能点算法及在软件测试中的应用

——MkII功能点算法与MVC模型

\

  从这篇文章开始,我会用连载的方式,记录淘宝测试团队对功能点算法的研究和实践过程。

  从上个世纪70年代开始,一些软件企业就开始引入“功能点分析算法”,来评估软件功能的规模,然后便可以对软件开发的成本和工期,进行精确的度量,也可以对开发团队的生产率进行考核评估。

半个世纪以来,很多种不同的功能点算法模型被建立起来,MkII功能点算法是其中一种比较常用的模型。

  随着淘宝网站的高速发展,淘宝开发团队规模也不断增大,于是必然要面对管理问题。

人数的增多必然带来管理层级的增多,这样很容易出现管理结构的臃肿,管理成本增高。

如果我们引入一种简单而且科学的工作度量模型,让每个人每个团队的工作质量和效率用数字来说话,便可以促进管理结构的扁平,简化管理过程,每个管理者可以管理更多的人,并且对下属的工作了如指掌。

  功能点算法就是为了解决如何度量工作效率的问题,而工作质量主要是依靠分析各种Bug数据,我们在别的文章里讨论。

  首先我们讲一下MVC模型,这是目前web开发的一种非常流行的软件架构模式。

它把WEB应用程序定义为3个部分,每个部分负责完成特定的任务:

  ●Model模型

  ●View视图

  ●Controller控制器

  Model主要与数据库交互,把数据表转换成对象,并且实现基本的数据读写逻辑,比如在淘宝网,商品就是一个Model。

View负责实现界面的设计,我们浏览网页看到的WEB界面控件,比如按钮、文本框、GRID都是在View中定义的,设计View主要是用Html和JS。

用户在View层进行的各种操作(比如点击按钮),就会启动Controller里的函数,主要的业务逻辑代码,都写在Controller里了,其实也就是对各种Model进行增删改查,比如购买一个商品。

  关于MVC的更多详细说明请参考维基百科。

  接下来我们介绍MkII功能点算法,淘宝测试选择MkII的主要原因是,它的算法和MVC模式非常的吻合,可以说是黄金搭档。

  MkII功能点算法是这样:

先要给各个功能模块划分逻辑事务,然后针对每个逻辑事务,分析输入DET(DataElementType)和输出DET的数量,以及关联的实体类型数量,再根据一个算法公式,计算出功能点指数:

  功能点=输入DET×0.58+实体类型×1.66+输出DET×0.26

  逻辑事务指用户在WEB应用程序中的原子操作。

很多开发团队都会设计UseCase,一般来说一个UC对应一个逻辑事务。

注意:

逻辑事务一定是记录用户行为的,而不是程序内部的处理逻辑。

不过在实际的分析中,我们发现逻辑事务的个数,往往要大于UC的个数,这是正常的,主要因为很多UC包含的信息很多。

  我们用淘宝的“购买商品”来举例说明怎么划分逻辑事务,先来看购买商品的页面:

  在这个页面中,左边一块是显示商品的简要信息,这是一个逻辑事务:

“查看商品信息”,右边最上面一个收货地址的radiobutton,也是一个:

“展示我所有的收货地址”,右边下面一组文本输入框加一个按钮,是一个:

“为当前商品创建一个订单”。

  在MVC中,逻辑事务对应Controller,每个逻辑事务都可以在Controller里面找到一个public函数。

  再讲一下输入DET和输出DET。

比如刚才的“为当前商品创建一个订单”这个事务,页面上输入信息的控件,都是输入DET,比如文本框、按钮,都是输入DET。

这个事务大约有10个输入DET:

“收货地址”、“购买数量”、“运送方式”等等。

输出DET指应用程序给用户提供的所有的提示信息,以文字提示的方式知会用户。

比如“购买成功”、“您没有绑定支付宝,不能购买”、“商品库存不足,无法购买”、“购买数量必须输入整数”等等。

这个事务的输出DET数量大约是20个。

  在MVC中,输入DET和输出DET对应View。

每个输入DET和输出DET都能在View中找到对应控件。

  最后讲引用实体,在创建订单事务里,引用的实体有很多。

订单成功后要扣减商品库存,因此商品算1个;订单本身是1个;订单需要同步生成支付宝交易,支付宝算1个;还有物流记录算1个,等等,大约是5个实体以上。

  在MVC中,引用实体对应Model。

  到此为止这个逻辑事务的数据收集完整,代入公式计算得出结果:

  10×0.58+5×1.66+20×0.26=19.3

  当然这只是一个DEMO,数字都是估算的,实际情况肯定比这个要复杂,算出的功能点指数就会多一些。

需要注意的是,使用MkII算法计算出的功能点指数,只是一个数值,代表应用程序的功能规模,和我们平时听到开发说的“我修改了一个功能点”,概念上是不同的。

所以我们用“功能点指数”这个概念,不过为了沟通起来方便,还是简化成“功能点”了。

  MkII功能点算法是非常适合于淘宝这样的互联网公司的。

不过由于WEB应用程序的交互日趋复杂,JS被大量使用,因此在实践中,如何划分逻辑事务,如何统计输入输出,还需要进一步的研究。

——MkII功能点算法与MVC模型

  从这篇文章开始,我会用连载的方式,记录淘宝测试团队对功能点算法的研究和实践过程。

  从上个世纪70年代开始,一些软件企业就开始引入“功能点分析算法”,来评估软件功能的规模,然后便可以对软件开发的成本和工期,进行精确的度量,也可以对开发团队的生产率进行考核评估。

半个世纪以来,很多种不同的功能点算法模型被建立起来,MkII功能点算法是其中一种比较常用的模型。

  随着淘宝网站的高速发展,淘宝开发团队规模也不断增大,于是必然要面对管理问题。

人数的增多必然带来管理层级的增多,这样很容易出现管理结构的臃肿,管理成本增高。

如果我们引入一种简单而且科学的工作度量模型,让每个人每个团队的工作质量和效率用数字来说话,便可以促进管理结构的扁平,简化管理过程,每个管理者可以管理更多的人,并且对下属的工作了如指掌。

  功能点算法就是为了解决如何度量工作效率的问题,而工作质量主要是依靠分析各种Bug数据,我们在别的文章里讨论。

  首先我们讲一下MVC模型,这是目前WEB开发的一种非常流行的软件架构模式。

它把WEB应用程序定义为3个部分,每个部分负责完成特定的任务:

  ●Model模型

  ●View视图

  ●Controller控制器

  Model主要与数据库交互,把数据表转换成对象,并且实现基本的数据读写逻辑,比如在淘宝网,商品就是一个Model。

View负责实现界面的设计,我们浏览网页看到的WEB界面控件,比如按钮、文本框、GRID都是在View中定义的,设计View主要是用Html和JS。

用户在View层进行的各种操作(比如点击按钮),就会启动Controller里的函数,主要的业务逻辑代码,都写在Controller里了,其实也就是对各种Model进行增删改查,比如购买一个商品。

  关于MVC的更多详细说明请参考维基百科。

  接下来我们介绍MkII功能点算法,淘宝测试选择MkII的主要原因是,它的算法和MVC模式非常的吻合,可以说是黄金搭档。

  MkII功能点算法是这样:

先要给各个功能模块划分逻辑事务,然后针对每个逻辑事务,分析输入DET(DataElementType)和输出DET的数量,以及关联的实体类型数量,再根据一个算法公式,计算出功能点指数:

  功能点=输入DET×0.58+实体类型×1.66+输出DET×0.26

  逻辑事务指用户在WEB应用程序中的原子操作。

很多开发团队都会设计UseCase,一般来说一个UC对应一个逻辑事务。

注意:

逻辑事务一定是记录用户行为的,而不是程序内部的处理逻辑。

不过在实际的分析中,我们发现逻辑事务的个数,往往要大于UC的个数,这是正常的,主要因为很多UC包含的信息很多。

  我们用淘宝的“购买商品”来举例说明怎么划分逻辑事务,先来看购买商品的页面:

  在这个页面中,左边一块是显示商品的简要信息,这是一个逻辑事务:

“查看商品信息”,右边最上面一个收货地址的radiobutton,也是一个:

“展示我所有的收货地址”,右边下面一组文本输入框加一个按钮,是一个:

“为当前商品创建一个订单”。

  在MVC中,逻辑事务对应Controller,每个逻辑事务都可以在Controller里面找到一个public函数。

  再讲一下输入DET和输出DET。

比如刚才的“为当前商品创建一个订单”这个事务,页面上输入信息的控件,都是输入DET,比如文本框、按钮,都是输入DET。

这个事务大约有10个输入DET:

“收货地址”、“购买数量”、“运送方式”等等。

输出DET指应用程序给用户提供的所有的提示信息,以文字提示的方式知会用户。

比如“购买成功”、“您没有绑定支付宝,不能购买”、“商品库存不足,无法购买”、“购买数量必须输入整数”等等。

这个事务的输出DET数量大约是20个。

  在MVC中,输入DET和输出DET对应View。

每个输入DET和输出DET都能在View中找到对应控件。

  最后讲引用实体,在创建订单事务里,引用的实体有很多。

订单成功后要扣减商品库存,因此商品算1个;订单本身是1个;订单需要同步生成支付宝交易,支付宝算1个;还有物流记录算1个,等等,大约是5个实体以上。

  在MVC中,引用实体对应Model。

  到此为止这个逻辑事务的数据收集完整,代入公式计算得出结果:

  10×0.58+5×1.66+20×0.26=19.3

  当然这只是一个DEMO,数字都是估算的,实际情况肯定比这个要复杂,算出的功能点指数就会多一些。

需要注意的是,使用MkII算法计算出的功能点指数,只是一个数值,代表应用程序的功能规模,和我们平时听到开发说的“我修改了一个功能点”,概念上是不同的。

所以我们用“功能点指数”这个概念,不过为了沟通起来方便,还是简化成“功能点”了。

  MkII功能点算法是非常适合于淘宝这样的互联网公司的。

不过由于WEB应用程序的交互日趋复杂,JS被大量使用,因此在实践中,如何划分逻辑事务,如何统计输入输出,还需要进一步的研究。

——划分逻辑事务

  在前一篇文章我们讲到,“逻辑事务”是统计功能点指数的最小单元,所以进行科学的划分,对统计的正确性非常重要。

另外,划分逻辑事务其实也是一个需求分解的过程,测试工程师可以通过这个过程来分析项目需求,让需求分析工作更加标准化,同时也降低沟通成本,大家围绕逻辑事务进行讨论。

  逻辑事务一般描述的是用户的行为,所以命名一般都是动宾结构,例如“注册淘宝会员”、“查看宝贝的详情”。

也有少数的逻辑事务是由一些定时程序产生的,例如“同步用户的最新信息”。

有的项目会在需求文档里面专门描述一些“业务规则”,注意,规则不是逻辑事务,规则一定是依附与某个逻辑事务的,例如“不准注册同名的会员”这个规则其实是属于“注册会员”这个逻辑事务。

  在以数据库为基础的WEB应用中,逻辑事务一定是对某项数据进行的增删改查操作,也就是我们常说的CRUDL的其中之一。

CRUDL分别代表:

  ●Create创建新数据(注册会员)

  ●Read读取数据的信息(查看宝贝)

  ●Update更新数据(保存收货地址)

  ●Delete删除数据(清空购物车)

  ●List列出一批数据(各种DataGrid)

  下面我们对这5种逻辑事务分别进行分析,并且结合具体的案例来看看划分的规则。

如果逻辑事务划分正确,后面的计算出现误差就不会太大。

  Create

  每个WEB应用程序,都是从创建数据开始的,比如“发布新宝贝”、“注册新会员”,创建数据会在数据表中新增记录。

创建数据一般由用户在页面上点击按钮触发,也可能是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1