0


【Android】测试方法汇总,助力打造完美应用

目录

Log 打印日志

使用

android.util

包的

Log

打印日志,应该是个

Android

开发人员都知道的吧,通过调用

Log

v

d

i

w

e

等方法可使日志在

Logcat

控制台打印。

Log

Logcat

控制台所打印日志

String.length

超过

4061

length

4062

起,将不再打印日志,缺少的日志不会显示在

Logcat

控制台。

针对这个问题,推荐使用logger组件

1、导入项目

implementation 'com.orhanobut:logger:2.2.0'

2、初始化

Logger.addLogAdapter(AndroidLogAdapter())

3、使用

Logger.d("hello")

通过

logger

打印的日志

length

大于

4061

,会自动换行在

4062

继续打印。

Junit 单元测试

单元测试是应用程序测试策略中的基本测试,通过对代码进行单元测试,可以轻松地验证单个单元的逻辑是否正确,在每次构建之后运行单元测试,可以帮助您快速捕获和修复因代码更改(重构、优化等)带来的回归问题。

系列文章:
Android 单元测试只看这一篇就够了
Android单元测试(一):前言
Android单元测试(二):什么是单元测试
Android单元测试(三):测试难点及方案选择
Android单元测试(四):JUnit介绍
Android单元测试(五):JUnit进阶
Android单元测试(六):Mockito学习
Android单元测试(七):Robolectric介绍
Android单元测试(八):怎样测试异步代码

Debug 断点调试

Debug

断点调试,在需要测试代码所在行左侧打好断点,连接设备后只需要点击Android Studio右上角菜单栏的

Debug app

或启动应用后点击

Attach Debugger to Android Process

即可开启断点调试。

在这里插入图片描述

Debug

不仅仅可以进行断点测试,还可以在

for

循环指定断点的变量值,在

if

修改指定判断的值。

在这里插入图片描述
在这里插入图片描述

具体使用详情可参考以下文章
1、Debug your app
2、Android 调试实战与原理详解

其它文章参考
1、Debug web apps
2、Debug WorkManager

Monkey 压力测试

Monkey

是一个在模拟器或设备上运行的程序,可生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。可以使用

Monkey

以随机且可重复的方式对正在开发的应用进行压力测试。

Monkey

的使用基于

ADB

,通过

ADB

shell

脚本执行Android系统命令。你可以使用计算机上的命令行启动

Monkey

,也可以通过脚本启动。由于

Monkey

在模拟器/设备环境中运行,因此必须从该环境中通过

shell

启动它。为此,可以在每个命令前面加上

adb shell

,或者直接进入

shell

并输入

Monkey

命令。

Monkey

在运行时会生成事件并将其发送到系统。它还会监视被测系统并查找三种特殊情况:

  • 如果您已将Monkey限制为在一个或多个特定软件包中运行,它会监视并阻止转到任何其他软件包的尝试。
  • 如果应用崩溃或收到任何未处理的异常,Monkey会停止并报告错误。
  • 如果应用生成“应用无响应”错误,Monkey会停止并报告错误。

基本使用:

adb shell monkey -p your.package.name -v number.of.events
Monkey

不仅仅可以使用生成伪随机用户事件,还可以指定用户事件触发位置,详情请看:

1、UI/Application Exerciser Monkey
2、Android自动化测试入门(一)Monkey和MonkeyRunner
3、【极客学院】 Android 测试
4、Android 查看apk包名、当前Activity名等

Profiler 性能分析器

Android Studio 3.0 及更高版本中的 Android Profiler 取代了 Android Monitor 工具。Android Profiler 工具可提供实时数据,帮助您了解应用的 CPU、内存、电池资源使用情况。

Profiler

使用教程:Android Profiler
Android Studio 3.0 利用 Android Profiler 测量应用性能

ADB 无线连接设备

为什么要介绍

ADB

ADB

不就是一个无线连接设备吗?用数据线连接设备不是更稳定吗?为什么要使用

ADB

ADB

的全称为

Android Debug Bridge

,就是可以起到调试桥的作用。

ADB

可以在局域网内通过IP地址连接到设备,使得Android Studio可以通过它对设备的应用进行安装调试等一系列设备操作,但网络不稳定可能会出现时不时连接中断的情况。

手机使用数据线连接设备相对于

ADB

来说更便捷,Android 11+ 的设备还可以通过扫码进行无线连接。但这种情况是相对于小型设备和有相机扫码且系统版本Android 11+的设备来说的。一些厂家魔改的Android设备是没有Type-c接口,部分设备可能会有相机,但Android版本大于10的设备少之又少,而TV设备呢,既没有Type-c接口,也没有相机,这时候要想安装设备并调试应该只剩下

ADB

这一条路可以走了。

关于

ADB

连接设备调试,可以看我的文章:ADB无线连接Android设备

另外,华为的

HDB

也是可以通过使用

ADB

进行连接的。

Appium 自动化测试

Appium

是一个开源测试自动化框架,用于原生、 混合和移动 Web 应用程序的自动化测试。

关于

Appium

连接设备调试,可以看我的文章:App自动化测试 —— Appium的使用

对我个人而言,

Appium

的局限性还是蛮大的,与

Monkey

相比,执行效率较慢,操作较为繁琐,且小型项目不适合使用

Appium

进行测试。

除了以上的

Appium

Monkey

以外,还有很多很多的自动化测试工具供大家挑选,

Google

力推的

Espresso

也是个不错的自动化测试框架,缺点就是要写代码…感兴趣的可以了解一下:Android自动化测试入门(三)Espresso

BlockCanary 界面卡顿检测

BlockCanary

是Android平台的一个非侵入式的性能监控组件,应用只需要实现一个抽象类,提供一些该组件需要的上下文环境,就可以在使用应用之时检测主线程上的各种卡慢问题,并通过组件提供的各种信息分析出卡顿原因。

BlockCanary

的使用极其简单,仅需在

build.gradle

导入依赖,接着初始化即可。

dependencies {
    implementation 'com.github.markzhai:blockcanary-android:1.5.0'// 仅在debug包启用BlockCanary进行卡顿监控和提示的话,可以这么用// debugImplementation 'com.github.markzhai:blockcanary-android:1.5.0'// releaseImplementation 'com.github.markzhai:blockcanary-no-op:1.5.0'}
class MyApplication :Application(){overridefunonCreate(){super.onCreate()
        BlockCanary.install(this,BlockCanaryContext()).start()}}

如果有需要上传卡顿日志、调整卡顿阈值等一系列需求,可以通过继承

BlockCanaryContext 

类重写相关

method

实现。

将代码运行至设备上,发生主线程阻塞之时,顶部通知栏会显示一条阻塞通知,点击即可观看阻塞详情。如下图MainActivity 16行代码主线程出现了阻塞1008ms的问题。

在这里插入图片描述

注意:部分Android版本安装

BlockCanary.install(this, BlockCanaryContext()).start()

安装程序会出错,出错建议换个设备测试。

详情请看:AndroidPerformanceMonitor

App Inspection 应用程序检查

App Inspection

位于Android Studio底部的菜单栏,通过

App Inspection

,Android API 26及以上设备在运行时可观察

Database

Network

Background Task

的相关数据。

Database Inspector

Database Inspector

用于观察本地数据库数据。

在这里插入图片描述

具体详情可参考:使用 Database Inspector 调试数据库

Network Inspector

Network Inspector

用于观察网络请求相关数据,该功能类似抓包。目前,

Network Inspector

仅支持

HttpsURLConnection 

OkHttp

网络连接库。如果您的应用使用的是其他网络连接库,您可能无法在

Network Inspector

中查看网络活动。

在这里插入图片描述
具体详情可参考:使用 Network Inspector 检查网络流量

Background Task Inspector

Background Task Inspector

可以让你直观呈现、监控和调试应用的后台

worker

具体详情可参考:
WorkManager 代码示例
使用后台任务检查器调试 WorkManager worker

Leakcanary 内存泄漏(ML)、内存溢出(OOM)检测

内存泄漏(Memory Leak),简称ML,指程序在申请内存后,无法释放已申请的内存空间,导致系统无法及时回收内存、分配内存给其他进程使用。通常少次数的内存无法及时回收并不会到程序造成什么影响,但是如果在内存本身就比较少,内存多次无法正常回收时,会导致内存不够分配,最终导致内存溢出。

内存溢出(Out Of Memory),简称OOM,指程序申请内存时,没有足够的内存供申请者使用,导致数据无法正常存储到内存中。

Leakcanary

是一个Android系统的内存泄漏检测库。

Leakcanary

添加依赖即可使用,当你你的应用程序安装上设备的同时会附带安装

Leaks

App,运行应用程序的过程中若是检测到内存泄漏,通知栏与

Leaks

都可以看到内存泄漏通知。

dependencies {
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.10'}

具体详情可参考:

  • Android 常见内存泄露 & 解决方案
  • Leakcanary源码:Leakcanary
  • Leakcanary工作原理:How LeakCanary works
  • Leakcanary修复内存泄漏:Fixing a memory leak

本文转载自: https://blog.csdn.net/baidu_41616022/article/details/129712597
版权归原作者 宾有为 所有, 如有侵权,请联系我们删除。

“【Android】测试方法汇总,助力打造完美应用”的评论:

还没有评论