※ 引述《lovesnake (LoyalDog)》之铭言:
: 重新问好了,发现这样的东西似乎不适合提到算法。
: 我现在的程式有三个步骤 , 其中 1 2 3 各个步骤接会有一个资料输出。
: 但只有三个步骤皆完成后,产出的资料才有办法自动化判断正确与否。
: 其余1 2 3 步骤各别的输出,都一定需要人工判别,现在没办法自动化的东西有很多,倒
: 没什么争议。
: 那请问,针对 1 2 3各个步骤的个别输出,需要写UnitTest吗?
: 还是我的Unit的范围要扩大到整个系统呢?
: 因为个别的步骤的子系统也满大的,所以会想要针对各个子系统皆做UnitTest,
: 但又发现个别的输出无法自动化判别,这种情况会怎么做呢?
我认为 unit test 是手段,而不是目的。
也就是写出明显bug时,你可以在很短的时间内发现它,
自动化的 unit test 可以很有效率地解决这个问题,
但是当你的 test 没办法、或是很难自动化时,
你的目标应该转移到“如何缩短测试时间”。
也就是说,人工判别是 ok 的,但你可以试图让这个判断过程变得更有效率。
最好的情况就是你按下 build test,测试程式会马上把中间步骤的结果秀在萤幕上。
当然,资料量增加时你会需要更有技巧的测试,
比如说适度处理输出让出错的地方可以更明显被肉眼看到、
或是把人工判断为正确的资料 cache 下来,只显示有差异的部份等等。
当然这些方法适不适用是 case by case,
但有技巧的测试就可以让你的开发效率比完全不做测试、或暴力测试要好很多。