高级软件工程师教会小白的那些事( 八 )

我把测试当做是文档。这是我对代码预期效果的文档。测试告诉我,我(或我之前的人)如何期望代码来工作,以及他们认为事情会出错的地方。

所以,当我现在编写测试时,我会记住这一点:

演示如何使用我正在测试的类/函数/系统。

展示出所有我认为可能会出错的内容。

上述的一个必然结果是,在大多数情况下,我测试的是行为,而不是实现。(点击此处查看我在Google浴室休息期间听来的一个例子:https://testing.googleblog.com/2013/08/testing-on-toilet-test-behavior-not.html)

我在#2中漏掉的东西就是bug的来源。

因此,每当我发现一个bug时,我都会确保代码修复程序有相应的测试(称为回归测试)来记录信息:这是另一种可能出错的方法。

但是,仅仅编写这些测试并不能提高代码质量,需要实际编写代码。但是我从阅读测试中获得的见解能帮助我写更好的代码。

这是测试的整体图景。

推荐阅读