赞
踩
单元测试:https://developer.android.google.cn/training/testing
性能优化:https://developer.android.google.cn/topic/performance
Android Studio->USER GUIDE
Mockito:test Android API calls in local unit
Espresso or UI Automator:exercise user interaction in your instrumented tests
Espresso tests:generate automatically using Espresso Test Recorder
Write test:https://developer.android.com/training/testing
App performance:https://developer.android.com/topic/performance
为APP添加一个新的单元测试,详见
https://developer.android.com/studio/test#create_instrumented_test_for_a_build_variant
是一个工具,用于创建UI test,不需要写任何测试代码。通过记录一个场景的交互过程,工具会保存记录过程和自动生成相应的UI测试。运行Espresso test可以在本地,也可以和Firebase结合。
详细资料:https://developer.android.com/studio/test/espresso-test-recorder
压力测试工具,命令行工具,在设备或模拟器上运行。运行过程中产生伪随机的用户事件流。不需要写任何测试用例,常用于压力测试开发中的软件。
详见:https://developer.android.com/studio/test/monkey
monkeyrunner工具提供在代码之外控制设备或模拟器的API。结合monkeyrunner,可以实现一个python程序,用于安装app或测试一个包,运行该程序,对app的包发送按键、截图并保存等。monkeyrunner被设计主要用于测试app的functional/framework层级或者用于运行单元测试,当然也可以用其他目的。
monkeyrunner和monkey无关。Monkey通过adb在设备或模拟器中运行,monkeyrunner在工作站中运行,使用API发送一系列命令给设备或模拟器。monkeyrunner为Android测试提供了一些独特的特点:
monkeyrunner工具使用使用python实现的工具Jython。Jython使monkeyrunner API很容和Android framework交互,使用Jython,可以使用python语法访问常量、类、方法。
如果app响应慢、动画显示快慢不一、冻屏、崩溃或者消耗很多电源,都是低性能的表现。为了避免这些性能问题,使用统计分析等工具识别app哪里低效的使用了资源,如CPU、内存、绘图、网络等。
注意:为了统计分析app,应该关掉动态安装app功能。使用动态安装app在一定程度上会影响性能。
官方工具汇总:https://developer.android.com/studio/profile
Android Device Monitor中的一个工具,统计UI layout的层级,若层级太深,UI显示需要加载更多资源,如果app响应慢,就要分析layout的层级是否合理。该工具目前不在被推荐使用,在AndroidStudio中使用 Layout Inspector。Layout Inspect运行时分析UI和验证UI,尤其是运行时构建布局且layout的行为不是期待的时候很有用。Layout Validation允许同时在不同尺寸的设备上预览布局,包括字体大小、不同的语言,很方便的测试很多通常的部分问题。
操作指南:https://developer.android.com/studio/profile/hierarchy-viewer?hl=en
Android Profiler在AndroidStudio 3.0+替代Android Monitor tools。Androd Profiler提供CPU、内存、网络、电源使用的实时数据。
操作指南:https://developer.android.com/studio/profile/android-profiler
优化CPU使用率有很多好处,比如带来快速的、顺滑的用户体验和保护设备电池的生命周期。使用CPU Profiler在与应用程序交互时实时检查应用程序的CPU使用情况和线程活动,或者可以检查记录的方法跟踪、函数跟踪和系统跟踪中的详细信息。CPU profile显示的信息类型由对工具的配置决定:
操作指南:https://developer.android.com/studio/profile/cpu-profiler
实践总结:使用trace分析app一个功能的调用过程
Android Profiler的一个组件,帮助识别内存泄漏和内存抖动,内存抖动会导致卡顿、冻屏甚至app崩溃。显示app实时使用内存情况的图形,帮助抓取堆栈信息、强制内存回收、跟踪内存分配。分析内存也可以使用dumpsys meminfo命令;也可以分析log中GC时间,详见https://developer.android.com/studio/debug/am-logcat#memory-logs。
操作指南:https://developer.android.com/studio/profile/memory-profiler
Android提供一个内存环境管理,决定app哪些对象不在需要使用,垃圾回收器释放并回收不再使用的内存到堆栈。Android不断的优化着发现不再使用的内存的方法,在当前的所有Android版本,内存回收都会导致运行的程序短暂的暂停,多数时候这种暂停是不可察觉的。但是,如果app申请内存的速度大于系统回收的速度,app可能会暂停更长时间以释放足够的内存,这会导致app丢帧和可见的延迟(表象为卡顿)。
即使app不存在明显的卡顿,如果内存泄漏,当app在后台运行,依然持有一些内存。这会导致系统强制执行回收不必要内存事件,来减缓了系统的剩余内存性能。最后,系统强制杀掉应用,回收内存,如此会导致,当app重新回到前台时需要完全启动(需要更长的事件和更多的资源)。
为了阻止这些问题的出现,应该使用Memory Profiler,按照如下方式:
操作指南:https://developer.android.com/studio/profile/memory-profiler
更多关于内存管理:https://developer.android.com/topic/performance/memory
Network Profiler:https://developer.android.com/studio/profile/network-profiler
Energy Profiler:https://developer.android.com/studio/profile/energy-profiler
一个从跟踪日志文件生成图形调用堆栈图的工具。该工具使用Graphviz Dot工具创建图形输出,因此在运行dmtracedump之前需要安装Graphviz。
App运行时,要生成一个方法的跟踪日志,可以使用Debug类,这种方法可以准确的获取设备开始和结束记录之间的跟踪信息,可以保存跟踪日志到指定的位置,可以很容易识别出每一个log。可以使用CPU Profiler查看跟踪日志。在开始生成跟踪日志之前,需要确定在代码中添加了保存跟踪日志到指定目录的逻辑。在代码中添加生成跟踪日志的开始和结束点,详见:https://developer.android.com/studio/profile/generate-trace-logs。
也可以使用CPU Profiler获取跟踪日志,不需要在代码中添加明确的开始和结束逻辑。
dmtracedump工具将调用堆栈数据生成树图,其中每个节点表示方法调用。 它使用箭头显示调用流(从父节点到子节点。 下图显示了dmtracedump的示例输出。
使用指南:https://developer.android.com/studio/command-line/dmtracedump
systrace命令调用Systrace tool,在系统层面收集和检测设备中所有进程的时序信息。该工具很强大,可以辅助分析系统性能以及分析解决一些疑难杂症。
使用指南:https://developer.android.com/topic/performance/tracing
通过Android调试桥(ADB)从Android设备收集性能信息的工具。Perfetto使用各种来源从设备中收集性能跟踪,例如下面
使用指南:https://developer.android.com/studio/command-line/perfetto
在android设备上运行并提供系统服务信息的工具,可以通过adb在命令行使用dumpsys,从运行中的设备获取有诊断信息的输出。输出信息比想象的要详细,使用命令时使用适当的选项获取感兴趣的信息。使用该命令可以完成通用任务的诊断,如input、RAM、电源、网络。
使用指南:https://developer.android.com/studio/command-line/dumpsys
Locate:Docs->GUIDES->Best practices:Performance
性能优化汇总:https://developer.android.com/topic/performance
使用app实现一个很cool的想法,是一件令人愉快的事情。这只是开始,接下来是要对app性能最大化。例如:
这部分提供了需要的诀窍,以使应用程序不仅cool,而且有很好的性能。
重点方面:
官网:https://developer.android.com/topic/performance/vitals
Design->TESTS
Android提供了很多测试套件,如VTS、CTS、SST等。在标准化情况下,一定程度上能确保系统的稳定性和扩展性。多媒体盛行的现在,多媒体测试显得尤为重要,video and codelab tutorials。
使用git hooks协助运行test,例如在提交前。该方案的实现基于完成的持续集成系统。
详细内容详见:https://source.android.google.cn/compatibility/tests
梳理总结资料,详见“Android test and performance”。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。