持续集成之利用mock与回放技术助力自动化回归
持续交付中存在的测试难点:
1、测试数据的准备和清理
1.每次全新的测试都使用全新初始化数据。
2.在测试完成后,清楚变更数据,将数据还原。2、分布式系统的依赖
1.单元测试时要面对两难选择,测依赖还是不测依赖
2.集成测试时,如何保证依赖服务的稳定性,或者说排除由稳定性带来的干扰
3.真实业务系统中,存在多层依赖的问题,还要想办法解决被测应用依赖的服务的依赖服务3、测试用例的高度仿真
什么是mock
mock: 如果某个对象在测试过程中依赖另一个复杂对象,而这个复杂对象又很难被从测试过程中剥离出来,那么就可以利用mock去模拟并代替这个复杂对象。
mock的优势
1、使测试用例更独立、更解耦
2、提升测试用例的执行速度
3、提高测试用例准备的效率
mock框架
1、基于对象和类的Mock:框架有Mockito或者EasyMock,其实现原理都是在运行时,为每一个mock的对象或类动态生成一个代理对象,由这个代理对象返回预先设计的结果。
这类框架适合模拟DAO层的数据操作和复杂逻辑,只能用于单元测试阶段。而到了单元测试阶段,你需要模拟一个外部依赖服务时,就需要基于微服务的mock。
2、基于微服务的Mock:Weir Mock和Mock Server。
Mock实现的方式基本一致:
1.标记被代理的类或对象,或声明被代理的服务
2.通过mock框架定制代理的行为
3.调用代理,从而获得预期的结果