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

发表于:2013-2-07 11:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈逊    来源:51Testing软件测试网采编

分享:

  Update

  Update事务的输入和输出数量可多可少,关键看系统Update的规模,比如“编辑宝贝”跟“发布新宝贝”相比,输入输出的数量都非常多。像“修改我的登录密码”这样的,数量就非常少了。Update事务的输入输出识别,与Create类非常相似,因为大部分Update事务也是表单提交的方式。

  这里需要注意的是,系统中会存在一些“不起眼”的Update事务,分析时千万别漏了。比如大部分会员有多个收货地址,然后在列表中有一个鼠标悬停出现的“设置为默认收获地址”的按钮,当用户点击的时候,只是修改收获地址的一个属性,非常的隐蔽。这也是一个逻辑事务,它的输入是用户id,收货地址id,输出只有1个,就是点击按钮后,系统提示修改成功,非常简单,但是不要遗漏。

  Delete

  Delete类事务的分析相对简单一些,多数删除功能,都是直接对数据进行删除,因此输入一般就是数据主键id这1个。不过,有一些数据在删除前,需要先做一些逻辑判断,看看能不能删,这样输入就多了,相应的实体也会增加。比如,“已经发布的宝贝不能删除”,那么“宝贝发布状态”就是1个输入,“已经有交易的宝贝不能删除”,那么实体就不仅仅是宝贝,还有交易记录,输入也要增加“交易记录id”;如果规则更复杂“有未完成交易的宝贝不能被删除”,那么输入还要增加“交易状态”,依此类推。

  List

  List事务是一个重点,最后讲,它的输入输出计算比较复杂,而且多变,所以大家不仅要理解我下面讲的东西,还要能自己推理,分析自己实际遇到的各种List。List事务实质上跟Read很像,不同在于Read只看1个对象,List要看多个。首先看最常出现的List事务:DataGrid,这种控件一般是一个二维表格,它的输入与Read类似,比如我的订单列表的输入是会员userid,我的已买到订单列表还要增加订单类型这个输入,我的近3个月已买到订单再加订单时间,等等。有些列表上方,会有查询功能,比如按照名称查询,这些查询项会影响列表的显示数据,因此是输入。大家如果想象一下这个列表对应的sql语句,就好理解了,where后面跟的都是输入。

  DataGrid里的输出比较直观,每一列就是一个输出,对应sql语句里的select后面的字段,注意,有些列显示的不仅仅是文字,还有图片,颜色,这些都要单独计数。

  对于DataGrid来说最纠结的要属“翻页”和“排序”功能,这究竟是算输入还是输出呢?经过推理我们发现,翻页功能对显示的数据是有影响的,比如我翻到第二页(假设每页10个数据对象),很多程序会控制从数据库里读取的数据,只取出第11到20的数据,也是在sql的where后面加条件,所以,翻页属于输入的计数,流行的翻页一般是“上一页”“下一页”这样的按钮或者是直接输入数字翻页,只要出现1种,输入+2,要是两种都有,+4。再说说排序,排序对应的sql标记是order by,不是select也不是where,比较另类,究竟算哪边合适呢?在MkII的相关资料里也没有找到答案。通过比较发现order的操作与where更接近一些,相似度更大,都是影响数据的检索范围,因此我们把排序也认定为输入。DataGrid如果有1列提供排序功能,那么输入+1,多列的话,依此类推。

  前文曾经提到过,显示数据对象的radio控件,也是List类的事务,它的输入,就是显示这些数据的条件。比如买家购买商品时,有个收货地址的radio控件,因为是“我的”地址,所以userid是1个输入。输出就要看这个radio展示了数据对象的哪些属性,有几个算几个。比如收货地址的姓名、省、市、区、邮编,这些都是不同的字段,但是在radio里全部拼在一起,要算5个输出。

  还有一类控件使用也较多,就是树形控件,这也是List类的逻辑事务。输入算法就不说了,同上,重点说输出。树形控件里的每个节点,一般都是一个数据对象,节点会有名称、颜色、加粗、小图标这么几种显示元素,用来表示数据对象的属性,这些都是输出,单独计数。树形控件有特殊的展开、折叠功能,这个不太好分类,我们直接规定,输出+4,因为在折叠上我们需要投入一点测试成本。如果一棵树里展示了两种数据对象,别忘了实体要+1。

  List的例子我们就讲3个,大家还有可能遇到各种五花八门的List逻辑事务,只要掌握这个原则:输入会影响显示数据的范围,而输出是展示数据的各个属性。大家只要掌握规律,细心推理,遇到问题方可迎刃而解。

  Part3的主要内容都讲完了,最后,讲一下功能点估算的技巧。想要算出一个项目的功能点规模,并不一定要把每个逻辑事务的分值都精确的计算出来。大家可以先把逻辑事务进行分类,可以按照CRUDL分类,也可以按照你自己的经验分类,然后挑选一些重要的,典型的逻辑事务,进行仔细的计算,再给每个类型的逻辑事务一个平均的估算值,这样总分就很快可以算出了。如果你需要尽快算出总分,可以参考这种做法。

相关链接:

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

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

22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • 测试_周云杰
    2013-5-16 14:16:06

    假如服务端有个接口A的功能点是a个,程序会在多处调用接口A,A接口在整个程序中的功能点是否仍然是a个?还是说每被调用一次,功能点都要累加一次?

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号