OnecardDemo 服务器一键稳定性测试设计

日期:2026-08-24
状态:已实现,现场三轮共 300 次复测通过

1. 目标

在“服务器单点功能”页面增加“一键服务器稳定性测试”,由现场人员一次点击自动完成 100 轮服务器连接验证,实时显示进度,并生成包含成功率、耗时和错误明细的本地测试报告。

本功能测试的是 WebService 请求稳定性。当前“连接服务器”的实际含义是调用一次 GetCustomerCount(appId) 并校验 SOAP 返回值,不是建立长期保持的网络连接。

2. 固定测试参数

固定参数不开放页面修改,避免现场误把间隔设置得过短而对服务器造成额外压力。

3. 页面交互

在现有服务器连接状态下方增加“服务器稳定性测试”区域,包含:

状态规则:

  1. 未测试时,按钮显示“开始稳定性测试”。
  2. 测试运行时,按钮显示“停止稳定性测试”,服务器地址、AppID 和其他服务器操作均不可用。
  3. 每轮结束后更新当前轮次、成功数、失败数和本轮耗时。
  4. 用户点击停止时,不强行中断正在执行的 HTTP 请求;等待当前请求返回或超时后停止,并按已完成轮次生成部分报告。
  5. Activity 销毁时请求停止测试,禁止继续更新已销毁页面。
  6. 测试完成或停止后恢复其他控件,不保留服务器连接状态。

如果启动测试前页面处于普通“已连接”状态,启动测试时先清除该本地连接状态,再按页面中的地址和 AppID 快照执行独立的 100 轮测试;测试按钮在普通连接和未连接状态下均可启动。

4. 执行流程

每一轮都使用独立的 OnecardWebServiceClient

  1. 记录本轮开始的毫秒时间。
  2. 使用页面快照中的服务器地址和 AppID 调用 connect()
  3. connect() 内部调用 GetCustomerCount(appId)
  4. 成功时记录用户总数和耗时。
  5. 失败时记录异常类型、错误消息和耗时。
  6. finally 中清除本轮客户端的内存连接状态。
  7. 非最后一轮时等待 1000 毫秒,再执行下一轮。

独立客户端可避免上一轮的内存连接状态影响下一轮,保证每一轮都是完整、相互隔离的连接验证。

5. 统计口径

最终摘要包含:

如果没有成功请求,耗时统计显示“无成功样本”;如果尚未完成任何轮次就停止,成功率显示为 0.00%

6. 报告内容与存储

报告文件名:

server-stability-yyyy-MM-dd-HH-mm-ss-SSS.log

报告保存在应用专属外部文件目录的 server_stability 子目录中,不要求额外存储权限。报告使用 UTF-8 编码,包含:

页面最终结果展示摘要、错误汇总和报告路径;完整逐轮记录保存在报告文件中,避免结果控件承载过多文本。

7. 代码边界

统计、格式化和存储与 Activity 分离,便于通过 JVM 单元测试验证,不依赖真机或真实服务器。

8. 错误处理

9. 验证与验收

自动验证:

真机验收:

  1. 安装修复版 APK,进入“服务器单点功能”。
  2. 使用现场 WebService 地址和 Windows 注册后取得的 AppID。
  3. 点击“一键服务器稳定性测试”。
  4. 确认进度从 1/100 更新至 100/100,单轮失败时测试继续。
  5. 确认最终摘要、成功率、耗时指标、错误汇总和报告路径完整显示。
  6. 通过 ADB 从页面显示的报告路径读取报告,确认 100 条逐轮记录和页面摘要一致。

10. 非目标