学习目标
完成本单元后,您将能够:
- 隔离开发和测试
- 使用集成,测试和分段开发多个项目
- 开发环境
- 沙箱用途
- 沙盒注意事项和限制
- 创建开发沙箱
- 更新环境依赖性
- 创建用户模板
- 管理沙箱
在Lightning平台上进行开发需要一个开发环境,一个可以在不影响其他用户的情况下工作的地方。在传统的软件开发中,开发环境只不过是一个自己调用的空间,但在Lightning平台上,每个开发环境都是自己的全功能Salesforce组织。
在快速入门:使用沙盒和变更集中,我们使用单个开发环境(开发人员沙箱)来进行与生产组织隔离的更改。在更复杂的场景中,您可能有多种环境用于各种目的,例如开发,集成,测试和培训。还有不同类型的开发环境最适合不同的用途。
使用单个开发环境进行开发和测试时,必须停止开发以进行测试,并且只能在部署后恢复开发。除非您有一个开发人员执行所有这些任务,否则这可能是资源的低效使用。更复杂的开发模型允许在进行测试和部署时继续开发。在这种情况下,您需要两个隔离的环境,一个用于开发,另一个用于测试。
隔离开发和测试
具有单独的开发和测试环境会增加开发过程的复杂性,并引入一个问题:现有组件的更改在哪里发生?例如,假设您有一个开发的应用程序,然后将这些更改迁移到您的测试环境。在测试期间,您发现需要进行一些更改才能部署到生产环境。您是在测试环境中进行这些更改还是返回开发组织并再次启动该过程?如果您只有两个沙箱,则可能需要在测试组织中进行这些更改,因为这是一个更快速,更简单的过程,并且您的开发沙箱可能已经更改为无法轻松重新开始的地方。但是,您仍然希望将测试环境中所做的任何更改复制回开发环境,以确保下次从开发升级到测试时保留修复。应用程序开发过程的安排和流程如下图所示:
典型的开发生命周期:
- 创建开发环境。
- 使用Salesforce Web和本地工具进行开发。
- 创建测试环境。
- 将更改从开发环境迁移到测试环境。
- 测试。
- 在其他环境中复制生产更改。
- 将您开发的内容部署到生产组织。
典型的开发项目:
- 新的自定义对象,选项卡和应用程序
- 与其他系统的集成
- 涉及工作流程或新验证规则的应用
使用集成,测试和分段开发多个项目
如果您有多个开发人员和多个正在开发的项目将同时发布,则需要进行集成测试以确保可以合并单独的代码行而不会发生冲突。将来,您可能希望包括用户验收测试(UAT)以确定是否满足原始设计要求。更复杂的开发过程还可以包含一个临时环境,您可以确保生产部署完全按计划进行。
在这种开发方案中,您可能想知道在哪里更改代码行。如果某个功能在生产部署的方式上未通过任何测试,您是否在组织失败的情况下修复该功能,或者重新启动整个过程?随着应用程序开发过程的复杂性增加,您会发现随时修复并不是一个好模型。相反,您将希望在开发组织中进行所有修复,并遵循可重复的过程将该更改迁移到生产中。下图描绘了此过程:
典型的开发生命周期:
1.创建开发环境。
2.使用Salesforce Web和本地工具进行开发。
3.创建测试环境,包括UAT和集成。
4.将更改从开发环境迁移到集成环境。
5.测试。
6.将更改从集成环境迁移到UAT环境。
7.执行用户验收测试。
8.将更改从UAT环境迁移到登台环境。
9.在分段环境中复制生产更改。
10.安排发布。
典型的开发项目:
- 在多个环境中同时开发新应用程序
- 需要团队开发的项目
开发环境
有两种类型的开发环境:sandbox orgs和Developer Edition orgs。
沙箱是从您的生产组织中复制的新组织。 本节列出了支持沙箱的Salesforce版本。 有不同类型的沙箱适合不同的用途。
沙箱类型 | 描述 |
Developer | Developer 沙箱复制自定义(元数据),但不将生产数据复制到单独的环境中进行编码和测试。 |
Developer Pro | Developer Pro沙箱复制自定义(元数据),但不将生产数据复制到单独的环境中进行编码和测试。 Developer Pro比开发人员沙箱拥有更多存储空间。 它包含许多开发人员沙箱,具体取决于您的生产组织的版本。 |
Partial Copy | 部分副本沙箱是开发人员沙箱以及您在沙箱模板中定义的数据。 |
Full | 完整沙箱会复制整个生产组织及其所有数据,包括标准和自定义对象记录,文档和附件。 使用沙箱编码和测试更改,并培训团队有关更改的信息。 您可以每29天刷新一次完整沙箱。 |
沙箱还可以包含部分,无或所有生产数据,具体取决于预期用途。对于开发,您可能只需要一小组数据来确保工作正常。对于QA测试,尤其是回归测试,您需要一组不会随时间变化的大量数据。对于预部署分段,您需要一个尽可能靠近生产环境的沙箱,包括数据。只有完整的沙箱在创建数据时才会复制数据,但您可以使用导入向导或数据加载器将数据添加到沙箱中。
另一种类型的开发环境是Developer Edition组织。 Developer Edition提供对Professional,Enterprise,Unlimited和Performance版本提供的许多独有功能的免费访问。您可以完全访问Lightning平台和API,以便您可以扩展Salesforce,与其他应用程序集成,以及开发新的工具和应用程序。 Developer Edition组织主要由独立软件供应商(ISV)使用,用于在AppExchange上创建分发应用程序。有关更多信息,请参阅ISVforce指南。
沙箱用途
如果您的组织有多个沙箱可用,请在规划哪些沙箱用于何种目的时考虑以下因素。
使用 | 沙盒的类型 | 说明 |
开发 | Developer或Developer Pro沙箱 | 完整的沙箱在创建和刷新时间方面成本更高,并且还允许开发人员访问可能不合适的数据。 |
测试 | •单元测试和Apex测试:Developer或Developer Pro沙箱 •功能测试和回归测试:部分复制沙箱(加载标准数据集) |
|
测试外部集成 | 当外部系统期望存在完整的生产数据时,完整的沙箱是最佳选择。 | 如果要使用样本数据或实际数据的子集,则在特殊情况下,部分复制沙箱可能是合适的。 如果您使用外部ID,则效果很好。 |
分期和用户验收测试 | 完整沙箱最适合根据生产配置和数据验证新应用程序。 | 如果针对生产数据子集进行测试是可接受的(例如,区域测试),则部分复制沙箱是合适的。 |
生产调试 | 完整的沙箱 |
沙盒注意事项和限制
沙箱功能与生产不同,您需要规划差异以及复制过程本身。
创建或刷新沙箱时请考虑以下事项:
- 创建或刷新沙箱副本是一项长时间运行的操作,可能在几分钟,几天甚至一周以上完成。有几个条件会影响持续时间,包括自定义数量,数据大小和配置(完整副本),对象数量和服务器负载。此外,沙箱刷新已排队,因此您请求后的副本可能无法立即启动。因此,请尽可能提前计划,并尽可能接受完整沙箱中可选数据的默认最小值。
- 刷新沙箱会删除并重新创建沙箱,作为生产组织的新副本。实际上,这会反转您执行的任何手动访问更改。如果您在沙箱中创建了用户,则它们将不再存在;如果您更改了用户的权限和访问设置,那么这些设置将恢复为生产组织中的值。这意味着刷新后,必须在新副本中重复执行的任何访问更改。要避免此过程,您可以在生产组织中创建用户模板,然后在沙箱组织中激活它们。
- 在沙箱创建和刷新操作期间,对生产组织的设置和数据更改可能会导致沙箱中出现不一致。因此,最好在创建或刷新沙箱时冻结或最小化对生产组织的更改。
以下功能已禁用,无法在沙箱中启用:
- 合同到期警告
- 案件升级
合同到期警告和案例升级被禁用,因为它们会自动向联系人,客户和生产组织用户发送电子邮件。 - 订阅摘要
- 数据导出(通过单击“安装”中“每周导出服务”页面上的“立即导出”或“计划导出”)
- 创建Salesforce沙箱的功能
- 能够将您在沙盒中创建的电子邮件服务地址复制到生产组织
- 发布Site.com网站的能力
创建开发沙箱
确定特定项目或任务所需的开发环境类型后,请创建生产组织的沙箱副本。
- 从“设置”中,在“快速查找”框中输入“沙箱”,然后选择“Sandboxes”。
- 单击“New Sandbox”。
- 输入沙箱的名称和描述。
- 选择沙箱类型。
- 单击“Start Copy”。
该过程可能需要一段时间,具体取决于您的组织的大小。沙箱完成复制后,您会收到通知电子邮件。 - 单击通知电子邮件中的链接以访问您的沙箱。
您可以通过将.sandbox_name附加到您的用户名来登录test.salesforce.com/login.jsp中的沙箱。例如,如果您的生产组织的用户名是user1@acme.com,那么名为“test”的沙箱的用户名是user1@acme.com.test。您的密码与生产中的密码相同。 - 进行小的更改以确保沙箱不会意外地与生产组织通信。在使用您在此跟踪中创建的沙箱之前,请务必按照更新环境依赖关系中的说明调整这些设置。
提示:可用沙箱的数量和类型取决于Salesforce组织。
更新环境依赖性
创建沙箱后,将其配置为更新环境依赖项并在开始开发之前合并项目内容。 如果您有多个开发环境,则需要在项目进行时将更改与其他团队成员的更改合并到单个开发环境中。 在此阶段,您必须跟踪所有环境中的更改,以便您可以成功合并这些更改。
环境依赖性是开发环境和生产组织之间不同的设置。 当您在开发环境中工作时,您需要更新谁有权访问什么,打开或关闭某些功能,以及更新内部和外部系统的地址,以便它们指向开发环境而不是生产环境。 反之亦然 – 当您部署到生产环境时,您可能需要更新在开发中使用的某些设置,以便它们与生产一起使用。
环境依赖 | 细节 |
Login privileges | 如果您的开发人员和测试人员没有生产登录,或者没有必要的权限,则需要在开发环境中为他们提供必要的访问权限。 |
Email addresses | 创建沙箱时,会自动更改电子邮件地址,以便在开发期间不会从沙箱发送电子邮件警报和其他自动通知。当您的开发人员和测试人员登录沙箱时,他们必须将其电子邮件地址更改回真实地址,以接收从沙箱发送的电子邮件。 |
Email recipients | 如果要测试出站电子邮件以获取升级或仪表板等功能,则必须更新收件人列表,因为在创建沙箱时会删除这些列表以防止不必要的电子邮件。 |
External URLs | 如果您的生产组织与外部系统集成,您可能不希望沙箱副本与这些外部系统的生产版本进行通信,以免混合生产和非生产数据。例如,如果使用出站消息传递或Web服务标注,则需要更新这些服务调用的URL以指向这些应用程序的外部开发环境。同样,由于沙箱运行在与生产组织不同的实例上,要测试与沙箱的集成,您需要将API端点主机名从login.salesforce.com更改为 test.salesforce.com。 |
Hard-coded URLs | 通常,当从一个Lightning Platform页面链接到另一个时,链接应该是相对的(省略主机名)而不是绝对的,并且是动态的(按名称查找ID,记录或页面)而不是静态。这允许您在不同组织之间迁移URL,这些组织可能具有不同的主机名或记录ID。如果您的应用程序包含从一个Lightning Platform页面到另一个Lightning Platform页面的硬编码URL,那么当它们从沙箱中单击时可能会中断,或者更糟糕的是,将认为自己处于开发环境中的用户带回生产组织。 |
Hard-coded IDs | 一些组件通常通过其ID访问,例如RecordTypes。创建沙箱副本时,使用这些ID引用这些组件的代码将继续工作,因为沙箱副本会保留生产ID。但是,反之亦然 – 从沙箱迁移到生产(或任何两个组织之间)通过元数据维护组件的名称,但如果目标组织中不存在该组件,则将生成新的ID。因此,迁移包含硬编码ID的代码可能会导致代码中断。作为最佳实践,只要有可能,您应该通过按名称查询组件的ID来获取组件的ID。 |
Existing projects | 如果您有现有的开发项目,则需要将该工作合并到新的开发环境中。 |
创建用户模板
刷新沙箱会创建生产组织的新副本。 这意味着沙箱中的所有用户权限都是从生产中复制的,并且必须重新应用在刷新之前在沙箱中进行的用户访问或权限更改。 如果您有多个沙箱,或定期刷新沙箱,请考虑在生产组织上创建开发人员用户模板。 开发人员用户模板是具有在沙箱上开发所需权限的抽象用户(例如,“修改所有数据”权限),但在您的生产组织中不活动。 创建或刷新沙箱后,激活沙箱中的开发人员用户并将其分配给将在那里开发的人员。
要创建开发人员模板:
- 在生产组织上创建新用户。
- 编辑用户以授予其必要的权限。
- 停用生产组织上的用户。
- 创建或刷新沙箱。
- 在沙箱上激活用户。
- (可选)更改电子邮件地址,密码或其他环境设置。
警告:在包含从生产中复制的敏感信息(例如,社会保险号)的沙箱组织中授予权限时请务必谨慎。
您可能会发现为不同角色创建多个模板很有帮助。例如,您可以拥有具有“修改所有数据”权限的开发人员角色,以及具有标准用户权限的QA测试人员角色。
您的沙箱具有与生产相同数量的许可证,但您的所有用户都不太可能登录它。创建或刷新沙箱时,生产中处于活动状态的相同用户在沙箱中处于活动状态,因此,如果所有许可证都已占用,则需要停用活动用户以激活非活动开发人员用户。只需确保您在沙箱中停用的用户是永远不会登录该环境的众多生产用户之一。同样,您应该使生产开发人员用户模板在生产组织上处于非活动状态,因此它不会使用付费生产许可证。
有关如何激活,停用或编辑用户的详细信息,请参阅Salesforce联机帮助中的“编辑用户”。
管理沙箱
要管理沙箱,请从“设置”中的“快速查找”框中输入“Sandboxes”,然后选择“Sandboxes”。 显示现有沙箱的列表。
- 单击“New Sandbox”以创建沙箱。当组织达到其沙箱限制时,Salesforce会停用“New Sandbox”按钮。如有必要,请与Salesforce联系,为您的组织订购更多沙箱。
- 单击“Sandbox History”以查看沙箱刷新历史记录的日志,包括何时创建沙箱以及创建沙箱的人员。
- 单击“Refresh”以使用新副本替换现有沙箱。 Salesforce仅显示适用于刷新的沙箱的“Refresh”链接,该链接因不同类型的沙箱而异。在等待刷新完成时,您现有的此沙箱副本仍然可用。刷新的副本在您激活之前处于非活动状态。
- 单击“Activate”以激活刷新的沙箱。您必须先激活刷新的沙箱才能访问它。 Salesforce仅为未激活的沙箱显示此选项。
警告:激活刷新的沙箱会使用刷新的版本替换现有的沙箱,永久删除现有版本及其中的所有数据。您的生产组织及其数据不受影响。 - 单击Del删除沙箱。
警告:删除沙箱将永久删除沙箱及其中的所有数据,包括已从沙箱上载的所有出站更改集。 - 管理员可以单击“Login”以用户身份登录沙箱。 Salesforce仅为活动沙箱显示此选项。用户可以通过将.sandbox_name附加到其Salesforce用户名来登录https://test.salesforce.com上的沙箱。例如,如果生产组织的用户名是user1@acme.com,沙箱名为“test”,则登录沙箱的修改后的用户名为user1@acme.com.test。
- 单击沙箱名称以查看有关沙箱的详细信息,包括沙箱类型及其创建时间。