Android 应用性能测试方案一之 log 分析
作者:网络转载 发布时间:[ 2014/12/3 16:46:15 ] 推荐标签:软件测试 性能测试 生命周期
我主要来说下过年时候自己做的一些性能测试,由于时间紧迫,所以终选择了全部从log方面入手,从而终达到一气呵成的效果。
分别有这样几个大项:
1. Android应用启动消耗时间
我们分别在Activity的生命周期方法内添加Log.e(tag,message),如下效果:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e("AppStartTime","AppOnCreate");
...
}
@Override
protected void onResume() {
super.onResume();
Log.e("AppStartTime","AppOnResume");
...
}
,这里的tag我们使用AppStartTime,那么我们需要在应用启动之后在command内输入:
adb logcat -v time -v threadtime *:E | grep ActivityStartTime>StartTimeFile.txt
2. cpu和内存消耗
在command中输入如下命令:
adb shell top -n 400 | grep <your package name>Cpu_MemoryFile.txt
3. GC
在command中输入如下命令:
adb logcat -v time -v threadtime *:D | grep GC>GCFile.txt
这里需要注意的是,GC分析的时候需要关注三个值。
average_GC_Freed
average_GC_per
average_GC_time
4. 网络流量
在被测应用中增加一个获取所有应用的网络流量的service,添加一个getAppTrafficList( )方法,代码如下:
publicvoidgetAppTrafficList(){
PackageManagerpm=getPackageManager();
List<PackageInfo>pinfos=pm
.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES
|PackageManager.GET_PERMISSIONS);
for(PackageInfoinfo:pinfos){
String[]premissions=info.requestedPermissions;
if(premissions!=null&&premissions.length>0){
for(Stringpremission:premissions){
if("android.permission.INTERNET".equals(premission)){
intuId=info.applicationInfo.uid;
longrx=TrafficStats.getUidRxBytes(uId);
longtx=TrafficStats.getUidTxBytes(uId);
if(rx<0||tx<0){
continue;
}else{
Log.e("网络流量",info.applicationInfo.loadLabel(pm)+Formatter.formatFileSize(this,rx+tx)
}
}
}
}
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11