系统是否可以上线,不能只看“正常流程打印成功”。验收必须覆盖支付重复回调、网络中断、进程崩溃、缺纸、卡纸和多打印机并发等最容易造成资金或重复出纸的场景。
一、自动化测试分层
| 层级 | 必测内容 | 通过标准 |
|---|---|---|
| 单元测试 | 计价、限制、状态转换、权限、哈希、签名 | 关键分支和错误输入有确定结果 |
| API 集成 | 登录、上传、报价、订单、支付回调、代理领取 | 数据库约束、幂等和事务符合设计 |
| 代理测试 | 下载校验、队列映射、每机锁、租约、回执、重启 | 重复投递不造成重复物理提交 |
| 端到端 | 真机扫码、移动网络上传、支付、真实打印、结果反馈 | 全链路可由 trace ID 查询 |
| 故障注入 | 断网、API 5xx、消息重复、进程崩溃、磁盘满 | 安全恢复、不重印、异常可告警 |
| 安全测试 | 越权、重放、恶意文件、密钥、签名 URL | 无高危问题,修复后复测通过 |
二、真机验收矩阵
正常打印
- P01:1 页黑白 PDF、单份,目标机器只输出 1 张。
- P02:多页彩色 PDF、多份,页数、份数、色彩和顺序正确。
- P03:JPG 和 PNG 的方向、缩放和边距正确。
- P04:文件和页数恰好等于上限时通过,超过上限时明确拒绝。
- P05:同门店两台打印机同时工作,各自串行、互不阻塞、不串机。
幂等与支付
- P06:创建订单请求重复 5 次,只返回一个订单。
- P07:支付回调重复 5 次,只生成一个打印任务。
- P08:小程序支付成功页面关闭,重新进入后能恢复订单。
- P09:支付金额被篡改,服务端拒绝。
- P10:退款请求重复,只有一个有效退款单。
故障与恢复
- P11:领取后下载中断,可以重试下载,不触发物理提交。
- P12:打印命令提交后立即终止代理,重启进入人工确认,不自动重打。
- P13:缺纸后补纸,状态和用户提示正确。
- P14:卡纸并输出部分页面,系统不自动重打整单。
- P15:门店网络中断,设备停止接受新支付;恢复后回执同步。
- P16:Windows 重启,服务自动启动且无重复任务。
- P17:队列名被修改,代理告警并停止领取。
- P18:磁盘空间不足,代理停止领取并上报告警。
安全与路由
- P19:扫描 A 机二维码后篡改为 B 机 ID,服务端拒绝或按有效场景重新解析。
- P20:过期租约和旧尝试号不能提交或完成任务。
- P21:其他用户不能读取订单和文件。
- P22:过期下载 URL 无法访问。
- P23:扩展名伪装、损坏 PDF 和超大图片被拒绝。
- P24:代理凭证吊销后无法心跳或领取任务。
三、当前测试基线
当前单机原型已经完成 20 项 API 自动测试和 18 项代理自动测试,共 38/38 通过,并完成两次受控 Windows 队列级打印提交。随后用户在手机外网环境操作后反馈可以正常使用,系统记录也进入完成状态;但没有归档样张或设备传感器证据,因此不把这次反馈升级为独立物理出纸验收。
这些证据证明端到端链路可行。真实微信支付、长期稳定性、多设备并发和全部故障注入仍需在生产化阶段补齐。
四、实施路线图
| 阶段 | 建议周期 | 主要交付 | 退出条件 |
|---|---|---|---|
| 0. 基线固化 | 1 周 | 代码版本、配置、验收证据、密钥轮换 | 可以重复部署并完成单机真测 |
| 1. 云端底座 | 2—4 周 | 固定域名、HTTPS、PostgreSQL、对象存储、CI/CD、监控 | 预发稳定,备份恢复通过 |
| 2. 真实支付 | 2—3 周 | 下单、回调、查单、退款、对账 | 小额真实支付闭环 |
| 3. 多设备改造 | 3—5 周 | 注册、映射、每机锁、心跳、资产后台 | 两台并行和重启故障测试通过 |
| 4. 运营与安全 | 2—4 周 | RBAC、审计、告警、工单、隐私和上传安全 | 安全验收和门店演练通过 |
| 5. 试点运营 | 2—4 周 | 3—5 台真实营业和售后闭环 | 连续稳定期达到放量门槛 |
| 6. 扩容 | 持续 | 自动升级、容量治理、财务和供应链 | 按季度稳定性与成本复评 |
周期会受支付资质、云资源、后台范围、设备型号和门店协调影响,只适合作为排期起点。
五、最小团队
- 后端/架构 1—2 人:订单、支付、调度、数据库和云基础设施。
- 小程序 1 人:扫码、上传、支付、订单状态和异常体验。
- Windows/设备 1 人:代理、驱动、打印参数、安装包和兼容性。
- 测试 1 人:端到端、支付、故障注入、设备矩阵和回归。
- 运营/门店支持 1 人:资产、耗材、工单、退款和现场 SOP。
小团队可以一人兼任多个角色,但职责和验收不能省略。
六、放量闸门
从 1 台到 3—5 台
- 固定域名和真实支付完成
- PostgreSQL 和对象存储上线
- 每机独立映射和锁通过
- 断网、重启和支付重复回调通过
- 门店有日常维护 SOP
从 5 台到 10—50 台
- 连续两周没有确认重复打印
- 告警和人工确认可在承诺时间内处理
- 新增设备无需改代码
- 代理可以灰度升级和回滚
- 每日支付对账没有未解释差异
从 50 台到 300 台
- 分区调度和容量自动扩展
- 统一设备、备件和供应商管理
- 财务、客服和技术工单闭环
- 灾备恢复演练通过
- 稳定性、退款率和单位经济模型达标
七、容量估算
打印吞吐主要受物理设备影响。设:
- 每单平均打印面数为
S - 混合实测速度为
V面/分钟 - 每次换单和驱动开销为
T分钟
单机理论订单吞吐约为:
60 / (S / V + T) 单/小时
实际规划再乘以 0.6—0.75 的运营系数,为补纸、清洁、网络、复杂文档和故障留余量。参数必须用目标机型、目标纸张和真实文件样本测量。
八、总成本模型
单台月度总成本:
设备折旧
+ 场地租金或门店分成
+ 纸张
+ 墨水、硒鼓或维护箱
+ 门店电脑和网络
+ 云资源分摊
+ 支付手续费
+ 运维人工
+ 售后退款与补偿
+ 备件和设备损耗
定价不能只看纸张和墨水。彩色高覆盖页面、低客单支付手续费、设备停机和人工确认都会改变真实利润。
九、长期经营指标
| 指标 | 定义 | 作用 |
|---|---|---|
| 支付转化率 | 支付成功订单 / 有效报价 | 判断价格和支付体验 |
| 打印成功率 | 无需人工完成 / 已支付任务 | 衡量核心服务质量 |
| 人工确认率 | 人工确认 / 已提交任务 | 衡量物理不确定性 |
| 重复打印率 | 确认重复 / 已支付任务 | 可靠性红线 |
| 退款率 | 退款订单 / 已支付订单 | 综合体验和成本信号 |
| 单机利用率 | 实际打印时间 / 营业时间 | 选址和设备配置依据 |
| 单面贡献毛利 | 收入减直接变动成本 | 定价和扩张依据 |
| 平均恢复时间 | 故障到恢复的平均时长 | 运维效率和 SLA |
十、最终上线检查
- 固定域名和微信合法域名真机通过
- 生产密钥已轮换并进入密钥管理
- PostgreSQL 备份恢复演练通过
- 对象存储私有和生命周期有效
- 支付、退款和对账全部闭环
- 多打印机任务不会串机或互相阻塞
- 提交后崩溃不会自动重打
- 门店缺纸、卡纸、断网和重启演练通过
- 监控告警可以触达负责人
- 隐私指引、用户协议和必要备案完成
- 每台二维码、平台设备和实体打印机一致
- 上一版本可回滚,事故联系人明确
只有资金正确、不重复打印、故障可恢复、隐私和运维体系完整时,系统才适合公开无人值守运营。