用途:排查 .NET 可靠性测试(C#/F#)的失败、挂起、不稳定或未执行问题,基于运行器结果、属性测试反例、日志、跟踪和源码给出结论与最小下一步。
主要能力:先确立实际运行内容,读取命令、源码版本、SDK/运行时、目标框架、包版本、操作系统、配置和环境;分别识别测试框架与执行平台,按仓库运行器及其文档化结果格式操作。区分 VSTest、可执行 MTP 桥接与原生 MTP 命令的参数规则;SDK 10+ 原生 MTP 命令模式取决于 global.json,仅凭 SDK 版本不能判定,选择命令前先检查导入与可执行/桥接属性,不要把 VSTest 筛选或日志选项套用到所有 MTP 框架。确认已执行测试名称与计数:零测试运行、跳过测试、生成器耗尽、构建失败或报告缺失都不算通过。
调查失败:重跑前保留原始报告与日志;阅读完整异常、内部异常、反例及相关任务结果;关联操作 ID、跟踪、容器日志与源码位置,区分事件顺序与因果关系。对候选分类:产品缺陷、断言缺陷、生成器缺陷、未覆盖属性、环境失败、取消、超时或未解决。FsCheck/Hedgehog 保留种子、大小、收缩结果、原始用例与库版本,使用已安装版本的重放机制。挂起时检查未完成操作、取消传递、锁归属与释放;超时等待可能使操作仍在运行。必要时比较成功与失败执行,重跑通过也要保留不确定性失败。优先使用现有 ILogger、Activity 或 OpenTelemetry 数据,必要时采集 dotnet-trace、dotnet-dump、dotnet-counters,需与目标进程兼容;计数器只是症状,跟踪或转储仅支持其捕获内容,解释源帧前需匹配二进制与符号。假时间只控制使用注入提供程序的代码,F# Async 启动、任务续体、外部 I/O 和本机代码可能不受控。
报告:给出观察结果、确切证据、可能机制、未解决替代方案和最小下一步;使用已违反、未覆盖、不确定、环境失败等结论,不要把非零退出码都当作断言违反。缺少可达观察时建议改进工作负载,敏感性不确定时建议变异测试;不执行请求外额外工作。参考资料:.NET 诊断、Microsoft.Testing.Platform、FsCheck。