AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

移动应用性能瓶颈与解决方案 by 张文欣

发布者 tester
发布于 1445907902161  浏览 6431 关键词 自动化测试, Android 
分享到

第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

软件定义世界,我们洞悉软件





支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。