测试:作为动词,它是评估的意思;作为名词,它是导致最终是接受还是不接受的过程。
测试是相互独立的。
测试列表,就跟你生活中记录你的工作计划一样。
测试优先:你应该在什么时候编写测试呢?在你编写要被测试的代码之前。
断言优先:我们什么时候写断言呢?在一开始就写断言。
什么时候开始构建一个系统?从对最终系统的描述开始。
什么时候开始编写一个测试?从测试完成时需要通过的断言开始。
测试数据:一个是编排数据,一个是真实数据。
如何表达数据的意图?让测试自身包含预期和实际的结果,并且努力使他们的关系明显化。
尽量不要使用魔数!
什么是魔数?在代码中出现但没有解释的数字常量或者字符串。
一步测试:你将从测试列表中选择编写哪一个测试呢?选择那个具有指导意义而且你有把握实现的测试。
启动测试:我们应该从哪个测试开始呢?从测试某个实质上不做任何工作的操作开始。输出应当跟输入一样;输入应该尽可能的少。
说明测试:如何拓展自动测试呢?利用测试来请求及提供说明解释。
学习测试:你什么时候开始为外部软件编写测试呢?在你第一次准备使用这个包中的某一项新功能的时候。
要学会使用setUp()...test***()... tearDown()...
回归测试:当一个错误被发现时,你最想做的第一件事是什么呢?写一个尽可能小的会失败的测试,一旦运行,就对其加以修缮。什么是回归测试?指修改了旧代码以后,重新进行测试,以确认修改没有引入新的错误或导致其他代码的错误。
重新开始:当你迷茫了,迷失方向了怎么办?扔掉原来的代码,重新开始。
测试模式:
子测试(如果一个函数D包含了3个子函数模块A,B,C,那么就先测试A,C,再最后测试D),
模拟对象(比如如何模拟一个数据库),
自分流(没看懂),
日志字符串(JUNIT原理),
清扫测试死角(对异常测试),
不完整测试(中断工作接着恢复的法宝,使测试不完整,它能帮你恢复到离开时的那段记忆)
提交前保证你的所有测试运行通过(测试套件比测试用例更具有意义;未通过的测试强烈表明你对刚刚编码的东西没有充分的了解)