文章目录——Android应用测试篇

  • 前言
  • 一、测试覆盖率最大化
    • 1. 验证版本并设计冒烟测试
    • 2. 自动化测试
    • 3. 在模拟器中测试与在设备中测试
    • 4. 测试策略:黑盒测试和白盒测试
    • 5. 测试移动应用的服务器和服务
    • 6. 测试应用的外观视觉和可用性
    • 7. 处理特定的测试场景
    • 8. 测试应用的集成
    • 9. 测试应用的升级
    • 10. 测试产品的国际化
    • 11. 测试程序的合法性
    • 12. 安装测试
    • 13. 备份测试
    • 14. 性能测试
    • 15. 测试应用中的付费机制
    • 16. 测试意外情况
  • 二、利用Android 的SDK 工具来测试应用
    • 1. 工具简介
    • 2. 避免Android 应用测试中的一些低级错误
  • 参考书籍

前言

尽早测试,频繁测试,在设备上测试。这是对于Android应用来说最重要的质量保证圣经。

一、测试覆盖率最大化


1. 验证版本并设计冒烟测试

  • 除了常规的构建过程,我们也可以制定一套版本验收测试策略(有时也成为版本验证,冒烟测试或健全测试)。版本验收测试的时间很短并且只针对最关键的功能来确定该版本是否足够好,值得完成更全面的测试。这也是在再测试周期之前快速验证bug是否在该版本中已按照预期解决的机会。可以在多个Android平台版本上同时进行版本验收测试。

2. 自动化测试

  • 需要频繁的在最高优先级的目标设备上进行版本验收测试。这也是自动化健全测试的理想场景。使用Android SDK 中名为 monkeyrunner 的测试工具运行自动化测试脚本,可以帮助测试团队确定这个版本是否值得进一步测试,减少传给测试团队不良版本的数量。基于Python 的一系列API接口,可以编写出在模拟器和设备上安装和运行应用的脚本,发送特定的按键敲击,并截屏。结合JUnit 单元测试框架,可以开发出强大的自动化测试套件。

3. 在模拟器中测试与在设备中测试

  • 当可以获得用户使用的设备时,就把测试精力集中到这上面,但是,真机设备和服务条约通常比较昂贵。你的测试团队不太可能建立一个环境涵盖所有运营商,或发行应用的每一个国家。某些时候Android 模拟器可以有效减少花费,提高测试覆盖率。下面列出的是使用模拟器的一些好处:

    –可以模拟出那些获取不到(或者供应短缺)的设备。
    –可以做那些在真机设备上无法执行的复杂测试场景
    –可以和其他桌面软件一样做自动化测试

4. 测试策略:黑盒测试和白盒测试

Android工具提供了丰富的用于黑盒测试和白盒测试的资源

  • 黑盒测试者可能只需要真机设备和测试文档。针对黑盒测试,更重要的是测试员有设备相关的知识,所以提供设备的指导手册和技术文档对测试的准确性也有不小的帮助。此外,了解设备间的细微差别和设备标准可以帮助可用性测试。举例来说,如果设备有一个可用的底座,那么了解清楚它是横向还是纵向的也是很有意义的。
  • 白盒测试在移动端并不容易做到。白盒测试员有很多可以利用的工具,包括Android Studio 以及 Android SDK 中的其他很多调试工具。白盒测试员特别经常使用Android 模拟器,Android 设备监视器和 ADB。 它们也可以使用强大的测试 API,如AndroidJUnitRunner,Espresso,uiautomator;以及使用视图层级查看器调试用户界面。对于这些任务,测试人员需要一台开发环境和开发人员相同的电脑,并且需要具备 Java, Python 和其他各种开发人员使用的工具的相关知识。

5. 测试移动应用的服务器和服务

  • 对服务器进行版本进行控制。应该像构建流程中其他环节一样管理服务器的部署,服务器应该以一种可再现的方式进行版本管理和部署。
  • 使用测试服务器。通常是在控制的环境中的模拟服务器上测试,特别是真实服务器已经在线上为用户服务的情况下。
  • 验证可扩展性。测试服务器或者服务的承载能力,包括压力测试(很多用户,模拟器的客户端)
  • 验证服务器的安全性(黑客攻击,SQL注入等)
  • 确保与服务器双向数据传输是安全的且不易被监听(SSL, HTTPS,有效的证书)。
  • 确保应用能优雅地处理远程服务器的维护或服务中断的情况,不论是有计划的还是不可预期的。
  • 在新服务器上测试旧版本的客户端来保障它也能正常运行。除了客户端的版本,也需要考虑对客户端和服务器之间的通信协议进行版本化管理。
  • 测试服务器的升级以及回滚,并制定一个在服务器崩溃时通知用户的计划。

6. 测试应用的外观视觉和可用性

测试移动应用并不只是找出有问题的功能,同时也要评估应用的可用性——如报告应用中缺少视觉吸引力的地方,或者很难使用的导航。

7. 处理特定的测试场景

除了功能性测试,也要考虑到其他一些特定的测试场景。

8. 测试应用的集成

另一个必要测试的是,应用是如何与Android 系统的其他部分相结合的。如

  • 确保应用能正确处理操作系统发出的中断信号(收到短信,来电,关机)
  • 验证应用公开的内容提供者数据,包括作为活动文件夹使用
  • 验证其他应用通过Intent 触发的事件的处理
  • 验证在本应用中通过Intent 触发的事件的处理
  • 验证在 Android Manifest.xml 中定义的其他输入点, 如应用的快捷方式。
  • 验证应用可选的其他形式, 如应用组件。
  • 验证服务相关的功能

9. 测试应用的升级

  • 如果可能的话, 就为客户端和服务器端都执行升级测试。如果是有规划升级支持,我们可以开发一个模拟的已升级的应用,这样QA人员就可以验证数据是否正确迁移——即便已升级应用未对这些数据做任何操作。
  • 如果应用需要数据库的支持,你需要测试数据库的版本变化。数据库的升级是迁移现有数据,还是删掉数据?迁移工作是从之前的所有版本的应用中到现有版本,还是只迁移最近一次的版本?

10. 测试产品的国际化

11. 测试程序的合法性

  • 你要彻底审核应用必须遵守所有策略,许可和条款。举例来说,Android 应用默认情况下必须遵循 Google Play 的开发人员发布许可以及Google Play 的其他服务条款。

12. 安装测试

总的来说,Android 应用的安装是简单直接的, 但是你需要在具有更少资源和内存的设备上进行测试,也应该从不同的应用市场进行测试。如果清单文件中配置允许在外置存储器设备中安装应用,那么还需要针对该场景进行测试。

13. 备份测试

不要忘记测试那些对用户不常见的功能,如备份和还原服务,以及同步功能。

14. 性能测试

  • 应用的运行性能在移动世界里是非常重要的。 Android SDK对于收集应用中的性能基准, 监视内存和资源的使用提供了支持。测试人员应该熟悉这些工具并经常使用它们来发现运行瓶颈和危险的内存泄漏,不当的资源使用等异常情况。
  • 常见的性能问题是:把所有的工作都放在主线程UI 线程去执行,一些占用时间和资源的任务,如网络下载,XML解析,图像渲染等都应该从主线程移出,这样用户界面才能保持随时响应。

15. 测试应用中的付费机制

16. 测试意外情况

Monkey命令行工具可以帮助测试该类事件。

二、利用Android 的SDK 工具来测试应用


1. 工具简介

  • 物理设备来做测试和问题重现
  • Android 模拟器来做自动化测试, 或者在设备不可用时测试版本
  • Android 设备监视工具可以用来调试, 与模拟器/设备进行交互,也可以用来截屏
  • ADB 工具可以做日志跟踪, 调试和访问shell工具
  • Exerciser Monkey 命令行工具可以做压力测试(可以通过 adb shell 命令来访问)。
  • 通过 monkeyrunner 的API 可以做自动化的单元测试套件, 并编写功能性和框架性单元测试。
  • AndroidJUnitRunner API 可用来运行JUnit3 和 JUnit4 的 Instrumentation 测试
  • Espresso 功能UI 测试框架
  • uiautomator 测试框架, 包括一个命令行工具和一系列 API。 可以在一种或多种设备中做用户界面的自动化测试(编写UI 功能性测试用例)
  • UiAutomation 类可以横跨多个应用完成自动化工作和模拟用户交互,并允许你观察用户界面来确定测试是否通过。
  • uiautomatorviewer 工具, 通过扫描实际 Android 设备(用于创建详细测试)的屏幕上显示的视图,帮助理解布局的视图层级。
  • 通过 logat 命令行工具来查看应用生成的日志信息(最好使用调试版本)。
  • traceview 应用,用来查看和解析从应用中生成的日志文件。
  • 通过 sqlite3 命令行工具来访问应用中的数据库(利用 adb shell 命令就可以)
  • 视图层级查看器工具用来执行用户界面调试,执行性能调整,和获取设备的屏幕截图。
  • lint工具, 可以用来优化应用的布局资源。
  • systrace 工具,分析应用进程在显示和执行所用的时间
  • bmgr 命令行工具, 用来执行备份管理测试。

2. 避免Android 应用测试中的一些低级错误

  • 没有像客户端那样彻底地测试服务器或者服务组件。
  • 没有使用正确的Android SDK 版本来做测试
  • 没有在真机设备中进行测试,认为模拟器就足够了
  • 测试所采取的系统和用户使用的不同
  • 没有在有足够代表性的设备配置上测试
  • 没有完整测试应用的所有入口
  • 没有在不同的信号覆盖率以及网络速度下执行测试
  • 没有在电池供电的情况下进行测试,测试时不要让设备一直处于充电状态。

参考书籍

Android 6.0 开发秘籍 第5版 郭华丰 刘杰 译

Android应用测试篇相关推荐

  1. android测试篇(四)android专项测试之压力测试

    前言 抄袭文章来源:Android App专项测试-压力测试篇 小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过And ...

  2. Android专项测试性能篇整理

    Android专项测试性能篇整理 转自 slq520 分类专栏: APP性能测试 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...

  3. android测试篇(三)单元测试之UI测试 Espresso学习与实践

    前言 上一章并没有说仪器化测试,仪器化测试存放在src/androidTest目录中,仪器化测试即UI测试. 本文并没有多加理解,按照Android UI 测试指南之 Espresso抄袭(会标注转载 ...

  4. Gradle for Android 第三篇( 依赖管理 )

    Gradle for Android 第三篇( 依赖管理 ) 依赖管理是Gradle最闪耀的地方,最好的情景是,你仅仅只需添加一行代码在你的build文件,Gradle会自动从远程仓库为你下载相关的j ...

  5. Android 自动化测试 Espresso篇:简介基础使用

    前言 最近在尝试深入学习Android单元测试. 以前笔者对于单元测试的理解很简单,做一个简单的API测试获取Server端数据,或者测试对应简单的工具类和数据处理的逻辑. 经过这近一个月的碎片化学习 ...

  6. Android记录5--关于Android云测试的小思考

    Android记录5--关于Android云测试的小思考 2013年8月28日Android记录5 前言 随着实习的时间不断推移,小巫遇到的新鲜事物也越来越多,当初选择Android着实是比较明智的选 ...

  7. Android设备测试应用总结

    Android设备测试应用总结 一个多月没有来写新的文章了,因为之前在忙着学习新的东西,接着又做了一个用来测试的APP,到今天算是有时间写一下博客,主要是对这个应用做一个总结,会是一篇不短的文章,涉及 ...

  8. Android期末复习篇_传智课后习题以及答案(选择、填空、判断、简答、编码题)

    写在前面 此为移动应用开发传智课后习题及答案,供期末复习使用,注意 答案仅供参考 加粗题目为强调 题型涉及:选择.判断.填空.简答.编程题 另8章习题及答案汇总:Android期末复习篇_8章节练习题 ...

  9. Android SDK 测试(一)

    本文原文链接:未必平凡博客 https://vv2014.com/372.html 转载请注明出处[vv2014.com] 最近在做Android SDK的测试,因为之前从来没有接触过,所以在这里需要 ...

  10. Android绘图最终篇之大战贝塞尔三次曲线

    零.前言 1.可以说贝塞尔曲线是一把 "石中剑",能够拔出它,会让你的绘图如虎添翼. 2.今天要与贝塞尔曲线大战三百回合,将它加入我的绘图大军麾下. 3.自此Android绘图五虎 ...

最新文章

  1. Webpack 4 api 了解与使用
  2. windows下对路由表的操作命令
  3. android linux应用安装位置,Android中App安装位置详解
  4. Java文件能编译成lib吗_Makefile用于将一些.cpp和.h编译成lib
  5. DIY人脸跟踪电风扇送女朋友(3)
  6. vagrant,流浪汉,我又来啦。
  7. 前端学习(2510):文件目录
  8. Python网络编程——socket套接字实现UDP/TCP信息传输
  9. VMware vSphere 6.5配置系列
  10. 在webpack和vue-cli上的rem适配终极方案
  11. Staked 回应节点遭到 slash 惩罚:由技术性问题导致,将全额赔偿受影响客户
  12. MQ(消息队列)常见的应用场景解析
  13. 渗透工具—反制爬虫之Burp Suite RCE
  14. RedHat中squid简易配置
  15. 详解Spring Security进阶身份认证之UserDetailsService(附源码)
  16. PPT做的很好却不会讲?掌握这些职场PPT演讲技巧,不再惧怕做汇报
  17. MIDAS GTS NX在高边坡工程中的应用
  18. Docker安装PHP-FPM5.6 (自带redis扩展,Mysql扩展,GD库扩展(支持JEPG))
  19. WechatSpellbook学习笔记
  20. Linux服务器期末复习总结

热门文章

  1. php 字符串首字母ucfirst函数转换成大写
  2. unity抗锯齿关闭
  3. 解决OneNote for Windows 10 不能打开onedrive上已有笔记本问题
  4. C语言方波转换正弦波,方波转换成正弦波电路
  5. 爬虫-Scrapy(七)抓取招聘信息技能关键词,生成词云图
  6. JSON_UNQUOTE 和JSON_EXTRACT 的简单认识
  7. 【校招VIP】考研二战长时间没工作,面试被问为什么有职场空窗期?你应该这样回答
  8. 测试用例设计正交试验法、功能图法
  9. 主动降噪ANC 耳机的传参设计
  10. 今晚8:00 | CEI Lab 软硬件协同优化专题,顶会MICRO最佳论文作者来啦