- 添加 expiresAt 和 refreshUserSig 参数支持自动续签 - 修改 PushSDK 初始化方式,自动完成设备注册和厂商初始化 - 调整过期续签策略,从提前 15 分钟改为提前 5 分钟触发 - 重构 RN SDK 文档结构,简化安装和使用方式 - 更新统一登录流程,支持 profile 信息传递 - 添加 IM 数据库自动隔离功能 - 修复 Android 群消息聚合问题 - 补充自动化测试验证和错误处理机制
7.8 KiB
7.8 KiB
Android SDK 测试报告
生成时间: 2026-05-01
版本: 0.4.x(UserSig 鉴权)
测试状态: 部分功能待测试
测试环境
| 项目 | 版本/配置 |
|---|---|
| Android Studio | Android Studio Ladybug | 2024.2.1 |
| Android Gradle Plugin | 8.7.0 |
| Gradle | 8.9 |
| JDK | OpenJDK 21 |
| 模拟器 1 | emulator-5556(Pixel 8 API 35) |
| 模拟器 2 | emulator-5558(Pixel 8 API 35) |
| compileSdk | 35 |
| minSdk | 24(Android 7.0) |
| Kotlin | 2.0.21 |
测试用例清单
TC-01 SDK 初始化测试
| 字段 | 内容 |
|---|---|
| 测试目的 | 验证 SDK 初始化流程及模块依赖注入 |
| 测试步骤 | 1. 在 Application.onCreate() 中调用 XuqmSDK.initialize(context, appKey, logLevel) 2. 确认 XuqmSDK.config、tokenStore 已赋值 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_a(emulator-5556)发送文本消息给 user_b 2. user_b(emulator-5558)通过 ImEventListener.onMessage() 接收实时推送 3. user_b 调用 fetchHistory("user_a") 查询历史 4. user_b 进入会话调用 markRead("user_a") 5. user_a 查询历史,确认消息状态变为 READ |
| 预期结果 | 1. sendTextMessage 返回 ImMessage(status=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 检测测试 | ⬜ 待测试 |