
过去我们主要用大模型+智能体生成代码、生成测试用例或脚本,虽然我之前写文章:
强调企业或团队要从需求开始,全程应用LLM。这也符合今天我们提倡的“上下文工程”,要尽可能将足够的上下文信息提供给大模型,使之生成的代码更符合我们的业务需求,显著提升代码的采纳率。
过去一年,我们开始在“AI+需求”上投入了,例如,在AiDD峰会上,就有“AI+需求”的专场,备受大家欢迎,但是大家在“AI+架构设计”上投入还是非常少,很少有专家来AiDD峰会分享,只是个别大学学者在用大模型做逆向工程,来还原遗留代码的设计。
这篇文章就是借助Claude 4.5+ Nano banana pro来还原遗留代码的设计,选了Apache JMeter这个开源性能工具软件,规模不算小(约数十万行),可以作为展示今天大模型在架构分析与设计的能力(由于时间关系,没有深入代码细节设计,但已经能感受到其力量)。
下面就是Claude Sonnet 4.5分析JMeter设计的结果,中间插入多张Claude 4.5+ Nano banana pro生成的设计图(震撼、惊艳之处,也是写本文的初衷。BTW,设计分析的部分文字用插图来替换了)。

(本文所有插图,包括最后一张海报,都由Claude 4.5+ Nano banana pro一次性生成,未做修改,只是缩小了图形尺寸,以便手机阅读时加载快一些,原图都是高分辨率,6M大小)
Apache JMeter是一个100%纯Java应用程序,采用开源架构设计,专注于:
JMeter采用分层架构设计:

JMeter使用HashTree/ListedHashTree作为核心数据结构来组织测试计划。
HashTree: 基础树形数据结构,每个元素既是节点也是下一层节点的键
ListedHashTree: 保证元素顺序的HashTree实现,确保测试元素按预期顺序执行

所有测试元素都实现TestElement接口,形成统一的组件模型:

JMeter定义了严格的元素执行顺序:
0. Configuration Elements (配置元素)
1. Pre-Processors (前置处理器)
2. Timers (定时器)
3. Sampler (采样器)
4. Post-Processors (后置处理器,仅当SampleResult非空)
5. Assertions (断言,仅当SampleResult非空)
6. Listeners (监听器,仅当SampleResult非空)
这种设计保证了测试流程的可预测性和一致性。

StandardJMeterEngine是JMeter的核心执行引擎:
职责:
运行模式:
JMeter采用完整的多线程框架:
特性:

采样器是JMeter向服务器发送请求的核心组件:
内置采样器类型:

(生成的采样器组件类图)
扩展性设计:
Sampler接口即可创建自定义采样器作用域规则:
监听器采用观察者模式收集和展示测试结果



JMeter采用高度可扩展的核心架构
插件开发机制:
AbstractSampler)Sampler, Controller, Listener)saveservice.properties注册组件变量作用域:
${variable_name}引用函数系统:
${__property()}, ${__threadNum()}, ${__time()}等属性系统:
jmeter.properties定义jmeter -Jproperty=value

JMeter支持分布式负载测试
通信机制:

org.apache.jorphan.collections: HashTree实现[ref:60]
org.apache.jmeter.save: 测试计划序列化/反序列化
org.apache.jmeter.util: 工具类库
org.apache.jmeter.reporters: 结果报告组件

采用代理模式实现请求录制:
核心功能:
JMeter 5.x引入动态HTML报告功能:
技术栈:
JMeter 5.6引入Kotlin/Java DSL用于编程式构建测试计划:
优势:

连接池:HTTP连接复用(Keep-Alive)
Cookie管理:自动化Cookie处理
缓存:离线结果分析和重放

JMeter架构中应用的主要设计模式:
Composite Pattern (组合模式): TreeElement树形结构
Strategy Pattern (策略模式): TestElement接口体系
Observer Pattern (观察者模式): Listener监听机制
Template Method (模板方法): Sampler抽象类
Proxy Pattern (代理模式): HTTP(S) Test Script Recorder
Factory Pattern (工厂模式): 组件创建和注册
Chain of Responsibility (责任链): 元素执行顺序
Singleton Pattern (单例): JMeterEngine实例

高度模块化:清晰的接口定义和职责分离
强扩展性:插件机制支持无限扩展
协议无关:抽象层支持多种协议
分布式能力:原生支持分布式负载测试
跨平台:纯Java实现,平台无关
可编程性:支持脚本和DSL编程
灵活配置:层次化配置和变量系统
结果可视化:丰富的监听器和报告生成

Apache JMeter是一个架构设计优秀的性能测试框架,其核心特点包括:
树形组件模型:
StandardJMeterEngine:作为核心引擎,支持本地和分布式执行
多线程框架:提供强大的并发测试能力
高度可扩展的插件架构:支持自定义组件开发
清晰的执行顺序和作用域规则:保证测试行为可预测
丰富的协议支持和结果可视化能力
通过分层架构、设计模式的合理应用、以及对扩展性的深入考虑,JMeter成功实现了一个功能强大、易于扩展、适用于各种性能测试场景的测试工具框架。
