在最近工作中,自研系统需要跟其他系统打通,做数据交换,目前实现三种方式。
项目背景
为某区教育局研发年度预算填报系统,分国拨预算,专项预算,二次拨款,手工新增四类业务类型进行预算填报,该系统只负责填报填报,完成后需要推送数据到数据处理平台,数据处理好后最后推送至区财政局,进行预算批复以及预算下达。
在填报系统中,会先接收已有的数据,推送已完成的数据,共享数据三类接口业务。
接收数据
在做填报时,需要接收填报模板,根据模板来填报数据。
数据来源于其他平台,检测数据本身的正确性不在考虑范围之内,重点在于接收的数据识别与转换是否正确,数据与填报系统是否冲突。如填报系统设置为必填字段,未接收到该字段或该字段接收错误,导致的白屏异常问题。
接口说明举例
通过中间库,实现专项资金管理平台与区级互联系统二次拨款项目交互的功能。
接口有:
项目信息同步:实现专项资金管理平台向中间库推送项目后,将项目信息同步至区级互联系统。对于附件,采用ftp方式 。
项目接收成功:实现在区级互联平台接收项目成功时,将接收成功的信息同步至中间库。
项目退回:实现区级互联平台退回项目至专项资金管理平台。
接口名称 | 项目信息同步 |
---|---|
用 途 | 实现专项资金管理平台向中间库推送项目后,将项目信息同步至区级互联系统 |
提供方 | 中间库 |
调用方 | 区级互联系统 |
传入参数 | dwdnIn:014101(单位编码) |
返回值 | 消息、基本信息、附件信息 |
消息结构
字段名 | 说明 | 备注 |
---|---|---|
MESS_ID | 内码 | 主键:必填与其他表关联 |
C1 | 单位编码 | 必填 |
C2 | 项目唯一码 | 如13333 |
C3 | 操作类型 | A新增;E修改;D删除 |
C4 | 发送时间 | 如2020-01-01 12:01:01 |
C5 | 是否有项目基本信息 | 1有,0没有 |
C6 | 是否有项目附件 | 1有,0没有 |
基本信息
字段名 | 说明 | 备注 |
---|---|---|
C1 | 项目名称 | |
C2 | 教育资金类别 | |
C3 | 项目总投资 | |
C4 | 是否项目评审 | |
C5 | 评审金额 | |
C6 | 评审结果 | |
C7 | 送审机构 | |
C8 | 项目申请金额 |
附件信息
字段名 | 说明 | 备注 |
---|---|---|
C3 | 附件名称 | |
C4 | 附件内容 | |
C5 | 附件路径 |
测试点:
- 接收的XML数据解析正确性,对接收系统而言,字段可能存在冗余或缺失,字段名称不匹配情况;
- 尽可能模拟所有异常的数据来校验程序的转换,类似构造单元测试中的驱动程序;
- 若推送平台测试时,还需要对接口传的参数进行负向测试,如系统无法识别的参数。
推送数据
在填报完成后,需要将已填写的数据,推送给数据处理平台。
因填报还会上传附件,因此待推送数据最终实现成,打包成附件的形式发送,测试的重点在于推送的数据字段是否齐全,数据是否实现覆盖,数据的转换是否失真。
接口举例
将支出政策库有关的信息导出成zip文件,涉及政策基本信息、附件、以及附件对应关系表。
ZIP文件组成由三部分组成:
zckjbxx.xml:基本信息。
fjsmb.xml:附件对应关系表。
files文件夹:附件全部放入files 文件夹。
基本信息
字段名 | 说明 | 备注 |
---|---|---|
ID | ||
JSDE955 | 单位编码 | |
ZCWH | 政策文号 | |
ZCMC | 政策名称 | |
… | … |
测试点:
- 推送的数据格式,是否严格按双方敲定接口说明实现;
- 推送的数据正确性需要测试确认,数据的转换是否失真;
- 推送的数据异常校验,测试尽可能为对方平台提供覆盖齐全的测试数据,数据的构造可参考等价类设计测试用例
单点登录
在本系统与推送系统实现双向链接跳转,实现共通登录功能。
假如用户在A系统点击B系统的菜单,新开窗口跳转到B系统进行相关业务操作,无需用户登录B系统,可直接使用,反之亦然。
仅是跳转,用户和密码以及数据,两个平台各自使用。若存在找不到对应的user以及生成的key,则跳转失败。
想不到好的测试点,能用就行哈哈哈
总结
跨平台接口从实现上可以分三类:
实时传输数据:如A系统点击某功能,B系统接收到相应,开始执行B系统程序,得到结果再返回A系统。
共享数据:如代码托管一样,A系统生成的数据或功能放共享视图上,B系统需要的时候直接去。
主动获取数据:如A系统已经完成某功能,需要准备传输的数据已经准备好(如Zip包,附件等),B在需要该数据去请求A的接口,再传输相关数据。
吐槽:跨系统调接口工作效率超级超级低。。。。。。