android - 测试Android应用程序时要记住的要点

标签 android testing

在测试 Android 应用程序时需要注意哪些不同点? android 使用了哪些不同的技术或测试用例?

最佳答案

好问题。这里列出了一些需要考虑的事项,并提供了可以提供帮助的工具的链接。
至于实现测试,您可以阅读列出的一些教程并使用诸如 Robotium 之类的框架。以简化测试的编写。
测试类型
以下是与测试 Android 应用程序相关的测试类型的非详尽列表。

  • 单元测试
  • 非 Android 特定,即业务逻辑
  • Android 单元测试,例如测试 UI 组件

  • 功能测试
  • Android 仪器测试

  • 集成测试
  • 测试app组件交互

  • 系统测试
  • 测试整个应用程序及其依赖项的黑盒测试

  • 无障碍测试
  • UI 组件是否包含正确的标签、描述和提示文本?
  • 是否有任何可能影响人们的潜在问题,例如色盲?

  • 安全性和可靠性测试
  • 输入在使用前是否经过验证,例如在本地数据库中,还是在发送到服务器之前?
  • UI 是否可靠地处理所有事件,例如配置更改,硬件事件?


  • 这取决于您的应用程序究竟做了什么,但应该可以使用下面列出的一些工具自动测试大部分内容。
    变量
    various Android devices 之间的软件和硬件功能不同.
    您应该结合您的目标市场将使用的设备类型,将这些考虑在内进行测试。
  • OS version
  • Screen density
  • 屏幕分辨率(小,普通 phones,大 [平板电脑])
  • 语言环境

  • 重要的是确保您支持 multiple screen types ,特别是确保您提供正确的 resources以支持具有不同屏幕密度和物理屏幕尺寸的设备。
    通常,您希望包含尽可能少的图形,但要使用各种 Android Drawable类型,通常允许您通过 XML 定义所需的图形。还要充分利用 automatically scale themselves 的布局和图像无论他们在什么设备上使用。
    这样做将使跨不同设备的测试更简单。
    工具
    编写测试
  • 集成 JUnit支持单元测试
  • TestCase 用于测试 Android 组件的类
  • Robotium — 一个使编写也可以跨多个 Activity 的黑盒功能测试变得非常简单的库

  • 使用模拟
    虽然Android提供了几个mock objects可用于伪造组件以用于测试目的,many more would be useful .
    出于这个原因(以及一般情况下),在设计应用程序时考虑到可测试性是一个好主意。比如不要直接访问ConnectivityManager ,而是创建一个接口(interface)来定义您需要的方法调用。然后编写该接口(interface)的两种实现:一种包装 Android ConnectivityManager和另一个模拟版本。选择要在运行时使用的实现,具体取决于您是否正在运行单元测试。
    运行测试
  • InstrumentationTestRunner — 运行自动化 Android 测试的默认实用程序
  • Android Emulator PluginJenkins — 自动创建和执行具有各种配置的 Android 模拟器,因此您可以非常轻松地跨多种设备类型测试一个 APK
  • monkey — 向您的应用程序发送随机命令; fuzzing的一种形式

  • 其他
  • 集成 EMMA支持测量 code coverage

  • 引用
    除了上面的所有链接,这里还有一些具体的文章:
  • Activity Testing Tutorial — Android 设置测试项目、编写和运行测试的快速概览
  • Testing and Instrumentation — Android 的测试 API 概述和故障排除技巧
  • Activity Testing — 来自 Android 的关于编写和运行的更多信息 Activity测试
  • 关于android - 测试Android应用程序时要记住的要点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844951/

    相关文章:

    java - 如何使用android中的回收器 View 将事件放入日历中

    android - 检查 realmObject 是否已更新

    android - 使用 1) 纹理图像和 2) ColorFilter 绘制非矩形形状

    unit-testing - 关于与其他方法组合的stubbing方法的问题

    css - TestCafe:使用 testcafe 测试元素的边框属性

    Android ListView 删除选择

    android - 从 CSV 文件大量插入 SQLite 数据库

    testing - 触发 'connection reset by peer'

    angularjs - Protractor 元素在某些时候不可点击?但是同一个元素接收到它的点击事件?

    java - Java 的免费/开源测试生成器?