2022-05-19 Testing-FAQ


因为要转行做产品经理,我正在慢慢地把 code review 工作交给其他同事,不过偶尔开始会看一下同事们的提交,有时候我会要求一些 PR 追加测试,有时候又会放过去。

现在负责 code review 的同事是一个比较严谨的人,对我这种时而要求测试,而是不要求的行为,希望我能出明确标准。然后我分享了一下我对于测试的理解,下面是分享记录。

问题:什么时候需要写测试,什么时候不需要写测试,标准是什么?

首先,为了避免被挑刺儿,我只能说:“所有的代码都需要被测试。”

不过,我比较懒,又对自己的代码有一定的自信,所以下面这些场景下我通常是不写测试的。

  1. 单纯的 HTML 修改,如:某个表单需要添加新的输入框。
  2. 单纯的 CSS 修改,如:必填输入框的警告色是红色。
  3. 等等

什么时候必须写测试?

  1. bug,如:某个功能不知道被谁修改后无法使用了。为了防止在一个人做出相同的错误,必须写测试。
  2. 表单的合法提交,如:用户填写一些信息,以 API 期待的格式提交给服务器。合法提交是最低限度,不能再低了。
  3. 等等

即然我说:“所有的代码都需要被测试”,我就想说到做到,但是有些时候我又不写测试,是不是有点矛盾啊?

其实并没有,我非常善于利用自动化测试工具。我使用 chromatic 测试 HTML 和 CSS,效果如下:

问题:有没有什么工具可以让写测试简单一点?

Backend 的话,我推荐使用 Swagger;对于 Frontend,好像没有特别好的工具。不过我有几个 Tips 可以分享给大家:

  1. 使用 watch 模式执行测试,类似于 Hot reload,修改代码后可以立即得到测试结果。
  2. 使用 only 编写单个测试用例,可以隔离其他测试用例的副作用。
  3. 使用 BDD 思想编写测试,形如: test("the SAVE button should be disabled when the form is invalid", () => { ... }),通常当你写完测试描述,测试代码就已经写完 80% 了。

以上,这是一次内部分享的记录,都是我的个人经验,希望能帮助到大家。

我以前也写过一些关于测试的内容,推荐阅读