测试活动 (Pro)

组织 → 资产 → 测试活动 → 测试 → 发现项

概述

在 DefectDojo 的资产层级结构中,测试活动是以时间或流水线为边界的容器,用于表示特定资产内一组相关测试。无论您计划的测试工作是例行性的还是一次性的,测试活动都为您提供了一个存储所有相关结果的地方。

测试活动的示例包括:

  • 一次性渗透测试
  • 每月或每季度的周期性扫描
  • 漏洞赏金评审周期
  • CI/CD 流水线运行(适用于将每次流水线运行视为独立测试活动的团队)
  • 代码发布周期(例如“v4.2 发布安全评审”)

测试活动类型

DefectDojo 支持两种测试活动类型:**交互式(Interactive)**和 CI/CD。这些类型决定了测试通常是如何创建的,以及扫描结果是如何导入的。

交互式测试活动通常由工程师执行。交互式测试活动侧重于在应用程序运行期间对其进行测试,测试方式可以是自动化测试、人工测试人员,或任何与应用程序功能进行“交互”的活动。

CI/CD 测试活动用于与 CI/CD 流水线进行自动化集成。CI/CD 测试活动旨在通过发布流程中的某个步骤触发自动化操作来导入数据。

类别交互式测试活动CI/CD 测试活动
主要使用场景人工或临时性的安全测试流水线中自动化、周期性的安全测试
持续时间有时间限制,时长有限可能持续时间不确定
频率周期性或一次性持续进行或每次提交触发
工作流程人工测试人员运行工具 → 手动导入结果流水线运行工具 → 自动将结果推送到 DefectDojo
结果导入方式通过 UI 或 CLI 手动上传通过自动化方式进行 API 驱动的导入(例如 CLI、连接器、定时任务、流水线脚本)
典型测试类型渗透测试、红队演练、人工评估静态分析、依赖扫描、容器扫描

测试活动数据

作为组织测试活动的容器,测试活动可以存储或跟踪多种数据:

  • 目标开始和结束日期
  • 描述和范围说明
  • 状态(进行中、已计划、已完成等)
  • 分配对象/负责人
  • 关联的测试(例如扫描、渗透测试、人工测试等)
  • 发现项及发现项类型(例如活动、已缓解、风险已接受、重复等)
  • 威胁模型或风险接受信息
  • 标签
  • 文件和备注
  • Jira 项目设置
  • 环境详情(例如预发布环境与生产环境)
  • 构建 ID(如果与 CI/CD 关联)
  • 该测试活动内以往测试的历史数据

访问测试活动

可以通过侧边栏访问测试活动。子菜单提供了访问“活动中的测试活动”和“所有测试活动”的入口,以及创建新测试活动的选项。

image

此外,资产内的测试活动也可以在资产视图底部的窗口中访问。

image

权限

在对象层级结构中,测试活动位于资产之下、测试之上。因此,只要拥有某个资产的访问权限,就会自动获得该资产内所有测试活动的访问权限。测试活动没有独立的访问控制列表。

操作测试活动

创建测试活动

在创建测试活动之前,您必须先创建一个资产来容纳它。

创建测试活动有多种方式:

  • 通过侧边栏“管理”部分中的测试活动下拉菜单
    • 在填写“新建测试活动”表单时,您需要选择该测试活动所归属的资产

image

  • 资产视图右上角的齿轮图标

image

  • 资产的测试活动列表中的“+ New Engagement”按钮

image

  • 如果您尚未在某个资产中创建测试活动,也可以在导入扫描的同时创建。

image

每个测试活动都必须定义以下字段:

  • 类型(交互式或 CI/CD)
  • 唯一名称
  • 目标开始和结束日期
    • 这将决定该测试活动在日历部分中的显示情况
  • 资产
  • 状态

测试活动状态

创建测试活动时可以为其标记不同的状态。之后也可以在测试活动的设置中更改状态。

测试活动可以具有以下任意一种状态:

  • 未开始
  • 已阻塞
  • 已取消
  • 已完成
  • 进行中
  • 暂停
  • 已计划
  • 等待资源

将测试活动的状态更改为“已完成”意味着大多数写操作(例如添加测试、导入扫描)将变得不可用或被隐藏。其他状态不会实质性地影响测试活动的功能,主要用于筛选/信息展示目的。

编辑测试活动

可以通过点击齿轮菜单中的 Edit Engagement(编辑测试活动) 来编辑测试活动。也可以通过点击“所有资产”视图中资产左侧的 ⋮ 三点菜单来访问相同的菜单。

随后可编辑的所有字段,在创建测试活动时同样可用。

image

复制测试活动

您可以在测试活动的设置中选择“Copy Engagement(复制测试活动)”来轻松复制测试活动。这将在父资产内创建原测试活动的完整副本,包括其中的元数据、测试和发现项。

关闭测试活动

可以在测试活动的设置中选择 Close Engagement(关闭测试活动) 来关闭测试活动。关闭后,该测试活动的状态将变更为“已完成”。不过,大多数写操作(例如添加测试、导入扫描)仍然可用。

关闭测试活动不会改变该测试活动下任何测试中发现项的状态。发现项会根据其自身的生命周期继续保持活动、已缓解或风险已接受的状态,并仍可用于查看和生成报告。

如果该测试活动关联了一个 Jira Epic(参见 Jira 集成:启用测试活动 Epic 映射),关闭该测试活动将触发一个异步任务,在您所连接的 Jira 空间中关闭相应的 Jira Epic。

重新打开测试活动

如果测试活动已关闭,可以在其设置中选择 Reopen Engagement(重新打开测试活动) 将其重新打开。这将使该测试活动重新变为活动状态,并将其状态恢复为“进行中”。

已过期的测试活动

一旦测试活动的目标结束日期已过,该测试活动即视为已过期。

与关闭或删除测试活动相比,测试活动过期本身不会直接影响其功能,主要作为一种监控/通知机制。

一旦过期,测试活动旁边会出现“Overdue(已逾期)”标签,但不会限制该测试活动的任何功能。该测试活动的状态仍会显示为“进行中”。

虽然默认未启用,但系统设置中提供了一个选项,可以在测试活动过期达到一定天数后自动将其关闭。

image

删除测试活动

可以在测试活动的设置中选择 Delete Engagement(删除测试活动) 来删除该测试活动。此操作无法撤销。

删除测试活动还会删除以下内容: 与该测试活动关联的所有测试 这些测试中的所有发现项 任何已关联的 Jira Epic 映射(Epic 本身会保留在 Jira 中,但 DefectDojo 与 Jira 之间的链接会被移除) 与该测试活动相关的所有备注和文件上传

出于审计目的,建议对已完成的测试活动进行关闭,而不是删除。

操作结果是否可逆
关闭标记为非活动;数据保留;可重新打开是(可重新打开)
过期仅显示视觉提示;可选自动关闭;发送通知不适用
删除永久删除测试活动、测试、发现项、备注、文件以及任何 Jira Epic 映射(Epic 本身保留在 Jira 中)

Jira 集成

测试活动可以关联到已连接的 Jira 空间,从而将该测试活动内的发现项作为 Issue 推送到 Jira。有关设置 Jira 的完整指南,请参见 将 DefectDojo 连接到 Jira

测试活动 Epic 映射

当在产品的 Jira 设置中勾选 Enable Engagement Epic Mapping(启用测试活动 Epic 映射) 后,测试活动将作为 Epic 推送到 Jira。该测试活动内的发现项会作为该 Epic 下的子 Issue 推送,从而在 Jira 的 Epic → Issue 结构中映射出 DefectDojo 的测试活动 → 发现项层级关系。

有关此设置的更多信息,请参见 启用测试活动 Epic 映射

测试活动级别的 Jira 设置

默认情况下,测试活动会继承其父资产(产品)的 Jira 设置。但是,单个测试活动可以覆盖这些设置,以使用不同的 Jira 配置。以下设置可按测试活动单独自定义:

  • Project Key(项目密钥) — 将发现项路由到不同的 Jira 空间
  • Issue Template(Issue 模板) — 为该测试活动创建的 Issue 使用不同的模板
  • Custom Fields(自定义字段) — 应用不同的自定义字段映射
  • Jira Labels(Jira 标签) — 为 Issue 添加该测试活动专属的标签
  • Default Assignee(默认分配对象) — 将 Issue 分配给不同的团队成员

这些设置可以在 Edit Engagement(编辑测试活动) 页面中访问。有关更多详情,请参见 测试活动级别的 Jira 设置