要讲接口测试,先要对RMI中的桩(stub)和骨架(skeleton)的概念有一点了解。RMI的代理模式迫使方法调用必须通过充当替身的代理对象,即Stub和Skeleton,由这些代理对象将方法传递给实际的对象。Stub驻留客户端,承担着代理远程对象的实现者的角色,Skeleton类帮助远程对象与Stub再RMI连接上进行通信。 目前我们接触到的接口类型主要是hessian、dubbo和http接口。Hessian和dubbo都是远程方法调用的一种实现,客户端需要保留stub来调用接口。这就是为什么我们在做hessian和dubbo类型的接口测试时,需要引入接口的jar包。当然也可以在项目中引入被测接口的定义,如果有相关的自定义类,也一并拷贝过来(直接拷贝代码)。 认识三种类型的接口: Hessian是远程方法调用的一种,常被用来跟webservice做比较,相对于webservice其实现更简洁。hessian采用的是二进制RPC(Remote Procedure Call)协议(基于http协议),所以它很适合发送二进制数据,不太适用于复杂对象类型的传输。 http类型的接口是相对于web应用的,基于http协议传输文本。web.xml中配置相应的servlet,当一个uri请求过来时,doGet或者doPost方法会被调用,获取相应的参数。测试http接口时只需要通过uri定位接口并传递参数,相对比较简单; Dubbo是我们公司自己开发的一个远程方法调用框架。Dubbo注册中心负责服务地址的注册与查找,相当于服务目录;dubbo监控中心负责统计各服务调用次数,调用时间等。Dubbo原理可以参考知识库文档: 消费者可以不通过dubbo直连服务提供者。
总结如下: Hessian接口测试:通过接口uri获取接口,如果拷贝接口定义及其自定义类,接口和自定义类的包名尽量跟开发的包保持一致,不建议直接拷贝代码的方式,因为这样不便于维护,直接在pom文件中引入接口和hessian依赖的jar包。通常借助HessianSpringFactoryBean获取接口。 Dubbo接口测试:如果通过dubbo的注册中心获取服务接口,在搭建测试环境时需要在antx配置项中指定dubbo注册中心的地址,测试客户端也需要配置dubbo注册中心地址以及对外提供服务的接口名称。直连的方式在测试端需要引入dubbo框架相关的jar包,测试类和测试方法以及wiki命名尽量规范。通常通过dubbo框架内置的类来获取接口。 Http接口测试:相对来说测试端最简洁,不需要引入接口的jar包,通过httpclient一系列的类来调用接口。 三种类型的接口测试方法因框架的不同配置文件有所差异,但是总的来说都是获取接口、准备数据、执行用例、判断结果这些步骤。 |
|