求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
基于代码覆盖数据分析的代码去冗优化
 
作者:云天,发布于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带来帮助~!


相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践


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


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


某博彩行业 数据库自动化测试
IT服务商 Web安全测试
IT服务商 自动化测试框架
海航股份 单元测试、重构
测试需求分析与测试用例分析
互联网web测试方法与实践
基于Selenium的Web自动化测试
更多...