要资料 文章 文库 视频 Code iProcess 课程 认证 咨询 工具 讲座吧   专家招募  
会员   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
 
     
   
分享到
基于代码覆盖数据分析的代码去冗优化
 
作者:云天,发布于2012-9-12,来源:淘测试
 

目前正在做XX系统的冗余代码清理,系统瘦身,过程中整理的一些方法见下:

代码清理流程图:

其中几个关键的步骤:

1. TCC采集线上代码覆盖数据作为样本

先用TCC 对线上的xx应用的war包代码进行插装,然后部署插装后的代码到线上;运行一段时间(1-2周),采集到线上应用的真实的代码覆盖数据。

2. 用埋点中心对样本数据进行二次确认

然后对TCC采集的代码覆盖数据作为样本数据,进行分析:可以先确定class覆盖数据为0的文件。对这些文件应用埋点中心进行埋点统计。

关于埋点中心的详细用法及介绍见淘宝百科:埋点中心。

关于为什么要用埋点中心对TCC的统计的样本数据进行二次确认?相信通过对比两个工具,就会知道答案了。

两个工具的对比:

所以,结合两个工具:TCC进行初步的样本筛选,然后用埋点中心进行精确的线上所有机器、不限时间的埋点统计确认,就会得到非常准确的class或method覆盖数据了。

本次xx系统的数据统计,其中TCC 统计的未被调用的类文件是:202个,通过埋点中心再次确认:未被调用的的java文件有170个 ,反复确认后,进一步精确缩小了代码覆盖数据的范围。

经过线上代码覆盖率的数据采集,并进行了分析,开始进行refund的代码清理。

3. 埋点中心用法示例

代码中加入埋点中心的功能非常的简单:引入jar包,编写配置文件,用日志的方式记录统计数据。

引入埋点中心的client. jar包:

编写埋点配置文件:

在应用源代码中定义埋点对象:

及要统计的method 或者line进行埋点,和log4j的使用类似:

埋点修改好后,就可以和日常一起发布上线了。

4. 云梯数据分析

在你部署项目之后埋点中心会启动一个定时程序,定期地将数据日志传送出去。此时你将收到埋点中心的通知邮件,上面会详细地讲解你接下来要做的事情。其中包含任务所对应的云梯表名(以givenchy_开头),接下来你就可以登录云分析或Gateway,像普通数据表一样使用Hive对任务数据进行分析。当前同步云梯的周期是1个小时,也就是说记录日志的1个小时后你就可以在云梯查到相应的数据了。

登陆云梯,

http://*****.****.alibaba-inc.com:****/index.htm

新建、或找到自己的个人项目:

运行job,格式查看hive sql 的格式:

select max(log_time), package, class ,method

from givenchy_90e1b1d876594536d456ce9c4324bafd

where log_time>'2012-03-26 00:00:00'

group by package, class, method

图示:

获取代码清理的埋点数据。

可以把数据下载到本地,进行分析。

接下来就是删除TCC和埋点中心统计到的没有被调用到的代码了。

5. 代码清理策略:

在清理的过程中发现无用的代码有以下几种模式:

说明:

1. 对于独立的class文件:

ClassA的代码覆盖数据为0,分析代码发现ClassA完全独立,或者被ClassB调用,但是ClassB的覆盖数据也为0,且没有被其他类依赖。

这些类的特点是:独立,或没有被其他的Class依赖。

2. 有依赖关系的class文件

文件A,被类B的方法B1调用,B1可能被类C的方法C1调用,甚至C1可能被类D调用。

3. 从业务角度考虑,已经不再使用的代码。

top的PageApi的调用部分代码,涉及到*.tp.*的代码,这部分调用量很少,埋点中心上去5天后,才有这部分的访问日志。而且已经通知对应的业务方升级到tradeapi,所以这部分代码在推动业务方调用方式升级后,即可去掉。

期待可以给目前正在做系统瘦身,冗余代码清理的tx带来帮助~!


相关文章

性能测试十问:测试经理篇
web前端性能优化进阶路
性能测试综述
VS2010中自动化测试—Web性能测试
相关文档

性能测试
性能测试执行之测试脚本录制
性能测试进阶1-流程篇
性能测试进阶2-方案篇
相关课程

性能测试方法与技术
使用LoadRunner进行性能测试
Android应用的性能测试
基于Android的单元、性能测试


LoadRunner性能测试基础
软件测试结果分析和质量报告
面向对象软件测试技术研究
设计测试用例的四条原则
功能测试中故障模型的建立
性能测试综述
更多...   


性能测试方法与技术
测试过程与团队管理
LoadRunner进行性能测试
WEB应用的软件测试
手机软件测试
白盒测试方法与技术

相关咨询服务
建立软件测试规范
性能评测与调优


某博彩行业 数据库自动化测试
IT服务商 Web安全测试
IT服务商 自动化测试框架
海航股份 单元测试、重构
测试需求分析与测试用例分析
互联网web测试方法与实践
基于Selenium的Web自动化测试
更多...   
 
 
 
 
 
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号