A公司是一家大型保险公司,拥有近20个城市的分公司,并在其中5个城市建立了IT支持中心。平均每年的上线应用数量在20个左右(新业务系统和原有业务系统的主要版本发布)。目前A公司的专职测试团队人数不足30人,而且测试团队的测试人员技能参差不齐,目前测试只是作为项目上线前的一道工序而已。在测试团队内部也几乎没有自动化的手段,主要依靠手工测试。由于已上线应用系统的问题,开发团队必须分出一部分资源去维护和修复上线应用,而同时测试团队的测试成果和效率却无法和这些应用质量挂钩,也更无从谈起对软件质量的控制。所以,A公司决定在软件质量和测试方面进行投入,他们考虑以下几方面:
  ●引进软件测试流程管理的自动化,提高软件测试过程的管理水平,使软件测试和软件开发一样可被评估、被衡量。
  ●实现性能测试自动化,所有应用上线之前必须有应用性能风险评估报告和相关部门的确认
  ●逐步实现功能测试的自动化,在目前人员配置的情况下,把部分手工测试变成自动化测试,提高测试可信度,降低人为错误。
  ●通过软件测试自动化,管理软件测试中的案例、缺陷、报告等资产,进一步提升软件测试的效率并建立测试基础库。
  ●在规划中,将来的2~3年内使所有的应用系统上线都必须有数字化的测试数据作为依据。
   2.公司应用系统的情况
   由于保险公司的业务种类繁多,同时在经过了几十年的经营后,公司内的应用系统从早期的终端方式到现代的J2EE和.NET等应有尽有,鱼龙混杂。IT部门已经建立的3年规划,即在未来的3年时间内将所有终端和C/S方式的应用转换成B/S架构,但当前仍然需要对这些旧应用系统进行维护,以保证业务的顺利进行。对于开发部门来说,目前新应用开发基本上已经以B/S架构为主,主要是基于J2EE架构的WebHTTP应用和部分Window.NETForm的应用。
   3.公司软件测试现状
   企业机构在做测试自动化选型时一定要考虑清楚企业内部哪些部分可以实施自动化、哪些部分暂不实施自动化、哪些部分仅在某几个项目做自动化试点。切忌匆忙上马或盲目否定,缺乏实事求是的理性思考。
   测试部门目前仅负责系统测试和对用户验证测试进行管理,对于之前的单元测试和集成测试主要由开发团队中划分出的一部分临时测试人员完成。由于缺乏监测手段,测试部门也无法收集和确定集成测试和单元测试的完成情况,在整个软件测试过程中,业务需求是由开发部门通过RationalRequisitePro进行管理,但测试需求目前尚没有提出要求,测试案例主要通过在公司公用的文件服务器中的目录管理方式管理,对测试中缺陷流程等管理主要依靠邮件的流转进行处理。目前90%以上的测试是通过Excel和Word等测试案例文档来完成,测试人员对软件测试自动化的认识仅停留在“记录+回放”的认识上。
   4.可供选择的方案
  方案A:A公司可以采用美科利(Mercury)公司产品为主的软件测试自动化方案。
   ●依照原先的邮件流转过程配置TestDirector缺陷管理流程,为每个保险业务的开发小组和测试团队分配相应的用户许可证,取消原有邮件方式。
   ●部署MercuryQuickTestProfessional,以便完成应用程序相关功能测试。
   ●部署MercuryLoad-Runner。从测试团队中分化出专职的性能测试自动化工程师和小组,和业务部门协调,建立A公司应用系统上线性能指标,通过LoadRunner给出测试指标。
   ●建议A公司成立专门的质量控制部门,对TestDirector中的数据定期进行分析,建立相关质量模型,以便于企业量化管理和过程改进。   方案B:A公司也可以采用IBMRational产品为主的软件测试自动化方案。
   ●采用RationalTestmanager来进行整个测试流程的管理,为相关开发和测试小组成员分配相应权限,改变以前通过邮件以及Word、Excel文档管理测试的工作方式。
   ●部署RationalRobot,用它来完成功能相关的测试工作以及新版本发布时的冒烟测试。此外,RationalRobot也能较好地完成性能相关测试。统一的操作方式降低了工具的学习周期和培训带来的大笔开销。
   ●部署RationalPurifyplus,使测试工作前移到开发阶段。由于Purifyplus能较好地支持白盒测试,编程人员在编码阶段引入的错误能尽早被检测到,这大幅降低了后期测试的开销。
   ●建议A公司成立专门的质量控制部门,对Testmanager中的数据定期进行分析,建立相关质量模型,以便于企业量化管理和过程改进。   方案C:A公司也可以采用开源软件为主的软件测试自动化方案。
   ●采用Bugzilla来进行Bug跟踪管理,采用BugzillaTestRunner进行测试用例管理,采用CVS进行测试资源的配置管理。
   ●采用MaxQ和WebInject对B/S结构的应用系统进行功能测试。
   ●采用DBMonster、Open-STA、LoadSim进行性能相关测试。
   ●可采用Xunit架构的开源工具对不同语言的程序单元进行单元测试。
   ●建议A公司成立专门的开源软件维护小组,以解决可能会碰到的工具维护工作。
   ●建议A公司成立专门的质量控制部门,对Bugzilla、TestRunner、CVS中的数据定期进行分析,建立相关质量模型,以便于企业量化管理和过程改进。
   5.方案评价
   由于不同客户在组织架构、员工素质以及流程管理水平等方面的不同,我们很难用一个实例、一两句话来说明不同解决方案的适用性。在上面的例子中,笔者给出了3种可行的方案,具体选择哪一个,需要仔细权衡。这里笔者给出一般性的意见,对于不想受制于某个测试自动化厂家的企业,开源是一个理想的选择。此外,它不需要支付成本,工具的源代码可以随意修改,因而具有较好的灵活性。但开源工具的弊端也是明显的:缺乏使用培训和技术支持,工具的用户界面一般也较为粗糙。而对于那些比较看重培训和售后支持的企业,笔者建议选择IBMRational或Mercury或其他厂家的产品。这样虽然需要支付一部分费用,但省去了工具维护所需要的大量工作。至于具体选择哪个厂家的产品为好,笔者尚无结论性意见。相信读者朋友都有一些见仁见智的看法,不妨来信交流。