概述
基于Spring Aop 构建 Mock服务
引言
在日常的接口测试中,测试人员常常会遇到以下几种令人头疼的情况:
-
场景一:依赖的接口状态不稳定,导致集成 CI 常常失败,需要耗费大量时间排查非被测目标本身之外的环境问题
-
场景二:做异常测试时构造异常数据成本高、难度大,某些异常数据甚至无法通过正常途径构造
-
场景三:被测目标开发进度先于依赖模块,当测试需要先行介入接口测试,但依赖模块接口尚且不通
面对以上痛点,我们需要做什么?
一、概述
1.1 Mock 定义
Mock 是测试过程中中常见的一种技术,即对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,从而把测试与测试边界以外的对象隔离开。
引用《淘宝网-接口测试白皮书》中的对 Mock 的定义
在测试当中,mock 是指使用各种技术手段模拟出各种需要的资源以供测试使用。
被 mock 的资源通常有以下特征:
被测目标依赖该资源
该资源可能因为各种原因不稳定、返回结果不断变化或者并不总是能够获取到
该资源跟被测目标本身质量无关
这些资源可能是一个外部或底层接口、一个系统、一组数据对象或者是一整套目标软件 的工作环境等。通过 mock 避免对外部真实资源的依赖实现对被测目标的孤立测试,从而大 大降低测试的难度,节约测试成本。
1.2 Mock 分类
测试中的 Mock 可以大致分为两类:mock 数据和 mock 服务。
-
Mock 数据即 mock 一个对象,写入一些预期的值,通过它进行自己想要的测试。主要适用于单元测试,例如常见的 EasyMock、Mockito 等。
-
Mock 服务即 mock 一个 sever,构造一个依赖的服务并给予他预期的服务返回值,适用范围广,更加适合我们的集成测试。因此我们就 mock server 这种模式进行设计与开发。
二、设计思路
-
在数据库存储接口的url、method、requestbody、response
-
访问mock服务,接口通过url和method、requestbody去数据库查询response
-
对于一些变化的参数,后面可以定义一些策略,比如在requestbody中加入random_id,mock返回随机数id
/**表示所有文件夹及里面的子文件夹,也就是所有的接口请求都会转发到这里来
@RequestMapping(value = "/**")
public String request(ServletRequest servletRequest) throws IOException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
String uri = request.getRequestURI();
String method = request.getMethod();
String path = getResponse(uri + "-" + method);
String src = "./classes/resp/" + path;
File file = new File(src);
return FileUtils.readFileToString(file, "UTF-8");
}
最后
以上就是高大蜜蜂为你收集整理的基于Spring 构建 Mock服务基于Spring Aop 构建 Mock服务的全部内容,希望文章能够帮你解决基于Spring 构建 Mock服务基于Spring Aop 构建 Mock服务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复