应用程序部署(4)测试应用程序

学习目标

完成本单元后,您将能够:

  • 列出使用Apex时的测试覆盖率要求。
  • 描述创建AppExchange应用程序时要执行的特定测试。
  • 列出您的测试必须解决的安全漏洞类型,以通过安全审查。

测试和您的AppExchange应用程序

要明确,我们知道你知道测试的重要性。在本单元中,我们将探讨一些关于测试的特定于Salesforce的标准,更重要的是针对您的一些AppExchange测试需求。

Apex测试框架

Apex拥有内置的测试框架,这是任何开发人员的必备工具。 Salesforce还需要使用框架来确保没有代码占用其资源份额。

一个基本要求是您的测试必须至少覆盖包装中所有Apex代码的75%。不过,我们建议您尽可能接近100%覆盖率。您可以在Apex开发人员指南的Apex Testing Trailhead模块或了解Apex测试部分了解其他要求。每当你上传一个包时,所有的测试都会运行。如果即使一次测试失败,上传失败。

平台陷阱

有一些糟糕的编码习惯,你可以在单个组织中摆脱困境,但它们会导致AppExchange应用程序失败。一些最常见的“陷阱”是硬编码值的结果。特别是,从来没有硬编码:

  • 记录在整个组织中唯一的ID
  • 引用客户可以更改的值,如选取列表值或记录类型名称

还要考虑到你的客户可能正在使用平台加密。记录您在应用程序中依赖的标准对象的标准字段。如果您想支持使用平台加密的客户,请测试您的应用在这些字段是否加密时不会中断。然后,您可以将您的应用标记为支持AppExchange上的加密字段。查看我们的帮助和培训文档的平台加密部分了解更多信息。

日常测试

我们建议您采用每日合并所有代码的标准做法,以确保修改和添加不会破坏现有代码。

我们建议您设置一个源代码管理系统(1),开发人员可以在其中检查他们创建或修改的元数据文件。然后将源代码管理系统中的元数据每天推送到一个普通合作伙伴开发人员组织(2),并针对该应用运行自动化测试。

Diagram with developer orgs feeding to source control feeding to a single developer org
开发者组织将饲料供应给单一开发者组织的源控制
在开发任何一款软件时,请确保您的测试验证:

  • 您的Apex代码正常工作,通过所有测试并符合测试要求。
  • 您的自定义UI会按照您的预期显示和反应。
  • 您的业​​务逻辑符合要求,不会做任何额外的事情。

预发布包测试

由于您将应用分发给软件包中的客户,因此为AppExchange合作伙伴发布测试包括测试处于打包状态的应用。您希望确保软件包的安装正确,并且安装后所有功能都按预期工作。

一些组件,例如审批流程,无法打包。记录任何所需的配置或设置,并在作为测试的一部分时包括查看这些说明。

在您发布软件包的后续版本时,测试包括确保现有客户可以安装新版本的应用程序。验证新版本是否同时适用于新鲜组织和已安装以前版本的组织。

托管测试版 – 软件包

对于初始软件包测试,首先使用托管Beta版软件包。当您的应用程序处于测试版软件包中时,您可以进行任何类型的更改。

使用beta包的流程看起来像这样。

  1. 将来自源代码管理系统的更改推送到您的测试版包装组织。
  2. 创建托管测试版 – 包含您的应用的软件包。
  3. 上传软件包。
  4. 在测试组织中:
    1. 安装软件包并进行测试。
    2. 如果发现问题:
      1. 卸载测试组织中的软件包。
      2. 在测试版包装组织中更新您的应用,并在必要时编辑您的包裹内容
      3. 返回到第2步。
    3. 如果没有问题发生并且开发完成,是时候转向一个托管 – 发布的包。

请注意,在构建和测试周期中,您将卸载测试版软件包并在测试组织中安装新的测试版软件包。 Beta软件包不可升级,因此您无法将一个版本的Beta软件包安装在另一个版本上。有关更多信息,请参阅卸载软件包和安装软件包。

注意这个命名空间

打包应用程序后,请确保您检查了您是否正确使用了名称空间。应用程序中对组件的JavaScript引用不会自动使用程序包的名称空间进行更新。验证所有涉及JavaScript的自定义,无论是在Visualforce页面还是在Lightning组件(使用JavaScript)中,都仍然正常工作。

保证安全

在AppExchange上发布您的应用程序之前,它必须经过安全审查。在整个开发周期中解决安全问题,如需求清单中所述。

清单包括以下项目:

  • 您的代码尊重由组织的Salesforce管理员指定的字段级别和对象安全性。请特别关注此主题,因为它会导致在安全审查期间标记许多应用程序。
  • 您已编写JavaScript和HTML以防止跨站脚本攻击(XSS)攻击。
  • 在平台上传输数据和从平台传输数据以及将平台上的敏感信息(例如登录证书和客户数据)存储在外时,您已经实施了加密。

安全审查包括针对您的应用运行多个测试。您可以在提交应用程序之前运行一些测试。将它们合并到您的测试周期中。

包装和客户修改

当您上传您的软件包时,您可以设置客户组织必须满足的软件包和对象要求才能成功安装您的应用程序。如果您不知道在这里选择什么,请不要担心。它带有经验,而且风险很低 – 通常情况下,默认值都很好。

Screen with package requirements
Screen showing object requirements

一些值是基于你的软件包中的内容自动启用的。验证此列表是否具有适用于您的应用的正确值,以便在安装该软件包时不会发生错误。

例如,可以自动选择与Chatter相关的组件或社区。如果客户的组织禁用了这些功能,则尝试安装您的软件包失败。

托管 – 发布的软件包

当您认为您的应用在打包状态下无缺陷时,现在可以在您的测试版打包组织中创建托管 – 发布的软件包了。你如何创建一个发布的包?这只是您上传包装时的一个选项。

Screen with radio button to create Managed - Released package

然后通过一轮测试发送包裹。

现在是时候把它的应用程序包装在它的金色包裹里了

当一切都很好时,就该使用金色包裹组织了。

  1. 使用迁移工具将您的应用程序移至您的黄金包组织。
  2. 设置您的面向客户的名称空间。
  3. 打包你的组件。
  4. 创建您的托管 – 发布的软件包。
  5. 然后,是的,再做一轮测试。

完成所有工作后,现在是时候发送应用以进行安全审查。在您的应用程序通过安全审查后,该出售了。

概要

平台上的大多数测试都遵循标准的最佳实践。测试确定您已经:

  • 满足功能要求
  • 书面测试来验证你的代码
  • 解决了安全漏洞
在测试一个包时,请验证:

  • 外部代码正确引用名称空间
  • 安装说明
  • 包和对象要求

你做到了!您现在知道使用AppExchange合作伙伴工具开发应用程序的所有基本知识。出发。学到更多。写那个惊人的应用程序