Skip to main content

隔离测试和生产环境

对于一个严肃的应用,通常会区分生产环境与测试环境,并实现隔离,以避免测试数据污染生产环境等问题。

本文为钉钉开发者介绍隔离测试和生产环境的最佳实践,并解释背后的设计因素。

隔离方案

在钉钉开放平台创建两个常规应用,分别对应测试环境和生产环境。并在应用名称和图标上加以区分。

例如:

  • 如果应用名为“智能助理”,那么生产和测试应用可以分别命名为“智能助理”和“智能助理测试”
  • 应用图标也可以选择采用不同的标识

钉钉内部关于区分测试与生产的实践可以供开发者参考:

  1. 钉钉审批对应了两个应用:审批、审批测试。其中,“审批测试”用于审批研发团队内部开发、测试时使用;
  2. 钉钉客户端,正式版图标是蓝色图标,内测版是彩虹色。

设计考虑

尽管行业中有少部分平台提供了沙箱环境,用于开发者测试使用,但是大部分平台推荐方案都是分别创建测试与生产的租户/应用/服务来隔离。

钉钉团队综合考虑后没有采用沙箱环境方案,而是与大部分平台保持一致,主要考虑如下:

如果开放平台提供沙箱和生产两个环境的话,会带来新的问题:

为了隔离性,沙箱环境通常需要特殊的访问入口、特殊的接入方式等,导致开发者需要花费更多时间去学习(沙箱环境特殊使用方法)。 这些隔离性体现在(包括但不限于):

  • OpenAPI 访问的域名不同,沙箱环境通常需要 testing/staging/sandbox 前缀
  • 权限差异,沙箱环境背后的权限管理跟生产环境存在差异性
  • 调试工具的差异性
  • 应用创建流程的差异性
  • 诊断工具差异性
  • 访问沙箱环境的差异性,包括工作台应用、机器人、酷应用、连接器等都需要有针对沙箱环境的特殊设置,以及针对改特殊是的说明文档
  • 其他沙箱环境相关差异

通过在一套环境(生产环境)中,创建两个应用,分别用于测试和生产的好处是,不用花费额外的时间去学习沙箱环境如何使用,降低企业开发者的学习和培训成本。

例外

尽管开放平台没有提供沙箱环境,但是也针对部分例外场景提供了相应的测试辅助。主要考虑因素是依赖复杂流程的场景,或者难以构造的特殊场景。

例如:第三方企业应用的“版本管理与发布”中,可以创建体验组织并对体验组织授权。

原因是:第三方企业应用只有安装到组织中,才允许被使用。安装的成本较高,为了降低测试时安装过程的技术成本,钉钉开放平台为此提供了体验组织及其授权能力,辅助开发测试。

更多场景诉求

如果你在学习完本文档中提供的测试方法之后,依然无法解决环境搭建问题,需要为测试验证付出巨大的技术成本,可以联系技术支持提交反馈寻求帮助。