最近在学习Junit,使用的书是《Junit4 in Action》。
书从入门到进阶,讲解了Junit的基本用法,讲到stub和mock的使用,配合以实际的例子。通过抄写书中的代码,去理解来学习。
这里又引出一个老问题,为什么测试人员做单元测试的少,很多公司都是开发自己来做。
为什么是开发
过去,我只是以一种笼统的感性认为,因为开发比我们更懂代码内部实现,但是多想想,如果内部代码我们是可阅读的,也有概要设计和详细设计,那测试人员是不是也应该降低这部分的壁垒。
看了前6章,对这一问题有了进一步认识。上面的感性认识有没错?答案是没有。
书中有两个例子,一个是stub,StubHttpURLConnection,通过对URL连接返回进行处理。
另一个是mock,MockInputStream,通过mock处理输入输出。
这两个方法都是对成熟库方法的模拟,对测试人员来说困难在哪儿?对协议代码实现方法细节的了解远不如开发。另一点在第6章第3节有提到,在做单元测试的时候,如果被测代码难以测试要及时重构,这一点只有开发自己在做单元测试时响应才及时,更方便调整。
Some people used to say that unit tests should be totally transparent to your code under test, and that you should not change runtime code in order to simplify testing.This is wrong!Unit tests are first-class users of the runtime code and deserve the same consideration as any other user.If your code is too inflexible for the tests to use,then you should correct the code.
还有的学吗
那么做为测试人员,还有学单元测试的必要么?
我认为还是有的学的,书中提到的测试策略中也说到,unit test在函数测试,组件测试,应用功能测试和压力测试中都能有所做为。
比如现在很多公司在做web测试时,都会进行接口自动化的测试,很多测试技术仍会用到单元测试的方法或者框架。
更何况,仅仅把单元测试的学习当成一种乐趣,又何尝不可。