自动测试工具在电信行业支撑系统领域的应用研究

2011-12-31 00:00:00周智
电脑知识与技术 2011年28期


  摘要:该文通过运用项目管理的理论和CMMI5标准,结合电信运营商生产系统的实际情况,分析自动化测试应用与电信行业后带来的益处,搭建自动化测试框架,实现了将测试数据与测试用例的分离、测试数据与业务流程的分离、测试用例与业务流程的分离,让自动化测试更容易维护、用例的重复利用率更高,以便更好的保障业务支撑系统的稳定,提高用户感知。
  关键词:自动化测试;自动化测试管理平台
  中图分类号:TN98 文献标识码:A文章编号:1009-3044(2011)28-7003-05
  1 概述
  目前中国大部分电信运营商都是以省为单位建设业务支撑系统(以下简称BSS系统),BSS系统包括客户关系管理子系统(简称CRM系统),计费账务子系统以及与外围其它系统的各种接口。省级运营商市场部门以及下属分公司市场部门为了市场的需要会不断提出各种业务需求,这就需要不断在BSS系统进行修改、增加功能,而BSS系统的支撑既要保障相关的功能修改或增加都必须是安全可靠,又要保障支撑的速度能跟上市场快速发展的需要。但由于软件开发往往采取模块化设计和增量集成的方式,测试版本的发布和系统上线时间非常有限,大量的变更问题需要验证,还需要进行大量回归测试,这些工作都存在大量的重复性劳动,容易让测试人产生疲惫感,要保证质量难度很大,有必要引入和运用自动化测试方法,将自动化测试和人工测试相结合,让测试人员更好的关注新功能或者改造的功能,做更有意义的测试,降低重复测试投入的成本,提前发现问题,保障系统稳定,提高用户感知。所以本文结合运营商的实际情况和自动化测试在业务支撑系统不断更新过程中的运用,对功能自动化测试在电信运营支撑系统中的引入和具体实施进行阐述。
  2 电信行业自动化测试需求
  作为运营商的核心生产系统之一,BSS系统的稳定性运行非常关键,其每次发生的重大故障都会给运营商带来严重的经济损失。而BSS系统的稳定运行,与应用开发/集成商提供的应用软件本身的稳定性密切相关。
  BSS系统稳可以分为3个方面:系统功能稳定,不要动辄操作失败;系统运行效率好,实时性高;系统运行平稳,不要动辄重启服务器解决严重性能故障问题。而要做到这三方面,不对应用软件进行充分的测试,是无法保证的。
  在BSS的实际建设和维护过程中,关于应用软件导致的系统不稳定(主机、存储等设备,数据库、中间件等系统软件导致的不稳定,本文不作讨论),可以大致归结为以下几种:
  1)运营商的业务需求繁杂多变,开发周期短,难以进行充分的测试即被迫匆匆上线。每次系统升级前除了进行需求确认测试外,还应进行全量回归测试,以保障变更不会影响到其他功能,这在管理上是很难实现的!
  2)新上线系统的BUG过多,功能不稳定。某个新系统上线后,才发现应用软件的BUG很多,营业员时不时的操作失败,而又不是每次都操作失败,让人难以琢磨该系统的“性格”。
  3)新上线业务功能导致原有正常业务功能出错。这可以说是BSS系统维护中最常发生的不稳定问题,实际上就是新功能开发时,只对新功能进行了测试,而没有对原有功能的影响进行大量的测试,导致上线前没有发现问题,而仓促上线所致。
  4)系统BUG修复后,因回归测试不全面,在上线时会产生新的BUG,得不偿失。
  5)新上线业务越来越多,系统越来越慢,直至系统后台死机不处理。这属于典型的性能、压力的测试和分析不够,并进而对系统支撑业务能力估算不足所致
  这5个问题,从另一个角度来看,可以理解为解决当前BSS应用软件测试问题的三个步骤。
  首先必须加强上线前开发/集成商的软件测试,建立完整的测试流程和测试环境。
  在此基础上,对每个新上线的业务功能,除了执行新功能本身的测试外,还通过建立丰富的测试用例库来确保执行严格的功能回归测试,才能确保新上线业务没有对原有正常业务功能产生不良影响;
  同时,引入适当的测试工具软件。一方面,即使针对正在研发中的软件,由于在开发过程中不断引入的变更(发现错误进行的变更,业务需求变化引起的变更等),对于已经测试通过的功能,也需要在每次修改代码后进行回归测试,只有这样才能保证即使在代码不断修改的情况下,软件发布时相应的功能测试仍然是通过的。而这种回归测试的工作量非常之巨,以至于如果完全人工来做,是不可能实际做到的,自动化测试可以解决回归测试、重复测试的问题。这样才能解决以上问题中1、2、3和4;
  最后,有了这些测试流程、测试环境、测试用例库,才可以进行严格的性能测试和分析,为新业务上线对系统荷载造成的影响进行科学客观的分析,从而准确地把握系统实际运行荷载的变化趋势,并进而尽早发现系统支撑能力的“临界点”。
  因此,电信行业的业务运营支撑系统有必要启用自动化测试。
  3 自动化测试的好处
  自动化测试长久以来,一直是软件测试领域的热点,而今从事或者具有自动化测试技能的工程师更是就业市场非常需要的人才。这是因为自动化测试可以带来很多好处。
  将精力投入更有意义的测试。自动化测试的引入会减轻重复的工作,使得测试人员有更多的时间去分析测试需求、设计详细的测试计划、测试用例、构建更复杂的测试。可以说这是自动化测试带给我们的最大好处之一。
  回归测试,降低测试成本。这可能是自动化测试最主要的任务,特别是在程序修改比较频繁时,效果是非常明显的。由于回归测试的动作和用例是完全设计好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提高测试效率,缩短回归测试时间。
  充分利用资源。可以在无人时定时执行自动化测试脚本,到时候直接看执行结果即可。人工测试和自动化测试相结合使用,可以在白天上班时间进行新功能的手工测试,原有功能的自动化测试可以在晚上或者周末执行,第二天就可以看到执行的结果。即避免了开发和测试之间的等待,又充分利用时间资源,提高测试效率。
  测试具有一致性和可重复性。由于测试是自动执行的,每次测试的结果和执行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。
  测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少量的甚至不做修改,实现在不同的测试过程中使用相同的用例。
  加大软件信任度。由于测试是自动执行的,所以不存在执行过程中的疏忽和错误,完全取决于测试的设计质量。一旦软件通过了强有力的自动测试后,软件的信任度也会增加。
  公司实力的象征。自动化测试也从一定程度上体现出一个公司对测试质量的重视和实力,增强用户对软件的信任度。
  自动化测试是对手工测试的一种补充,自动化测试不可能完全替代手工测试,因为很多数据的正确性、界面是否美观、业务逻辑的满足程度等都离不开测试人员的人工判断。而仅仅依赖手工测试,则会让测试过于低效,尤其是回归测试的重复工作量对测试人员造成了巨大的压力。自动化测试的意义不是为了取代人在手工测试中的位置,而是将人从重复繁琐的工作中解放出来,做更有价值的测试工作。
  4 自动化测试框架
  前面章节介绍了电信行业业务支撑系统对于自动化测试的需求,下面来介绍自动化测试在某省BSS系统支撑过程中的实际应用。
  4.1 自动化测试框架整体介绍
  建立自动化测试框架就是为了把测试数据与测试用例的分离、测试数据与业务流程的分离、测试用例与业务流程的分离,让自动化测试更容易维护、用例的重复利用率更高,最后再和需求管理、开发进度管理统一起来,整个质量控制体系就更加完善。
  
  自动化测试框架包括:自动化测试管理和自动化测试工具。自动化测试管理包配置管理、组件管理、测试用例管理、测试计划管理、数据管理,自动化测试报告管理。在本自动化测试框架中使用的是SilkTest测试工具和自主配套研发的自动化测试管理工具平台。运用在实际的电信行业中的框架如图1所示。
  5 自动化测试工具选用
  自动化测试的工具很多,当前主流的自动化测试工具有Mercury Interactive Corporation、IBM Rational、Compuware Corporation、Segue Software等公司的系列产品。产品简介如下,这里选用的是Borland Software SilkTest(原SegueSoftware产品)
  SilkTest 是面向 Web 应用、 Java 应用和传统的 C/S 应用,进行自动化的功能测试和回归测试的工具。它提供了用于测试的创建、定制的工作流设置、测试计划和管理、直接的数据库访问及校验等功能,使用户能够高效率地进行软件自动化测试。为提高测试效率, SilkTest 提供多种手段来提高测试的自动化程度,包括:从测试脚本的生成、测试数据的组织、测试过程的自动化、测试结果的分析等方面来进行规范。
  SilkTest的脚本语言采用面向对象的编程语言 4Test 来编写灵活的测试脚本,并且SilkTest 有较好的跨平台性。
  6 自动化测试管理平台
  为了能够让自动化测试入门更简单,维护更加简单容易。我们自主研发了自动化测试管理平台,是基于自动测试工具的自动测试统一工作平台。自动化测试管理平台为B/S结构的系统包括组件管理、测试用例管理、测试计划管理,测试报告管理等。自动化测试工具和自动测试统平台的交互,能够很好的维护自动测试脚本及工程文件,并能以更加直观方式对自动测试结果进行展示。统一的自动化测试平台有如下特点:
  通过自动测试平台对象管理功能,可以显示对象的增量修改功能;
  SilkTest工具编写的脚本,可以导入到自动测试平台,并通过可视化界面对脚本进行维护;
  自动测试平台可以对脚本进行有效的管理,保证脚本的唯一性;
  自动测试平台可以对SilkTest整个工程进行管理,方便整个工程的读取;
  自动测试平台可以将测试结果文件以pdf文件的形式导出,便于对测试结果的阅读和分析。
  6.1 组件管理
  组件管理包括:对象导入、对象维护、对象导出。
  对象获取。要管理对象,就要先获取取对象。对象获取和整理是编写用例的前提。整理好对象会对在平台上编写用例有很大帮助。也会对接手维护的人员有很大帮助。对象是通过SilkTest工具来获取的,获取对象有两种途径:Window Declarations(获得整个页面的对象)和Window Identifiers(获取单个对象的属性)。Window Declarations获取的对象,结果如图2所示。
  对象导入。通过自动化测试平台的导入对象功能,将SilkTest获取的对象存储到数据库中,以便后期维护和部署。页面如图3所示。
  对象导出。通过自动化测试平台导出对象文件以便部署到服务器上。页面如图4所示。
  对象维护。对导入的对象进行修改或者添加新的元素,页面如图5所示。
  6.2 自动化测试用例管理
  自动化测试用例的管理包括:测试用例添加,测试用例维护,测试用例导出。
  用例添加。需要填写用例名称、用例说明、期望结果和用例类型。操作页面如图6所示。
  用例维护。添加用例完成后,在用例维护中将SilkTest中的脚本写成操作步骤。此时页面右边的树就是我们导入的对象,点击对象就可以添加操作步骤。补换卡业务的测试步骤截图如图7所示。
  用例导出。将用导出为SilkTest可执行的脚本文件,以后需要调试该用例时,直接通过自动测试管理平台导出用例执行,直接部署到自动化测试机上。操作页面如图8所示。
  6.3 数据管理
  在编写测试用例的过程中,一定会涉及到数据的交互,例如测试用例的输入数据从哪里获得,如何对输出结果进行验证等。
  通常有两种方法:数据写到脚本里面;将数据与脚本分离,存放到excel或数据库中。我们现在选择的是将脚本和数据分离的方式,这样做有如下好处:
  1)便于脚本的维护;
  2)便于一个脚本支持多个用例,当编写一个新用例时,只需去配置与该用例相关的数据即可;
  3)利于扩展和组织测试计划。
  6.4 测试计划管理
  测试计划管理包括:计划新增、计划维护和计划生成。
  计划新增。自动化测试管理平台上有测试计划管理功能,查询出用例并放到新计划中。同时系统还提供了对测试计划维护的功能。如图9。
  计划维护。自动化测试管理平台上有测试计划维护功能,即修改已经存在的计划里面包含的用例,可增加或者删除,操作页面如图10所示。
  计划生成。由测试计划生成功能,生成脚本、生成计划。即可部署到自动化测试主机上执行。如图11。
  6.5 自动化定时执行
  编写一个bat文件,定时执行即可,如图12。
  6.6 自动化测试报告管理
  结果数据的抽取、汇总与展示。在测试执行过程中,通过特定的数据采集组件以及事件触发,获得我们关心的中间结果数据,并且将数据全部入库,根据客户需求,展现一份客户能够看得懂的报告。避免了工具原有报告难理解的问题。同时,记录下来的中间数据可以很好的体现出每个步骤地详细信息和过程时间,这样可以提供一段时间内的横向和纵向的对比,为系统特别是生产系统上的性能渐变提供有力的监控和依据。
  自动化测试平台从数据库中捞出测试结果进行处理,根据需要生成用户容易看懂的PDF格式的自动化测试报告,如图13,图14所示。
  7 自动化测试流程
  有了上面自动化测试管理平台的支撑,自动测试流程中编写测试脚本、执行自动化测试的开展就会更加顺利。
  表1为自动化测试流程角色表。自动化测试流程如图15所示。
  1)制定测试计划。测试经理要制定测试计划,明确测试对象、测试目的、测试的项目内容、测试的方法、测试的进度要求,并确保测试所需的人力、硬件、数据等资源都准备充分。制定好测试计划后,分派给QA;
  2)分析测试需求。QA根据测试计划和需求说明书,分析测试需求,设计测试需求树,以便用例设计时,能够覆盖所有的需求点;
  3)设计测试用例。QA通过分析测试需求,设计足够多能够覆盖所有需求点的测试用例,形成专门的测试用例文档。并不是所有的测试用例都能用自动化来执行,所以需要将能够执行自动化测试的用例汇总成自动化测试用例;
  4)搭建测试环境。自动化测试人员在用例设计工作开展的同时即可着手搭建测试环境。包括被测系统的部署、测试硬件的调用、测试工具的安装和设置、网络环境的布置等等;
  5)编写测试脚本。自动化测试人员在自动化测试管理平台的支持下,编写自动化测试用例步骤,通过自动化测试工具编辑脚本插入检查点和异常判定反馈语句,调试脚本;
  6)执行自动测试。自动化测试人员测试测试计划,验证软件功能,执行回归测试、流程测试等,以替代重复性的手工测试工作;
  7)分析测试结果。自动化测试人员根据执行结果,分析测试通过与没通过的情况,通过自动化测试平台生产用户容易读懂的自动化测试报告;
  8)记录测试问题。QA在测试脚本执行完毕之后,即可查看测试工具的测试报告,然后将没有通过的地方提取出来,描述成BUG,反馈给开发人员;
  
  9)跟踪测试BUG。QA将测试中发现的BUG记录到BUG管理工具中去,以便定期跟踪处理。开发人员修改后,需要对此问题执行回归测试,即重复执行一次该问题对应的脚本,通过则关闭,否则继续修改。如果问题(BUG)的修改方案与客户达成了一致,但与原来的需求有所偏离,那么回归测试前,还需对脚本进行必要的修改和调试。
  8 系统软硬件环境
  系统的软硬件基本要求如表2所示。
  9 结束语
  电信行业业务支撑系统随着电信业务的发展和计算机技术的日新月异,系统功能不断扩充和更新。每次需求变更,系统缺陷,都会给系统带来大大小小的频繁更新。在需求管理、测试流程管理、测试环境这些都具备的条件下,要满足运营商给开发商预留的项目工期越来越紧,对软件的质量要求越来越高,对开发商软件正式上线前尽量减少程序BUG这些要求,这就必须要提高软件测试的质量和效率,在手工测试的基础上引入自动化测试,建立完善的自动化测试管理平台,统一管理测试用例库,让自动化测试完成大量的回归测试和重复性测试,让测试人员将精力投入更有意义的测试,制定更加合理的测试计划、设计更完善的测试用例,使得测试覆盖率更高,发现更多的问题,最终保障BSS系统的质量、降低业务支撑系统给运营商带来的风险,也将对电信运营商的业务支持起到非常积极的作用。
  参考文献:
  [1] 科兹纳.项目管理:计划、进度和控制的系统方法[M].10版.