Industry news
亚娱体育官方网站跟着小程学微服务-Mock自动化系统的原理及实现
亚娱体育手机版下载在之前的文章中已经介绍了“自动化Mock系统0.9版本”,今天我将和大家一起探讨我们的“自动化Mock系统1.0版本”。
我公司目前用的是基于Dubbo的微服务改造,服务之间的调用链路冗长,每个服务又是单独的团队在维护,每个团队又在不断的演进和维护各个服务,那么对测试人员将是非常大的挑战。
测试人员每次进行功能测试的时候,测试用例每次都需要重新写一遍,无法将测试用例的数据沉淀,尤其是做自动化测试的时候,测试人员准备测试数据就需要很长时间,效率非常低。
目前接口自动化测试框架也多种多样,testng,junit,Fitnesse等,但都需要测试人员具备测试代码编写能力,如果要做好和手工接口测试一样效果的自动化测试更是需要大量的代码堆积,后期维护代码成本非常大。因此做成简单配置用例流,无需编写测试代码的系统是更贴合实际工作要求。
举个例子:拿互联网支付系统来说,某个团队新增了支付交易的需求,这时候要进行测试,测试人员除了要测试支付交易需求本身是否正确,同时也要结合上下游的服务整体进行回归测试,这时候开发人员往往在支付交易系统中采用“硬编码”的方式对上下游的系统进行“挡板”,如果测试人员对测试数据有所调整那么“挡板”也要跟着调整,同时在项目正式上线的时候,如果开发人员没有将“挡板”程序去除干净,将面临严重的线上问题。
Dubbo自带的Mock功能首先是为了做服务降级,比如某验权服务,当服务提供方全部挂掉后,亚娱体育官方网站客户端不抛出异常,而是通过Mock数据返回授权失败。
我们可以在期望的reference标签上加一个mock=force,就可以将当前服务设置为mock。但是设置完mock属性后还没有结束,需要有一个Mock类对应我们的服务接口类。
接口名 + Mock后缀,服务接口调用失败Mock实现类,该Mock类必须有一个无参构造函数。
经过以上设置后,当调用BarService进行远程调用的话,直接请求到BarServiceMock类上面进行模拟测试。
FailbackCluster: 失败自动恢复, 对于invoker调用失败, 后台记录失败请求,任务定时重发, 通常用于通知。
FailfastCluster: 快速失败,只发起一次调用,失败立即保错,通常用于非幂等性操作。
FailoverCluster: 失败转移,当出现失败,重试服务器,通常用于读操作,但重试会带来更长延迟。
Dubbo的Mock功能主要是为了做服务降级而使用的,服务提供方在客户端执行容错逻辑,在出现RpcException(比如网络失败,超时等)时进行容错,然后执行降级Mock逻辑。自身并不适合做Mock测试系统。
为了基于Dubbo实现Mock功能,需要对Dubbo源码进行一些必要的修改,通过上面的架构图我们可以看到,实际上我们正是利用了Dubbo的Filter chain过滤器链这一机制实现的,亚娱体育官方网站为了方便大家更好的理解,下面将简单介绍一下Dubbo的Filter机制。
Filter:是一种递归的链式调用,用来在远程调用真正执行的前后加入一些逻辑,跟aop的servlet中filter概念一样的。
注:我们在dubbo:application name中新加了自定义的“env=test”这样的属性配置用来标明当前环境是测试的还是正式的,用户每次通过Dubbo请求的远程服务的时候,都会首先经过我们自定义的Filter,我们自定义的Filter会首先判断当前的环境是test还是正式,如果是test的环境则直接访问Mock配置中心获取提前配置好的Mock数据并封装成用户定义的Response对象返回。
Mock配置中心就是用户将mock数据与应用环境建立关系的系统,整个系统就像一个工作流引擎:
环境设置-应用名称设置-挡板规则设置-Facade服务接口设置-方法规则设置
注:如果尚未映射来源IP地址到环境,则点击环境列表导航链接,进入环境列表页面,点击添加,输入源IP及环境名,点击确定按钮,实现源IP到所设环境的映射。每个用户都可以建立属于自己的测试环境。亚娱体育官方网站
注:每一个挡板规则都是由一个环境名称和应用名称组成的唯一挡板,在挡板设置中选择环境名称和应用名称,并且设置挡板的有效状态。
注:每一个Facade就是一个Dubbo的服务接口类,在这里将自己的Facade名称与全路径与挡板名称对应,以标识哪些Facade服务接口类是属于哪个挡板的。
注:方法规则是用来设置每个Facade中的需要mock的方法的,可以对不同的方法设置方法执行时间、方法抛出的异常等等。
由于不少应用项目开发完后想对其进行单独压测,而很多时候应用系统和其他业务系统形成了依赖关系,如果不布署其他应用系统则无法完成压测,为了更好的支持性能测试组进行挡板压测,Mock系统支持压测功能,而Mock系统自身也可以达到单台服务器1000TPS以上(8C8G)。
Dubbo是什么 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式...
一、说在前面 基于微服务或者SOA的自动化测试系统每个公司都有自己的特有的,我今天就主要介绍一下,我们研发的一套m...
莲在《舌尖上的中国》的第一集《自然的馈赠》被讲述。看到这一幕,既感动,又熟悉,更亲切。在我的家乡湖北许许多多的地...
生活中,你也许会遇到这样的人:面对他人的请求,即使很过分也从不拒绝,欣然接受。然后为了完成他人的请求而拼尽全力,甚...
日期8.19 星期六 天气晴 时间过得飞快,转眼间第二周的特种兵训练又已经结束了,在这一周里,收获最大的便是...
CATEGORIES
News
- 信息化自动化技术是钢铁业由“大”变“亚娱体育下载强”之关键2023-04-16
- 亚娱体育综合体育传承创新用爱铸就品牌——《中国品牌档案》实地拍摄永光国际2023-04-16
- 11 家消费公司拿到新钱沪上阿姨 2023 年冲击万店奥莱店增量创历史最高亚娱体2023-04-16
- 亚娱体育斩男香水排名前十 斩男香水排行榜前10推荐2023-04-16
- 亚娱体育官方网站跟着小程学微服务-Mock自动化系统的原理及实现2023-04-16
CONTACT US
Contact: 亚娱·体育(APP)官方网站
Phone: 13800000000
Tel: 400-123-4567
E-mail: admin@youweb.com
Add: Here is your company address