图5:在TFS生成中使用快照恢复测试环境到统一状态
图6:部署完成后,对测试环境创建快照,以便测试人员可以快速恢复某一版本的测试基线
通过以上两个操作,我们解决了将集成测试自动化中的主要问题,使得我们的持续集成可以突破单元测试的限制,扩展到集成测试。
图7:通过实验室管理器查看正在自动化运行的测试用例
消除不可重现的Bug
虚拟化平台可以帮助我们解决的另外一个问题就是消除不可重现Bug。由于测试环境和开发环境是隔离的独立环境,开发人员往往很难直接获得定位Bug所需的数据和信息,而测试人员又很难保持自己的测试环境处于正确的状态以便开发人员可以使用。利用以上所提到的虚拟机快照技术,我们就可以将出现问题的测试环境原封不动的发送给开发人员进行问题定位,最大化的解决了不可重现Bug的问题。
图8:测试人员使用快照将处于问题状态的环境发送给开发人员
下一步
实现了测试环境的完整流程自动化后,下一步就是将最新版本推送给生产环境,将持续集成推广成持续部署。这样做的好处是我们可以最快的获得用户反馈,以便改进我们开发迭代中的需求。
下图就是利用持续部署推送到生产环境的SSW公司官方网站。注意最下面一行小字,是由TFS的持续部署脚本自动生成的。这种持续部署的方式,再配合内部的虚拟化测试平台,就可以保证变更以最快的速度进入生产环境。
图9:SSW公司的网站使用持续部署进行快速部署,每次部署的间隔不超过24小时
总 结
开发和测试的制衡之道就是通过工具使他们都可以专注于自己的核心价值,同时能以最少的额外投入给对方提供必要的信息;这样开发和测试可以在交互过程中消除摩擦,产生默契,加快迭代的速度;最终实现高质量的研发团队并递交高质量的产品。