Appearance
金融风控系统测试数据
为什么准备测试数据
空应用只能验证入口、布局和空态,不能有效检查关联展示、筛选、状态分布或看板计数。2026-10-13,用户明确授权加入测试数据并记录最佳实践后,研发为已经发布的UAT版本准备了可追踪的合成数据。
原则是:研发先发布、再准备有明确场景的数据,测试工程师从运行页验证;数据写入成功不等于业务功能通过。
本批实际结果
| 项目 | 结果 |
|---|---|
| 目标 | UAT 金融风控管理系统,sokxosrao8s5v |
| 发布基线 | releaseVersion=1.0,build=2 |
| 批次标记 | QA_20261013_A |
| 写入范围 | 10张已发布业务表,共22条合成记录 |
| 回读 | 每条记录的输入字段、状态、日期及关联ID验证通过;独立QA复核22个唯一ID、30处关联及218个回读字段 |
| 重复执行 | 完整重复执行新增0条、复用22条,记录ID保持不变 |
| 数据保留 | 留在UAT供测试,未删除已有记录 |
| 操作边界 | 未发起审批、通知或真实成交;未改应用结构、角色或发布版本 |
这次只新增记录,直接写入已发布表,无须再发布应用配置。测试规则保持停用,额度为草稿,下单风控结果为未校验;没有伪造批准结论或真实资金流水。
测试样本与业务事实分开
“待审核”“审核中”“已关闭”等状态是人工设置的展示夹具,没有对应的审批实例。持仓为静态样本,不是由成交自动生成,估值状态为未估值。示例数字、评级及额度不具有金融业务含义,不可用于真实投资决策或交易。
场景与数据清单
所有代码或标题带完整批次前缀,业务备注明确写明“合成测试数据”。发行主体和评级机构均为虚构信息。必填负责人使用本轮查询确认的当前合法操作者 skydu,不创建或借用其他用户,不修改其应用角色。
| 表 | 条数 | 样本用途 |
|---|---|---|
| 产品信息 | 3 | 固收、股票、衍生品;人民币;R2/R3/R4;一条评级过期,产品均待申请 |
| 投资账户 | 2 | 有效账户和停用账户,用于筛选及关联候选检查 |
| 风控指标与规则 | 1 | 持仓金额大于100000的展示样本,规则停用 |
| 额度设置 | 2 | 关联产品和有效账户,持仓额度100000,状态草稿 |
| 入池申请 | 2 | 待审核、审核中,关联两种产品,不启动流程 |
| 下单风控审核 | 3 | 存量80000加下单10000/20000/30000,覆盖低于/等于/超过100000;风控结果未校验 |
| 持仓明细 | 3 | 市值80000/100000/120000,展示不同静态余额,估值状态未估值 |
| 风险评级记录 | 2 | 与产品一致的有效及过期评级历史,用于产品详情查找列表 |
| 风控预警事件 | 3 | 待审核、待处置、已关闭;引用产品、账户及停用样本规则 |
| 风控处置记录 | 1 | 关联待处置事件的处置草稿,未执行实际处置 |
金额统一人民币,不引入汇率换算。没有写入交易记录、资金流水或OA人员资料。停用账户目前只是候选样本,尚未验证系统是否能在关键业务入口阻止使用。
对账基准
本批首次准备前,以上10张表的记录数均为0。写入后以已发布字段和实际状态查询得到以下计数,均与样本预期一致:
| 看板口径 | 本批贡献 | 后台查询结果 |
|---|---|---|
| 入池状态为待审核或审核中 | 2 | 2 |
| 下单状态为待审核或审核中 | 2 | 2 |
| 风险事件为待审核、待处置或复核中 | 2 | 2,已关闭样本不计入 |
| 产品评级有效期早于2026-10-13查询时刻 | 1 | 1 |
计数证据为 projects/financial-risk/evidence/test-data-count-checks.json,它验证的是接口筛选结果,不是浏览器看板截图。新增其他记录、修改样本状态或日期后,需要重建期望值;不能永久使用固定总数验收。
研发如何安全准备
- 确认用户授权、UAT目标和已发布版本。查询实际应用、已发布表列表和完整字段定义,不用草稿结构代替运行态。
- 检查应用和目标表的监听器、定时任务等副作用。本批回读均无监听器,应用无定时任务;不调用已有的审批发起自动化。
- 建立固定批次、场景矩阵和原始计数基线。输入使用字段标识及真实选项ID,不用选项显示名替代。
- 按产品、账户、规则等父对象到子对象顺序串行准备。平台生成记录ID后精确查询,再把真实ID写入关联字段;系统UUID、流水号和业务编号由平台生成。
- 每条写入前按本批代码或标题精确查询。不存在才插入;存在且字段相同才复用;出现重复或内容冲突就停止,不覆盖测试人员修改过的记录。
- 单条写入后校验返回数量,并回读字段值、状态和关联。异常先查证,不盲目重发;部分失败不自动回滚,更不批量删除。
- 将每条真实ID、样本字段、依赖及批次写入台账。记录调用时间、方法及结果,不保存API密钥或认证头。
- 完整重复执行验证不重复新增,然后做独立复核、对账和运行页测试。
实现文件:projects/financial-risk/seed-test-data.mjs。脚本使用当前进程凭证,调用已核对的技能方法;只能对本项目固定目标使用。单机独占锁防止本脚本同时运行,但不提供跨机器并发幂等保证。异常退出遗留锁时,先确认没有活动写入再处理;失败后的清单可能只有本轮已验证的前缀,不能把它视为全量已写记录。
bash
# 先核对目标、进度、现有数据及凭证环境;本命令会写入UAT记录。
node projects/financial-risk/seed-test-data.mjs完整台账:projects/financial-risk/evidence/test-data-manifest.json。初始基线、导入恢复过程及重复执行结果分别位于 seed-initial-preflight.json、seed-import-summary.json、seed-summary.json;完整调用和回读保留在 calls.jsonl。脚本未创建交易或启动流程,是本次操作范围声明,不是对环境中全部成交或流程实例数量的查询结论。这些文件是证据,不应作为批量重建应用的指令执行。
实测遇到的日期差异
首轮在第14条写入后回读失败:传入 2026-10-13T09:00:00+08:00,实际保存时间戳为 1791882000000,对应09:00 UTC / 17:00上海时间,而不是输入偏移所代表的01:00 UTC。当前批量插入接口没有按该偏移得到预期时刻,不能把ISO字符串原样回显当作时间正确。
脚本停止后查证已保存记录,没有重复插入或删除。由于这是可调整的合成估值时刻,本批明确将基准改为09:00 UTC / 17:00上海时间,输入统一为 2026-10-13T09:00:00Z;事件时刻为10:30 UTC / 18:30上海时间,后续实际插入及时间戳回读一致。恢复执行复用了14条记录并补入8条,随后完整重跑复用22条、新增0条。
这是本次UAT接口实测的适用边界,不推定所有织信日期入口都会忽略时区。原始请求和回读位于调用日志,日期差异重建证据为seed-date-offset-observation.json;首次本地断言报错未写进平台调用日志,后续脚本已增加停止事件证据。正式业务不得用改变期望时间掩盖错误,应核对真实接口解析语义、时间戳和业务展示时区,再按原始业务时刻修正。
测试交接与清理
测试工程师使用已发布运行页,按 QA_20261013_A 筛选,检查产品详情的入池/评级/事件子列表、账户持仓关联、不同状态分布、日期和看板与明细对账。继续测试时不进入设计器、不发布、不更改角色;审批、真实入账和隔离验证另按适用用例执行。
测试数据能支持这些验证,但本轮只完成准备、逐条回读、重复执行及后台计数验证,没有新增浏览器操作证据,也没有提升业务验收通过率。此前浏览器冒烟报告的空态截图是准备数据前的历史结果。
清理是独立动作,当前未授权、未执行。应先用台账中的精确记录ID查询最新状态,检查测试人员后续新增引用,再申请清理范围确认。确认后先删处置记录,再删事件、评级、持仓、下单和入池、额度,最后删除规则、账户和产品等父对象;实际顺序以最新关联依赖为准。不可只凭宽泛的 QA_ 前缀删除,更不能删掉正式记录。若存在新引用或已进入实际业务流程,停止并重新确认。
最佳实践结论
测试数据是研发交付的一部分,应该包含场景、期望值、批次、真实关联ID、重复执行策略、失败恢复和清理边界。用少量有区分度的合成样本验证数据驱动界面,比任意堆积数据更有效;同时必须把人工夹具、自动计算结果、审批实例和真实交易事实清楚分开。

