精准测分:基于函数调用关系链的用例消振算法(上帝视角)

一、引言
(1)问题简述:当一个功能用例执行时,背后就会有数以千计的函数被调用运行。其中有与这个功能用例息息相关的业务函数,也有与这个功能用例描述无关的数据上报函数、log日志函数。如何区分什么是核心业务函数,什么是无关函数?

(2)《三体》像我们阐述了这样一个事实:一个文明不会孤立的存在,宇宙有其社会学法则。在这个法则的作用下,一个文明或主动或被动的与其他文明产生关联关系。地球文明不是孤岛。

二、函数孤岛
地球文明不是孤岛,函数呢?从静态的视角观察函数,她只是一个一个在文件中孤立存在的代码片段。但从动态的视角观察,函数与函数之间就天然的发生了关联。这个关联是怎么产生的呢?答案是函数调用关系链。函数调用关系链就是函数自己的宇宙社会学法则,函数不是一个孤岛。我们将这种动态的视角称为—上帝的视角(文中最后部分有解释这个的含义)。

三、问题剖析
函数的宇宙社会学法则导致的用例关联函数问题剖析。
在函数调用关系链的作用下,一个函数或主动或被动的与其他函数产生调用关系。这种调用关系的存在,造成了用例与函数两者在关联的时候,总会出现一系列问题:

1、从函数角度而言,越是基础的公共函数,她被调用的次数就越多,她与其他函数的互相交叉关系就越复 杂。如何将函数关联的用例控制在最能描述这个函数的用例集上呢?且不会关联过多无效的用例。

2、从用例角度而言,用例的设计主要是为几个有限的关联业务函数服务的。但是由于函数调用关系链的影响,用例会被动的关联很多跟他的功能描述不相关的函数。若是这个用例操作步骤很复杂,那么其所调用的函数将呈现爆炸式的递增。如何能够将用例关联的函数控制在核心业务函数范围内呢?

要解决上述两个问题,是否可以借鉴《三体》中挽救人类文明于灭亡边缘的“面壁计划”的思路:既然无法突破宇宙社会学法则,那么就利用、学习她,在绝境中寻求浴火重生的机会。我们是否也可以利用函数调用关系链的规则,制定我们自己的“面壁计划”?答案是肯定的,经过我们团队成员不懈的努力,我们找到了解决上述问题的方式:从调用链的两个不同视角来解决这两个问题:

广度视角:利用函数调用关系链hash值来解决问题1。
深度视角:利用函数调用关系链亲密度值来解决问题2。 <

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值