0%

使用场景

企业内部软件重构,接口的功能完全不变的情况下,切换数据库,或者使用元数据、多租户等技术。此时要求测试能快速全面的进行功能测试。

已有的接口自动化测试可以作为请求的发起端,接口的返回使用 diffy 进行断言。如果接口返回简单,需要检查数据库,将数据库查询使用接口实现,返回的数据行也作为接口的返回体,放入 diffy 做断言。

原理图

diffy 原版使用

proxy
candidate
primary
secondly
raw differences
non-deterministic noise
filtered differences

录制 primary、candidate 的返回体,存储起来。wiremock-standalone 存文件

proxy
wiremock-c
mock-c-data
candidate
wiremock-p
mock-p-data
primary

回放 primary、candidate 的返回体

proxy
wiremock-c
wiremock-p
secondly
raw differences
non-deterministic noise
filtered differences

试验命令 cheatsheet

启动 primary 服务

java -jar diffy-mock-0.0.1-SNAPSHOT.jar –server.port=9990

启动 secondly 服务

java -jar diffy-mock-0.0.1-SNAPSHOT.jar –server.port=9991

启动 candidate 服务

java -jar diffy-mock-0.0.1-SNAPSHOT.jar –server.port=9992

启动 wiremock

jave -jar .\wiremock-standalone-2.27.2.jar

浏览器打开 http://localhost:8080/__admin/recorder/

配置 record http://localhost:9990

自动化脚本配置 http_proxy=http://localhost:8080, 或者将服务器 hostip 改成 localhost:8080 也行,是的请求的流量能到 wiremock,并录制

请求完成后,点击 stop,此时已经切换成回放模式。查看 wiremock-standalone-2.27.2.jar 目录能发现 mapping 目录,里面就是记录请求和返回的 json。

启动 diffy

1
2
3
4
5
6
7
8
9
10
11
java -jar diffy-server.jar^
-candidate=localhost:9992^
-master.primary=localhost:8080^
-master.secondary=localhost:9991^
-service.protocol=http^
-serviceName=Mock-Service^
-proxy.port=:8880^
-admin.port=:8881^
-http.port=:8888^
-rootUrl=localhost:8888^
-excludeHttpHeadersComparison=true^

家庭的路由器是刷的是 openwrt,电视盒子刷的 armbian,有时候想知道断网了没,内网的网络状态怎么样。这时候需要内网穿透,frp 和 zerotier 都是使用目标,写个小东西做 frpc 的更新,上报一下在线状态。因为同时管理父母家里、老丈人家里、家乡等多个网络。因为之前做过一个命令推送的小项目,复用一下,用 Golang 先实现客户端,服务器端用 Java 的 Netty 框架,用 protobuf 协议。

阅读全文 »