读<ASP.NET优化>有感
时间:2011-02-23 来源:ustc_msra_ase
现在就来讲讲测试。里面说到“敏捷开发和极限编程的实质之一是基于测试的开发”,也就是说从一开始我们就要开始编写测试用例,在编写code的过程中要边code,边test。书中还讲到了怎样做到这一点。不管上面说的有道理还是没有道理,我们先来看一下测试是什么意思:对软件性能和精度进行测量。也就是测试要达到的目的只是一种测量,于是要求软件的编写达到测试出来的结果的要求。从控制的观点来看这个问题(下图是控制过程的典型图):测试相当于是feedback,
将数据从输出端返回到输入端,然后根据与输入的差,在controller中进行策略等的修改,最后作用到软件过程中去,得到输出。在重复迭代的过程中,争取到达输入和输出是一致的。输入是软件的目标(需求),输出是软件达到效果。在需求把握正确的前提下,我们正确的使用上述的方法是可以使输出和输入一致的,达到用户的需求。这样的开发过程是完美的。
在控制中feedback过程是至关重要的一步,如果不能很正确的返回输出的结果,那么controller不能很好的决策,导致项目的失败。现在来看看什么样的feedback是好的,能表达输出的:
1.迭代周期,软件开发是一个有周期性的活动。传统的软件开发的一般需要在开发结束后开始测试,然后修改bug,这样周期很长,于是controller做出策略的时候,有很大的延时,这样策略确定的难度和和输出和输入一致的难度大大的加大。敏捷开发过程要求一个迭代周期中一开始就有测试,这样整个循环的周期将大大的减小,于是controller(开发者)可以很快的做出计划的调整,使输出和输入一致,最后满足用户的需求。
2.准确的反映出输出的实时情况。如果使用传统的测试,不能很准确的反映出输出的情况,因为要测试的项目比较多,比较麻烦,如果某个人出了什么状况,就很难真实的反映出输出的情况。而这种实时行的测试能很好的反映但是输出的情况,因为涉及的内容少,新增的代码少,一旦某个人出了什么状况,也是一天的,明天可能就可以拉回来了。
上述两点是控制中很重要的环节,现在从控制的角度来看,这种测试方法是能很好的满足开发的需要,及时的使输出和输入一致,最好使软件完成需求。关于写什么代码和怎么写来到达这个效果,可以参见本书十六章。