)
# MatrixStability 开源从零搭建 Android 长稳压测系统Agent-Server 架构 崩溃指纹去重 7 月 17 日我分享了一篇《从零搭建 Android 长稳压测系统》介绍了 Pro 版的商业架构设计思路收到很多私信问能不能学习代码。今天把核心架构抽离成一个**开源学习版 MatrixStability Lite**保留 Agent-Server 分离、指纹去重、可视化看板等核心模块5 分钟本地跑起来适合学习和小团队试用。---## 一、为什么需要自动化长稳压测传统模式的问题1. **人工盯测**多人轮班成本高2. **重复崩溃**同一 bug 触发上百次人工筛选效率低3. **报告滞后**压测结束才整理错过最佳修复窗口---## 二、系统架构Agent-Server 分离[Agent] 设备侧日志采集 → HTTPS → [Server] 云端解析 去重 报告**Agent 职责**- ADB 日志实时采集- ANR / Crash / Tombstone 多模态识别- 定时上报可配置间隔**Server 职责**- FastAPI 高并发网关- Pydantic 数据校验- 崩溃指纹去重- Jinja2 可视化看板---## 三、核心算法崩溃指纹去重 ⭐### 3.1 问题定义同一 bug 可能触发多次堆栈相似但不完全相同# 第 1 次at com.example.MainActivity.onCreate(MainActivity.java:45)# 第 100 次内存地址不同at com.example.MainActivity.onCreate(MainActivity.java:45)### 3.2 简化版算法Litepythondef extract_stack_trace(raw_content: str) - str:# 正则提取堆栈pattern rat\s([a-zA-Z_][\w.])\.([a-zA-Z_][\w$]*)\s*\(([^)])\)matches re.findall(pattern, raw_content)# 取前 3 层作为特征return |.join([f{m[0]}.{m[1]} for m in matches[:3]])def generate_fingerprint(stack_trace: str) - str:return hashlib.md5(stack_trace.encode()).hexdigest()**流程**原始日志 → 提取堆栈 → 取前 3 层 → MD5 哈希 → 查重 → 新崩溃/计数1### 3.3 算法局限与优化方向| 局限 | 优化方向 ||------|---------|| 无法处理相似堆栈 | 参数化归一化忽略内存地址 || 固定取 3 层 | 动态层数根据堆栈深度调整 || 简单 MD5 | 局部敏感哈希SimHash |---## 四、快速开始bash# 1. 克隆git clone https://github.com/PerformanceTool999998/matrix-stability-lite.git# 2. 启动 Servercd server pip install -r requirements.txt uvicorn main:app --reload# 3. 启动 Agentcd agent python agent_lite.py# 4. 查看报告open http://localhost:8000/api/v1/dashboard---## 五、项目结构textmatrix-stability-lite/├── server/ # FastAPI 服务端│ ├── app/│ │ ├── database.py # SQLite SQLAlchemy│ │ ├── models.py # 数据模型│ │ ├── schemas.py # Pydantic 校验│ │ └── routers/│ │ ├── upload.py # 日志上传 指纹去重│ │ └── dashboard.py # 报告看板│ ├── main.py│ ├── templates/│ │ └── dashboard.html # 可视化看板│ └── requirements.txt│├── agent/ # 客户端│ ├── agent_lite.py # 日志采集与上传│ └── requirements.txt│├── docs/│ ├── ARCHITECTURE.md # 架构详解 面试要点│ └── RESUME.md # 简历包装指南│├── docker-compose.yml├── .env.example└── README.md---## 六、实测效果使用 Lite 版模拟数据测试| 指标 | 数据 ||------|------|| 监控设备 | 1 台DEMO_DEVICE_001 || 总崩溃次数 | 334 次 || 独立缺陷 | 3 个 || 去重率 | ~99% |看板页面实时展示- 设备状态- 崩溃类型分布ANR / JAVA_CRASH / TOMBSTONE- 指纹去重统计- 最近崩溃列表---## 七、学习价值| 模块 | 可学习内容 ||------|-----------|| FastAPI | 路由、校验、异步 || SQLAlchemy | ORM、迁移、查询优化 || 指纹去重 | 哈希、特征提取、相似度 || 可视化 | Jinja2、数据聚合、报表设计 |---## 八、扩展方向- [ ] 接入真实 ADB 日志替换模拟数据- [ ] 钉钉 / 企业微信告警推送- [ ] 多设备并发调度设备池 队列- [ ] React ECharts 前端升级- [ ] PostgreSQL 替换 SQLite- [ ] Redis 缓存热点指纹---## 九、关于 Pro 版Lite 版为开源学习版保留核心架构与简化算法采用 MIT 协议可自由学习使用。如需以下企业功能请通过 GitHub Issue 联系- 多租户管理- 高级指纹去重模糊匹配 参数化归一化- 云端部署Render Neon PostgreSQL- RSA 授权验证与 License 管理- 高级报告模板与自动分级---## 十、与 Pro 版的差异| 功能 | Lite开源 | Pro商业 ||------|-------------|------------|| 部署 | 本地 / Docker | 云端 Render || 数据库 | SQLite | PostgreSQL || 去重算法 | 简化 MD5 | 闭源指纹引擎 || 模糊匹配 | ❌ | ✅ || 多租户 | ❌ | ✅ || 授权验证 | ❌ | RSA License || 协议 | MIT | 商业授权 |---## 结语开源地址[https://github.com/PerformanceTool999998/matrix-stability-lite](https://github.com/PerformanceTool999998/matrix-stability-lite)欢迎 Star、Issue、PR一起学习进步---**关于作者** Android 测试工程师专注自动化测试与稳定性测试。**相关阅读**- [《从零搭建 Android 长稳压测系统7x24h 无人值守 云端指纹去重实战》](https://blog.csdn.net/m0_50486420/article/details/162976503)Pro 版架构设计思路