news 2026/10/8 6:57:05

不止是地址:Address 合成测试数据(人物/银行卡/就业/网络)设计完全解读

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不止是地址:Address 合成测试数据(人物/银行卡/就业/网络)设计完全解读

不止是地址:Address 合成测试数据(人物/银行卡/就业/网络)设计完全解读

【免费下载链接】addressA self-hosted address and synthetic test-profile generator for 27 countries and regions, built from real open-data streets, administrative areas, coordinates, and postcodes. Supports multilingual output, IP-nearby generation, map previews, and API access. 基于真实开放数据的自托管地址与合成测试资料生成器,覆盖 27 个国家和地区,支持多语言地址、IP 附近生成、地图预览与 API 调用项目地址: https://gitcode.com/gh_mirrors/address4/address

做前后端测试时,你大概率填过这种假数据:随手编的地址、乱写的手机号、随便敲的银行卡号。问题是——这些"假数据"往往假到能瞬间暴露问题:手机号不符合国家号段、银行卡过不了 Luhn 校验、地址在地图上找不到。Address 是一个自托管的地址与合成测试资料生成器,覆盖 27 个国家和地区:它先给你一条真实存在的地址,再自动配套生成一套与地址"逻辑自洽"的合成测试数据——人物画像、银行卡、就业、网络信息,全部可复现、可多语言展示。这篇文章带你完整拆解它的合成数据设计思路。

一次生成,得到一整套测试数据包

调用/generate接口(或在 Web 界面点击"Random address")后,返回的不只是一条地址,而是一个完整的测试数据包(GeneratedBundle):

模块内容特点
📍 地址街道、门牌、邮编、经纬度来自真实开放数据,缺什么就留空,绝不编造
👤 人物姓名、性别、邮箱、手机号、出生日期姓名用国家母语语料,手机号符合该国号段规则
🏦 银行卡卡组织、卡号、有效期、CVC带 Luhn 校验位,仅测试用途
💼 就业职业、公司、部门、公司规模、月薪与学历、年龄强关联
💰 财务账户名、收入区间、交易描述币种匹配所在国
🌐 网络用户名、测试密码、User-Agent、UUID、IP、MACIP 只用文档保留段,不会撞真 IP

数据包中地址是真实的,其余字段是合成数据,两者相互独立但不矛盾——这正是它和普通"假数据生成器"最大的区别。字段定义可查阅 src/domain/types.ts,接口行为见 docs/API.md。

人物与就业数据:让数据"讲得通"

多数生成器是"字段级随机":年龄 20 岁、职业却是"临床心理学家"、学历博士——一眼假。Address 的做法是链式约束:

  1. 年龄决定学历:21 岁以下不可能有本科学历,28 岁以下博士几乎为零,权重随年龄解锁(见 profile-model.ts);
  2. 学历决定职业池:只有"学历 ≥ 职业要求且相差不超过一级"的职业才进入候选,硕士可能当产品经理,但高中生不会;
  3. 年龄决定就业状态:22 岁以下大概率是学生,65 岁以上退休概率 72%;
  4. 职业+年龄+国家决定薪水:以该国中位月薪为基准,乘职业系数(0.72~1.7)、年龄系数,再随机浮动 ±15%。

身高体重也按国家和性别做了正态分布(荷兰男性平均 183cm、菲律宾 165cm 这类细节都区分了),血型分布甚至区分了东亚地区 Rh 阴性更稀少的特点。

银行卡与网络数据:安全与合规的小心思

  • 卡号能过校验:随机选 Visa(4 开头)或 Mastercard(51–55、2221–2720)前缀,中间随机,最后一位用 Luhn 算法算出校验位,再按 4-4-4-4 分组——支付表单的格式校验直接能过(sandbox-card.ts)。有效期固定在"今天+2~5 年",永远不会生成已过期卡。
  • IP 永远安全:网络模块里的 IP 只从 RFC 5737 文档保留段(192.0.2.x等)中取,不会和任何真实用户撞车;MAC 地址则置位"本地管理"标志位,同样避免冲突。
  • 测试密码可读:用"名词+名词+数字+符号"模式(如AmberWillow42!),方便人工测试时记忆,又不至于太弱。

一致性细节:同一批数据的"隐形胶水"

真正让这批合成数据"可信"的,是一堆容易被忽略的联动:

  • 姓名→邮箱/用户名:邮箱和用户名都从姓名派生,日本/越南姓名"姓在前",中日韩直接拼接不加空格,姓名格式符合当地习惯(generator.ts);
  • 地址→电话区号:美国/加拿大的手机区号会匹配地址所在城市——西雅图的地址配 206 区号,而不是随便一个区号;
  • 手机号真实性校验:生成后逐国用号码元数据验证(128 次重试),还专门排除了英国的"影视专用段";
  • 账户名带人名:银行账户显示名为"姓名 · 活期账户",交易描述配一个随机商户名,看起来像真实账单。

可复现:同一个 seed,同一套测试数据

回归测试最怕"数据每次都变"。Address 的所有合成数据都由一个seed驱动:seed 与地址 ID 哈希后作为随机数种子,喂给同一套确定性随机源。这意味着:

  • 相同 seed + 相同地址 = 完全相同的人物、银行卡、网络数据,可用于自动化断言;
  • 不同 seed = 全新但同样自洽的数据包,可用于批量造数;
  • 批次接口(POST /generate/batch)支持unique去重,一次生成最多 50 条互不重复的记录。

确定性行为有专门测试守护:tests/generator-determinism.test.ts、跨语言一致性测试见 tests/profile-multilingual.test.ts。

多语言展示:9 种语言的"本地人格"

合成数据还自带 9 种语言的本地化呈现(profile-presentations.ts):账户类型翻译成"活期账户/Girokonto/Compte à vue"等当地叫法,"银行卡消费"的交易描述跟随语言切换,连宠物名答案(安全问题的答案之一)都有各语言版本。测试国际化表单、本地化文案时非常顺手。

适用场景速查

  • ✅ 表单/注册流程测试:姓名+邮箱+手机号+地址一步到位
  • ✅ 支付/金融流程:Luhn 合法的测试卡 + 收入区间
  • ✅ 地理功能测试:真实坐标 + 地图链接,区号与城市匹配
  • ✅ 国际化/本地化测试:9 语言展示,姓名格式符合当地习惯
  • ✅ 自动化回归:seed 复现,断言稳定

部署方式、API 参数与错误码详见 docs/DEPLOYMENT.md 与 docs/API.md,数据源清单见 docs/data-sources.md。一句话总结:Address 把"造假数据"做成了"造一套自洽的小社会"——地址是真的,人是合理的,卡片是能过校验的,而且永远可复现。

【免费下载链接】addressA self-hosted address and synthetic test-profile generator for 27 countries and regions, built from real open-data streets, administrative areas, coordinates, and postcodes. Supports multilingual output, IP-nearby generation, map previews, and API access. 基于真实开放数据的自托管地址与合成测试资料生成器,覆盖 27 个国家和地区,支持多语言地址、IP 附近生成、地图预览与 API 调用项目地址: https://gitcode.com/gh_mirrors/address4/address

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 6:56:50

通信协议中的超帧:从SDH S1字节到LTE H-SFN的周期嵌套设计

做传输和无线接入的工程师,对 frame 这个词再熟悉不过。但第一次在 SDH 分析仪上看到 Hyperframe 这个字段时,不少人会愣一下:帧之上有多帧,多帧之上还有个超帧,这层层套娃到底图什么?后来在 LTE 的 eDRX 参…

作者头像 李华
网站建设 2026/10/8 6:56:38

ponytail技能框架实战:统一脚本、配置与排错经验

经常有朋友问我:插件装了一堆,工作流反而更乱了,怎么办?我最近一年都在用ponytail这个工具,它最初只是团队内部一个不起眼的命令行小插件,但磨合下来,居然把之前各自为政的脚本和配置收敛了一大…

作者头像 李华
网站建设 2026/10/8 6:56:25

OpenRig 多智能体编排实战:tmux 与 MCP 构建持久化协作系统

1. 从"一次性对话"到"常驻协作":OpenRig 要解决的真实痛点如果你最近半年一直在折腾 AI Agent,大概率经历过这样一个阶段:一开始用单文件脚本调 API,感觉挺爽;接着开始加工具调用、加记忆、加多轮…

作者头像 李华
网站建设 2026/10/8 6:54:48

从质检小白到大模型高手:收藏这份“智慧+”质检闭环实战指南

文章解析工业AI Agent如何实现质检闭环,从缺陷识别到工艺反向优化,通过云边端协同的五环架构(感知、认知、决策、执行、学习),解决传统质检断点问题,最终让质检从成本中心转变为工艺优化引擎,适…

作者头像 李华
网站建设 2026/10/8 6:54:33

Chroma 的边际相关性检索 - Maximal Marginal Relevance,检索的多样性

“边际相关性检索” 是 Chroma 里的高级查询模式,MMR(Maximal Marginal Relevance,最大边际相关) 它解决什么问题 普通相似度检索只按 “和查询最像” 返回,结果往往扎堆重复 比如查 “如何健身”,可能返回…

作者头像 李华