1 GT简介

GT(随身调) Android版是腾讯 MIG 专项测试组自行研发的 Android APP 随身调测平台,它是直接运行在手机上的“集成调测环境”(ITE, Integrated Test Environment)。

GTAndroid 版由两部分组成:

1)        可独立安装的 GT(APK)。

2)        需要嵌入被测应用(App Under Test,以下简称 AUT)代码中的 GT SDK(jar 包)。

之所以叫“集成调测环境”,是因为仅用 GT即可独立完成如下针对 AUT 的测试工作:

l   基础性能测试:手机整机或者手机上安装的任何一个 APP 的 CPU、内存、网络流量、流畅度/帧率、电量等基础性能指标的实时展示、历史数据采集及 excel 格式存储、曲线绘制等。

l   日志查看:APP 的 Logcat 日志查看,便于直接用手机现场定位 APP 功能异常、crash。

l   网络数据包抓包:直接用手机抓包保存成 pcap 文件,下载到 PC 后用 Wireshark 查看。

除了如上的 GT 控制台的“集成测试”能力,用户还可以将 GT SDK 嵌入到被测应用中,从而使用 GT 的如下更高级的开发调试、测试能力:在 AUT 中加入各种自定义“输入参数”,从而在 AUT 运行时,通过 GT 的悬浮窗或者设置界面修改这些输入参数,实时改变 AUT 的能力和行为(例如,把微博客户端的单次刷新条数定义为一个 GT 入参),达到“开发调试”的目的。

在 AUT 中加入各种自定义的“输出参数”(例如,AUT 的各项核心指标),从而在用户操作 AUT 时,实时观察 AUT 的这些白盒指标的变化(举例,客户端动态选择的就近接入的后台服务器地址)。

在指定的 AUT 代码中插入 GT 的代码耗时 API,得到 AUT 运行时的某些代码片段的耗时数据,通过分析进行执行效率调优。

2 安装、启动、退出

1)        安装:请像安装普通 APP一样的安装GT

2)        启动:像启动普通 APP 一样的启动 GT

3)        在 GT 的一级页面中,点击手机的菜单键会弹出“Exit”选项。点击“Exit”即可退出 GT

3 AUT、性能指标与参数设置

启动GT后,展示的第一个页面是AUT的设置页面。如果是独立使用GT对AUT进行性能测试(不需要在AUT中嵌入GT SDK),就需要在此页面设置AUT及需要观测的基础性能指标项(CPU、CPU 时间片Jiffes、NET(流量信息)、各类 MEM)。

3.1 设置AUT

3.2 设置关注的性能指标

GT可以支持存在多个进程的AUT的测试,可以关注AUT每个进程的CPU、CPU时间片Jiffes、内存的 PSS和内存的PrivateDirty指标,以及AUT不区分进程的流量指标Net。选中一个AUT后,即可设置本次测试所关注的性能指标:

如AUT存在多个进程,而想要测试的进程的会比AUT的启动滞后一些,此时需要在想要测试的进程启动后,点击下图的refresh按钮,通知GT将新启动的被测进程的性能指标也监控起来。

3.3 输出参数

GT提供了三种测试指标或关注信息的展示方式,其中最常用的是将指标或关注信息定义为输出参数(以下简称出参),在出参界面以列表的形式展示。

1)        默认出参界面

GT出参界面,在不选择任何AUT的情况下默认展示了手机整机的基础性能指标,有CPU、内存、网络流量、信号值、流畅度/帧率。整机的CPU指标默认放置在可用参数区域即时展示当前值,其他指标默认放置在禁用区域不关注。

2)        出参界面展示AUT设置的性能指标

AUT设置的性能指标会在出参界面以出参的形式展示:

3)        出参调整

可以调整哪些出参禁用、可用、放到悬浮框展示。

4)        出参数据采集

大部分GT基本性能出参和通过GTSDK在AUT中插桩自定义的数字型出参,都可以采集其历史数据。

第一步,在未采集的状态下,勾选需要记录历史数据的出参。

第二步,点击开始采集按钮采集数据。

点击开始按钮后,会开始采集出参的历史数据。这时可以到 AUT 界面开始测试 AUT。测试结束后,可点击悬浮窗上的停止按钮,或者进入出参界面,点击停止按钮。停止后,可以保存采集的历史数据。

5)        出参数据保存

停止采集后,可以一键保存和删除所有勾选的出参的历史数据。

点击保存按钮时输入的名称为本次测试数据存放的目录名。数据默认保存在 SD 卡上的 GT/GW//GW_DATA 目录下,每个出参历史数据分别保存到一个文件,文件命名格式为_.csv,如 FPS_20131128205049.csv。

测试开始前,如果不希望看到上次测试的历史数据,可以先清空勾选的出参。

6)        出参数据展示

在出参区域为非编辑状态,出参所在区域为非禁用出参区域,且有历史数据的情况下,点击此条出参,可以进入出参数据展示界面。

历史数据图表默认显示最近不超过50条的记录,想查看最近50条之前的记录请拖动图表。在图表上长按并滑动可以显示具体一条记录的详细信息。点击保存按钮可单独保存该出参信息,保存位置与命名方式和一键保存相同。长按曲线展示区域,可查看某个点的值。

除了AUT内存的PSS/PrivateDirty和信号值,包括CPU/Jiffes/帧率/流量信息等其他采集到的数据展示都类似上述图中的曲线,其中流量信息在点击删除按钮时会同时归 0。流量数据展示:

AUT内存的PSS/PrivateDirty和信号值的数据展示界面同时有多条曲线,以PSS为例,其展示界面会同时展示PSS的Total/Dalvik/Native三个值的曲线(注:内存的PSS/Private都区分Total/Dalvik/Native 三个值,与Android手机的meminfo信息对应)。

7)        出参告警

在出参数据展示页可以设置持续一段时间,值不在设置的阈值范围内时的告警提示。告警提示的方式为通知栏文字变化+鸟鸣声+震动+出参和 GT 图标变为桔色。

3.4 输入参数

输入参数(以下简称“入参”)为用户自定义的插入到被测应用程序代码里的一种桩,可以在运行时改变被测代码里参数的值。

举个例子:比如被测代码里有些参数需要调优时,可以通过入参随时对这些参数进行修改,对比不同参数值下的效果(核心指标可以用出参实时展示出来)。需要说明的是,悬浮窗上最多同时显示 3 个入参。所有入参都可以在GT主界面的入参子界面中看到,并可以在子界面调整显示在悬浮窗上的入参具体项。

1)        总体界面

2)        切换到入参界面

点击Tag 键“Para.”即可进入出入参界面,默认是出参界面。点击in切换到入参界面。

3)        编辑入参

点击一条入参,进入入参值编辑界面,修改入参的值。

4)        编辑入参区域

入参区域分为悬浮窗展示区,可用入参区,禁用入参区。 悬浮窗展示区的入参可以显示在悬浮窗上,通过操作悬浮窗快速进行编辑。可用入参区的入参不展示在悬浮窗上,但是仍然起作用。禁用入参区的入参不起任何作用。点击右上角的编辑按钮,可以将入参区域切换到编辑状态。

编辑状态下,可按住一条入参右端的拖动按钮,将其移动到其他入参区域。比如从禁用入参区拖入到可用入参区,这样原来不起任何作用的入参就起作用了。

4        悬浮图标和悬浮窗

4.1 悬浮窗设置

单击“AirConsole”进入悬浮窗设置界面。

4.2 GT悬浮图标

GTConsole在进入后台运行后,界面上会显示GT的悬浮图标。长按GT悬浮图标可以打开或关闭悬浮窗。单击GT悬浮图标进入GT主界面。

4.3 GT悬浮窗

悬浮窗是简化版脱机调试窗口,悬浮在被测程序界面上。通过悬浮窗可实现2屏合一,既能看到被测 app的界面又可看到app内部值等调试信息。悬浮窗能帮助开发者方便快捷的查看app运行状态和核心指标。

悬浮窗上内容的刷新频率可在出参界面上设置。

悬浮窗按功能可分为功能区,出参区和入参区。

1)      功能区

右上角为G&W或profiler按钮,单击即可开始或停止。按钮默认控制G&W开关。

左上角为计时器,单击可开始,停止和归 0,支持 0-999s。

2)      出参区

最多有三个出参展示在悬浮窗上。每个出参由缩略名(左边的灰色字符)和内容(右边的白色字符)两部分组成。缩略名最长不超过四个字符,超过的话只显示三个字符加一个点。内容过长时可以点击展开,再次点击收起。

请将当前最关注的三个出参设置显示在悬浮窗上,最最关注的设置为第一个。第一个出参为大字号显示,更醒目。

3)      入参区

最多有三个入参展示在悬浮窗上。每个入参由缩略名(上边的灰色字符)和内容(下边的白色字符)两部分组成。缩略名最长不超过四个字符,超过的话只显示三个字符加一个点。点击内容可进入入参编辑界面。

5 GT集成的测试组件

5.1 GTBattery(电量)

电量插件说明:

l   点击插件界面的电量选项,进入电量插件界面。

l   设定参数项采样间隔,即每隔多少毫秒(ms)记录一次参数项数值,推荐设定采样间隔为 100ms~1000ms,默认是250ms。

l   勾选被观测参数项,GT支持电流I、电压U、电量Power和温度Temp四个参数。被勾选的参数会出现在输出参数界面,取消勾选,则从输出参数界面中清除。

l   点击Start 按钮,开始采集相关数值,对应输出参数界面中显示相应数值;点击Stop按钮,停止采集。

5.2 GTPcap(抓包)

抓包说明:

l   点击插件界面的抓包选项,进入抓包插件界面。

l   点击需要输入名称,不需要路径,输入的名称会作为本次抓包的目录名。如果发生网络切换导致抓包中断,会自动重新抓包,名字上加 1,2,3…作区分。

l   采用tcpdump抓包,可自定义抓包参数,否则用默认参数抓包。抓包参数见tcpdump相关说明。

l   抓包手机需要root,抓包保存目录:SDcard/GT/tcpdump/(2.2.3 版本后保存在SDcard/GT/Capture/下)

5.3 GTScreenlock(wakelock 控制)

避免锁屏插件由 wakelock 控制,该插件主要提供两个功能。点击插件界面的避免锁屏选项,进入避免锁屏插件界面。

开启 Full wakelock 功能,手机不会主动灭屏;如果手动灭屏,手机也不会进入休眠,点击进入插件详情界面单击开始/停止相应功能状态。将按钮置于off 状态,该功能被关闭。

开启Partial wakelock 功能,手机在使用过程中能够主动灭屏,但进入灭屏状态后不会休眠。将按钮置于off状态,该功能被关闭。

5.4 GTMemFill(内存填充)

内存填充插件,可在手机 RAM 上分配并占用指定大小的内存空间,所占用的内存会划 分在GT应用的名下,在手机的设置→应用→GT 项中可以观察到GT占用RAM大小的变化。

所填充内存的大小,请根据被测手机剩余内存的大小适当填充,填充的大小不要超过手机剩余内存的大小,否则GT应用会崩溃退出;不同的手机,能填充的最大数目内存也不同,请自行尝试。

6 Profiler功能

单击GT界面最下面对应的“Profiler”TAB项,可切换到性能分析界面。该界面用来展示用户自定义的分析项的统计结果(需配合GT SDK使用)。目前Profiler已实现的功能是统计代码耗时。代码耗时项在统计时会按照用户自定义的group和tag进行分类汇总统计,首先按group分组,组内再按照tag(在tag之上会先区分线程内和可跨线程这两类)进行分类统计。

6.1 总体界面

6.2 启动/关闭性能分析(profiler)

启动性能分析有两种方法,方法 1:

方法 2,在悬浮框上点击快捷按钮

悬浮框上快捷按钮默认为G&W的启动暂停控制,可在设置界面切换为profiler 的启动暂停控制。

6.3 性能数据展示

收集到耗时数据后,Profiler 界面会即时更新当前已收集到数据的分析统计结果:

启动分析一段时间后暂停分析,还可以进行把分析信息保存到文件,或清空当前的分析信息。

点击一个具体的分析项,会进入该耗时分析项的详情页(Detail 页),Detail 页面除了提供了分析统计信息,还提供了历史数据的图表展示。

耗时分析项的Detail页中可以查看采样次数、单位为秒的平均值、最大值、最小值。历史数据图表默认显示最近不超过50条的记录,想查看最近50条之前的记录请拖动图表。在图表上长按并滑动可以显示具体一条记录的详细信息,与出参详情页一致。另外,Detail 页右上角的保存功能可以保存该页显示的分析统计信息到文件。保存文件路径为: sdcard/GT/Profiler/xxx.csv。

7 日志

GT 提供了脱机调试时可以查看的日志,包括GT自定义的日志和LogCat日志展示,其中LogCat日志展示需要手机root权限。单击GT界面最下面对应的“Log”TAB项,可切换到日志一级界面。

GT的日志是GT的主要功能之一,目的是脱机输出 log。输出日志会展示在GT日志界面上(界面上最多保存1000条最新的日志),同时还可以以文件的形式保存到手机上。GT提供了三种保存日志的形式,对于界面上可见日志的保存,可以通过点击日志界面右上角的保存按钮保存成文件;对于某个时间段内的日志,GT也在代码中提供了控制保存起始与结束的API接口。

7.1 日志设置

单击“Log ”进入log设置界面,界面内包含日志的总开关和日志自动保存开关。日志总开关关闭后,所有日志都不会输出。总开关关闭后,自动保存开关也同时被关闭。日志自动保存开关打开后,所有日志会自动保存一份到GT指定的目录下:目录 /sdcard/GT/Log/。文件名从0到99,每个文件最大为4M,当前文件保存满后,继续保存到下一个文件。全部保存满后,继续从文件0开始保存,100 个文件循环使用。

7.2 GT日志界面主要功能

日志的展示,一条日志三段组成,第一段是时间,第二段是日志级别(V,D,I,W,E)、tag、线程号,第三段是日志消息。界面上最多展示 1000 条最近的日志。实时过滤(Filter)。GT日志过滤支持日志消息匹配、日志级别匹配、标签(tag)匹配,最终匹配出的日志同时满足这三项过滤条件。单击日志展示界面,可以显示或收起过滤栏。

右上角为日志清空,保存,搜索键。保存的逻辑为所见即所得,过滤完后,单击保存按钮,保存过滤后的内容;未过滤则保存全部内容,保存路径请参考GT目录说明。清空只是清空界面上的日志,不会对自动保存功能产生影响。单击搜索键进入日志搜索二级界面。

日志列表具有实时刷新能力。当日志列表被拖动到最下方的最新一条日志时,如果再有新的日志产生,列表就会自动向上滚动。

7.3 GT自定义日志搜索界面

日志搜索界面是日志系统的二级界面。搜索页的搜索范围是日志一级页面过滤后的所有内容。

输入关键字进行搜索后,页面上会高亮显示符合搜索条件的日志条目。

打印日志功能有区分VERBOSE,DEBUG,INFO,WARNING和ERROR五个级别,用户根据实际情况调用对应级别的接口。

记录日志功能接口对应有CLEAN,START和END三个操作。CLEAN 操作则会删除对应的文件。先START再END。END后会记录从START到END间所有调用打印日志的信息到文件中。

8 使用GT SDK插桩调测AUT

在测试中除了关注性能指标,经常也有更进一步的,关注AUT实时运行状态的需要或改变一些参数以调测应用在不同逻辑分支下的运行状态。这种情况可以通过在AUT中嵌入GT SDK(以jar包的形式存在),通过GT SDK将关注的应用运行期信息输出到GT提供的UI进行展示或通过GT SDK提供的输入参数方式对 AUT的参数进行修改。

示例GT Demo 的功能就是从网上下载10张图片并显示,通过GT可以实时查看下载的带宽、 单张速度、CPU、MEM 等指标,还能通过GT修改下载线程数、超时时间等等。该Demo主要是为了演示GT是如何脱机调试一个APP的。GT Demo工程中使用GT SDK的地方可以通过搜索 GT Usage 查找。

8.1 合入GT

使用GT在被测应用中插桩功能需要在被测工程中合入GT SDK,合入GT SDK分三步,首先要在手机中安装GT.apk,然后将SDK jar包添加到工程中;最后是在合适的位置插入GT初始化的代码 (demo 工程、SDK jar 包、GT.apk 请到GT官网下载) 。

1)      添加 SDK jar 包

拷贝 SDK jar 包到工程中的 libs 目录中,如下图:

此时,demo 工程就包括了 GT 的 API:

2)      GT 初始化

在合适的位置插入GT初始化的代码:

GTSDK的初始化需要在被测工程中调用GT.connect(Context, AbsGTParaLoader)方法建立被测应用与GT 的联系。调用GT.connect方法的合适位置通常是被测应用Application的onCreate()或闪屏Activity的 onCreate(),不过在demo中为了方便演示,是通过点击一个按钮触发调用该方法。

具体调用代码在demo中的位置在类MainActivity中(可搜索GT.connect关键字找到代码具体位置),大体结构如下:

完成测试后,需要在被测工程中调用 GT.disconnect(Context)方法断开被测应用与 GT 的联系。调用 GT.disconnect 方法的合适位置通常是被测应用退出的方法中。在本demo中,是通过点击一个按钮触发调用该方法。具体调用代码在demo中的位置在类 MainActivity中:

8.2 输入参数

1)      相关API

下面以Demo为例说明。使用输入参数有两个步骤:

l   GT SDK初始化后注册所需的输入参数。注册输入参数的API是 InParaManager.register 方法。

l   需要使用输入参数的代码逻辑上获取输入参数。 获取输入参数的API是一组重载方法,都叫GT.getInPara,可以返回所有基本类型和字符串的输入参数值。

2)      注册输入参数

GT.connect方法中进行输入参数的注册:

(可选)注册的同时可以选择最多 3 个 APP 启动时默认在 GT 悬浮窗显示的输入型参数:

3)      使用输入参数

在Demo工程中下载网络图片时使用并发线程数,并发线程数取GT上注册的值:(详情请在Eclipse中搜索“并发线程数”变量的使用场景):

4)      建议

一个小技巧,GT.getInPara方法的第二个参数默认值,大部分情况下建议使用业务逻辑中的原值,这样当输入参数设置失效时,默认值取原值就不会改变原有代码业务逻辑。如上面例子即是如此。

8.3 输出参数

1)      相关API

下面以Demo为例说明。使用输出参数有两个步骤:

l   在GT初始化后注册所需的输出参数。注册输出型参数的API是OutParaManager. register方法。

l   在需要的地方更改输出参数值。更改输出参数的API是GT.setOutPara方法。

2)      注册输出参数

Android版GT在GT.connect方法中进行输出参数的注册:

(可选)注册的同时可以选择最多3个APP启动时默认在GT悬浮窗显示的输出型参数:

3)      使用输出参数

在Demo工程中确认是否下载完成判断代码逻辑里统计下载耗时,实际带宽:

8.4 profiler功能

1)      相关API

下面以 Demo 为例说明。使用profiler 进行耗时分析有两个步骤:

l   在需要开始计时的代码逻辑设置开始计时。对应区分线程的是GT. startTimeInThread,不区分线程的是GT. startTime ,可跨进程的是GT.startTimeGlobal。

l   在需要结束计时的代码逻辑设置结束计时。对应区分线程的是GT. endTimeInThread,不区分线程的是GT. endTime,可跨进程的是GT.endTimeGlobal。这里开始和结束调用的接口需要对应,若开始计时使用跨进程的API,则结束计时也使用跨进程的API;若开始计时使用区分线程的API,则结束计时也需要使用区分线程的API。

2)      打开profiler功能

目前使用profiler前需要先手动开启profiler功能(详见相关章节)。如果实际使用中需要在被测应用启动后立即打开profiler 功能,而手动开启来不及,那么可以先行手动打开GT应用,之后手动打开profiler 功能,然后再启动被测应用即可。

3)      使用profiler功能——线程内统计

这里要统计单张图片的下载时间,在网络访问时记录开始时间,网络数据接收完成时记录结束时间,开始到结束之间即为单张图片的下载时间。另外Demo 里下载图片使用线程池有并发的可能,因此调用GT. startTimeInThread和GT. endTimeInThread,用于区分线程。

线程开始是记录的开始时刻,下图中红色框中代码;网络访问数据接收结束是记录的结束时刻,下图中紫色框中代码:

注: GT.startTimeInThread和GT. endTimeInThread要和上面例子一样成对使用,道理很简单,时间要有个开始时刻和结束时刻才能计算。每次统计值都会在profiler界面显示。 GT. endTimeInThread的long型返回值是一次统计的时间间隔,单位是纳秒,即使在不启动profiler功能的情况,本返回值也是有效的,只是不会在 GT 控制台的profiler模块记录。该返回值在异常情况下会是-1。

4)      使用profiler功能——应用内跨线程统计

Demo中图片下载完成后到UI展示的时间统计,其统计开始时刻是下载并解析图片生成 bitmap完成后,但其结束时刻应是Android的UI线程中,这种跨线程的应该用全局统计,并且要区别不同的图片:

统计起点是下载线程的开始时刻:

其结束时刻在UI线程的Handler中:

8.5 打印日志

相关API

以Demo为例说明。打印日志功能类似logcat,有区分DEBUG,INFO,WARNING和ERROR四个级别, 用户根据实际情况调用对应级别的接口。 具体例子在demo 中随处可见,搜索“GT.Log”即可。

9 广播方式使用GT

广播方式使用GT,主要用于支持自动化中使用GT做性能数据采集。

1)      命令样例:

l   先启动GT:adb shell amstart -W -n com.tencent.wstt.gt/com.tencent.wstt.gt.activity.GTMainActivity

l   使gt可以采集该应用的性能信息;pkgName是包名;verName是版本号(可选参数):adbshell am broadcast -a com.tencent.wstt.gt.baseCommand.startTest --es pkgName"com.tencent.map"  --es verName"6.0.1"

l   如果只测FPS和SM,可以这样空参数:adbshell am broadcast -a com.tencent.wstt.gt.baseCommand.startTest

l   开启CPU采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei cpu 1

l   停止CPU采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei cpu 0

l   开启CPU时间片采集:adbshell am broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei jif 1

l   停止CPU时间片采集:adbshell am broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei jif 0

l   开启PSS采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei pss 1

l   停止PSS采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei pss 0

l   开启PrivateDirty采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei pri 1

l   停止PrivateDirty采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei pri 0

l   开启NET采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei net 1

l   停止NET采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei net 0

l   开启FPS采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei fps 1

l   停止FPS采集:adb shellam broadcast -a com.tencent.wstt.gt.baseCommand.sampleData --ei fps 0

2)      流畅度(SM)的获取自成体系,注意以下步骤,其中前4步骤建议测试前人工处理好:

l   对应UI上的“更改”,一次执行除非执行逆操作“恢复”,会一直有效:adb shell am broadcast -a com.tencent.wstt.gt.plugin.sm.modify

l   对应UI上的“恢复”,测试完毕时执行一次,如手机长期用于流畅度测试可以一直不用恢复:adb shell am broadcast -a com.tencent.wstt.gt.plugin.sm.resume

l   对应UI上的“重启”,重启手机使“更改”或“恢复”生效:adb shell am broadcast -a com.tencent.wstt.gt.plugin.sm.restart

l   对应UI上的“开始测试”,procName是指定被测进程的进程名,执行后在出参列表应可以看到SM参数,注意第一次执行需要给GT授权:adb shell am broadcast -a com.tencent.wstt.gt.plugin.sm.startTest--es procName "com.tencent.wstt.gt"

l   对应UI上的“停止测试”:adbshell am broadcast -a com.tencent.wstt.gt.plugin.sm.endTest

3)      结束采集并保存,同时删除数据记录:

saveFolderName为保存目录的名称,最长可以自定义三级目录,以"/"分割,此三级目录会保存在/sdcard/GT/GW/下,每次保存后,GT会把缓存的本次测试数据清空。

adbshell am broadcast -a com.tencent.wstt.gt.baseCommand.endTest --essaveFolderName "普通导航测试"  --es desc "腾讯地图_6.0.1_普通导航_1"

关闭GT:adb shell ambroadcast -a com.tencent.wstt.gt.baseCommand.exitGT

注意:

l   FPS第一次会申请Root权限,默认情况需要手动点一下,所以建议用TowerRoot或CM自带的可以取消弹框的Root工具取消弹框

l   流畅度第一次开始测试需要Root权限,默认情况需要手动点一下。

4)      广播驱动耗电测试(对应耗电测试插件)

adbshell am broadcast -a com.tencent.wstt.gt.plugin.battery.startTest --eirefreshRate 250 --ei brightness 100 --ez I true --ez U true --ez T true --ez Ptrue

这条广播也可以不带参数,将以默认的250ms刷新率,100的屏幕亮度,只关注电流值启动测试:adb shell am broadcast -acom.tencent.wstt.gt.plugin.battery.startTest

停止耗电指标的采集:adbshell am broadcast -a com.tencent.wstt.gt.plugin.battery.endTest

5)      广播驱动GT模拟GPS(对应月光宝盒插件)

注意:启动回放GPS轨迹之前要先在开发者选项里选择允许模拟位置;并在位置设置里打开只通过硬件设备定位。

l   启动回放指定序号的GPS路径文件,progress是可选参数,指定从某个进度开始回放,取值[0-100]:adb shell am broadcast -a com.tencent.wstt.gt.plugin.gps.startReplay--ei seq 0 --ei progress 0

l   或者启动回放指定名称的GPS路径文件,命令行对中文支持不好,所以路径文件尽量用英文命名,progress是可选参数,指定从某个进度开始回放,取值[0-100]:adb shell am broadcast -a com.tencent.wstt.gt.plugin.gps.startReplay--es filename xxxx.gps --ei progress 0

l   或者还可以直接回放单点坐标:adb shell am broadcast -a com.tencent.wstt.gt.plugin.gps.startReplay--es lng 116.15353149 --es lat 39.72413462

l   完整参数(经度lng,维度lat,精度acc,方位bear,速度spd,海拔alt):adb shell ambroadcast -a com.tencent.wstt.gt.plugin.gps.startReplay --es lng 116.15353149--es lat 39.72413462 --es acc 150.0 --es bear 77.3 --es spd 13.5 --es alt 60.70

l   停止模拟位置的回放:adbshell am broadcast -a com.tencent.wstt.gt.plugin.gps.endReplay

l   开始采集位置信息,filename参数可不填,但文件名需要以.gps作为后缀:adbshell am broadcast -a com.tencent.wstt.gt.plugin.gps.startRecord --es filenamexxxx.gps

l   停止采集位置信息:adbshell am broadcast -a com.tencent.wstt.gt.plugin.gps.endRecord

6)      广播驱动内存填充(对应内存填充插件)

l   内存填充:adb shellam broadcast -a com.tencent.wstt.gt.plugin.memfill.fill --ei size 200

l   内存释放:adbshell am broadcast -a com.tencent.wstt.gt.plugin.memfill.free

7)      广播驱动抓包(对应抓包插件)

抓包到指定路径的文件,参数param可以缺省:adbshell am broadcast -a com.tencent.wstt.gt.plugin.tcpdump.startTest --esfilepath "/sdcard/GT/Tcpdump/Capture/aaa.pcap" --es param "-p -s0 -vv -w"

结束抓包:adbshell am broadcast -a com.tencent.wstt.gt.plugin.tcpdump.endTest

10 简单使用示例

1)      请像安装普通APP一样的安装GT到手机(GT.apk)(请到GT官网下载最新版)

2)      从手机上启动已安装的GT ,进入如下界面

3)      选择一个已安装到手机的APP做为被测应用(AUT)

4)      选择被测APP关注的性能信息

5)      启动被测应用后,回到 GT 界面

6)      选择本次要测试的性能指标(包括整机性能信息)

7)      选择需要时刻关注的性能指标

8)      选择需要采集历史记录的指标

9)      进入被测应用界面,启动数据采集,开始测试

10)   测试完毕时,停止数据采集

11)   查看性能指标历史数据

12)   批量保存性能数据

13)   批量删除性能数据

14)   连上PC查看已保存的性能数据

GT性能测试Android版使用说明相关推荐

  1. android 校讯通 源码,校讯通Android版使用说明.doc

    校讯通Android版使用说明 说明: 以下截图均来自PC模拟器,实际效果会根据手机的Android系统版本高低,像素高低,分辨率大小,屏幕尺寸大小而有所差异,最终效果以自身手机为准! 下载校讯通An ...

  2. 泛泰binx和ota升级包下载工具Android版[2013.6.7提供源代码]

    一.简介及下载 写这个工具的目的是为了更方便地下载泛泰最新的binx包和ota升级包. Android版支持英简繁多国语言. 另有Windows版,以及相关介绍和编写说明: http://blog.c ...

  3. 3dmark android 中文,Android版3DMark现在登场

    本文约2103字,需4分钟阅读(全文浏览) Android版的3DMark于昨天晚上正式发布,这款大众熟知的显卡性能测试软件终于走进移动平台当中,与PC版3DMark相互呼应,踏出了跨平台的重要一步. ...

  4. python飞机大战概要设计_飞机大战游戏开发文档(Android版)

    飞机大战游戏 开发文档 (Android版) 课程名称:飞机大战游戏 课程类型:Android游戏编程精彩内容,尽在百度攻略:https://gl.baidu.com 姓名:苏均灿 学号:131342 ...

  5. 微信功能版(可用于电脑、安卓手机端)微信电脑版 使用说明

    好外号外!!!!本文是微信功能版(可用于电脑.安卓手机端)使用说明[转自网络,本文仅限于个人交流] 经过开发,此版本能够自行设置当前地址位置,可以随意改变地点,方便你有针对性的找任何地区的周边好友,交 ...

  6. linux 鲁大师,继Android版和iOS版之后,安兔兔... - @安兔兔 的微博精选 - 微博国际站...

    继Android版和iOS版之后,安兔兔评测Linux版今天正式发布.[打call] 需要注意的是,安兔兔评测Linux版目前仅支持x86平台,对于系统版本和硬件都没有明确的要求,但由于Linux发行 ...

  7. Android版网易云音乐唱片机唱片磁盘旋转及唱片机机械臂动画关键代码实现思路...

     Android版网易云音乐唱片机唱片磁盘旋转及唱片机机械臂动画关键代码实现思路 先看一看我的代码运行结果. 代码运行起来初始化状态: 点击开始按钮,唱片机的机械臂匀速接近唱片磁盘,同时唱片磁盘也 ...

  8. [原] Unity调用android版新浪微博

    本文提供unity调用微博android版 SDK 分享图片,现有sdk支持路径调用分享图片 雨凇MOMO已实现; 本文教会大家如何通过byte流分享图片(官方API pic true binary ...

  9. 飞行熊猫游戏源码android版

    这款游戏是前一段时间完成的一个项目,飞行熊猫游戏源码android版,飞行熊猫基于cocos2d游戏引擎开发,包括了谷歌admob广告支持,没有任何版权问题,大家可以自由修改和上传应用商店. 1.本游 ...

最新文章

  1. datax 持续数据同步_Datax 数据同步
  2. 拿高薪的程序员,都学习了什么编程语言?
  3. [XMAN2018排位赛]Dragon Quest [MRCTF2020]VirtualTree
  4. 启动mysql会遇到的问题_MySQL学习(一)——启动和登录MySql遇到的问题及解决
  5. Unix平台上OUI启动常见问题
  6. 超越“迁移”的思考:应用程序该如何被Kubernetes接管?
  7. Dropwizard:轻松的RESTful JSON HTTP Web服务
  8. LeetCode 376. 摆动序列(贪心 动态规划)
  9. 内部类及内部类什么时候使用
  10. 修改oracle数据库内存参数,物理内存扩容,oracle 11g R1数据库相关参数修改
  11. Mybatis框架相关知识讲解
  12. swagger隐藏实体类字段_你还在用 Swagger?试试这个神器!
  13. 今天我们开通知识星球了~
  14. matlab如何把正弦转化为余弦公式,高中正弦和余弦公式定理,正余弦转化公式
  15. linux下动态域名的实践
  16. srand c语言,C语言srand()rand()
  17. 计算机老师为什么不用伽卡他卡做文件服务器?
  18. 详解圆形头像Shader
  19. 360°全景图制作步骤和技巧有哪些?
  20. 微信登录(微信公众号授权)的开发(详解)

热门文章

  1. 项目管理之项目的挣值计算问题
  2. 捷联惯导中的姿态更新
  3. jrebel 反代理服务搭建
  4. “无穷大”与“老鼠会”
  5. php sql injection,PHP防止SQL Injection
  6. Interlaced Sparse Self-Attention for Semantic Segmentation
  7. 写好CSS代码的70个专业建议-前端开发博客
  8. Btree/B+tree原理及区别(详解)
  9. Maven命令行 打包
  10. 【容斥原理】【推导】【树状数组】Gym - 101485G - Guessing Camels