4. 食品MES单元测试设计与执行

单元测试是食品MES上线测试中最先落地、也最容易被低估的一环。它不验证整条产线是否跑通,而是把系统拆成一个个可以独立观察的“最小业务单元”,用可控的输入去撞击明确的判断条件,确认每个模块在正常、边界和异常三类情形下的输出都符合预期。对食品工厂而言,工单管理、物料称量、工序报工、质量检验这四个模块几乎覆盖了从计划到放行的主干数据流,因此它们应当成为单元测试用例设计的重点对象。

需要先明确一个前提:单元测试的对象是“模块行为”,不是“界面是否好看”。例如物料称量模块,测试关注的是给定配方理论用量、称量精度和允差后,系统是否正确判定“合格/超差/需复核”,而不是称量界面的按钮位置。测试用例必须包含三要素——输入数据、执行动作、预期结果,三者缺一不可,否则用例无法判定通过与否。

等价类与边界值:两类方法如何配合

等价类划分的思路是把无穷多的输入压缩成若干“行为相同”的集合,每个集合取一个代表值即可。以物料称量允差为例,若某辅料理论用量为 2.000 kg,工艺规定允差为 ±1.5%,则合格区间为 1.970~2.030 kg。据此可划分出三个等价类:合格类(区间内)、超差类(区间外但仍在可复核范围)、严重超差类(超出复核上限)。每个等价类取一个代表值,就能用少量用例覆盖大部分逻辑分支。

边界值分析则专门盯住“临界点”。大量缺陷恰恰发生在区间的端点附近,因为判断条件常写成 >= 与 >、<= 与 < 的细微差别。对上例,边界值应取 1.969、1.970、2.030、2.031 四个点,分别验证“刚好不合格”“刚好合格”“刚好合格”“刚好不合格”。等价类负责“面”,边界值负责“线”,两者结合才能既控制用例数量又不漏关键分支。

物料称量允差判定区间与边界值取点(示例:理论用量 2.000 kg,允差 ±1.5%) 合格类 1.970 ~ 2.030 kg 超差可复核 1.940~1.970 超差可复核 2.030~2.060 严重超差 严重超差 1.970 合格(下边界) 2.030 合格(上边界) 1.969 超差(临界外) 2.031 超差(临界外) 判定逻辑:合格 → 直接放行并记录实际值;超差可复核 → 触发复核任务,需班组长确认;严重超差 → 锁定工单,禁止报工。 测试关注点:四个边界点的判定结果必须与工艺规则完全一致,任一错判即为缺陷。

四个核心模块的用例设计要点

工单管理的核心是状态流转与数量约束。一个工单通常经历“已下达→已开工→生产中→已完工→已关闭”的状态链,测试要验证非法跳转是否被拦截,例如未开工直接报工、已关闭工单再次领料。数量方面,计划产量 5000 袋、允许超产 2%,则完工数量 5100 袋应通过、5101 袋应被拒绝,这正是边界值方法的用武之地。此外还要测试工单与配方版本的绑定:若工单下达后配方被修订,已下达工单应继续使用原版本,避免生产中途“换配方”。

物料称量模块除允差判定外,还需覆盖累计称量、批次追溯和去皮逻辑。例如同一原料分三次称量,系统应累计到 2.000 kg 再判定,而不是每次单独判定;若中途更换批次,追溯记录必须能区分两次批号。测试用例应包含“单次称量”“分次累计”“换批称量”三种场景,并核对每次称量后系统记录的批号、操作人、时间戳是否完整。

工序报工关注投入产出与工时。以杀菌工序为例,投入 1200 袋、报损 8 袋、合格 1190 袋、不合格 2 袋,系统应校验“投入 = 合格 + 不合格 + 报损”,即 1200 = 1190 + 2 + 8。若报工数据不满足该恒等式,应提示并阻止提交。测试时故意输入 1200 = 1190 + 2 + 7,验证系统是否拦截,这是典型的等价类“无效类”用例。

质量检验模块的单元测试重点是检验项判定与放行联动。以水分检验为例,标准为 ≤ 14.0%,则 13.9% 合格、14.0% 合格、14.1% 不合格,三个点即可覆盖边界。更关键的是联动:检验未完成时,成品放行按钮应不可用;检验不合格时,系统应自动生成隔离任务而非仅弹提示。这类“状态联动”缺陷在单元测试阶段发现,成本远低于上线后由质检员手工发现。

缺陷记录:让每个失败用例可复现

执行用例时一旦实际结果与预期不符,就要立即记录缺陷。缺陷单不必复杂,但必须包含可复现的最小信息:模块、用例编号、输入数据、操作步骤、实际结果、预期结果、严重级别、发现人和发现时间。严重级别建议按业务影响划分——导致数据错误或放行失控的为“严重”,导致流程阻断但可绕行的为“一般”,仅提示文案或界面问题的为“轻微”。

下面是一份可直接套用的缺陷记录示例,字段按食品MES单元测试的实际需要裁剪,不引入无关的管理字段:

字段 示例内容
缺陷编号 DEF-0042
所属模块 物料称量
用例编号 TC-WG-018(上边界值)
输入数据 理论用量 2.000 kg,实际称量 2.030 kg,允差 ±1.5%
操作步骤 录入实际称量值 → 提交称量记录
预期结果 判定为合格,记录实际值并放行
实际结果 判定为超差,触发复核任务
严重级别 严重(边界判断错误,影响放行)
初步定位 判定条件写为 > 而非 >=,上边界被排除
边界值用例的缺陷往往集中在“等于”这一侧。执行时建议把每个区间的两个端点单独列为一条用例,而不是合并成“区间内取一点”,否则像上例这种 > 与 >= 的错写很难暴露。

执行顺序与通过标准

单元测试执行应遵循“先主流程、后异常流、再边界”的顺序:先确认正常路径能跑通,避免在基础功能未就绪时大量边界用例产生噪声;再执行异常与边界用例,集中暴露判定逻辑缺陷。每个模块的通过标准应事先约定,例如“严重级缺陷为 0、一般级缺陷修复率 100%、用例执行率 100%”,达到标准才允许进入集成测试阶段。对于食品MES这类直接关系食品安全放行的系统,边界判定类缺陷不应带病流入下一阶段,这是单元测试必须守住的一条底线。