Skip to content

周刊第5期:拖延症

Published:

拖延症

本期周刊延迟了两天,今晚抽空补上,内容会相对比较少。

反思一下,一个原因是这周比较忙,但主要还是因为自己的拖延症,希望以后能够克服这个问题。

分享文章

一些本周阅读过的好文章、以及我的一些总结和个人思考;非常建议你直接阅读原文,毕竟一千个读者就有一千个哈姆雷特,而且我的理解可能是错的。

Exhausting Exhaustive Testing

原文地址:《Exhausting Exhaustive Testing》 | openmymind

非常短的一篇文章,但作者的观点让我醒醐灌顶:编写有效的测试具有挑战性,每个测试用例都需要考虑最大化其价值。

举一个例子,比如我们有这么一个软删除用户的函数:

func deleteUser(id) (bool, error) {
  tag, err := conn.Exec(`
    update users
    set status = 'deleted'
    where id = $1
  `, id)

  return tag.RowsAffected() == 1, err
}

通常我们会如何测试这个函数?是不是这样:

  1. 插入一个新的用户
  2. 调用这个函数
  3. 判断这个新用户是否被删除

这样测试没有错,但是我们忽略了一点:如果这个函数把所有用户都删除了呢?是不是也能通过测试?

所以正确的测试方式是:插入两个用户,删除第一个用户,确保第二个用户没有被删除。

还有另外一个例子,假如我们要获取用户列表,SQL 是这样的:

select id, name
from users
where status = 'normal'
  and customer_id = $1
order by name

通常我们可能是这样测试的:

  1. 插入一个新用户,设置 customer_id
  2. 调用函数
  3. 判断是否返回这个新用户

但作者认为至少需要插入四个新用户才能进行这个测试:

  1. 四个用户,其中一个被删除的 A、一个 customer_id 不符合的 B,剩余两个才符合条件
  2. 确保没有返回 A 和 B

个人思考

诚然我们都认同测试的重要性,但是如何编写测试是一门非常高深的学问,只是编写测试用例的时候只是流于表面的,那么其价值是非常低的,甚至是浪费时间的。

百度腾讯阿里真的是高科技企业吗?

原文地址:《百度腾讯阿里真的是高科技企业吗?》 | 马工

那么,这些潜力人才去了BAT,在干什么呢?腾讯的公众号文章《搞了运维开发这么多年,原来 Ping 还能这么玩儿!》揭示了部分真相:一个北大本科毕业生在腾讯研究一个1981年的协议ICMP,而这个协议因为不安全已经被大多数美国同行比如AWS给默认禁掉了。说句不客气的话,ICMP协议就是IT行业的回字的四种写法,让北大毕业生去研究ICMP协议,就是把他们变成孔乙己。

有趣的链接


作者 : 4Ark

地址 : https://4ark.me/post/weekly-05.html/

来源 : https://4ark.me

著作权归作者所有,转载请联系作者获得授权。