Skip to content

如何执行全链路自动化流量侦测测试

HaojunRen edited this page May 31, 2024 · 4 revisions

使用者集成框架后,需要通过Postman调用一下去验证是否成功集成,该方式比较繁琐,可以通过“全链路自动化流量侦测测试”方式进行验证

支持网关和服务为侦测入口两种方式,通过自动化测试手段验证全链路蓝绿灰度方式的准确性,由于不能通过大规模模拟调用来冲击生产环境的稳定性,需要通过人工判断来确定结果的准确性

适合事项

适合在生产环境使用

注意事项

服务必须引入discovery-plugin-admin-center-starter依赖

执行步骤

① 修改application.properties配置文件

  • 网关侦测入口或者服务侦测入口任选一种,把testcase.inspect.url替换成相应的网关地址或者服务地址
    • 当选择网关作为侦测入口,testcase.inspect.context.service替换成网关后第一跳的服务名
    • 当选择服务作为侦测入口,testcase.inspect.context.service禁止配置
  • 其它参数可以遵照默认设置,也可以视具体使用场景做改动
# 网关侦测入口地址
testcase.inspect.url=http://localhost:5001/discovery-guide-service-a/inspector/inspect
# 网关侦测入口转发服务
testcase.inspect.context.service=discovery-guide-service-a

# 服务侦测入口地址
# testcase.inspect.url=http://localhost:3001/inspector/inspect

# 测试用例的总数。采样总数越大,准确率越高,但耗费时间越长。缺失则默认为10
# testcase.sample.count=10

# 测试用例结果的过滤,不允许出现空格。缺失则默认为ID,V,即显示服务名和版本号
# 候选项包括
# ID,UID,AID,T,P,H,V,R,E,Z,G,A,TID,SID
# ID=ServiceId,UID=UUID,AID=ApplicationId,T=ServiceType,P=Plugin,H=host:port,V=Version,R=Region,E=Environment,Z=Zone,G=Group,A=Active,TID=TraceId,SID=SpanId
# testcase.result.filter=ID,V

# 测试用例抛错,通过Debug方式定位问题
# testcase.debug.enabled=false

② 修改规则策略文件

在mock-inspector.yaml里,服务列表替换成要侦测的服务列表,header替换成要侦测的参数

service:
  - discovery-guide-service-a
  - discovery-guide-service-b
header:
  xyz: 1

③ 参考侦测部分结果

【侦测场景1】测试全链路侦测...
侦测次数 : 10
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.1] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.0] -> [ID=discovery-guide-service-b][V=1.0]
侦测结果 : [ID=discovery-guide-gateway][V=1.0] -> [ID=discovery-guide-service-a][V=1.1] -> [ID=discovery-guide-service-b][V=1.1]
测试耗时 : 0 秒
【侦测场景1】结束

全链路自动化流量侦测测试,包括全链路自动化流量侦测本地测试全链路自动化流量侦测云上测试两种模式

全链路自动化流量侦测本地测试

执行过程,有两种方式

全链路自动化流量侦测云上测试

云上测试,即把原来本地测试的过程部署到云上Web服务器,执行逻辑和过程不变。具体功能包括

  • 测试用例执行过程中,每一步成功和失败,都提供日志输出,使用者可以实现基于Web界面的测试操作
    • 测试控制台提供两种方式的Rest接口,返回为全局唯一的testcase-id
    • 测试控制台需要通过Logback输入带有testcase-id的日志,参考discovery-automation-console/src/main/resouces下的logback.xml和logback-all.xml
    • 整合日志服务器,采集和输出测试日志到指定的分布式存储上
    • 通过testcase-id获取和显示属于指定Web界面终端的日志
  • 支持Properties和Yaml格式的两种调用接口

① 启动测试控制台

默认把Simulator和Inspector集成在一起,使用者可以视具体场景把它们分开部署

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>discovery-automation-inspector-starter-console</artifactId>
</dependency>

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>discovery-automation-simulator-starter-console</artifactId>
</dependency>

执行过程,有两种方式

② 修改application.properties配置文件

# Spring boot config
spring.application.name=automation-console
server.port=6002

# Console automation thread config for inspector and simulator
# spring.application.thread.core-pool-size=
# spring.application.thread.max-pool-size=
# spring.application.thread.queue-capacity=
# spring.application.thread.keep-alive-seconds=
# spring.application.thread.await-termination-seconds=

# spring.application.logger.mdc.key.shown=true

③ 启动测试

使用者可以自研自动化测试平台界面来代替Swagger界面,下面以Swagger界面为例,介绍如何操作

全链路自动化流量侦测测试,有两种接口

配置文件为Properties格式

访问接口

http://localhost:6002/inspector-test/test-config-properties

传输内容,按照次序,由application.properties、mock-inspector.yaml组成,中间用10个"-"组成换行分隔。例如:

testcase.inspect.url=http://localhost:5001/discovery-guide-service-a/inspector/inspect
testcase.inspect.context.service=discovery-guide-service-a
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
header:
  xyz: 1

配置文件为Yaml格式

访问接口

http://localhost:6002/inspector-test/test-config-yaml

传输内容,按照次序,由application.yaml、mock-inspector.yaml组成,中间用10个"-"组成换行分隔。例如:

testcase:
    inspect:
        url: http://localhost:5001/discovery-guide-service-a/inspector/inspect
        context:
            service: discovery-guide-service-a
----------
service:
  - discovery-guide-service-a
  - discovery-guide-service-b
header:
  xyz: 1

传输内容,自上而下,分别是基本配置属性、侦测规则策略。使用者配置的服务列表和侦测参数,建议和蓝绿灰度发布的参数保持一致




2017-2050 ©Nepxion Studio Apache License

           

Total visits

讲义篇

集成篇

概念篇

实践篇

功能篇

配置篇

扩展篇

测试篇

升级篇

贡献篇

Clone this wiki locally