精准测试新玩法の基于犯罪心理学挖掘代码风险

  • 前言

    犯罪心理学还能用于挖掘代码风险?
    挖掘出来的东西是什么?
    挖掘出来的东东长什么样子?
    挖掘出来能用来做什么?
    具体怎么样挖掘呢?
    这是本文的主要探讨的内容.  
    

    在大型的项目中, 代码和模块的复杂度在很大程度上决定了测试任务的时间, 在项目快速迭代而测试时间比较短的情况下, 怎么样高效的完成测试并且保证测试质量? 如果我们能找到这些经常出问题还有潜在可能出问题的代码和功能区域, 我们的测试就能更高效.

犯罪心理学还能用于挖掘代码风险? - 答案: 是的

地理罪犯分析调查法基于了这样一个原则:罪犯的老窝往往就在他/她作案地点的边界之内.那么,软件测试是否有这样的属性呢? 犯罪分析心理学能够指导我们测试么? 是的, 本文介绍的就是如何从代码本身挖掘出代码的问题从而指导测试的一种思路和方法.

如果我们把代码当成犯罪现场, 我们测试中所发现的问题和缺陷有什么地域属性(此地域指的是代码和功能区域) 么? 很多问题是不是会有相似的属性,是否某些文件和功能会经常出现问题. 我们能否用某种方式定位出这样的热点区域呢? 答案是可以的.

那么我们是否可以用历史数据挖掘出代码本身的问题么? 事实上,我们从版本控制工具,bug数据信息,或者其他历史信息里面能找到很多有用的信息, 文章后面会讲述如何为代码创造地理呈现。区域和建筑物映射代码的结构, 如包或类。代码属性(如代码行数或方法数量)决定区域和建筑物的尺寸. 再结合代码版本工具既能呈现出代码高风险区域即代码热区. 再结合代码和功能之间的对应关系,就可以找到需要重点测试的功能区域(高风险的代码对应的功能模块), 从而提高测试效率, 这和精准测试的目的是一样的.

挖掘出来的东西是什么? - 答案:代码热区

代码热区指的是被频繁改动的代码文件, 这个改动有可能是因为代码复杂度过高或者代码耦合性太强而造成新增功能都需要改动这些代码文件, 也有可能仅仅是因为代码实现的有问题需要频繁改动来修复bug.

挖掘出来的东东长什么样子? - 即代码热区长什么样子?

下图是几种已有工具展示的热区:

Circle Packing展示 (红色的就是代码热区, 后文会讲怎么得到这个图)

此工具支持缩放

其实展现形式并不是最主要的, 我们关注的是用代码热区能做什么.

挖掘出来能用来做什么?- 即代码热区能用来做什么?

如前言里面讲的, 精准测试的主要目的是在测试之前缩小测试的范围, 从而提高测试的效率, 而如果我们能通过某种方式从历史数据中找到容易出风险的代码区域也就是所谓的代码热区, 这样也可以锁定重点测试的区域, 从而达到提高测试效率的目的。

从版本控制工具, 不仅能过滤出代码风险, 还能得到代码耦合度和代码复杂度关系.

对于开发人员, 代码热区能提供十分有用的信息, 我们可以通过代码热区再加上代码复杂度, 代码耦合度等信息来衡量代码的架构和质量, 有效的指导软件代码重构。

对于测试人员, 不同的测试阶段的使用方式稍微有些不同, 具体可参照下面的表格(最后一部分也会进一步探讨怎么使用):

具体怎么样挖掘呢?- 即怎么样得到代码热区?

要找到代码热区进行测试, 我们需要如下步骤:

 1) 从版本控制工具得到历史数据2) 用code matt找出代码热区(高风险代码)-3) 展示热区4) 结合热区进行测试

具体要怎么做可参考下面的步骤:

  • 需要安装下面工具:

    1. 需要安装python:安装完后请将执行路径加到系统变量path
    2. Code Maat:  从版本控制工具得到每个文件的改动次数
      1. Windows: download link
      2. OS X/Linux: download link
        安装完后请将执行路径加到系统变量path
    3. Cloc: 得到文件大小的信息
      http://cloc.sourceforge.net/安装完后请将路径加到系统变量path
    4. vn command shell:  版本控制工具是svn 需要安装
      https://tortoisesvn.net/downloads.zh.html
      安装完后请将路径加到系统变量path,如果是git的话请安装对应的工具.
    5. Python脚本 (用于merge 结果生成json)https://s3.amazonaws.com/CodeMaatDistro/scripts0.4.zip
    6. Visualizations 例子 https://s3.amazonaws.com/CodeMaatDistro/sample0.2.zip

执行过程 (以svn为例子):

1). 在需要分析的目录下, 用svn 命令行得到一段时间内的日志

svn log -v -r {yyyymmdd}:{yyyymmdd} –xml >

例子:

svn log -v -r {20160227}:HEAD –xml > test.log

svn log -v -r {20160127}: {20160227} –xml > test.log

2). 用code maat分析总结svn log

maat -l -c svn -a revisions >

代码热区区分

下面图为上面全景图的局部放大:

在上图中(hibernate项目热区), 颜色越红, 表示代码区域被改动次数越多, 也即越有风险, 圆圈的大小表示代码文件的大小(行数)

除了代码热区还能够挖掘出来其他的东东么?- 我们一起来进一步思考

在上文中展示的代码热区只包含两个维度: 代码大小, 代码改动次数.

在每个产品或者项目阶段, 我们可以加入自己的维度来定义或者进一步过滤代码热区来得到自己想要的结果.

例如: 有的代码文件频繁被改动可能并不真的是因为修复bug引起的, 可能会是因为新需求带来的改动,在回归测试阶段, 我们更关注这部分代码热区和高风险功能模块,所以基于上面得到的热区,我们可以再加入进一步的过滤,除了文件改动次数, 我们可以加入bug过滤来得到因为bug改动的代码热区. 

如果能进一步加入bug类型或者优先级的过滤, 我们就可以提前预测到某种类型缺陷或者优先级比较高的bug过滤出来的高风险区域. 这将更有效的指导测试.

另外, 我们仅仅通过版本控制工具得到的改动次数定义的代码热区也可能并不是真的有风险的代码. 这时候我们可以通过文件的其它信息(例如, 文件的名字)来判断过滤.

代码版本控制工具本身也可以提供更多的信息:例如, 使用版本控制信息做时空耦合分析。如果两个代码文件在同一时间发生改变,这意味着文件之间是物理耦合的, 版本控制信息也可以用于挖掘知识的所有者和组件的所有权等等. 有兴趣的读者可以进一步探索下.


TMQ(腾讯移动品质中心)是腾讯最早专注在移动APP测试的团队
网站专注于移动测试技术精华,饱含腾讯多款亿级APP的品质秘密,文章皆独家原创,我们不谈虚的,只谈干货!】

扫一扫 关注TMQ
精彩分享不断

精准测试新玩法の基于犯罪心理学挖掘代码风险相关推荐

  1. ESP32启明云端又有新玩法|基于ESP32+热像仪传感的物联网非接触智能测温终端为高考护航了

    今天是高考第一天,想想N年前的自己,高考前抱着破罐子破摔的心态,书丢一边,好吃好喝迎高考!所以结局惨淡无比! 不提伤心事了,今天祝所有的高考考生都能取得自己满意的成绩! 今天提到的ESP32的新玩法跟 ...

  2. 2019个税新玩法,写个代码对比

    一月份的工资已经发放,原先收入在税率第二级及以上的(月收入-五险一金-专项扣除-5000>3000)的人群,是否发现一月份工资比上个月多.先是网上查资料,发现从2019年1月1号起,个税以今年累 ...

  3. 基于 Paddle2.0 的强化学习新玩法 —— 通关超级马里奥兄弟

    基于 Paddle2.0 的强化学习新玩法 -- 通关超级马里奥兄弟 本文目录 基于 Paddle2.0 的强化学习新玩法 -- 通关超级马里奥兄弟 前言 马里奥游戏环境简介 PPO 算法简介 基于 ...

  4. 数据与智能武装营销飞轮,网易探索C2B时代营销新玩法

    新科技.新商业.新模式,电商行业历经多年的发展,已经不止于单一的线上交易模式了.在新技术大量应用于电商,催生新商业模式.新交互体验的环境下,电商竞争日趋激烈,新玩法层出不穷.如何借助数据与AI技术,找 ...

  5. 跟随弹幕停不下来?智慧文娱还有哪些新玩法 ​

    阿里妹导读:随着 5G 开启商用.机器智能愈发成熟,在技术发展的新阶段,我们在文娱的体验上将会有怎样的提升?本文将通过十个场景来分享技术革新下智慧文娱的新玩法. 文末福利:评论区留言送书. 一  修复 ...

  6. 视频直接变漫画!GAN又有了新玩法 | Demo+代码+论文

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI GAN,又有了新"玩法". 最近,一个能够将视频直接转化成漫画的工具,引发了很大关注. 它的效果是这样的: Twitt ...

  7. 2021年国庆节假期三亚游客离岛免税购物热情高涨、偏爱高端酒店与景点新玩法...

    三亚2021年10月9日 /美通社/ -- 暑期国内局部疫情反复对三亚旅游市场带来较强冲击,2021年国庆节假期三亚迎来传统旺季的出行高峰,三亚市旅游推广局结合大数据平台与旅游统计数据,通过分析研究发 ...

  8. 诊断2018微商:从乱象到赋能,世界微商大会发明的新玩法为您指路

    在很多人眼中,微商似乎就是微信朋友圈刷广告卖东西的.但实际上,这只是4年前最原始的玩法.4年后的2018年,微商早已演化前进,真正的含义是微电商. "微商,是赋能·创新·创业,今天的微商和当 ...

  9. 卡内基梅隆大学副教授张旆:传感系统新玩法,物理响应分析人的生老病死

    受访者 | 张旆 采访者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 随着万物相联时代来临,我们身边随处可见物联网技术:我们使用智能门锁进入房间,智能窗帘缓缓拉开,智能扫地机器人开始工作 ...

最新文章

  1. linux blfs安装桌面,【Linux】Ubuntu14.04安装bridge-utils安装brctl
  2. 关于学习Python的一点学习总结(54->集合->堆->双端队列)
  3. 到2030年,智能农业或将养活85亿人!但网络安全威胁需要重视
  4. 《系统集成项目管理工程师》必背100个知识点-22实施整体变更ITTO
  5. tmap的使用_MapInfo教程--二次开发入门
  6. 动态导入模块__import__(str) importlib标准库
  7. 三元运算符运算(Day02)
  8. lvs的调度算法有几种_LVS支持哪些调度算法?
  9. linux分区理解整理
  10. 浅谈栈和队列的有关面试题
  11. 北京大学 | 软件工程理论与实践
  12. 2016版excel_想要下班直接打卡,这些Excel技巧可以帮到你
  13. Azylee.Utils 工具组
  14. UE5 建模(一)Shapes
  15. X64dbg-插件基本原理-加载顺序-概述-主目录
  16. 依赖注入框架-dragger2
  17. OBCA认证知识点-part4
  18. ant design vue利用rowClassName给table添加行样式
  19. 京东口罩到货,邮件实时通知
  20. 招黑还是真实力,华为P20媲美万元级别的单反?

热门文章

  1. 一千万条数据去重_Mysql千万级数据快速去重
  2. L1-4 1.01的365次方 (5 分)
  3. 忆阻器课题 读书笔记(二)
  4. spring事物管理
  5. (转)ASP.NET 脚本语言介绍
  6. 单证管理外贸软件解决方案
  7. 怎样破解企业管理软件的困局
  8. 详解RAM、ROM、FLASH的区别
  9. 制作PPT的基本技巧
  10. 布尔代数(基本概念,运算规则,符号/数字代表的含义)