XuqmGroup-AndroidSDK/TEST_REPORT.md
XuqmGroup 595a91ae3d feat(sdk): 更新 SDK 设计文档和 API 重构
- 添加 expiresAt 和 refreshUserSig 参数支持自动续签
- 修改 PushSDK 初始化方式,自动完成设备注册和厂商初始化
- 调整过期续签策略,从提前 15 分钟改为提前 5 分钟触发
- 重构 RN SDK 文档结构,简化安装和使用方式
- 更新统一登录流程,支持 profile 信息传递
- 添加 IM 数据库自动隔离功能
- 修复 Android 群消息聚合问题
- 补充自动化测试验证和错误处理机制
2026-05-01 21:27:38 +08:00

7.8 KiB

Android SDK 测试报告

生成时间: 2026-05-01
版本: 0.4.xUserSig 鉴权)
测试状态: 部分功能待测试


测试环境

项目 版本/配置
Android Studio Android Studio Ladybug | 2024.2.1
Android Gradle Plugin 8.7.0
Gradle 8.9
JDK OpenJDK 21
模拟器 1 emulator-5556Pixel 8 API 35
模拟器 2 emulator-5558Pixel 8 API 35
compileSdk 35
minSdk 24Android 7.0
Kotlin 2.0.21

测试用例清单

TC-01 SDK 初始化测试

字段 内容
测试目的 验证 SDK 初始化流程及模块依赖注入
测试步骤 1. 在 Application.onCreate() 中调用 XuqmSDK.initialize(context, appKey, logLevel)
2. 确认 XuqmSDK.configtokenStore 已赋值
3. 确认 ApiClient 已初始化
预期结果 1. 初始化成功,无异常抛出
2. XuqmSDK.requireInit() 不抛异常
3. ServiceEndpointRegistry 默认使用内置生产环境地址
实际结果 通过
通过状态

TC-02 IM 登录/登出测试

字段 内容
测试目的 验证 UserSig 鉴权模式下的登录与登出
测试步骤 1. 调用 XuqmSDK.login(userId, userSig, nickname, avatar, userSigExpiresAt)
2. 观察 ImSDK.onSdkLogin 是否自动触发 WebSocket 连接
3. 监听 ImEventListener.onConnected()
4. 调用 XuqmSDK.logout()
5. 确认 ImSDK.onSdkLogout 断开 WebSocket 并清空 Token
预期结果 1. 登录返回 XuqmLoginSession
2. WebSocket 建立 101 连接并 STOMP CONNECTED
3. onConnected() 回调触发
4. 登出后 connectionState 变为 Disconnected
5. TokenStore 被清空
实际结果 通过
通过状态

TC-03 单聊消息收发测试

字段 内容
测试目的 验证单聊文本消息的发送、接收、历史与已读
测试步骤 1. user_aemulator-5556发送文本消息给 user_b
2. user_bemulator-5558通过 ImEventListener.onMessage() 接收实时推送
3. user_b 调用 fetchHistory("user_a") 查询历史
4. user_b 进入会话调用 markRead("user_a")
5. user_a 查询历史,确认消息状态变为 READ
预期结果 1. sendTextMessage 返回 ImMessagestatus=SENDING 或 SENT
2. user_b 实时收到消息,会话列表未读角标 +1
3. 历史消息正确分页返回
4. markRead 返回 200,未读归零
5. user_a 历史消息中对应消息 status=READ
实际结果 通过
通过状态

TC-04 群聊消息收发测试

字段 内容
测试目的 验证群创建、群消息收发、群历史加载
测试步骤 1. user_a 调用 createGroup("TestGroup", listOf("user_b"))
2. user_a 调用 subscribeGroup(groupId) 并发送群消息
3. user_b 调用 subscribeGroup(groupId) 并接收 onGroupMessage()
4. 双端调用 fetchGroupHistory(groupId)
5. 双端调用 listConversations() 确认群会话出现
预期结果 1. 群创建成功,返回 ImGroup
2. user_a 发送群消息成功
3. user_b 实时收到群消息
4. 群历史消息分页正确
5. 群会话出现在会话列表中
实际结果 通过(群会话聚合 Bug 已修复并复验)
通过状态

TC-05 会话列表/置顶/静音测试

字段 内容
测试目的 验证会话列表查询、置顶、静音、草稿、删除
测试步骤 1. 发送消息后调用 listConversations()
2. 对目标会话调用 setConversationPinned(targetId, "SINGLE", true)
3. 调用 setConversationMuted(targetId, "SINGLE", true)
4. 调用 setDraft(targetId, "SINGLE", "草稿内容")
5. 调用 deleteConversation(targetId, "SINGLE") 后再次查询列表
预期结果 1. 返回包含目标会话的列表,unreadCount 正确
2. isPinned=true
3. isMuted=true
4. 草稿保存成功
5. 目标会话从列表中移除
实际结果 待测试
通过状态

TC-06 Push 设备注册测试

字段 内容
测试目的 验证 Push SDK 设备 Token 注册与绑定 IM 用户
测试步骤 1. 登录后 PushSDK.onSdkLogin 自动触发
2. 观察 PushSDK.initializeVendors() 检测厂商
3. 确认 registerDevice() 调用 Push API
4. 调用 PushSDK.setReceivePush(context, enabled=false)
5. 登出后确认 unregisterDevice() 调用
预期结果 1. 登录后自动初始化 Push
2. 正确检测厂商(如 XIAOMI / HUAWEI / FCM
3. /api/push/register 返回 200
4. /api/push/receive 设置为 false
5. /api/push/unregister 返回 200
实际结果 待测试(模拟器无 Firebase,FCM 会等待回调)
通过状态

TC-07 版本更新检查测试

字段 内容
测试目的 验证 UpdateSDK 检查更新与下载安装流程
测试步骤 1. 调用 UpdateSDK.checkAppUpdate(context)
2. 若 needsUpdate=true,获取 downloadUrl
3. 调用 UpdateSDK.downloadAndInstall(context, downloadUrl)
4. 观察 APK 下载进度与安装意图跳转
预期结果 1. 返回 UpdateInfo,字段完整
2. downloadUrl 不为空
3. APK 下载成功并触发系统安装弹窗
4. FileProvider URI 权限正确,无 FileUriExposedException
实际结果 待测试
通过状态

TC-08 UserSig 续签测试(新增)

字段 内容
测试目的 验证 UserSig 即将过期时的静默续签回调机制
测试步骤 1. 登录时传入 userSigExpiresAt(如当前时间 + 6 分钟)
2. 设置 XuqmSDK.setUserSigRefreshListener { ... }
3. 等待 1 分钟后观察 UserSigRefresher 检查逻辑
4. 在回调中获取新 UserSig 并重新调用 XuqmSDK.login()
5. 验证旧定时器被停止,新定时器启动
预期结果 1. UserSigRefresher.start(expiryTimeMs) 启动
2. 到期前 5 分钟触发 onUserSigRefreshRequired()
3. 回调在主线程执行
4. 重新登录后 WebSocket 使用新 Token 连接
5. 无内存泄漏,定时器正确替换
实际结果 待测试
通过状态

TC-09 多厂商 Push 检测测试(新增)

字段 内容
测试目的 验证 PushSDK.detectVendor() 在多台设备上的厂商识别准确性
测试步骤 1. 在华为/小米/OPPO/vivo/荣耀/其他模拟器或真机上运行
2. 调用 PushSDK.detectVendor()
3. 检查 Build.MANUFACTURER 与返回的 PushVendor 映射
4. 未知厂商回退到 FCM
5. 验证 initializeVendors() 仅初始化匹配厂商服务
预期结果 1. 华为 → HUAWEI
2. 小米 → XIAOMI
3. OPPO → OPPO
4. 未知品牌 → FCM
5. 非匹配厂商服务不被注册,无 ClassNotFoundException
实际结果 待测试
通过状态

测试汇总

用例编号 用例名称 状态
TC-01 SDK 初始化测试 通过
TC-02 IM 登录/登出测试 通过
TC-03 单聊消息收发测试 通过
TC-04 群聊消息收发测试 通过
TC-05 会话列表/置顶/静音测试 待测试
TC-06 Push 设备注册测试 待测试
TC-07 版本更新检查测试 待测试
TC-08 UserSig 续签测试 待测试
TC-09 多厂商 Push 检测测试 待测试