测试原则

测试是紫红色贡献者实践的持续集成流程的核心,以保持质量和速度。好的测试会成为团队的资产,而不好的测试可能会带来责任。

本文档回顾了与在 Fuchsia 上进行测试相关的主题,并提供了其他资源的参考信息。本文档假定您熟悉一般软件测试概念。

Fuchsia 平台测试应服务于项目的目标,并符合 Fuchsia 的架构原则

  • 简单:简单的测试优于复杂的测试。 单元测试优于集成测试、系统测试或手动测试。在 Fuchsia 上测试解决方案应采用与生产环境中相同的机制。
  • 安全:测试受到与正式版软件相同的安全、隔离和封闭机制的影响。测试会利用这些机制来实现自身的收益。系统的安全属性是可以测试的。
  • 如果被测组件发生变化或完全替换,则仅执行组件之间的接口的测试应该会继续运行。Fuchsia 树之外的测试不应假定平台组件的实现细节。
  • 高性能:在 Fuchsia 上进行测试应该快速、可靠且灵活。如果测试运行快速,您可以更轻松地进行迭代并减少消耗的资源。测试在 Fuchsia 上运行时不应不可靠或过于挑剔。在模拟器上运行测试要比在真实硬件上简单。

Fuchsia 上的测试有何不同?

操作系统是复杂的程序

每个软件开发和测试领域都带来了独特的挑战。在测试操作系统时,会遇到特殊问题和解决方案,就像测试移动应用、服务器软件或航天器一样。

与典型的应用测试相对,在典型的应用测试中,测试在一些假定有效的操作系统上运行。

隔离性和封闭性

组件框架通过在组件清单中严格定义的沙盒环境中运行每个组件,来提升 Fuchsia 的安全目标。然后,它仅允许组件使用那些归类为可更新的协定的组件功能互联,从而促进了 Fuchsia 的可更新性目标。

这些相同的隔离和封闭机制也可以供测试用作依赖项注入的形式。例如,可以针对受测组件提供测试替身来说明自动化测试框架所依赖的功能,从而简化合同测试

多个代码库

Fuchsia 是一个具有许多外部依赖项的大型项目,基于数百个其他源代码库进行构建。多代码库开发给测试带来了独特的挑战。从事 WebRTC 项目的一位贡献者发表了一篇博文,详细介绍了开发 Fuchsia 时还会遇到的许多问题和解决方案。

深入阅读