|
我很早就对"自动化测试"有了概念,它的好处简直太多了:解放人力、避免人为因素干扰、更全面的检查问题...
然而我始终没有学会它。
首先,作为一个开发人员,我索要的不是LoadRunner这样的一个由外部录制作为展开的测试工具,这个工作是测试人员规划的,我既没有精力去录制,也对我们项目需要测试的点缺乏完整理解——我只知道我的模块这里有哪些地方需要测试。
其次,我索要的也不是JUnit该怎么用,那个属于技术问题,通过百度可以解决。
我所面临的困境是:
1.测试数据从哪来?
2.模块代码顺利走通之后如何确保数据的完整性?
3.需求发生细节上的变动的情况下,自动化测试代码如何才能不受干扰的完成使命?
测试数据从哪来,这严格地说不是一个问题,因为我们可以写死一些假数据供测试类使用,然而悲剧的问题是,有一些数据是很难掌握的——比如加密后的密码。如果想要模拟这些假数据,我必须把密码加密的过程也写到测试代码里去,这使得测试类变得庞大,并且最重要的是不再具有独立性——它与业务代码缠绕在一起了。
老师你好,请问自动化测试代码怎么写?
代码在我的模块顺利走通了,全程没有出现任何Exception,但这并不意味着胜利,因为我并不知道走完之后的数据能否在其它模块顺利被使用,如果数据不再完整,那就不能。然而基于同样的道理,我没办法在测试代码中使用大量篇幅去检查数据的完整性——那是业务的范畴,业务需求随时会变。
所以第三个问题也就是实际上最困难的问题,如何让测试代码与业务需求脱钩?
至少我认为,一段合格的测试代码,如果需求发生改变,不是功能性的改变,而是细节上的调整,那么测试代码应当是不用动。否则的话,需求天天变来变去的,这测试代码谁都会没精力去维护。
不维护的测试代码==垃圾。
哦对了,我们现在不是没有测试代码,只不过我们的测试代码就是长期不维护的垃圾……
不知道那些拥有完整自动化测试代码的web项目都是怎么做的? |
|