测试流程

测试作为开发重要的一环,其中包含有简单的迭代流程

  1. UI 测试迭代

要运行app, 必须进过UI测试,从UI测试失败-> UI 测试成功-> 重构的过程,失败与成功中间含有单元测试

  1. 单元测试

单元测试就是对基本的逻辑进行测试,迭代循环(单元测试失败->单元测试成功->重构)

测试金字塔

从基础到高级,规模也是从小到大递增

  1. 单元测试
  2. 集成测试
  3. UI测试

优缺点:

小测试:虽然快,但是当遇见大型项目时,让人困惑这是否还管用

大型测试: 慢而且复杂,但是对于大型项目这是必须的,

测试时,注意用到的比例:小测试70,中测试20,大测试10

小测试

  • Robolectric

他很好地支持android设备,具体如下

  • android 4.1以上
  • gradle 2.4及上
  • 主件周期
  • 事件循环
  • 所有的资源

Robolectric官网

  • mockit

这也是单元测试框架,它可以模拟android框架,具体还没有看清楚,到用时再说清楚吧‘

Mockit官网

  • 仪器化单元测试

你也可以在真机或模拟器上使用仪器化测试,它并不会涉及任何框架的模拟或残桩,因为这种类型的测试的执行时间,明显比本地的单元测试时间慢,只有在评估app运行在真机上的性能时才会采用

中型测试

当在开发环境测试完单元测试时,你可能会改变组件在模拟器或真机上的行为,中级测试允许你完成开发过程的这部分工作。如果你的某些组件很依赖于真机环境,这部分工作是非常重要的。

中级测试评估多个单元测试,但是他并不测试整个app,比如中级测试包括服务测试,集成测试,密封UI测试来模拟外部依赖的行为

通常,你最好在模拟器或是Firebase Test Lab来测试你的app,而不是真机上,主要是你可以测试不同设备的表现,简单而快速

大型测试

尽管在app内单独进行每一层级和特性进行测试是很重要的,就像测试包含完整的栈,从UI到数据层的工作流和用例一样重要,

如果你的app规模很小,你只需要一个大型测试就可以评估你的app整个功能,否者,你还是得将测试分了,团队所有权,垂直功能,用户目标

  • AndroidJUnitRunner

它帮助加载包和app到设备上,运行你的测试,报告你的结构

  • JUnit Rules

可以启动activity 或是service

Espresso

有如下功能:

  • 对view执行动作
  • 通过app的流程边界-26以上
  • 评估用户是怎么使用你的app的
  • 定位或者激活with RecyclerView,AdpterView
  • 使外部intent有效
  • 改变Web的DOM结构
  • 跟踪长时间在后台运行的操作

UI Automator

检测当前展示UI,截屏,分析设备当前状态,等,但是由于很依赖于android版本,所以不是必须的话,不用太在意。

results matching ""

    No results matching ""