测试是一门艺术:04

一、问题描述

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

二、追根溯源:

     代码中,是这么实现的:

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

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

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



改造后的程序:


三、启发

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 文 萱萱 如果决定离开一个人,就不要拖拖拉拉,因为当你消耗至尽一段感情的时候,最后你们连美好的回忆都无法...
    萱萱萱i阅读 339评论 0 0
  • 简介 InfluxdbInfluxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。它...
    chenbingle阅读 11,239评论 0 6