老实说,我并没有改动什么!
我们已经定义了受控环境,现在开始讨论建立一个这样的环境需要哪些条件。自动供应是其中一项技术。
自动供应
如果您总是使用配置向导构建环境,您可能会认为这个过程不能自动完成,因为用向导构建时需要如此多的人工参与。如果可能的话,您需要学习WebLogic Scripting Tool (WLST),它可以使用一个脚本语言控制配置向导的所有功能。WLST可以导入向导使用的模版,并通过脚本执行向导图形接口提供的自定义。在下文我们将更详细地讨论WLST中的脚本问题。现在您只需要知道或者相信可以通过脚本构建环境。
表1指出了测试环境间可能存在的不同之处。但是,尽管您的项目中可能存在部分或所有这些不同,供应的核心仍然是从一个环境转变为另一个环境。毕竟,在每个环境中,相同的应用程序套件被部署在相同的平台上。通过确定环境需求的不同,您可以找出使用脚本自动进行成功部署的共同特征。因此,一个环境的供应形成所有其他测试应用程序套件所需环境的基础。编写供应自动脚本时,您应该预见所有后续测试环境的供应需求。要做到这一点,您必须清楚当前测试环境和未来测试环境可能存在的不同。您应该根据项目测试计划,做一个类似表1的草表。
使用脚本控制自动环境构建有助于促进统一性。它还允许供应处于配置变更管理之下。这是一个很重要的优点,对环境配置进行的未经严格测试的更改对应用程序有不利影响,甚至可能导致应用程序崩溃。通过在变更控制下进行的脚本维护,脚本可以还原到之前的版本,对脚本的更改在生效前必须经过验证过程。配置管理系统也提供了一些方法来记录更改的原因,这样能够提供如何到达当前设置的历史路线图;通常,它们能够提醒某些功能无法正常工作,因为以前尝试该功能时失败了。
脚本供应中一个经常被忽视的优点是,脚本可以捕获供应和部署的模式。通常,使用跨多个机器的多个服务器供应多个环境的复杂性要求更多的时间来完成,它所面临的挑战超出想象。如果在编写供应脚本时比较细致,例如,插入注释解释不够明显的细节,那么在将来的项目中,可以参考这些脚本列举该项目中遇到的供应挑战,并且可以在以后类似的项目中作为模型。在Orbism,我们有一个用户供应和部署任务的参考解决方案库,并根据我们咨询人员的现场经验不断更新,这为这些领域的共同挑战提供一个可访问的模型解决方案集合。
自动部署
有人会怀疑说,部署操作如此繁琐,几乎不可能自动化。但是,除非您的应用程序本身很繁琐,不然的话只要您在开发脚本中投入了多少精力,您就能获得多少回报。
脚本部署帮助确保后续测试中测试条件的统一性。如果使用手工部署,很难验证是否按相同的顺序采取了相同的步骤。如果流程是自动的,那么采取的步骤都会反映在脚本内容中。此外,与供应脚本一样,部署脚本本身可以使用配置管理和变更管理进行控制。
数据不仅仅是将一组新的部署文件提交到部署工具那么简单。在部署文件中,有一个设置明确定义了应用程序组件所需的资源需求。它们的校正值与环境有关,在能够被正确部署之前需要对部署文件进行修改。当向WebLogic Platform 9.x环境部署应用程序时,应用这些值的方法建议采用部署计划。此页面 中的WebLogic Platform 9.2在线文档讨论了向不同目标环境部署相同应用程序时如何使用部署计划。对于WebLogic Platform 8.1,部署自定义要复杂的多,涉及到解包归档文件,解析并编辑里面的内容,然后重新打包归档文件。复杂性是实行自动化的一个好理由。PO Sample 中可以找到说明解析和修改部署描述符的示例代码和脚本。
经常向WebLogic域部署和重部署可能会生成不可预料的异常。BEA Support Patterns站点 有一部分关于 troubleshooting deployment failure 的内容,讨论了许多部署和重部署应用程序时发生的常见异常。大多数情况下,建议在部署和重部署前进行额外的补救步骤,这些步骤必须被包含在应用程序部署脚本中。
访问控制的影响
受控环境的一个关键特征是,对环境的访问受到策略的控制。一般来说,一个环境越接近生产,它的策略就越严格。为了说明这一点,表2展示了表1的环境,但列出了一些可能存在的访问限制:
| 功能测试 | 开发人员运行供应脚本。 开发人员拆除环境。 操作人员和开发人员都可以执行运行时管理和监控工具。 开发人员修改供应和部署脚本。 开发人员运行部署脚本部署新的应用程序版本。 开发人员开始和/或中止测试。 |
| 系统测试 | 部署团队运行供应脚本。 部署团队拆除环境。 操作人员可以执行运行时管理工具。 操作人员和开发人员可以执行运行时监控工具。 部署团队可以修改供应和部署脚本。 部署团队运行脚本部署新的应用程序版本。 测试团队开始和/或终止测试。 |
| 性能测试 | 部署团队运行供应脚本。 部署团队拆除环境。 操作人员可以执行运行时管理工具。 操作人员和开发人员可以执行运行时监控工具。 部署团队可以修改供应和部署脚本。 部署团队运行脚本部署新的应用程序版本。 测试团队开始和/或终止测试。 |
| 用户验收测试 | 部署团队运行供应脚本。 部署团队拆除环境。 操作人员可以执行运行时管理工具和监控工具。 部署团队修改供应和部署脚本。 部署团队运行脚本部署新的应用程序版本。 用户代表开始测试。 |
表2:说明测试环境策略
当然,该表的内容非常简单。一个成功的项目能使各个团队在多个方面通力合作。例如,在性能测试环境中可以使用管理工具调试系统。尽管该职责分配给了操作人员,但在实际操作中,该工作应该与系统架构师、应用程序设计师以及平台专家一起完成。尽管使用合作方法可以讨论更改并对其达成一致,但实际操作中任何特定任务都必须根据策略执行。
自动推进脚本
我们已经讨论了使用脚本代替向导供应环境,以及脚本如何实现自动化。现在开始讨论BEA WebLogic Platform自动供应的参与者。同时我将提供一些脚本示例供那些以前没有研究过脚本环境构建的人员参考。