测试是一门艺术:04

一、问题描述

      调度中有一个启动调度的开关,打开后,工作流会按照设定的定时时间,定时调度。但是线上偶发性开关打开了,工作流没有被掉起,或者是开关关闭了,定时任务在后台持续进行。

二、追根溯源:

     代码中,是这么实现的:

(1)点击定时开关后,会先将数据库中的状态修改;

(2)再清除/插入数据入crontab表。

       因此当第2步因为网络或者是其他原因失败时,虽然捕获了异常,并设置了flag = false,但是对该函数的返回值flag并没有进行判断,导致界面上虽然关闭了,但是实际上定时任务并没有被清除。



改造后的程序:


三、启发

       这种很掩蔽的问题如何去发现呢,这要求我们测试了解开发的实现逻辑,并对于这种应该具有原子性的操作进行白盒测试。

你可能感兴趣的:(测试是一门艺术:04)