Skip to content

金融风控系统测试数据 ​

为什么准备测试数据 ​

空应用只能验证入口、布局和空态,不能有效检查关联展示、筛选、状态分布或看板计数。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。写入后以已发布字段和实际状态查询得到以下计数,均与样本预期一致:

看板口径本批贡献后台查询结果
入池状态为待审核或审核中22
下单状态为待审核或审核中22
风险事件为待审核、待处置或复核中22,已关闭样本不计入
产品评级有效期早于2026-10-13查询时刻11

计数证据为 projects/financial-risk/evidence/test-data-count-checks.json,它验证的是接口筛选结果,不是浏览器看板截图。新增其他记录、修改样本状态或日期后,需要重建期望值;不能永久使用固定总数验收。

研发如何安全准备 ​

  1. 确认用户授权、UAT目标和已发布版本。查询实际应用、已发布表列表和完整字段定义,不用草稿结构代替运行态。
  2. 检查应用和目标表的监听器、定时任务等副作用。本批回读均无监听器,应用无定时任务;不调用已有的审批发起自动化。
  3. 建立固定批次、场景矩阵和原始计数基线。输入使用字段标识及真实选项ID,不用选项显示名替代。
  4. 按产品、账户、规则等父对象到子对象顺序串行准备。平台生成记录ID后精确查询,再把真实ID写入关联字段;系统UUID、流水号和业务编号由平台生成。
  5. 每条写入前按本批代码或标题精确查询。不存在才插入;存在且字段相同才复用;出现重复或内容冲突就停止,不覆盖测试人员修改过的记录。
  6. 单条写入后校验返回数量,并回读字段值、状态和关联。异常先查证,不盲目重发;部分失败不自动回滚,更不批量删除。
  7. 将每条真实ID、样本字段、依赖及批次写入台账。记录调用时间、方法及结果,不保存API密钥或认证头。
  8. 完整重复执行验证不重复新增,然后做独立复核、对账和运行页测试。

实现文件: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、重复执行策略、失败恢复和清理边界。用少量有区分度的合成样本验证数据驱动界面,比任意堆积数据更有效;同时必须把人工夹具、自动计算结果、审批实例和真实交易事实清楚分开。