理解测试结果

注意

要了解Cloud Manager支持的Cloud Services管道测试结果和测试,请参阅此处

在Pipeline执行期间,会捕获许多量度并将其与业务所有者定义的关键绩效指标(KPI)或Adobe Managed Services设置的标准进行比较。

这些参数使用本节中定义的三层门控系统进行报告。

运行管道时的三层门

管道中有三扇门:

  • 代码质量
  • 性能测试
  • 安全测试

对于每个门,门所标识的问题都有三层结构。

  • 关键 — 这些是门所识别的导致管道立即失败的问题。
  • 重要信息 — 这些是由门标识的问题,会导致管道进入暂停状态。部署经理、项目经理或业务所有者可以覆盖问题(在这种情况下管道会继续),也可以接受问题(在这种情况下,管道会因故障而停止)。 重要失败的覆盖受Timeout的限制。
  • 信息 — 这些是由门标识的问题,仅供参考,对管道执行没有影响。
注意

在仅代码质量管道中,由于代码质量测试步骤是管道中的最后一步,因此无法覆盖代码质量测试门中的重要故障。

代码质量测试

此步骤将评估应用程序代码的质量。 它是仅代码质量管道的核心目标,将在所有非生产和生产管道中的构建步骤之后立即执行。 请参阅配置CI-CD管线 ,了解有关不同类型管线的更多信息。

了解代码质量测试

在“代码质量测试”中,会扫描源代码以确保其符合特定质量标准。 目前,这是通过SonarQube、使用OakPAL的内容包级别检查和使用调度程序优化工具的调度程序验证的组合来实现的。 有100多个规则可组合通用Java规则和特定于AEM的规则。 某些特定于AEM的规则是根据AEM Engineering中的最佳实践创建的,称为Custom Code Quality Rules

注意

您可以在此处下载规则的完整列表。

此步骤的结果以​Rating​的形式提供。 下表汇总了各种测试标准的评级:

名称 定义 类别 失败阈值
安全评级 A = 0漏洞
B =至少1个次要漏洞
C =至少1个主要漏洞
D =至少1个关键漏洞
E =至少1个拦截器漏洞
关键 < B
可靠性评级 A = 0错误
B =至少1个次要错误
C =至少1个主要错误
D =至少1个关键错误
E =至少1个拦截器错误
重要信息 < C
可维护性评级 代码气味的未解决补救成本是:
  • <>
  • 评级在6%到10%之间为a B
  • 11%到20%的评级为C
  • 评级在21%到50%之间为D
  • 超过50%的都是E
重要信息 < A
范围 使用以下公式的单位测试线覆盖率和条件覆盖率的混合:
Coverage = (CT + CF + LC)/(2*B + EL)
其中:CT =运行单元测试时已至少评估为“true”的条件,运行单元测试时测试
CF =已评估为“false”的条件,运行单元测试时运行单元测试时至少评估一次,而运行单元测试时LC =覆盖行= linestocover — 未覆盖行

B =条件总数
EL =可执行行(linestocover)的总数
重要信息 < 50%
跳过的单元测试 跳过的单元测试数。 信息 > 1
未决问题 总体问题类型 — 漏洞、错误和代码气味 信息 > 0
复制的行 重复块中涉及的行数。
对于要视为重复的代码块:
  • 非Java项目:
  • 应至少有100个连续令牌和重复令牌。
  • 这些令牌应至少在以下位置分布:
  • COBOL的30行代码
  • ABAP的20行代码
  • 10行代码,用于其他语言
  • Java项目:
  • 无论令牌和行的数量如何,都应至少有10个连续和重复的语句。

在检测重复项时,将忽略缩进和字符串文本中的差异。
信息 > 1%
Cloud Service兼容性 已识别的Cloud Service兼容性问题的数量。 信息 > 0
注意

有关更多详细定义,请参阅量度定义

注意

要了解有关由Cloud Manager执行的自定义代码质量规则的更多信息,请参阅自定义代码质量规则

处理误报

质量扫描过程并不完美,有时会错误地识别实际上没有问题的问题。 这称为“误报”。

在这些情况下,可以使用标准Java @SuppressWarnings注释对源代码进行注释,该注释指定规则ID作为注释属性。 例如,一个常见的问题是,用于检测硬编码密码的SonarQube规则在如何识别硬编码密码方面可能过于激进。

要查看特定示例,此代码在AEM项目中相当常见,该项目具有连接到某些外部服务的代码:

@Property(label = "Service Password")
private static final String PROP_SERVICE_PASSWORD = "password";

SonarQube随后将引发拦截器漏洞。 查看代码后,您会发现这不是一个漏洞,并可以使用相应的规则ID对此进行注释。

@SuppressWarnings("squid:S2068")
@Property(label = "Service Password")
private static final String PROP_SERVICE_PASSWORD = "password";

但是,另一方面,如果代码是:

@Property(label = "Service Password", value = "mysecretpassword")
private static final String PROP_SERVICE_PASSWORD = "password";

那么,正确的解决方案就是删除硬编码密码。

注意

尽管最好尽量使@SuppressWarnings注释具体(即仅对导致问题的特定语句或块添加注释),但可以在类级别添加注释。

安全测试

Cloud Manager 部署后运行 现有AEM安 全健康检查阶段,并通过UI报告状态。结果将从环境中的所有AEM实例进行聚合。

这些运行状况检查可以随时通过Web控制台或操作功能板执行。

如果任何​实例​报告给定运行状况检查失败,则整个​环境​将失败该运行状况检查。 与代码质量和性能测试一样,这些运行状况检查按类别组织,并使用三层门控系统报告。 唯一的区别在于在安全测试中没有阈值。 所有运行状况检查都只是通过或失败。

下表列出了当前检查:

名称 运行状况检查实施 类别
反序列化防火墙连接API就绪处于可接受的状态 反序列化防火墙连接 API 已准备就绪 关键
反序列化防火墙功能正常 反序列化防火墙运行正常 关键
已加载反序列化防火墙 反序列化防火墙已加载 关键
AuthorizableNodeName实施不会在节点名称/路径中显示可授权的ID。 可授权的节点名称生成 关键
默认密码已更改 默认登录帐户 关键
Sling默认GETServlet受DOS攻击保护。 Sling Get Servlet 关键
已正确配置Sling Java脚本处理程序 Sling Java 脚本处理程序 关键
已正确配置Sling JSP脚本处理程序 Sling JSP脚本处理程序 关键
SSL配置正确 SSL 配置 关键
未找到明显不安全的用户配置文件策略 用户配置文件默认访问 关键
配置Sling反向链接过滤器以防止CSRF攻击 Sling 引用过滤器 重要信息
已正确配置AdobeGranite HTML库管理器 CQ HTML 库管理器配置 重要信息
已禁用CRXDE支持包 CRXDE 支持 重要信息
Sling DavEx包和Servlet已禁用 DavEx 运行状况检查 重要信息
未安装示例内容 示例内容包 重要信息
WCM请求过滤器和WCM调试过滤器都处于禁用状态 WCM 筛选器配置 重要信息
已正确配置Sling WebDAV包和Servlet WebDAV 运行状况检查 重要信息
Web服务器配置为防止点击劫持 Web 服务器配置 重要信息
复制未使用“admin”用户 复制和转移用户 信息

性能测试

AEM Sites

Cloud Manager可执行AEM Sites程序的性能测试。 通过旋转虚拟用户(容器)来模拟实际用户在暂存环境中访问页面并模拟流量,性能测试将运行约30分钟。 这些页面可使用Crawler找到。

  1. 虚拟用户

    由Cloud Manager旋转的虚拟用户或容器数量由创建或编辑程序时,由“业务所有者”角色中的用户定义的KPI(响应时间和页面查看次数/分钟)决定。 根据定义的KPI,最多将拆分10个可模拟实际用户的容器。 选择进行测试的页面会被拆分并分配给每个虚拟设备。

  2. Crawler

    在30分钟测试期开始之前,Cloud Manager将使用客户成功工程师配置的一组一个或多个种子URL来爬网暂存环境。 从这些URL开始,将检查每个页面的HTML,并以宽度优先的方式遍历链接。 此爬网过程最多限制为5000页。 来自Crawler的请求的固定超时为10秒。

  3. 要测试的页面集

    页面由三个页面集选择。 Cloud Manager使用跨生产和暂存的AEM实例中的访问日志来确定以下三个存储段:

    • 热门实时页面:选中此选项可确保测试实时客户访问的最受欢迎页面。Cloud Manager将读取访问日志,并确定实时客户最常访问的前25个页面,以生成前Popular Live Pages的列表。 然后,在Stage环境中爬网Stage中也存在的这些交集。

    • 其他实时页面:选中此选项可确保测试位于前25个热门实时页面之外、可能不受欢迎但对测试很重要的页面。与热门实时页面类似,这些页面是从访问日志中提取的,并且还必须存在于暂存环境中。

    • 新页面:选择此选项可测试可能只部署到暂存环境而尚未部署到生产环境但必须测试的新页面。

      所选页面集之间的流量分布

      在管道配置(“插入”链接)的“测试”选项卡中,可以从一组到全部三组的任意位置进行选择。 流量的分配基于所选集的数量,即如果选择所有这三个集,则每个集的页面查看总数将占33%;如果选择两个,则50%将转至每个集;如果选择一个,则100%的流量会转到该集。

      例如,假设“热门实时页面”和“新页面”集(在此示例中,不使用其他实时页面)之间存在50% - 50%的拆分,而“新页面”集包含3000个页面。 页面查看次数/分钟KPI设置为200。 在30分钟的测试期间:

      • 热门实时页面集中的25个页面中的每个页面都将被点击120次 — ((200 * 0.5)/ 25)* 30 = 120

      • 新页面集中的3000个页面中的每个页面都将被点击一次 — ((200 * 0.5)/ 3000)* 30 = 1

测试和报告

Cloud Manager通过在舞台发布服务器上请求页面(默认情况下是未经身份验证的用户)长达30分钟的测试期,并测量(虚拟)用户生成的量度(响应时间、错误率、每分钟查看次数等),执行AEM Sites程序的性能测试 每个页面以及所有实例的各种系统级别量度(CPU、内存、网络数据)。
下表汇总了使用三层门控系统的性能测试指标:

下表总结了使用三层门控系统的性能测试矩阵:

量度 类别 失败阈值
页面请求错误率% 关键 >= 2%
CPU利用率 关键 >= 80%
磁盘IO等待时间 关键 >= 50%
95个百分位数响应时间 重要信息 >=项目级别KPI
峰值响应时间 重要信息 >= 18秒
每分钟页面查看次数 重要信息 < Program-level="" KPI="">
磁盘带宽利用率 重要信息 >= 90%
网络带宽利用 重要信息 >= 90%
每分钟请求数 信息 >= 6000

有关使用基本身份验证对站点和资产进行性能测试的更多详细信息,请参阅下面的​已验证的性能测试​部分。

注意

在测试期间,将针对“发布”和“作者”监控每个实例。 如果未获取任何实例的量度,则该量度将被报告为未知量度,并且相应步骤将失败。

已验证的性能测试

此功能是“站点”(Sites)可选项。
具有已验证站点的AMS客户可以指定用户名和密码,Cloud Manager将在站点性能测试期间使用该用户名和密码访问该网站。
用户名和密码被指定为名为CM_PERF_TEST_BASIC_USERNAMECM_PERF_TEST_BASIC_PASSWORD的管道变量。
尽管并非严格要求,但建议将字符串变量类型用于用户名,将secretString变量类型用于密码。 如果指定了这两个凭据,则性能测试Crawler和测试虚拟用户的每个请求都将包含这些凭据作为HTTP Basic身份验证。

要使用Cloud Manager CLI设置这些变量,请运行:

$ aio cloudmanager:set-pipeline-variables <pipeline id> --variable CM_PERF_TEST_BASIC_USERNAME <username> --secret CM_PERF_TEST_BASIC_PASSWORD <password>

请参阅变量以了解如何使用API。

AEM Assets

Cloud Manager通过在30分钟的测试期间内反复上传资产,执行AEM Assets程序的性能测试。

  1. 入门要求

    对于资产性能测试,客户成功工程师将在将创作环境载入暂存环境期间创建一个cloudmanager用户(和密码)。 性能测试步骤需要名为cloudmanager的用户以及CSE设置的相关密码。 不应从作者中删除该内容,也不应将其更改为权限。 这样做可能会失败Assets性能测试。

  2. 用于测试的图像和资产

    客户可以上传自己的资产以进行测试。 可从“管道设置”或“编辑”屏幕中执行此操作。 支持JPEG、PNG、GIF和BMP等常见图像格式以及Photoshop、Illustrator和Postscript文件。 但是,如果未上传图像,Cloud Manager将使用默认图像和PDF文档进行测试。

  3. 用于测试的资产分发

    每分钟上传每种类型的资产的分布,在“管道设置”或“编辑”屏幕中进行设置。
    例如,如果使用70/30拆分,如下图所示。 每分钟上传资产10个,每分钟上传图像7个,文档3个。

  4. 测试和报告

    Cloud Manager将在创作实例上使用CSE在上述步骤#1(入门要求)中设置的用户名和密码,创建文件夹,并使用开源库上传文件夹中的资产。 使用此开源库编写由资产测试步骤运行的测试。 在30分钟的测试持续时间内,会测量每个资产的处理时间以及各种系统级别的量度。 此功能可以上传图像和PDF文档。

    注意

    有关配置性能测试的更多信息,请访问配置CI/CD管线。 请参阅设置程序 ,了解如何设置程序和定义KPI。

性能测试结果图表

性能测试结果对话框中添加了新的图形和下载选项。

当您打开性能测试对话框时,可以展开量度面板以显示图形、提供下载链接或同时显示两者。

对于2018.7.0版的Cloud Manager,此功能可用于以下量度:

  • CPU利用率

    • 测试期间CPU利用率的图表。
  • 磁盘I/O等待时间

    • 测试期间磁盘I/O等待时间的图表。
  • 页面错误率

    • 测试期间每分钟的页面错误图。
    • 一个CSV文件,其中列出了测试期间出错的页面。
  • 磁盘带宽利用率

    • 测试期间磁盘带宽利用率图。
  • 网络带宽利用

    • 测试期间的网络带宽利用图。
  • 峰值响应时间

    • 测试期间每分钟的峰值响应时间图。
  • 第95个百分位数响应时间

    • 测试期间每分钟第95个百分位数响应时间的图。
    • 一个CSV文件,其中列出了第95个百分位数响应时间超过定义KPI的页面。

以下图像显示性能测试图:

在此页面上