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

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

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

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

  ——计算逻辑事务的实体、输入DET、输出DET

  前一篇文章(Part2)介绍了如何划分逻辑事务,文章发表后,大家提出了很多非常好的问题,我这里先简单回复一下,作为我们Part3的引子。

  Q:逻辑事务分解对于那种“增删改查”类型的功能点比较适用,但是流程类的功能点,就不合适了吧?

  A:就拿交易流程来说好了,我们在设计交易流程的TC时,是把下单、付款、发货、确认等操作,分别进行设计的,这些操作,其实都是单独的逻辑事务,实际上,开发在设计程序的时候,也是分开做的,不可能全写在一个函数里面。

  Q:我发现有的逻辑事务,比如点击一个按钮以后,程序既做了查,又做了改,按照你Part2里的分类,是不是应该算两个逻辑事务。

  A:这个怪我没说清楚,这应该是算一个逻辑事务,他可以同时包含多个CRUD的action。

  Q:我们以前设计TC很多都是基于一个页面的,现在按照这种方式,一个页面会分解成多个逻辑事务,这样感觉会比较零散。

  A:测试设计和测试执行是有区别的,测试设计的目标是把被测系统分析清楚,并不是编写出完整的执行脚本,实际上在测试执行过程中,有经验的测试工程师是会把几个逻辑事务放在一起测,效率极高。

  好,问题先讨论到这里,下面我们开始正题,如何计算每个逻辑事务的实体、输入和输出。这篇文章我们仍然会分别对CRUDL这五类逻辑事务进行分析,因为他们的输入和输出的特点,各有不同。不过,对于“实体”的计算,各类逻辑事务的计算方法相同,所以先单独讲一下实体。

  淘宝系统里存在下面这些实体:会员、宝贝、交易记录、宝贝类目、评价记录、店铺等等。实体的英文原名是Entity Type,也就是我们平时讨论中经常出现的“对象”,经常接触代码的工程师会在代码里发现很多“xxxDO”,比如UserDO、OrderDO,这些和实体是完全对应的。另外还有一个简单的办法来识别实体,就是看数据库的表,一般一个实体肯定至少对应一张表,比如会员这个实体在数据库里,必然有一张users表。

  分析一个逻辑事务有哪些实体,是分析的第一步,也是最重要的一步。实体越多,开发和测试的复杂度越高。从MkII算法里也能看出,实体的系数是1.66,远高于输入和输出。另外,分析实体可以帮助测试工程师搞清楚,这个事务的范围,对事务有一个全局的概念。分析完后,测试工程师一般会这么说:“哦,这个事务跟这几个对象有关!”在新人学习和测试设计评审中,实体的分析也能起到非常大的帮助作用。

  下面开始分类讲CRUDL的输入和输出:

  Create

  注册会员、发布新宝贝,这都属于Create类型逻辑事务,这类事务一般都有一个内容较多的“表单”,里面有一些输入框、checkbox、radiobutton和一个确认提交按钮,这里的每个控件,都要计算为1个输入DET。需要注意,radio控件一般会有多个选项,不能算多个输入,而只能算一个;提交按钮也要算1个输入。除了这些页面控件类输入,还有一类输入,是“隐含”的。比如卖家在发布新宝贝时,卖家自己的userid就是一个输入,因为在发布成功后,这个宝贝会拥有卖家的userid,只是这个id并不需要卖家填写,而是放在系统缓存里。虽然是隐含输入,却也参与了逻辑运算,因此要计数。这是Create的两类输入。

  Create事务的输出一般会有以下一些信息,“注册成功”、“此会员名已被人注册”、“密码太短”。当用户试图执行这个事务,系统给用户所有可能的提示信息,都要记为一个输出。有些输出跟某个输入,有直接的逻辑关系,比如“此会员名已被人注册”只跟“会员名”输入框里所填的信息有关,有的输出,则是由好几个输入组合在一起,才能出现,分析的时候,需要弄明白,不过这点区别不影响计数。

  如果把逻辑事务看成一个“函数”,那么输入就可以抽象为函数的输入参数,而输出就是函数的所有可能性的返回值,以及函数抛出的各种异常。后面几类逻辑事务,也可以抽象为这种定义,大家后面自己推理试一试。

  Read

  Read类事务是读取一个对象的详细信息,比如我们查看一个宝贝的详细信息。它的输入个数一般比较少,其中最基本的,就是这个对象的主键id,比如宝贝的id。如果不同类型的用户查看宝贝时,会有不同的显示信息,那么用户的userid和用户类型这2个要记为输入。如果宝贝的某些属性会影响显示,比如鞋城宝贝会有个图标,那么输入也要+1。其实如果业务逻辑复杂,输入也不少。我们可以把这些输入抽象的称为“影响对象显示的一些属性”。

  一般来说Read的输出都比较多,这个对象能显示在页面上的属性,都要记为输出,比如“宝贝名称”、“价格”、“颜色”等等。除了文字类,图片也是输出,比如宝贝的缩略图和表示宝贝属性的一些小图标,都算。另外,有的图片和Label有链接,这里的链接要单独算输出,因为一个纯文本,肯定没有一个附带http链接的文本信息量多。

21/212>
《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号