第三方模拟测试环境的搭建[1] 软件测试
摘要: 应用软件与第三方实时通讯时,由于开发进度以及通讯条件的限制,需要模拟第三方的通讯程序,以利测试和维护。本文就此发表自己的一些观点。
关键词:中间业务 模拟测试环境 server daemon、client daemon
近年来我一直从事中间业务软件的开发与维护,所谓中间业务,就是银行作为中间人、代理人的角色帮客户和第三方委托单位办理的一些业务,比如各种话费代收、保险费代缴、水费代收等等。开发中间业务软件,难点在于银行方要与第三方(电信局等委托单位,以下简称第三方)实时交换数据,而银行与第三方的软件开发往往不是同一个软件公司承担,从而导致需求分析、接口定义的不一致性、复杂性,并且双方技术力量的不同经常导致开发进度的不一致,我行为保证开发进度以及软件质量,往往需要为第三方搭建一个模拟测试环境。以下是我在组建模拟测试环境的实践中总结的一些经验和方法。
模拟环境要能够较为全面地模拟出第三方系统所能够实现的功能,从总体上来说,所有的交易可划分为两大块:由我方发起的交易和由对方发起的交易;为此在模拟机上要建立相应的模拟server 程序和模拟client 程序,server程序接收我方发起的交易而client程序发起对方的交易;
模拟环境一般只模拟到对方的前置机一级,因为我方与对方系统要交换的只有请求报文和响应报文,至于各自系统中对每笔交易的帐务处理和流程对对方都是透明的。当然模拟环境也必须模拟到前置机一级,否则请求报文还没送到对方就被返回,根本没有测试到我方相关的通讯子程序,实际联调的时候还须先解决通讯中可能存在的问题,就没有起到模拟第三方的作用了。
双方通讯采用标准的tcp/ip协议,报文交换则可有几种不同的方法,我们采用的主要有ISO8583国际标准包协议和自定义字符串方式两种,建议在对方允许的情况下尽量采用ISO8583包格式,既可减少通讯量又可利用统一的打包、解包函数。联系前面提到的server 和client 服务,则模拟前置机上可能用到的程序共有以下四个:采用ISO8583报文交换的server程序 和client程序 ,以及采用自定义字符串方式交换报文的server程序和client 程序。当然,针对某个特定的委托单位只会用到其中的一对程序。一般来说,server 程序要常驻内存,它接收请求然后返回模拟的响应报文,因为没有实际的第三方数据库可供检索和处理,server程序只能简单地根据不同的请求类型返回相对固定的响应数据,例如,对所有的用户的话费查询,server程序只能返回同样的话费余额和明细,当然,不同类型的请求报文返回的响应报文还是不一样的。如果时间充裕,还可以把server的功能做得尽可能完善:对接收到的请求报文格式作合法性检查,对每一种交易都可以有成功与失败两种返回结果,甚至考虑每一种交易的可能的自动冲正报文,等等;client 程序则做成一般的执行程序,每向我方前置机发起一个交易后即退出运行。client 程序应能模拟第三方发起的每种交易,并接收相应的返回。client 程序还应模拟第三方的可能的错误报文,以检验我方通讯程序能否正常处理。