Skip to content

Latest commit

 

History

History
107 lines (83 loc) · 7.67 KB

File metadata and controls

107 lines (83 loc) · 7.67 KB

eWorkHelper 人工回归清单

本文件承载 RELEASE.mdDevelopment.md 所要求的人工回归内容。 每次发布前(以及涉及 Excel/VSTO 交互的改动后)都应在真机 Excel 上完整执行一遍。

0. 环境与前置

  • Windows + Microsoft Excel 桌面版,VSTO Runtime 已安装。
  • 加载项已在 Excel 中加载(Ribbon 出现“工作助手”选项卡)。
  • 用于测试的工作簿至少包含:纯文本列、日期列(yyyy-mm-dd)、百分比列、货币列、 含 * / ? / ~ 字面量的文本列、含空单元格的列,各列数据量 ≥ 1000 行。
  • 另备一个含合并单元格的工作簿(单区域、多区域、含公式、含错误值、含数组公式各一份)。

1. 构建与签名(发布门禁)

  • Release 构建 Exit Code 0 / 0 Error / 0 Warning:

    msbuild .\eWorkhelper.sln /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU" `
      /p:SignManifests=true /p:ManifestCertificateThumbprint=<thumbprint> /v:minimal /nologo
  • 通过 IWORKHELPER_MANIFEST_CERT_THUMBPRINT 环境变量构建同样 Exit Code 0。

  • 确认 bin/obj/publish/.vsto.manifest 未进入 Git 暂存区。

2. 批量过滤 —— 范围识别

  • Excel 表格(ListObject):光标位于表格内某列 → 点击“批量过滤” → 正确识别表格范围与列标题。
  • 已有 AutoFilter 区域:光标位于已启用筛选的区域内 → 正确复用现有区域,不新建筛选。
  • 普通区域(需选标题行):未启用筛选的工作表 → 弹出标题行选择框 → 选择单行标题后正确建区域。
  • 取消标题行选择:在选择框点“取消” → 不修改工作表,无错误弹窗(“取消选择不会修改工作表”)。
  • 目标列不在区域内:选择标题行后目标列超出数据区 → 给出明确提示且不留残留筛选。
  • 目标列在现有筛选区域外:光标列不在现有 AutoFilter 区域内 → 给出明确提示。
  • 同名工作表:在另一个工作簿中创建同名工作表并触发标题行选择 → 必须被判为“不在当前工作表”。

3. 批量过滤 —— 匹配语义(E-02 重点)

  • 文本列:等于 / 不等于 / 包含 / 不包含四种模式分别得到预期可见行。
  • 日期列:输入界面上显示的日期文本(如 2024-01-01)→ 能正确匹配, 不出现“0 匹配 / 全部隐藏”。
  • 百分比列:输入显示文本(如 15%)→ 能正确匹配;输入原始值(如 0.15)也应能匹配。
  • 货币列:输入界面上显示的金额文本 → 能正确匹配。
  • 长文本单元格:列宽不足导致显示为 ##### 的单元格不参与匹配(不应把 ##### 当成真实值)。
  • 超过 255 字符的文本单元格:不因 Range.Text 截断而误匹配(工具应给出可理解的提示或保持工作表不变)。
  • 通配符字面量:值为 a*ba?ba~b 的单元格在“等于”模式下能被精确匹配, * / ? 不被当作通配符。
  • 大小写ABCabc 在四种模式下均按同一值处理(去重与匹配一致)。
  • 空单元格:条件行留空被忽略;空值单元格的匹配行为符合预期。

4. 批量过滤 —— 结果与清除

  • 全部命中 → 自动清除该字段筛选,所有行可见,提示中的匹配数与可见数一致。
  • 部分命中 → 工作表仅显示命中行,提示“共检查 N 行,匹配 M 行”。
  • 零命中 → 不隐藏全部行,给出“没有单元格与当前条件匹配,未修改工作表筛选状态”提示。
  • 匹配唯一值超过 10000 项 → 给出容量提示且不修改工作表,不出现原始 COM 错误。
  • 单个条件超过 8192 字符 → 在应用前给出长度提示。
  • “清除本次过滤” → 仅清除本工具最近处理的目标字段,其他字段筛选保持不变
  • 未由本工具应用的筛选 → 提示“当前目标字段没有由批量过滤应用的筛选”。
  • 重新打开同一筛选 → 恢复上次条件与匹配模式(“已恢复上次批量过滤条件”)。
  • 外部(非本工具)筛选 → 加载当前可见唯一值并把模式置为“等于”。

5. 批量过滤 —— 进度、取消与异常保护

  • 大数据集(≥ 5 万行)应用过滤时:状态栏显示进度、等待光标出现、Excel 不卡死到无响应。
  • 操作进行中按 Esc → 在下一个检查点取消,提示“操作已取消”,筛选状态与光标/状态栏均恢复。
  • 操作进行中点击窗口关闭按钮 → 窗体不会被直接关闭(先取消),不出现已释放对象异常。
  • 操作期间鼠标双击“应用过滤” → 不会重入执行。
  • 在受保护工作表上触发范围识别 → 给出友好提示,不出现 CLR 未处理异常对话框。
  • 反复触发失败路径(≥ 5 次)→ 加载项未被 Excel 禁用。
  • 构造函数读取初始状态失败时(例如受保护工作表)→ 窗体仍可打开,提示“无法读取当前筛选状态”,可手工输入条件。

6. 取消合并并填充

  • 单区域合并 → 取消合并后各单元格填充原值。
  • 多区域(Ctrl 多选)→ 全部处理,计数正确,同一区域不被重复处理。
  • 含公式的合并区域 → 按 R1C1 复制语义填充(相对引用按各单元格位置偏移)。
  • 含空值(null)的合并区域 → 取消合并后保持空白。
  • 含错误值#DIV/0!#N/A 等)→ 不把错误码写成数字,单元格仍是错误值。
  • 含数组公式(CSE) → 给出明确的数组公式提示,而不是通用“操作失败”。
  • 受保护工作表 → 给出明确的“工作表受保护”提示。
  • 选区不含合并单元格 → 提示“当前选区中没有合并单元格”,不做任何修改。
  • 选区为整列/整行等大范围 → 操作在可接受时间内完成,Excel 进程内存无异常增长。
  • 处理失败发生后 → 提示中包含已完成区域数量,用户能判断需要手工检查的范围。
  • 操作结束后 Application.CalculationScreenUpdatingEnableEvents 均恢复原值。

7. COM 对象生命周期(E-01 重点)

  • 连续执行“批量过滤”应用/清除 20 次以上后,关闭该工作簿 → Excel 中不再保留该工作簿的窗口。
  • 关闭全部工作簿并退出 Excel → EXCEL.EXE 进程在合理时间内消失(无残留进程)。
  • 任务管理器观察:重复批量操作过程中 EXCEL.EXE 句柄数不持续单调增长。
  • 关闭批量过滤窗口后再次打开 → 上下文被重新建立,功能正常(无“已释放对象”异常)。
  • 关闭工作簿后再点击“批量过滤” → 给出友好提示而不是崩溃。

8. Ribbon 与关于

  • 自定义“工作助手”选项卡正常显示,位于 Ribbon 末端(自定义选项卡,不与内置选项卡冲突)。
  • 分组“数据工具”“关于”与按钮“批量过滤”“取消合并”“关于”文案正确。
  • 点击“关于” → 版本号与程序集 AssemblyInformationalVersion 一致。

9. 回归记录

日期 版本 执行人 环境(Office 版本/位数) 结果 备注

未在本清单覆盖的场景(不同 Office 位数、受信任位置部署、ClickOnce/MSI 安装)需在发布环境中单独验证, 并在上表备注中记录结论。