Emmagee app性能测试工具使用教程

简介: Emmagee app性能测试工具使用教程

Emmagee app性能测试工具使用教程


简介

Emmagee是网易杭州研究院QA团队开发的一个简单易上手的Android性能监测小工具,主要用于监控单个AppCPU,内存,流量,启动耗时,电量,电流等性能状态的变化,且用户可自定义配置监控的频率以及性能的实时显示,并最终生成一份性能统计文件。

 

实现原理

1、监控应用CPU原理

Android系统是基于Linux内核的,所以系统文件的结构和Linux下一样,系统总体CPU使用信息放在/proc/stat文件下,/proc/cpuinfo文件存放CPU的其它信息,包括CPU名称,直接读取即可。Emmagee是将选中应用的PID传入,读取/proc/PID/stat文件信息及可获取该PID对应程序的CPU信息。

 

2、监控应用消耗流量

系统中有存放整体流量和针对当程序的流量统计,/proc/net/dev/proc/uid_stat/UID下存放tcp_rcvtcp_send文件,分别存放下行流量和上行流量,操作前后相减就得出结果

 

 

3、监控内存实现原理

获取到当被测应用的PID,然后按照PID调用androidAPI获取当前被测应用占用的内存。/proc/meminfo文件记录了系统内存信息。

Emmagee-2.2.apk为例

1、 下载Emmagee.apk安装包

下载地址:https://github.com/NetEase/Emmagee/releases

 

2、 安装Emmagee.apk

 

3、 打开Emmagee

 



 

4、 点击左上角的设置按钮,可进行采集频率,邮件发送等相关设置


 



 

5、 返回步骤3中,点选要测试的应用,然后点击“开始测试”

 

6、 app进行相关操作,完成后返回到Emmagee界面,点击停止测试

停止测试后,Emmagee会自动生成.csv测试结果文件。

 

7、 把文件导出来,分析数据和统计

 

8、 难点在哪里?

工具使用似乎不难,那难点在哪里?

个人觉得难在场景设计。笔者实践也不多,这里就简单说说设计思路吧。

 

前提条件:保证测试环境的干净

 

第一种类型:测试app中某个相对独立的功能

这种一般就是保证其它条件不变,重复操作这个单一功能,然后分析数据。

 

例子1app首次启动的相关性能状态

场景描述:点击app,启动app直到出现app主页面。

 

测试操作:

1.打开Emmagee

2.选择app,点击“开始测试”,出现主页面后,点击“停止测试”

3.用手机清理软件,清理“被测app”。

4.重复步骤2

 

数据分析:

一般情况下,2.2版本的Emmagee会自动为我们生成CPU,内存,流量,电量,电流数据,但是启动耗时就不一定了,实践中发现启动耗时经常是获取不到的,但是做性能测试,很关心的一点就是响应时间,不能获取咋办?笔者是这么做的,设置采集频率的时间为最小值,比如1s,这样Emmagee就可以根据测试报告中,“时间”一栏大致统计出这个功能的耗时情况。

 

这些数据都有了,那么就可以根据多次的测试数据,求出各类数据的“均值,“峰值”

 

例子2app二次启动的相关性能状态

场景描述:点击app,启动app直到出现app主页面,退出app

 

测试操作:

1.打开Emmagee

2.选择app,点击“开始测试”,出现主页面后,退出app,点击“停止测试”

3.重复步骤2

 

注:和例子一不一样的地方在于,是否在前一次操作的基础上进行操作,即“测试起点”不一样。幸运的是,Emmagee是有这种“记忆”功能的。

 

数据分析:

参考例子1

 

第二种:测试某个流程,目的在于找出性能“瓶颈”

针对某个业务流,做一个完整的业务过程的操作

 

这里重点要说的数据分析具体咋做。个人的想法是这样的:根据测试生成的.csv文件,绘制相关数据的曲线图,查看曲线变化--平稳?起伏不定?还是“峰回路转”?如果不是很平稳,则说明性能上可能存在瓶颈,需要进一步分析是那个操作步骤中出现的。

 

关于咋看步骤,测试结果中,有一栏“栈顶Activity名称”可以看到大致的操作(如果看不懂咋办?测试前先操作看看,对比着看吧)

 

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
4天前
|
Android开发 移动开发 小程序
binder机制原理面试,安卓app开发教程
binder机制原理面试,安卓app开发教程
binder机制原理面试,安卓app开发教程
|
2天前
|
JavaScript 前端开发 测试技术
《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)
【5月更文挑战第12天】本文介绍了WebDriver中用于判断元素状态的三个方法:`isEnabled()`、`isSelected()`和`isDisplayed()`。`isSelected()`检查元素是否被选中,通常用于勾选框。`isDisplayed()`则用来判断元素是否在页面上可见。`isEnabled()`方法确定元素是否可操作,例如是否能点击或输入内容。
11 1
|
3天前
|
存储 JavaScript Java
《手把手教你》系列技巧篇(四十七)-java+ selenium自动化测试-判断元素是否显示(详解教程)
【5月更文挑战第11天】WebDriver 的 `isDisplayed()` 方法用于检查页面元素是否可见,如果元素存在于DOM中且可视,返回`true`,否则返回`false`。在自动化测试中,这个方法常用于验证元素是否真正显示在页面上。示例代码展示了如何使用 `isDisplayed()` 判断百度登录页面的特定错误提示文字是否出现。
14 1
|
4天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
【5月更文挑战第10天】本文介绍了使用Java和Selenium进行Web自动化测试的实践,以安居客网站为例。最后,提到了在浏览器开发者工具中调试和观察页面元素的方法。
14 2
|
4天前
|
Web App开发 JavaScript 测试技术
《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
【5月更文挑战第9天】本文介绍了在Appium中处理App自动化测试中遇到的Toast元素定位的方法。Toast在Web UI测试中也常见,通常作为轻量级反馈短暂显示。文章提供了两种定位Toast元素的技巧.
11 0
|
6天前
|
监控 安全 网络协议
社会工程渗透测试教程(一)(4)
社会工程渗透测试教程(一)
10 1
|
6天前
|
存储 安全 物联网
社会工程渗透测试教程(一)(3)
社会工程渗透测试教程(一)
8 0
|
6天前
|
安全 JavaScript 物联网
社会工程渗透测试教程(一)(2)
社会工程渗透测试教程(一)
7 0
|
6天前
|
存储 安全 网络安全
社会工程渗透测试教程(一)(1)
社会工程渗透测试教程(一)
9 1
|
6天前
|
安全 Oracle 关系型数据库
社会工程渗透测试教程(四)(4)
社会工程渗透测试教程(四)
7 1

热门文章

最新文章