测试--功能模块划分8.3

  1. 高内聚,低耦合
  2. 功能流程法
  3. 层次划分法
  4. 类型划分法

首先对于功能模块划分提出两个问题:

1.功能模块划分时应遵循什么样的原则?
2.功能模块划分有哪些比较好的方法?

首先说一下第一个问题:功能模块划分时应遵循什么样的原则?

原则:高内聚,低耦合
不知道大家对于这个词熟不熟悉,但是对于我自己来说是挺熟悉的,因为以前在大学备考计算机二级的时候经常会遇到一道选择题,考点就是高内聚,低耦合;当时不知道这是在讲什么东西,而且也只是一个选择题,就选择了死记硬背。

前一段时间看视屏学习的时候,又提到这个词,我就刻意去查了一下;后来才知道这个词挺有意思的;它分为两个部分的,第一部分是高内聚,第二部分是低耦合。下面就简单解释一下什么是高内聚,低耦合。

内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间;我也不太了解语名是什么,程序段比较好理解一点吧)联系的越紧密,则它的内聚性就越高。
耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
经过了名词解释后,有些小伙伴可能明白了为什么模块划分要遵循这个原则,也有一些小伙伴跟我当时一样,看了这些还是一脸懵逼,没关系,那就再解释的直白一点。
我本人的理解是:当一款软件(这里就拿全集来说吧),一个功能模块中的元素、小单元、选项之间关联得越紧密,这个软件的内聚性就越高,那么这个软件就越好。比如在全集的背包模块中分别包括:全部、比赛券、财神、表情四个选项按钮。这四个选项按钮之间关联得越紧密,那么对于背包系统就越好,即背包这个组件只负责物品方面的操作,房卡充值、元宝充值与它无关。
高内聚提供了更好的可维护性和可复用性。
这里写图片描述
然后再说说低耦合,全集中有很多模块,比如说充值功能模块、商城、战绩、活动、背包等,这些模块之间的关联程度越低,则模块的独立性越高。当模块独立性高,若果某一个模块出现了BUG,如背包模块出了问题;它不会影响到活动系统、战绩、商城、充值;不至于整个游戏都会出现问题,玩家还可以继续打牌,而程序猿只需要集中注意力把出问题的模块解决好就没有问题了。
这里写图片描述
其实说这些感觉工作上也不一定用的上,但是在以后讨论测试的时候,你的想法可能会比以前更有深度;在以后你可能会去做软件测试,可能还会继续做棋牌类的测试,所谓艺多不压身,多了解一些总该是好的。

好了,说完了功能模块划分的原则后,现在说一下功能模块划分的方法:

1.功能流程法
定义:将功能的基本流程画出来,根据流程的每个大的环节进行模块划分,然后再细化和查漏补缺。
举一个例子,比如说:请就银行ATM的取款功能进行模块划分?
那么对于这个问题,就可以得到下面的流程:
(1)插卡环节
(2)密码登录环节
(3)输入金额环节
(4)取走钱币环节
(5)取卡环节
看完这5个流程,有人可能会问,这样子就行了吗?密码的构成规定不需要研究一下吗?输入金额有没有最大值什么的也不需要研究一下吗?是的,你想的这些没有错,但是那些细节是在得到流程模块确定之后,再对某一个流程模块进行细化、查漏补缺等。对症下药很重要,回到这个问题,它是问如何进行模块划分,所以中但是模块的划分而不是某些小功能的研究;要做的是先将流程的模块确定出来,其次才是细化模块的一些东西,然后再查看缺漏的东西。
如果结合到我们大唐游戏中可以有这样的一个问题,请针对于利用代理后台为玩家充值房卡的功能进行模块划分?
对于这个问题,我们也可以得到下面的回答:
(1)打开代理后台网页
(2)密码登录
(3)房卡充值
(4)退出登录
这么首先是要列出了主要的功能流程,再对主要每一个功能精心细化,如打开代理后台网页,利用IE浏览器是不是正常打开,谷歌浏览器、360浏览器等;登陆的账号密码后台的要求是什么?账号有规定是8-16位吗?密码是不是不可以有空格,必须要字母跟数字的结合?房卡充值有没有快速搜索玩家的功能?
2.层次划分法
定义:按照逻辑层次逐层细化处模块的过程,比较适合用于UI划分,大的系统模块划分等。
结合我们平时测试的棋牌游戏,那么就可以理解为两部分,第一部分就是牌局外的内容,第二部分就是牌局内的内容。层次划分法其实就像剥洋葱一样,一层一层的往细的剥,直到最后最细的无法再分离出新的层次;然后把前面剥出来的每一层排列出来,这样子就得到了我们想要的功能层次划分图,我们进行测试就可以根据这个图一步一步的设计测试用例、执行测试用例;层次划分良好的测试用例用起来也会比较舒服。
这里写图片描述
这里只是简单地举一个例子,有些功能模块或许还可以分得更细,可以在私下自己深入研究。
3.类型划分法
定义:按照功能包含内容的不同类型进行划分。

这里举一个例子就是我最近也在测试一个背包系统,背包里面就分为消耗后数量会减少的物品与消耗后数量不变的物品。

比如说消耗后数量会减少的有:比赛劵、拜财神,这些物品用一个少一个,在背包中拥有数量也会根据使用或者获得而相应地改变。

消耗后数量不变的有:免费的表情(飞吻、送花、敲桌子),这些物品不管你使用多少次,都不会有数量上的减少。

设计测试用例的时候就可以根据数量会不会改变的这一类型而进行划分,你最后得到的测试用例会比较清晰明了、直观,

上面跟大家分享的东西是我看的一些视频,然后结合我们工作上相关的东西,对测试的一些理解,可能会有理解不到位,也可能对于你的测试工作没有太大的帮助;当然这几个模块划分的方法并不是学会一个就能所有项目都通吃,要因地适宜,针对不同的项目使用合适的方法。然后就是说一下我个人对于IT行业的理解,不管你是开发还是测试,你不去学习不意味着你是原地踏步,更可能是退后,因为现在的技术更新迭代速度非常快,多了解,多理解才能让你进步,你正年轻,此时不努力,何时才努力?

猜你喜欢

转载自blog.csdn.net/Tuziba/article/details/82344431