概要:在电商互联网中,经常会遇到调用第三方服务的功能,比如金融支付、日志拉取、数据分析等服务。
这些服务在调试的时候,第三方会提供sandbox环境,但这些环境只能用于调试是否正常调用,并不能用于测试异常场景;而在真实的线上环境中,会经常出现网络超时、第三方服务不可用等超异常,以及一些第三方服务正常返回的错误码;而这些场景在平常调用第三方服务的时候并不容易遇到,但在线上一旦遇到又没处理好,就容易造成事故。
比如接入支付宝支付,支付宝的沙盒环境和线上一样健全,很难出现api文档中的大部分错误码,很难进行测试。
方案设计:
根据第三方服务的api文档,mock一套api接口,用于测试环境进行测试。
接口的response则设计成可配置,如把配置参数写入MySQL,接口每次返回的时候从数据库读取数据,根据配置参数进行返回,测试环境的服务全部接到该mock服务,这样就可以测试到任何线上异常和正常场景。
阿里的开源软件anyproxy可以用于切换mock和正常环境。