第1页
移动应用性能瓶颈
与
解决方案
张文欣
第2页
移动应用性能测试指标 常见维度的采集方法 低侵入的数据采集方式 OneAPM性能测试数据分析
第3页
移动应用性能指标
启动时间 内存 CPU 流量
如何获取这些性能数据并对其进行分析?
第4页
测试
第5页
启动时间的采集方法
第6页
内存的采集方法
第7页
Cpu的采集方法
第8页
流量的采集方法
第9页
移动应用性能测试
移动应用性能取决于客户端及服务器端
传统的测试很难全面的测试客户端与服务端之间 的交互,通常会借助打印log日志以及fiddler等 工具 即使测出了http请求响应时间,ViewLoading 的时间,依旧很难测试bitmap解析,json解析 的时间。进而相应的数据分析,就变得更困难了。
如何更好地采集性能测试维度数据并进行分析?
第10页
低侵入的数据采集方式
第11页
低侵入的数据采集方式
第12页
低侵入的数据采集方式
第13页
数据采集方式
public class Utils{ public static long getCPU(){ BufferedReader localBufferedReader = new BufferedReader (new InputStreamReader(new FileInputStream("/proc/" + pid + "/stat")), 1000);
String str = localBufferedReader.readLine(); localBufferedReader.close(); arrayOfString = str.split(" ");
if(arrayOfString!=null&&arrayOfString.length>=16) { l = Long.parseLong(arrayOfString[13]) + Long.parseLong(arrayOfString[14
]) + Long.parseLong(arrayOfString[15]) + Long.parseLong(arrayOfString[16]); } return l; } }
第14页
数据采集方式
public aspect CpuAspect {
pointcut getCpuState(): execution(* Activity+.*(..)) ;
before() : getCpuState() {
String method =thisJoinPoint.getSignature().toShortString(); Long cpuState = Utils.getCpu();
LOG.info(method + “\t” + System.currentMilliseconds() + “\t” + cpuState )
} }
第15页
插桩技术让测试如此容易
以前大量的测试成本消耗在测试执行阶段
使用插桩技术将测试的精力可以集中在核心的数据分析
产品发布前后都可以利用相同的技术进行监控 性能测试执行需要消耗
时间成本(投入的执行时间) 物料成本(机器成本) 技术成本(掌握特定的技术工具, httpwatch, fiddler)
第16页
第三方平台
第17页
性能测试数据分析
第18页
性能测试数据分析
第19页
性能测试数据分析
第20页
性能测试数据分析
第21页
性能测试数据分析
第22页
性能测试数据分析
第23页
性能测试数据分析
第24页
性能测试数据分析
第25页
性能测试数据分析
第26页
性能测试数据分析
第27页
性能测试数据分析
第28页
加入我们
第29页
THANK YOU
软件定义世界,我们洞悉软件