petiokasmetio/iso20022-camt053-test-data-generator

GitHub: petiokasmetio/iso20022-camt053-test-data-generator

这是一个Java工具,用于自动生成ISO 20022 camt.053 XML测试数据,解决银行测试中手动准备数据繁琐的问题。

Stars: 0 | Forks: 0

# ISO 20022 camt.053 测试数据生成器 一个用于生成合成 camt.053 风格 XML 账户对账单测试数据的 Java 控制台应用程序。 本项目展示了 QA 工程师如何利用自动化技术,为账户对账单、交易和余额验证场景生成可重复的银行测试数据。 ## 免责声明 这是一个仅使用合成数据的作品集/演示项目。 它不包含真实客户数据、真实银行数据、真实账户数据、生产标识符、内部项目信息或机密客户信息。 生成的 XML 文件仅用于 QA 练习、学习、演示和作品集目的。 ## 概述 该应用程序通过控制台输入生成一个 `camt.053.001.02` 风格的 XML 文件。 用户可以配置账户对账单信息,例如: - 消息接收方 - 账户持有人 - 银行/服务提供方详细信息 - 分支机构详细信息 - 开始时的已记账余额 - 交易条目 - 贷方/借方指示符 - 记账日和起息日 - 汇款信息 然后,该工具构建一个包含账户对账单数据的 XML 文档,并自动计算结束时的已记账余额。 ## 工具存在的原因 在银行和金融软件测试中,手动准备基于 XML 的账户对账单测试数据可能既缓慢、重复又容易出错。 本工具展示了一种自动生成结构化银行测试数据的简单方法,使测试场景更具可重复性且更易准备。 典型的 QA 用例包括: - 回归测试 - 银行工作流验证 - 账户对账单场景准备 - 交易和余额测试 - 基于 XML 的测试数据生成 - 金融业务规则验证 ## 主要功能 - 生成 camt.053 风格的 XML 账户对账单文件 - 创建 `BkToCstmrStmt` XML 结构 - 生成 `GrpHdr`、`Stmt`、`Acct`、`Bal` 和 `Ntry` 部分 - 支持多个交易条目 - 支持 `CRDT` 和 `DBIT` 交易类型 - 在用户定义的范围内随机化交易金额 - 自动计算结束时的已记账余额 - 生成消息 ID、对账单 ID 和电子序列号 - 生成账户服务提供方参考号 - 使用 `BigDecimal` 进行金融金额计算 - 默认使用合成的演示值 - 无需外部库 ## 使用技术 - Java - Java XML DOM API - BigDecimal - 控制台输入处理 - ISO 20022 camt.053 风格的 XML 结构 ## 余额计算逻辑 应用程序会询问开始时的已记账余额及其贷方/借方指示符。 生成的每个交易条目可以是以下之一: - `CRDT` - 贷方交易 - `DBIT` - 借方交易 结束时的已记账余额使用以下逻辑计算: ``` Closing Balance = Opening Balance + Credit Entries - Debit Entries ``` 如果最终余额为正或零,则结束时的余额指示符设置为: ``` CRDT ``` 如果最终余额为负,则结束时的余额指示符设置为: ``` DBIT ``` 计算出的余额的绝对值被写为结束时的余额金额。 ## 生成的 XML 结构 生成的 XML 包含以下高层结构: ``` Document └── BkToCstmrStmt ├── GrpHdr │ ├── MsgId │ ├── CreDtTm │ ├── MsgRcpt │ └── MsgPgntn └── Stmt ├── Id ├── ElctrncSeqNb ├── CreDtTm ├── FrToDt ├── Acct ├── Bal - OPBD ├── Bal - CLBD └── Ntry └── NtryDtls └── TxDtls ``` ## 生成的示例部分 生成的 XML 包括: - 组头数据 - 对账单元数据 - 账户信息 - 账户持有人信息 - 金融机构/服务提供方信息 - 分支机构信息 - 开始时的已记账余额 - 计算出的结束时的已记账余额 - 交易条目 - 债务人信息 - 债务人账户信息 - 汇款信息 ## 如何编译 在项目文件夹中,运行: ``` javac -encoding UTF-8 Camt053Generator.java ``` ## 如何运行 ``` java -cp . Camt053Generator ``` 应用程序将开始通过控制台请求输入值。 示例: ``` === CAMT.053.001.02 XML Generator (Java) === Output filename (example: statement.xml) [default: camt053_generated.xml]: Timezone offset (example: +02:00) [default: +02:00]: Creation date for message/statement (YYYY-MM-DD): ``` ## 示例输入流程 用户可以定义: ``` Output filename Timezone offset Creation date Recipient name Customer ID Statement date range Account ID Owner details Servicer/bank details Branch details Opening balance Transaction amount range Number of transaction entries CRDT/DBIT indicator per entry Booking date Value date Transaction code values Debtor information Remittance information ``` ## 演示数据 项目使用合成的演示值,例如: ``` Demo Recipient Ltd DEMO-CUSTOMER-001 Demo Account Owner Ltd Demo Bank Ltd Demo Bank Branch Demo Debtor Ltd DEMO SEPA TEST PAYMENT DEMO TRANSACTION INFO ``` 这些值是占位符,与真实客户、银行、账户或生产系统无关。 ## 示例用例 一位 QA 工程师需要测试银行系统的账户对账单处理。 工程师无需手动准备 XML 测试数据,而是可以使用此工具生成具有可配置余额和交易条目的账户对账单 XML 文件。 生成的输出随后可用作回归测试、集成测试或业务规则验证的测试数据。 ## 当前项目状态 当前版本: - 单文件 Java 控制台应用程序 - 合成的演示数据 - 通过 Java DOM API 生成 XML - 可配置的控制台提示 - 多个交易条目 - 贷方/借方处理 - 自动结束余额计算 ## 局限性 这是一个演示/作品集版本。 当前局限性: - 尚无 Maven/Gradle 项目结构 - 尚无单元测试 - 尚不支持外部配置文件 - 尚无 XML 模式验证 - 尚未提交示例 XML 文件 - 尚无 CI/CD 管道 ## 潜在未来改进 可能的后续改进: - 添加 Maven 项目结构 - 为余额计算添加单元测试 - 添加 XML 模式验证 - 添加 JSON 或 YAML 输入配置 - 添加示例输入文件 - 添加示例生成的 XML 文件 - 添加 GitHub Actions 构建管道 - 添加负面测试数据生成 - 添加对其他 camt 消息变体的支持 - 添加命令行参数代替交互式提示 ## 展示的技能 本项目展示了: - Java 编程 - XML 生成 - 测试数据自动化 - 金融计算逻辑 - 银行领域知识 - QA 自动化思维 - 结构化测试数据准备 - 处理贷方/借方交易场景 - 用于测试目的的合成数据生成 ## 作者 Petar Nikolov 测试自动化工程分析师,拥有 ERP 和银行系统、Java/Python 自动化、QA 工具、XML 测试数据生成以及关键业务软件测试方面的经验。
标签:camt.053, ISO 20022, Java控制台应用, JS文件枚举, QA工具, XML生成, 交易数据, 余额计算, 合成数据, 回归测试, 域名枚举, 数据验证, 测试自动化, 账户对账单, 软件测试工具, 金融数据生成, 金融科技, 银行测试