前言
大家或多或少都听说过中间件,比如队列,缓存等等。但是大部分同学都停留在如何使用上,那么如何测试这些中间件呢?其实在很多年前,早已经有统一的标准了,这就一起跟我来看看吧。
既然想测试中间件,就要找出他们的特点。等等,你问我为什么要测试这些中间件?我回答:大部分中间件都是公司自己研发的,能用的商业版并不多,而且非常贵,一年大几十万都很正常。
中间件特点
- 可复用性: 多次使用,并发使用,不同调用
- 可观察性: 从输入和输出来观察这个构建的作用等
- 可追踪性:属性状态和行为状态定位问题简单明了
- 可控制下:输入处理输出操作行为都可以人为操控,俗称抓手
- 可理解性:推广简单,让新人一学就会
知道了特点,下面可以来看看中间件测试有哪些可能的难点吧
中间件测试难点
- 异构性:构件一般可以用不同语言实现,运行在不同平台,这队互操作性和兼容性提出了测试挑战。
- 源代码的可得性:一般我们可以网上下载或买到的中间件源代码都是加密的,这几乎让白盒测试无从下手。
- 演化性:构建系统的即插即用特性,要求无需编译配置即可升级,这样测试中的版本升级测试就显得更加重要了。
最后,我们来谈谈测试方法吧:
中间件测试方法
- 构建方法序列:第一阶段是测试中间件本身,第二阶段要把融合中间件的软件进行测试。
- 内置测试法:给中间件增加一个内部测试环境或者后门程序,出结果,看日志更方便等等。
- 基于形式化:找出组件之间的各种交互,然后整理成形式化的测试需求,再写成用例。
- 基于构建交互图:该方法针对的事构建接口或错误的专项测试。
- 基于合约变异:根据各种错误码等规则进行针对性的测试。
- 组件测试工作台:一般开源组件基本没有bug了,但是仍要进行多个不同组件集成的测试,就像一个工作台一样进行组装。
- 接口:通过接口的输入输出来找出中间件的特点。
- 第三方验证:防止广告行为,必须找第三方验证。