测试字段逻辑的一件小事儿

昨晚收到反馈说,某个jira里的几个字段时间判断逻辑似乎不一致,额...从测试的角度来说,这基本是不可能发生的事儿,于是跟对方约定第二天到公司去看。

第二天发现了以下情况:

1对方提供的需求的jira单子是比较早的单子,后面变更了好几版,搜代码的时候发现我测试的那批字段逻辑早就已经不存在了。一般情况下,同一批做的字段,也不太可能用2套方法去执行同一套逻辑,那只有可能是这批字段里的某些字段在后来的需求里面发生了逻辑改变。(搞清楚方向以后,继续查)

2.发现字段在后期有引入了模型,模型有一套自己的字段处理的方法(用了不同的函数)。简单梳理了一下,大致如下:

模型:在 dataframe 里操作 inserttime + 90d < now
而原来的代码逻辑:datetime处理过的 (now- inserttime).days > 90d

(以上不是代码,就是想表达一下处理不一致,导致临界值出现了偏差)

3.本来故事到这里应该结束了,产品自告奋勇跑去提了个需求说怎么改,但开发拿到需求以后炸了,他觉得自己没错,一直问为啥要改。于是他们又找到了我,我猜想开发可能以为产品觉得他们的逻辑写错了,而没意识到是逻辑不一致的问题,所以贴出了2段代码请开发解释有啥不同,开发解释完之后,我对他说,那现在的问题出来了,就是这2段代码逻辑不一致,导致了误差,影响了业务员分析。开发知道后也就爽快的改掉了。

这个事情告诉我们:

1.测试人员在遇到问题后,首先不要慌,不要着急去排斥问题,积极和反馈方沟通拿到第一手资料去排查问题,假如真的是你的问题,也能更好的得到反馈方的谅解,因为ta觉得你有在积极解决问题(当然这里这个问题并不是我的锅)。

2.和开发沟通的过程中,尽量用询问的语气,让他们来回答。让开发意识到矛盾点所在。而不是直接告诉开发要改什么。(可能会引起一些误会)

3.产品写文档时,能用符号的就尽量不要用文字描述,这次这个问题的出现就是因为模型人员错误理解了文字描述,导致边界值做的和原来不一致导致的。

4.再次印证了临界值是一个很容易出问题的地方。

 

 

### MySQL `IS NULL` 用法详解 #### 基本概念 在 MySQL 中,`IS NULL` 是一种用于判断某个字段值是否为 `NULL` 的条件表达式。它通常被用来筛选数据表中的记录,这些记录的特定字段可能未赋值或者为空。 当执行查询时,如果某字段的值确实为 `NULL`,则该条件返回真;反之,若字段有实际值(即使是空字符串或零),则返回假[^1]。 #### 使用场景与语法结构 以下是标准 SQL 查询语句中如何应用 `IS NULL`: ```sql SELECT column_name(s) FROM table_name WHERE column_name IS NULL; ``` 这段代码的作用是从指定的数据表里提取那些目标列含有缺失值的所有行。 #### 结合 JOIN 操作的例子 考虑这样一个情况:我们有两个类别表格——一个是父类别的集合 (`category`) ,另一个则是子类目的列表 (同样命名为 `category`, 只不过通过别名区分) 。为了找出哪些顶级分类没有任何下属子项,可以采用左连接方式来实现这一需求: ```sql SELECT t1.name FROM category AS t1 LEFT JOIN category AS t2 ON t1.category_id = t2.parent WHERE t2.category_id IS NULL; ``` 这里的关键在于理解为什么能够把过滤条件设置成 `t2.category_id IS NULL`. 当发生外键关联失败的时候,即找不到对应关系的情况下,默认会填充上一系列特殊的标记 —— 即所谓的 “null values”。所以最终得到的就是那些不存在映射关系的原始条目名单[^2]. 至于能否简单地交换测试对象至另一属性比如 `parent` 字段上来达成一致效果呢? 实际操作表明只要这两个项目都参与到了先前定义好的联结准则之中,并且其逻辑含义相符的话确实是可行的。也就是说,在上述例子当中假如说 `t2.parent` 同样会在无匹配情形下表现为 null state 那么改写后的版本也会给出同样的答案集。 #### 示例解释 假设存在如下两个简单的表单: - 表格A: id | name - 1 Alice - 2 Bob - 表格B: friend_of_Alice_or_Bob | hobby - 1 Reading books - Null Playing games 如果我们想看看谁喜欢玩游戏却不知道他是谁的朋友可以用下面这条命令来做这件事儿啦! ```sql SELECT * FROM A a LEFT JOIN B b ON a.id=b.friend_of_Alice_or_Bob WHERE b.hobby='Playing games' AND b.friend_of_Alice_or_Bob IS NULL ; ``` 这将会告诉我们虽然有人爱好打游戏但我们并不清楚这个人到底是不是Alice或者是Bob的好友哦~ ### 总结 综上所述,MySQL里的`IS NULL`是一个非常有用的工具帮助开发者处理数据库内的空白区域问题。无论是单独运用还是配合复杂的多表联合检索都能发挥重要作用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值