yu120-micro-test-master
所属分类:Java编程
开发工具:Java
文件大小:4461KB
下载次数:1
上传日期:2018-09-07 16:14:50
上 传 者:
soge
说明: 基于java开发的自动化测试框架,支持http、dubbo、restful接口协议
(http,dubbo,restful interface protocol)
文件列表:
micro-test (0, 2018-04-19)
micro-test\.idea (0, 2018-04-19)
micro-test\.idea\vcs.xml (167, 2018-04-19)
micro-test\LICENSE (1075, 2018-04-19)
micro-test\docs (0, 2018-04-19)
micro-test\docs\home.png (316135, 2018-04-19)
micro-test\micro-test-core (0, 2018-04-19)
micro-test\micro-test-core\pom.xml (1168, 2018-04-19)
micro-test\micro-test-core\src (0, 2018-04-19)
micro-test\micro-test-core\src\main (0, 2018-04-19)
micro-test\micro-test-core\src\main\java (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\Constants.java (1087, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\MicroDoclet.java (8221, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\MicroMain.java (2011, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\annotation (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\annotation\Micro.java (69, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\configuration (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\configuration\MicroAutoConfiguration.java (950, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\model (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\model\MicroClass.java (890, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\model\MicroMethod.java (856, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\model\MicroParameter.java (488, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\model\MicroReturn.java (434, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\model\MicroThrows.java (485, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\servlet (0, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\servlet\APIHttpServlet.java (4997, 2018-04-19)
micro-test\micro-test-core\src\main\java\org\micro\test\core\servlet\PageHttpServlet.java (4539, 2018-04-19)
micro-test\micro-test-core\src\main\resources (0, 2018-04-19)
micro-test\micro-test-core\src\main\resources\META-INF (0, 2018-04-19)
micro-test\micro-test-core\src\main\resources\META-INF\spring.factories (123, 2018-04-19)
micro-test\micro-test-core\src\main\resources\html (0, 2018-04-19)
... ...
# micro-test
微服务自动化测试平台,一款让开发者主动使用,让测试者减少编写测试用例的产品!
![home](docs/home.png)
# 1 背景
微服务架构中,大部分的微服务都是使用"HTTP+RPC私有协议"的方式来提供微服务能力。但因微服务的迭代速度很快,交付速度也很快,而为了跟上微服务的节奏,我们通常会将开发者拆成不同的几个小组(打造最强战斗小组),从而减少沟通成本,提升工作效率,但此时的测试工作量将大大增加(应用增多了N倍,依赖关系也将更加复杂),其测试成本也随之增加,出错的概率也越来越大。为了解决微服务迭代中测试的不足,我们可以建立一套自动化测试平台,实现后端微服务架构的全自动化,测试人员只需要每天不断的去更新测试用例即可。
# 2 分析微服务测试
绝大部分的微服务都是采用"HTTP+私有协议",当然也有不少团队是全部采用HTTP的方式。
HTTP接口自动化测试
RPC私有协议自动化测试
通用TCP协议自动化测试
通用UDP协议自动化测试
**为什么要自研?**
现在不是很多自动化测试框架吗?为什么要自研?因为我想要一款完全符合自己团队的自动化测试框架,打造一款业界通用的自动化测试框架,减少自动化流程的人工干预工作量,形成能真正的自动化流水线。解决测试人员希望开发者帮他们造数据的问题,解决开发者直接使用测试人员的数据进行复现BUG ......
**测试与开发的矛盾在哪里?**
- 测试不懂开发设计,不知其服务或接口是如何设计,所以也不方便完整测试
- 开发不知测试提的BUG的输入数据,每次都需要重新造数据后模拟一遍
- 测试希望开发帮忙写测试用例
**我们希望的方式是什么?**
开发者连续开发好一小组服务或接口后,Docker自动部署好调试服务,并开启了远程DEBUG模式,然后开发者开始通过可视化界(见名思意的)找到刚才开发的几个服务,然后开发者测试输入正常测试数据进行验证,验证通过则自动保存了该份测试用例,然后再输入常规边界测试数据,通过则自动保存,不通过则开发者使用远程DEBUG的方式进行逐步查看数据流。
测试人员开始根据可视化界面的接口描述信息进行理解该接口的功能,并使用开发者写好的测试用例进行验证,然后根据开发者已写的测试用例来完善该服务或该接口的测试用例。
同时开发者和测试者,不需要每次都再找HTTP模拟工具或编写代码来实现服务的消费,从而减少服务开发的周期,减少测试用例的编写数量,减少BUG重现的难度。
**优势分析**
- 统一提供可视化的HTTP模拟工具
- 统一提供可视化的私有协议(如Duboo/Motan等)模拟工具
- 复用开发人员的开发期正确的测试用例
- 复用测试人员编写的测试用例
- 几乎零入侵的方式
- 督促开发者命名规格、注释齐全
- 实现自动化功能测试与功能回归
- 实现自动化性能测试
# 3 设计目标
- 轻量级
- 零入侵
- 插件式设计
- 减少人工干预
- 打造通用自动化测试框架
- 开发与测试共享测试用例
- 可扩展测试框架
- 一统江湖
**功能模块**:
- 使用javadoc读取Java注释,形成服务或接口描述文档数据
- 使用可视化界面展示服务或接口信息
- 提供消费模拟插件
- 提供HTTP模拟消费插件
- 提供SpringCloud模拟消费插件
- 提供Dubbo模拟消费插件
- 提供Motanni模拟消费插件
- 提供测试用例复用功能
# 4 实现方案
## 4.1 服务文档
**核心方案一**:javadoc读取注释
因设计的目标就是达到:见名思意和复用注释,所以本方案希望使用反射的机制来读取开发者写的服务或接口。然而小编并没有发现Java反射获取注解的方式,所以使用解析javadoc的思路来读取接口和服务的描述信息,从而无条件去掉Swagger式的描述。
**核心方案二**:Doclet
**tools依赖处理**:
将安装好的JDK目录下的 `../lib/tools.jar` 复制到MAVEN仓库下的com/sun目录下:
tools-1.8.0.jar为:
```xml
com.sun
tools
1.8.0
```
tools-1.8.0.pom为:
```xml
4.0.0
com.sun
tools
1.8.0
Sun JVM tools
jar
```
**为什么不用Swagger?**
这里不是说Swagger不好,而是不同的要求有不同的解决方案,而Swagger只是不够彻底而已。
- Swagger只支持HTTP,而微服务不仅仅只有HTTP
- Swagger入侵太强,每个服务接口上都有N个注解
- 开发者喜欢拷贝这些注解,容易忘记修改
- Swagger只能为开发者和测试者提供一个HTTP模拟器而已
- 开发者和测试者的测试数据不能相互复用
......
## 4.2 配置信息
使用Java反射机制,在启动流程中自动化读取所有服务或接口的配置信息(服务ID、接口ID、入参名称、入参类型、出参名称、出参类型和接口注解文档等)。同时,就会要求开发者的的命名和文档一定要规范和齐全。
这种方式直接省去了Swagger注解的描述。
## 4.3 扩展方案
因为每个开发团队,使用的开发框架可能都不同,而常用的就是HTTP和Duboo,所以这里会提供HTTP和Dubbo的自动化测试支持。达到开发者只需简单操作可视化界面,即可实现调用HTTP和Dubbo服务的效果。
而为了支持更多团队的使用,该方案也必须提供通讯框架的扩展功能,为更多开发者的接入提供了接口。同时也可以复用别人开发的插件,来支持更多服务框架的自动化测试。
近期下载者:
相关文件:
收藏者: