• 脏数据或者场景考虑不全面引发的生产问题


      就是一个简单的查询过滤接口,但是在上生产时却报了错,代码大致如下:

          if(board.getName() == null || board.getName() ==""){
                iterator.remove();
            }
          if(board.getPbiCode() == null || board.getPbiCode() == ""){
                iterator.remove();
            }
    很简洁的逻辑,就是使用迭代器移除不符合要求的对象,开发后测试没有什么问题,但是在联调时却发现,这个报错了。
    其原因就在于迭代器移除了2次,而测试代码告诉我们迭代器时不能移除多次的,这和List,Map,Set对象容器有这个本质的区别

      改成这样就不会报错了:

        if (board.getName() == null || board.getName() == "") {
                iterator.remove();
        } else if (board.getPbiCode() == null || board.getPbiCode() == "") {
                iterator.remove();
            }
    加了一个else,增加了代码的健壮性。

      这个问题原因在于迭代器的不支持对象的二次移除,以及数据库中有脏数据。

      在查看数据库是否与脏数据时,大体是两个表的查询。但是我老是想到子查询,查询出来的是一条记录,感觉写不出来这个sql。但是同事提醒了我,使用join查询,就可以联合两张表,查看是否存在数据缺失的问题了。同事的提醒,让我觉得我自己的mysql书白看了,竟然简单的sql使用都不会。还有一次就是where后面拼接的多个and的情况,我感觉写不出来,但是人家很快就写出口来了。这说明sql是一个很具有实践性的技术,要不断实践才能掌握。

  • 相关阅读:
    测试之美-1
    杯子测试
    性能面试(四)
    性能面试(二)
    性能面试(三)
    性能面试(一)
    解决用户名冲突
    版本冲突
    JQuery Easy UI 简介
    Fork
  • 原文地址:https://www.cnblogs.com/Robin008/p/12904910.html
Copyright © 2020-2023  润新知