2009年5月3日星期日

自动构建和自动测试

    不要做重复的工作,对于编码、部署应用、测试等等日常工作都可以自动化完成,因为你是人,不适合做这些工作,而且简单重复的工作特别适合机器完成,而人完成这些反而容易犯各种错误,结果又要花更多的时间来找出问题,重复工作就是一种浪费!
    比如我们的项目众多,每个项目又都要取出多个模块,不同项目之间又都有些差异。从cvs中自动正确的取出和构建需要的项目,这一复杂、重复又易犯错误的过程当然可以自动化完成!我在添加了一组可以自动化完成此工作的脚本。
    又如我们所有的项目不仅仅要保证可以从cvs中正确的取出,还需要保证可以成功的构建,没有源代码编译错误,没有gram编译错误,最好构建过程中还能把所有测试都跑一边。当然还可以再包括静态代码分析等等其它自动化的辅助工作,这些都是没有成本的。我已经配置了cruisecontrol作为持续集成和标准构建服务器,可以定时更新cvs重新构建,如果有问题会及时发现;同时作为标准构建,就有了唯一权威的构建版本,避免了因为在个人开发环境下可能发生的问题,也杜绝了只能在某个人的机器上才能构建出来的现象。
    web工程的构建和部署由于不是自动化也经常会出现一些小问题,一些配置没有修改,如数据库配置、pool中资源数量等等,或者直接就服务器上改了而没有同步到cvs,下次部署就很可能出错。因为经常更新,每次部署都要做很多手工修改,这样重复工作既是在浪费时间,又很容易出错。而这些问题也可以通过自动化的方式解决,标准的构建,所有的配置修改也自动完成。
    网页的测试也是重复工作,每天来一遍,既枯燥又容易遗漏,也因此没有经常做。重复的工作只做一次,剩下的就可以自动化完成。比如,Selenium项目(http://seleniumhq.org/)就提供这样的web应用测试工具,可以自动记录web上的操作并保存为一个test case,可以编辑,当然可以回放。这样掌握这个工具,以后就可以完全自动化进行重复的测试工作。
    做msn机器人的时候,我们帮忙进行测试。这个过程也可以自动完成,只要再写一个msn机器人负责去自动测试就可以了!用这个机器人将准备好的一组测试用例一个一个的自动发给另一个msn机器人,并判断返回是否正确。
    大家的时间精力非常有限,重复是软件开发中有最大敌人,如果你发现自己在做重复的工作,那就考虑一下是否可以自动化的完成。

没有评论: