# 完整功能测试指南

## 🎯 测试目标

验证应用的完整功能，包括：
- ✅ 蓝牙权限申请
- ✅ 蓝牙设备扫描和连接
- ✅ 实时数据接收和处理
- ✅ ECG曲线图显示
- ✅ 信号处理和指标计算

## 📱 测试环境准备

### 1. 设备要求
- **Android设备**：Android 6.0+（推荐Android 12+）
- **蓝牙功能**：支持BLE或传统蓝牙
- **位置权限**：需要位置权限用于蓝牙扫描

### 2. 心电设备
- **真实设备**：支持BLE或传统蓝牙的心电设备
- **模拟设备**：可以使用蓝牙调试工具模拟数据

### 3. 开发环境
- **Android Studio**：最新版本
- **ADB工具**：用于日志查看和调试

## 🚀 测试步骤

### 第一步：应用安装和启动

1. **编译应用**
   ```bash
   ./gradlew assembleDebug
   ```

2. **安装到设备**
   ```bash
   adb install app/build/outputs/apk/debug/app-debug.apk
   ```

3. **启动应用**
   - 在设备上找到并启动应用
   - 观察启动界面和权限状态显示

### 第二步：权限申请测试

1. **查看权限状态**
   ```
   权限状态:
   BLUETOOTH_SCAN: ✗
   BLUETOOTH_CONNECT: ✗
   ACCESS_FINE_LOCATION: ✗
   ACCESS_COARSE_LOCATION: ✗
   ```

2. **点击"连接蓝牙"按钮**
   - 系统应弹出权限申请对话框
   - 选择"允许"授予所有权限

3. **验证权限状态**
   ```
   权限状态:
   BLUETOOTH_SCAN: ✓
   BLUETOOTH_CONNECT: ✓
   ACCESS_FINE_LOCATION: ✓
   ACCESS_COARSE_LOCATION: ✓
   ```

### 第三步：蓝牙扫描测试

1. **开始扫描**
   - 点击"连接蓝牙"按钮
   - 按钮文字应变为"扫描中..."
   - 按钮颜色应变为橙色

2. **观察扫描过程**
   ```
   蓝牙状态: 正在扫描蓝牙设备...
   发现设备: ECG_Device_001 (00:11:22:33:44:55)
   扫描完成，找到 1 个设备
   ```

3. **设备选择对话框**
   - 扫描完成后应弹出设备选择对话框
   - 显示发现的设备列表

### 第四步：设备连接测试

1. **选择设备**
   - 在设备列表中选择目标设备
   - 点击设备名称进行连接

2. **连接过程**
   ```
   正在连接设备: ECG_Device_001
   设备已连接
   服务发现成功
   数据通道已建立
   ```

3. **连接状态验证**
   - 按钮文字应变为"断开蓝牙"
   - 按钮颜色应变为红色

### 第五步：数据接收测试

1. **启动数据采集**
   - 点击"启动程序"按钮
   - 观察ECG曲线图开始显示数据

2. **数据接收验证**
   ```
   接收到蓝牙数据: 128 字节
   接收到蓝牙数据: 256 字节
   接收到蓝牙数据: 512 字节
   ```

3. **实时显示验证**
   - ECG节律视图（10秒）应显示实时曲线
   - ECG波形视图（2.5秒）应显示详细波形
   - 曲线应平滑滚动，无卡顿

### 第六步：信号处理测试

1. **滤波功能**
   - 点击"陷波滤波"按钮切换滤波状态
   - 观察曲线图的变化

2. **指标计算**
   - 查看状态信息中的心率等指标
   - 验证指标计算的准确性

3. **性能测试**
   - 观察应用的响应速度
   - 检查内存使用情况

## 🔍 调试技巧

### 1. 日志查看
```bash
# 查看蓝牙相关日志
adb logcat | grep BluetoothManager

# 查看权限相关日志
adb logcat | grep MainActivity

# 查看数据处理日志
adb logcat | grep DataManager

# 查看信号处理日志
adb logcat | grep StreamingSignalProcessor
```

### 2. 常见日志模式
```
BluetoothManager: 蓝牙初始化成功
BluetoothManager: BLE扫描已开始
BluetoothManager: 发现BLE设备: ECG_Device_001
BluetoothManager: 设备已连接
BluetoothManager: 接收到数据: 128 字节
```

### 3. 错误诊断
```bash
# 查看错误日志
adb logcat | grep -i error

# 查看警告日志
adb logcat | grep -i warning
```

## ⚠️ 常见问题排查

### 1. 权限问题
**症状**：点击按钮无反应
**排查**：
```bash
# 检查权限状态
adb shell dumpsys package com.example.cmake_project_test | grep permission
```

**解决**：
- 进入系统设置手动授予权限
- 重启应用

### 2. 蓝牙扫描问题
**症状**：扫描无结果
**排查**：
```bash
# 检查蓝牙状态
adb shell dumpsys bluetooth
```

**解决**：
- 确认设备蓝牙已开启
- 确认设备处于可发现状态
- 检查设备距离

### 3. 连接问题
**症状**：连接失败
**排查**：
```bash
# 查看连接日志
adb logcat | grep -i "connection\|connect"
```

**解决**：
- 确认设备未被其他应用占用
- 检查设备电池电量
- 重启设备和应用

### 4. 数据显示问题
**症状**：曲线图无数据
**排查**：
```bash
# 查看数据处理日志
adb logcat | grep -i "data\|process"
```

**解决**：
- 检查数据格式是否正确
- 确认数据处理管道正常工作
- 检查UI更新逻辑

## 📊 性能指标

### 1. 响应时间
- **权限申请**：< 1秒
- **蓝牙扫描**：< 10秒
- **设备连接**：< 5秒
- **数据接收**：实时

### 2. 内存使用
- **应用启动**：< 100MB
- **数据采集**：< 200MB
- **长时间运行**：< 300MB

### 3. 电池消耗
- **待机状态**：< 5%/小时
- **数据采集**：< 15%/小时

## 🎉 测试完成标准

### 功能完整性
- ✅ 权限申请正常工作
- ✅ 蓝牙扫描发现设备
- ✅ 设备连接成功
- ✅ 数据接收正常
- ✅ 实时显示流畅
- ✅ 信号处理有效
- ✅ 指标计算准确

### 用户体验
- ✅ 界面响应及时
- ✅ 状态提示清晰
- ✅ 错误处理友好
- ✅ 操作流程顺畅

### 稳定性
- ✅ 长时间运行稳定
- ✅ 内存使用合理
- ✅ 电池消耗正常
- ✅ 无崩溃或卡死

## 📝 测试报告模板

```
测试日期：YYYY-MM-DD
测试设备：设备型号 + Android版本
测试人员：姓名

功能测试结果：
□ 权限申请：通过/失败
□ 蓝牙扫描：通过/失败
□ 设备连接：通过/失败
□ 数据接收：通过/失败
□ 实时显示：通过/失败
□ 信号处理：通过/失败
□ 指标计算：通过/失败

性能测试结果：
□ 响应时间：正常/异常
□ 内存使用：正常/异常
□ 电池消耗：正常/异常

问题记录：
1. 问题描述
2. 复现步骤
3. 解决方案

总体评价：
□ 优秀 □ 良好 □ 一般 □ 需要改进
```

现在你的应用已经具备了完整的功能，可以进行全面的测试了！🎉
