一.定义

反推法:通过已知的程序处理方法或发现异常数据,反推各种正常状态与异常状态状态,来发现设计中bug或定位bug引起原因;

我这次要讲的是:通过已知的程序处理方法,反推各种用户可实现操作方法是否都有对应处理以及处理是否合理;

二.实际应用

  **项目中在预扣佣金时候与另外一方接口程序有这样处理方法:新增服务一次预扣失败以后该服务再次提交预扣必须金额与原来一致否则扣款就会失败。设计目的是为保护正常

这时候根据“反推法”思路反推:是否有一种正常操作会产生同一个服务前后两次扣款并预扣金额不一致;

找到一种正常操作为:预扣失败返回后回到财务审核时,财务审核让订单审核不通过(进入预扣佣金是先要求通过财务审核,所以第一次预扣佣金前已经通过财务审核,预扣佣金失败以后服务状态又会回滚为待财务审核状态),服务审核不通过后,新增的人对服务进行修改并修改预扣佣金,在此提交审核,各个审核都通过后又会进入预扣佣金;

这时这种正常操作被程序作为异常进行处理,导致处理失败无法预扣佣金;

这样程序处理方法实际就是一个bug