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

这篇具有很好参考价值的文章主要介绍了【Android】测试方法汇总,助力打造完美应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Log 打印日志

使用android.util包的Log打印日志,应该是个Android开发人员都知道的吧,通过调用Logvdiwe等方法可使日志在Logcat控制台打印。LogLogcat控制台所打印日志String.length超过4061length4062起,将不再打印日志,缺少的日志不会显示在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即可开启断点调试。

安卓系统测试,Android,android,单元测试,功能测试,测试工具
Debug不仅仅可以进行断点测试,还可以在for循环指定断点的变量值,在if修改指定判断的值。

安卓系统测试,Android,android,单元测试,功能测试,测试工具
安卓系统测试,Android,android,单元测试,功能测试,测试工具

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

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

Monkey 压力测试

Monkey是一个在模拟器或设备上运行的程序,可生成伪随机用户事件(例如点击、轻触或手势)流以及很多系统级事件。可以使用Monkey以随机且可重复的方式对正在开发的应用进行压力测试。

Monkey的使用基于ADB,通过ADBshell脚本执行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 无线连接设备

为什么要介绍ADBADB不就是一个无线连接设备吗?用数据线连接设备不是更稳定吗?为什么要使用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进行测试。

除了以上的AppiumMonkey以外,还有很多很多的自动化测试工具供大家挑选,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() {

    override fun onCreate() {
        super.onCreate()
        BlockCanary.install(this, BlockCanaryContext()).start()
    }
}

如果有需要上传卡顿日志、调整卡顿阈值等一系列需求,可以通过继承BlockCanaryContext 类重写相关method实现。

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

安卓系统测试,Android,android,单元测试,功能测试,测试工具

注意:部分Android版本安装BlockCanary.install(this, BlockCanaryContext()).start()安装程序会出错,出错建议换个设备测试。

详情请看:AndroidPerformanceMonitor

App Inspection 应用程序检查

App Inspection位于Android Studio底部的菜单栏,通过App Inspection,Android API 26及以上设备在运行时可观察DatabaseNetworkBackground Task的相关数据。

Database Inspector

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

安卓系统测试,Android,android,单元测试,功能测试,测试工具

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

Network Inspector

Network Inspector用于观察网络请求相关数据,该功能类似抓包。目前,Network Inspector仅支持 HttpsURLConnection OkHttp网络连接库。如果您的应用使用的是其他网络连接库,您可能无法在Network Inspector中查看网络活动。

安卓系统测试,Android,android,单元测试,功能测试,测试工具
具体详情可参考:使用 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'
}

具体详情可参考:文章来源地址https://www.toymoban.com/news/detail-834866.html

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

到了这里,关于【Android】测试方法汇总,助力打造完美应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓Android Studio JNI开发问题澄清与汇总

    AndroidBitmap_lockPixels和AndroidBitmap_unlockPixels的底层逻辑就是在处理bitmap中的数据的时候,把内存锁定,防止像素缓存被改变导致数据变化。 这篇文章有具体介绍相关的机制 下面是Bitmap操作的示例代码: Java端代码: 使用时,可以直接调用NativeUtils中的processImage方法即可。当然,

    2023年04月09日
    浏览(58)
  • Android 开发必备知识点及面试题汇总(Android+Java+算法+性能优化+四大组件……),腾讯安卓开发面试

    5.请介绍下 AsyncTask的内部实现,适用的场景是 AsyncTask 内部也是 Handler 机制来完成的,只不过 Android 提供了执行框架来提供线程池来 执行相应地任务,因为线程池的大小问题,所以 AsyncTask 只应该用来执行耗时时间较短的任务, 比如 HTTP 请求,大规模的下载和数据库的更改不

    2024年04月15日
    浏览(65)
  • Win11上安卓设备与MTKClient连接失败,问题汇总,终极方法

    使用MTKClient连接安卓设备进行POC 设备环境:Win11,已安装Python环境,下载好MTKClient工具 安卓设备与MTKClient连接失败,无法识别到 问题表象: Preloader - [LIB]: Status: Handshake failed, retrying… 问题详见: 安卓设备与MTKClient连接失败问题记录 MTK 驱动问题 设备关机后USB连接,设备管理

    2024年02月21日
    浏览(95)
  • “此应用专为旧版android打造,因此可能无法运行”,问题解决方案

    当用户在Android P系统上打开某些应用程序时,可能会弹出一个对话框,提示内容为:“此应用专为旧版Android打造,可能无法正常运行。请尝试检查更新或与开发者联系”。 随着Android平台的发展,每个新版本通常都会引入新的功能和API,同时逐渐弃用或改变一些旧版本的API。

    2024年02月05日
    浏览(60)
  • Windows11安装安卓/Android子系统运行安卓应用程序详细教程

    开启电脑的虚拟化支持,在控制面板-程序和功能-启用和关闭windows功能。选择 Hyper-V 和 虚拟机平台 ,然后重启电脑即可。 访问 https://store.rg-adguard.net/ 搜索 https://www.microsoft.com/store/productId/9P3395VX91NR 下载最大的一个文件,即安卓子系统文件 下载地址: http://tlu.dl.delivery.mp.mi

    2024年02月03日
    浏览(57)
  • 单元测试必备:Asp.Net Core代码覆盖率实战,打造可靠应用 !

    在前几章我们深度讲解了单元测试和集成测试的基础知识,这一章我们来讲解一下 代码覆盖率 ,代码覆盖率是单元测试运行的 度量值 ,覆盖率通常以百分比表示,用于衡量代码被测试覆盖的程度,帮助开发人员评估测试用例的质量和代码的健壮性。常见的覆盖率包括语句覆盖

    2024年04月23日
    浏览(46)
  • 手机显示此应用专为旧版android打造,因此可能无法运行,点击应用后闪退的问题解决方案

    如果您在尝试安装并运行一个Android应用(APK文件)时遇到错误消息“此应用专为旧版Android打造, 因此可能无法运行”,或者应用在启动时立即崩溃,以下是一些您可以尝试的解决步骤: 图片来源:手机显示此应用专为旧版android打造,因此可能无法运行,点击应用后闪退的问题

    2024年01月21日
    浏览(80)
  • 安卓高级工程师面试题,Android 仪器化单元测试(1),ndk开发入门

    配置 build.gradle 依赖 dependencies { androidTestImplementation ‘androidx.test🏃1.4.0’ androidTestImplementation ‘androidx.test:rules:1.4.0’ } android { defaultConfig { testInstrumentationRunner “androidx.test.runner.AndroidJUnitRunner” } } 测试样例 测试代码 本例子参考 google 官方网站。因为官网里面很多类没有给到

    2024年04月16日
    浏览(45)
  • Qt应用开发(安卓篇)——Hello Qt On Android

            这一篇从实际出发,讲述如何创建、编译和部署Qt On Android项目。          ADB 的全称为Android Debug Bridge,就是起到调试桥的作用,主要用于连接计算机与 Android 设备,以便进行调试和数据传输。ADB 可以实现以下主要用途: 设备管理:允许用户连接和管理多个设

    2024年01月23日
    浏览(43)
  • 打造完美家庭空间,让生活更加舒适

    在现代繁忙的都市生活中,家是人们温暖而舒适的避风港。而如何打造一个恰到好处的家庭空间,成为了许多人心中的追求。今天,就让我们来探索一些空间布局方案,为您的家庭营造一个完美融合功能与美感的舒适空间。 🏠🍽️🍳开放式空间 在家庭空间布局中,开放式

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包