测试 Android 应用程序进程生命周期并在达到空进程状态时恢复状态

标签 testing android-lifecycle android

我最近一直在努力提高我在应用程序进程生命周期的各个阶段管理 Android 应用程序状态方面的知识和技能。具体来说,我一直在测试 maintain and share global data between activities 的各种方法。 .在我的测试应用程序中,为了测试全局应用程序数据和/或单例数据的重新创建,我需要等待几个小时或更长时间,以便我的手机确定其他进程更重要并将我的测试应用程序处于 process lifecycle documentation 中定义的空进程状态.此时,应用程序的数据被释放,一旦应用程序再次被带到前台就需要重新创建。如果操作不当,重新初始化应用程序的最后已知状态可能会因各种原因导致强制关闭。

所以,我的问题是,除了等待这种自然发生之外,是否有真实世界的方法来测试这种情况。例如,测试应用程序进入后台(非常)延长的时间段然后在应用程序达到空进程状态后再次被带到前台的 QA 用例会是什么样子?

最佳答案

我已经对此进行了一些试验和错误,并提出了一个很好的解决方案:

最终,这归结为每个 Activity 都能够独立恢复其状态。这也适用于应用程序。 “空进程”状态是操作系统认为应用程序不再重要后将其置于的最终状态。

以下是我用来测试我的应用程序的空进程场景的方法:

  1. 将您的应用程序打开到相关页面。
  2. 按下“首页” 手机上的按钮。
  3. 开启不少于3个高资源占用 具有长滚动 ListView 的应用程序(我使用 Facebook、Youtube 和 Google Play 商店)。
  4. 在每个应用程序中向下滚动 ListView 量使用系统资源。
  5. 用完所有 3 个应用后, 重新打开您的应用。

为每个 Activity 和 fragment 运行上述测试不仅可以测试 Activity 和/或 fragment 的完整重建,还可以测试整个应用程序。

这有点像 P.I.T.A.,但它很有效。

关于测试 Android 应用程序进程生命周期并在达到空进程状态时恢复状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19433679/

相关文章:

java - 是否有一个技术堆栈可以轻松连接 Android 应用程序?

java - Android 矩形相交不起作用

python - 如何使用临时文件系统在 python 中模拟 os.walk?

perl - 我可以使用什么 Perl 模块来测试 CGI 输出的常见错误?

testing - Golang 测试标准输出

android - 为什么 Fragment 的 onCreate() 有时会先于 Activity 的 onCreate() 被调用?

java - Android 架构组件中 AndroidViewModel 和 ViewModel 有什么区别?

selenium - 使用 Selenium 在 xUnit 中进行跨浏览器测试

java - 带/不带锁屏的 Android Activity 生命周期

java - Android - DialogFragment 从 Fragment 中显示。 DialogFragment 关闭时如何显示 Fragment 中的 Toast?