因为要转行做产品经理,我正在慢慢地把 code review 工作交给其他同事,不过偶尔开始会看一下同事们的提交,有时候我会要求一些 PR 追加测试,有时候又会放过去。
现在负责 code review 的同事是一个比较严谨的人,对我这种时而要求测试,而是不要求的行为,希望我能出明确标准。然后我分享了一下我对于测试的理解,下面是分享记录。
问题:什么时候需要写测试,什么时候不需要写测试,标准是什么?
首先,为了避免被挑刺儿,我只能说:“所有的代码都需要被测试。”
不过,我比较懒,又对自己的代码有一定的自信,所以下面这些场景下我通常是不写测试的。
- 单纯的 HTML 修改,如:某个表单需要添加新的输入框。
- 单纯的 CSS 修改,如:必填输入框的警告色是红色。
- 等等
什么时候必须写测试?
- bug,如:某个功能不知道被谁修改后无法使用了。为了防止在一个人做出相同的错误,必须写测试。
- 表单的合法提交,如:用户填写一些信息,以 API 期待的格式提交给服务器。合法提交是最低限度,不能再低了。
- 等等
即然我说:“所有的代码都需要被测试”,我就想说到做到,但是有些时候我又不写测试,是不是有点矛盾啊?
其实并没有,我非常善于利用自动化测试工具。我使用 chromatic 测试 HTML 和 CSS,效果如下:
问题:有没有什么工具可以让写测试简单一点?
Backend 的话,我推荐使用 Swagger;对于 Frontend,好像没有特别好的工具。不过我有几个 Tips 可以分享给大家:
- 使用
watch
模式执行测试,类似于 Hot reload,修改代码后可以立即得到测试结果。 - 使用
only
编写单个测试用例,可以隔离其他测试用例的副作用。 - 使用 BDD 思想编写测试,形如:
test("the SAVE button should be disabled when the form is invalid", () => { ... })
,通常当你写完测试描述,测试代码就已经写完 80% 了。
以上,这是一次内部分享的记录,都是我的个人经验,希望能帮助到大家。
我以前也写过一些关于测试的内容,推荐阅读