王和栋
(广州粤能电力科技开发有限公司,广东 广州 510080)
省级电能计量系统主站功能自动化测试介绍及应用
王和栋
(广州粤能电力科技开发有限公司,广东 广州 510080)
基于省级电能计量系统主站,使用主流的测试工具对功能进行自动化测试,取代传统的手工测试。设计自动化测试流程,并根据设计的测试流程对选取的电能计量系统5个核心功能进行自动化测试,在过程中分析测试反映的问题并加以改进,总结出一套切实可行的自动化测试方法。通过两轮测试,自动化测试的覆盖率达到100%,测试结果正确无误。测试结果表明,该方法能够客观有效地测试功能开发质量,提高测试的效率。
电能计量系统;主站;功能;自动化测试;应用
省级电能计量系统是各电网公司根据各个层面的管理需要开发的对变电站、电厂、专变大客户、公变和低压客户计量点安装配套智能计量设备,采集电能量及电气数据,进行综合展现、分析和处理的系统。该系统较为庞大,在功能开发测试的过程中通用的软件功能测评方法并不能完全适用于电能计量系统主站的测评工作,需要根据电能计量系统主站自身特点,研究有针对性的功能测评方法,以指导电能计量系统主站测评工作,为功能的完善和应用作支撑。
软件功能测试是指根据软件产品功能规范、需求说明书等技术文档,对软件产品的功能进行验证性测试,以确定其是否满足开发要求的过程。软件功能测试也称黑盒测试或数据驱动测试,是把测试对象看作一个黑盒子,关注软件产品的功能,不需要关注软件产品的内部结构和处理过程。
传统的软件功能测试一般采用手工测试,由测试人员根据需求说明书对软件功能进行逐项测试,并判断是否符合要求。但是现代软件趋向大型化、高复杂度,手工测试已经不能满足现代软件功能测试的要求。
软件功能自动化测试就是通过测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动测试,它是软件测试的一个重要组成部分。自动化测试可以完成手工测试难以完成的工作,减少测试开销,提高测试的工作效率[1-3]。一个自动化测试框架就是一个由假设、概念以及为自动化测试提供支持的实践的集合[4]。在自动化测试框架下,采用自动比较技术,可以自动完成测试用例执行结果的判断,从而避免人工比对存在的疏漏问题。正确、合理地实施自动化测试,能够快速、全面地对软件功能进行测试,从而提高软件质量,节省经费,缩短产品发布周期。
借用外部成熟的测试工具,吸取成功的测试自动化经验,可以在测试实施过程中降低技术难度、缩短测试自动化开发周期[5]。目前,主流的软件功能自动化测试工具有IBM公司的Rational Functional Tester(简称RFT)、惠普公司的QuickTest Professional(简称QTP)等。
软件功能自动化测试一般包括制定测试计划、搭建测试环境、设计测试用例、编写测试脚本、执行测试、分析测试结果等过程。其流程如图1所示。
图1 软件功能自动化测试流程图
本次测试针对运行中的电能计量系统主站新增以及需求变更的功能。
4.1 业务需求分析
业务熟悉阶段通过对电能计量系统主站的各个模块结合文档和实际系统来熟悉系统业务,电能计量系统主站主要功能是对电能量数据进行收集,并对采集的数据进行管理、统计和分析,因此,在熟悉业务的过程中要重点关注以下要素:模块功能、信息统计分析的数据来源、统计条件参数、每个统计功能的统计算法、统计对象。
实施过程中测试团队根据系统的业务特点,对其进行模块的划分,统计对象、统计参数、统计算法的整理,形成业务需求整理列表,在需求分析阶段对系统不熟悉或者不确定的功能点或统计算法进行整理,形成问题列表,并对问题列表进行解答,从而完善需求分析。
4.2 业务场景设计与评审
在进行自动化功能测试的时候,项目会根据其实际情况及特点选择部分业务需求实现自动化,以最大发挥自动化功能测试优势和价值,因此对于测试场景的选取就显得比较重要。以下是选择测试场景可采用的一些基本依据:系统核心业务、多种条件组合导致测试方法很多的业务、数据条件不同导致流程分支不同的业务、使用频率较高的业务。
在具体设计测试场景的过程中,针对以上功能模块进行业务的整理后,对系统的功能点进行重要级别的划分,对是否为核心业务、能否通过自动化测试工具进行自动化测试减轻测试工作量等方面进行分析和整理,并且对选取的业务场景分别组织内部审核和外部评审。
4.3 测试用例设计与评审
根据评审修改后的业务场景设计测试用例,分析整理每个业务场景的功能、数据来源、统计算法、需要验证的功能。
通过对每个业务场景功能的分析和整理,针对每个业务场景的功能特点,设计每个测试用例的测试策略(等价类划分、边界值分析、因果分析等),整理需要参数化的参数、需要验证的验证点及其统计算法、执行每个步骤的前提条件、操作步骤、输入数据、预期结果以及参数化时数据准备的相关要求。
在设计测试用例过程中对于每个脚本具体的功能点的统计算法、涉及的表/字段之间的关系,通过整理和分析形成每个验证点的基准,由于大多数的业务是统计算法,因此统计算法的正确性直接决定了预期结果的准确性,从而影响着判断系统实际结果的准确性。在设计测试用例的过程中确保了需求的覆盖率,测试用例设计为后面的脚本录制工作做好了铺垫。
4.4 脚本录制与完善
4.4.1 测试环境
测试环境的准备过程包括被测系统的环境部署以及数据库的部署和准备、测试工具的安装并确保能正常运行。在执行的过程中要确保被测系统及测试环境数据库的独立性,而且在执行功能自动化测试之前,要确保系统基本稳定。
4.4.2 测试脚本录制和编写
通过自动化测试工具来录制或手动编写测试脚本,录制完成后调试测试脚本,确保脚本在执行测试的时候不会影响执行效果,并且脚本的录制一定要结合业务流程的梳理、依据,对流程所涉及的页面进行整理分析,通过脚本录制或编写的方式整理测试脚本库。
4.5 测试执行
利用自动化测试工具执行测试,以检测系统的实际结果与预期结果是否一致,从而判断测试的通过与失败。在执行测试的过程中应对每个测试用例、每行测试数据都全部执行到位,确保测试用例的执行率。在执行测试的过程中可能由于脚本的不完善导致回放失败,这时就需检查脚本的正确性,修改脚本、调试脚本、回放测试,这个过程可能会存在多次迭代。
4.6 测试实施应用
应用以上介绍的计量主站功能自动化测评技术分析成果,将电能计量系统的数据导入测试数据库,并搭建相同版本的系统进行功能自动化测试。根据对系统业务需求的分析,选取5个可实现自动化测试的核心应用场景分别设计测试用例,并整理了测试策略需要参数化的参数分别进行测试的脚本录制和编写。表1为5个核心业务场景选取依据以及测试策略。
表1 业务核心场景选取依据及测试策略
对表1中的业务场景分别指定测试用例,并执行测试,在测试执行过程中对每个测试脚本的每行测试数据做到了全面测试。测试分两轮进行,在对第一次测试失败的测试数据进行了脚本和算法的检查后进行第二轮测试。所有测试用例全面执行了测试,覆盖率达到了100%。
第一轮测试在所选择的5个测试场景中,有1个测试用例执行时有失败的记录,为表1中的第一项“应用分析”中的电量统计(表2),通过分析发现是由于此次的测试环境数据库数据不是完整的数据,从而导致了测试失败。针对修复缺陷后的版本,利用自动化脚本进行回归测试,经过回归测试,用例全部通过验证。
表2 测试失败脚本分析
在功能自动化测试实施过程中测试人员以测试流程为指导来开展工作,通过对本次项目的研究过程的分析,对业务场景的分析及脚本编制,为测试的执行奠定了基础。在测试执行和结果分析阶段,我们事先列好每个测试脚本的执行记录表格,逐个测试、逐个记录分析测试结果,确保测试用例的全面测试。通过两轮的测试保障,测试用例全部通过。测试结果分析表明,自动化测试在准确性方面可以达到与手工测试同样的效果,测试结果可靠,如果应用推广开来将对后续的测试正确性以及效率有较大的提升。
[1](美)达斯汀,(美)加瑞特,(美)高夫.自动化软件测试实施指南[M].余昭辉,范春霞,译.北京:机械工业出版社,2010
[2]邓正宏,高逦,郑玉山.面向对象自动化测试框架的研究与设计[J].微电子学与计算机,2005(2)
[3]周娟.基于Web功能测试的自动化框架实现与应用的研究[D].长沙:中南大学,2009
[4]朱菊,王志坚,杨雪,等.基于数据驱动的软件自动化测试框架[J].计算机技术与发展,2006(5)
[5]张斌.精通QTP与自动化测试框架设计实战[M].北京:电子工业出版社,2010
2014-06-03
王和栋(1984—),男,海南文昌人,在读硕士研究生,研究方向:电能计量自动化、企业管理。