Software Engineering and Applications
Vol. 12  No. 01 ( 2023 ), Article ID: 61851 , 10 pages
10.12677/SEA.2023.121013

自动化测试技术在石油测井软件中的应用

柳宁花*,周正志,林南粤,赵长锋

中国石油集团测井有限公司北京测井技术开发分公司,北京

收稿日期:2023年1月21日;录用日期:2023年2月17日;发布日期:2023年2月24日

摘要

针对石油测井采集软件WellScope功能和系统架构不断演进的发展趋势以及演进过程中测试工作面临的难题,本文通过引入自动化测试工具UFT,采用场景驱动、关键字驱动、数据驱动和脚本驱动相结合的自动化测试设计技术,研发了一套适用于石油测井领域的软件自动化测试系统,并重点介绍了该自动化测试系统的研发实现过程。对该系统的实际运行效果进行分析,得出自动化测试技术极大地提高了软件测试工作效率,保障了产品软件质量的结论。

关键词

UFT,WellScope,测井,回归测试,自动化测试框架

Application of Test Automation Technology in Petroleum Logging Software

Ninghua Liu*, Zhengzhi Zhou, Nanyue Lin, Changfeng Zhao

Beijing Logging Technology Development Branch of China National Logging Co., Ltd., Beijing

Received: Jan. 21st, 2023; accepted: Feb. 17th, 2023; published: Feb. 24th, 2023

ABSTRACT

In view of the development trend of the continuous evolution of the function and system architecture of the petroleum logging acquisition software WellScope and the difficulties faced by the testing work in the process of evolution, this paper proposes a set of software automated testing methods applicable to the petroleum logging field by introducing the automated testing tool UFT, innovatively adopting the automated testing design technology that combines scenario-driven, keyword-driven, data-driven and script-driven. The research and development process of the automatic test methods is also introduced. Through the analysis of the actual operation effect of the program, it is concluded that the automated testing technology greatly improves the efficiency of software testing and ensures the quality of software.

Keywords:UFT, WellScope, Logging, Regression Testing, Automated Testing Framework

Copyright © 2023 by author(s) and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).

http://creativecommons.org/licenses/by/4.0/

1. 引言

基于网络的测井数据采集软件WellScope,是公司自主开发的新一代测井软件,该软件包含裸眼井测井、生产井测井、地层测试、射孔取芯等测井服务,集成了上百只各类型的测井仪器 [1] 。近年又增加了旋转导向数据采集服务、防卡解卡施工设计服务,其基础的测井平台也面临着架构调整和功能改善,例如底层需要全面支持多维数据进行存储,采集功能和显示功能需要进程分离等。总之,WellScope软件的集成规模在扩大,版本也在不断迭代更新,测试的任务量日趋繁重,光靠手工测试无法在规定时间内完成软件全部功能的验证测试,而专注于新增功能的测试,又难免会遗漏由于新功能的加入引发的原软件功能的缺陷,甚至会造成无法挽回的经济损失,如何在开发推进过程中继续保持版本的质量对整个团队的测试控制能力提出了持续考验。

为解决测试人员不足,测试任务繁重,测试迭代周期长,软件版本质量无法保证等实际问题,本文通过引入软件自动化测试工具UFT,综合运用各种软件自动化测试技术,研发了一套适用于WellScope软件的自动化测试系统。

2. 自动化测试概念

自动化测试是借助于测试工具、测试规范,从而部分或全部替代人工进行测试及提高测试效率的过程。相对于手工测试而言,其主要进步在于自动测试工具的引入,借助于自动测试工具来各种管理测试活动,进行测试脚本的开发与执行,验证测试需求等。

测试活动的自动化在特定情况下可以获得很大的复用价值,尤其在自动测试的测试用例开发和组装阶段,测试脚本可以被重复调用,可以根据测试的设计方案自由组合,从而获得符合实际应用需求的各种测试场景组合。因此,采用自动化测试可以获得很高的回报 [2] 。

软件测试自动化,是一项让计算机代替测试人员进行软件测试的技术,是把以人为驱动的测试行为转化为机器执行的一种过程,它可以让测试人员从繁琐和重复的测试活动中解脱出来,专心从事有意义的测试设计等活动。

自动测试具有以下优点 [3] :

1) 可以在较少的时间内运行更多的测试,测试频度比手工测试高很多;

2) 能执行一些手动测试困难或不可能做的测试,主要指性能/压力测试;

3) 更好地利用时间和计算机资源,利用整夜或周末空闲的设备执行自动化测试;

4) 将烦琐重复的任务自动化,让测试人员投入更多的精力设计出更多更好的测试用例,提高测试准确性和测试人员的工作积极性;

5) 自动测试具有一致性和可重复性的特点,而且测试更客观,提高了软件的信任度。

然而,自动化测试也存在着一定的局限性 [4] - [9] :

1) 自动化测试不能完全取代传统的手工测试,不可能自动化所有的测试。如测试只是偶尔执行,或待测系统经常变动、不稳定,测试需要大量的人工参与(比如:插入Ukey认证)时,就不适宜采用自动测试。

2) 自动化测试工具本身不具有想象力,只是按命令执行,不具备测试人员的主观能动性和创造性思维,不能处理未明确定义的意外事件。

3) 自动化测试在刚开始执行时,工作效率并不一定高于手动测试,只有当整个自动测试系统成熟,且测试工程师熟练掌握测试工具后,工作效率才会随着测试执行次数的增加而体现出来。

4) 自动测试的成本可能高于手工测试。自动测试的成本大致有以下几个部分组成:自动工具成本、测试脚本开发成本、自动测试运行成本、自动测试维护成本和其他相关任务带来的成本。被测应用的修改带来测试脚本部分或全部修改,同步会增加测试维护的人力成本。

适合做自动化测试的软件,一般具有如下特征 [10] :

1) 需要长期开发和运行维护,核心功能稳定;

2) 交互操作主要是界面操作,主要验证功能的稳定性;

3) 运行规则相对简单,结果验证不需要人类感官辅助。

总体来说,在测试领域,自动化测试不可能完全替代手工测试,它是手工测试的一个灵活的补充,在被测应用满足某些条件下,自动化测试才能体现出它的效率优势。

3. 石油测井软件WellScope介绍

基于网络的测井数据采集软件WellScope,是公司自主开发的新一代测井软件。它遵循软件开发和软件过程控制规律,采用完全的面向对象设计方法,利用微软的.Net Framework平台进行自主开发。它测井传输速率高、集成化程度高,具有操作简单、功能全面等特点,在海内外测井市场获得了用户的认可。

传统的测井采集软件往往仅支持单一测井服务,不同测井服务需要分别开发,同时在使用操作习惯上存在巨大差异,而Wellscope测井软件在不同的服务模块间使用了统一的数据模型,统一的数据采集流程,一致的显示架构、数据存储和处理架构;不同的服务模块使用统一的单位管理服务,消息管理服务。某一具体的测井服务在符合软件统一架构要求的前提下,仅需关注本服务具体的业务逻辑,这大大提高了软件系统的通用性和新模块开发的效率,使得现有系统的功能扩容和升级变得轻而易举。

目前,WellScope测井软件系统支持不同种类的测井和技术服务,能够提供如裸眼井测井,生产井测井,井壁取芯,过钻具仪器测井等业务,也能够提供旋转导向数据采集服务,测井防卡解卡施工设计决策服务,还具备测井数据后期回放和测后处理等功能,是一款功能完备、业务支撑能力强大的测井软件系统,并且系统仍在不断地增加新的业务服务能力,WellScope测井软件总界面如图1所示。

WellScope测井软件系统,从功能上划分了Well Logging (测井采集)、Data Relog (测井回放)、Telemetry Monitor (谣传诊断)、System Configration (系统配置)、File Manager (测井文件管理)、Picture Manager (测井出图管理)、CGM Manager (矢量图管理)、Database Manager (数据库管理)、Data Editor (数据编辑器)、Data Splicer (数据拼接器)、PAAT Data Editor (声波数据编辑器)、Data Formal Converter (数据格式转换器)、Environment Correction (环境校正)等13个可独立运行的模块。

基于WellScope的底层设计优势,经过分析,除了测井采集模块Well Logging和 Telemetry Monitor需要实际配接硬件进行操作外,其他功能模块均具备自动化测试的条件,经过调研分析和工具选型,决定选用HP公司的UFT (Unified Functional Testing)工具对WellScope软件进行自动化测试。

Figure 1. GUI of WellScope acquisition software

图1. WellScope采集软件总界面

4. UFT自动化测试工具

Unified Functional Testing (UFT)是HP公司的一款自动化测试工具,是早期的QuickTest Professional (QTP)自动化测试工具的升级版本。UFT目前可以提供对象识别和智能图像识别模式,在各类型插件的配合下,基本可以识别C#语言开发的大多数控件。用户可以直接录制屏幕上的操作流程,自动生成功能测试用例。测试脚本开发人员可以根据需要增加一些扩展功能,通过在脚本中增加或更改测试步骤来修正或自定义测试流程。UFT 11.5是项目组目前正在使用的自动化测试工具版本,提供强大录制和脚本编写功能,它的主要优势有:

• 支持关键字视图和专家视图模式,满足自动化测试新手和中高级技术人员的开发需求;

• 支持测试对象模型管理,通过录制或对象侦测方式灵活添加存储管理被测程序的可测对象;

• 支持描述性编程和对象编程,便于对自动化测试用例做进一步的功能增强;

• 支持测试结果验证功能,提供checkpoint检查点;

• 支持测试报告生成,测试效果一目了然。

5. 自动化测试实施

自动化测试实施本质上是一种软件开发过程,为了科学地开展自动化测试,我们按照软件开发规律将软件测试自动化的过程分为了4个阶段,明确了每个阶段的主要任务,如图2

5.1. 自动化测试需求

WellScope采集软件,已经在国内国外应用于生产环境,每天测井会产生大量不同类型的测井数据,这些测井数据都可以通过软件的回放和测后处理模块进行后期处理,是自动化测试的输入数据,同时由于WellScope软件的统一底层对象设计模式,我们各不同类型的测井服务要复用同一套数据处理流程和逻辑,所以测试对象也应该独立于处理流程,自动化测试本身的目的就是为了解决重复性操作性劳动的问题,所以测试用例的设计应该满足可复用的要求。

自动化测试在WellScope采集软件中的应用需求如下:

1) 实现测试数据的统一管理,将测试数据从测试脚本抽离出来;

2) 实现测试对象的统一管理,所有的控件对象都是独立于测试脚本的;

3) 实现测试脚本的模块化和封装性,提高测试脚本的可维护性。

Figure 2. Automation test implementation plan

图2. 自动化测试实施规划

自动化测试框架在WellScope采集软件中运行需求如下:

1) 测试数据驱动脚本运行;

2) 测试用例灵活配置;

3) 封装公共函数,便于用例间重用;

4) 测试运行结果自动推送;

5) 方便实现,不会因引入自动化框架而增加额外工作量。

5.2. 自动化测试设计

考虑到自动化测试的可重用性和可移植性需求,把可独立运行的软件功能模块的待测对象通过对象侦测器统一侦测添加到对象库中,并导出为对象库文件统一管理,从而避免待测对象的遗漏。通过引入本地对象库文件的方式,测试人员可以快速开展测试用例的脚本开发,在扩展更多测试用例的时候,直接关注用例的业务实现即可。

一些常用的文件读取函数,通用模块的操作等,通过VBScript脚本文件提取出来,作为测试开发的工具库,大大加快了测试用例的开发进度和效率。

基于数据驱动脚本的运行模式,在设计测试用例的时候,要充分考虑用例的可重用性,UFT对每个用例(Action)提供了输入输出参数的定义,用例设计时要充分考虑测试步骤的功能独立性,就能保证测试用例的可重用性和模块化。如图3,一个测试用例的开发需要依赖的外部公共模块有:场景恢复库、测试对象模型库、公共函数库、测试配置信息库、输入参数和输出参数(数据)。

5.3. 脚本开发

脚本的快速开发前期可依赖于UFT提供的录制功能,运行测试程序,按照事先设计的测试用例把测试步骤用录制的模式记录下来,从而获得第一手的脚本,但是,这一脚本是无法满足我们测试的需求的,需要进一步的进行脚本优化,比如:硬代码(hard code)提取出来放到参数中,操作流程中遗漏的分支补充进来,设置操作步骤的逻辑流转,还有加入重要检查点的checkpoint等等。

Figure 3. Test case dependencies

图3. 测试用例依赖关系

测试用例的开发基于VBScript脚本语言,语法相对简单易学,开发场景如图4,在此不作详细介绍。

Figure 4. Test case script development

图4. 测试用例脚本开发

脚本积累一定量后,将测试对象抽取并进行集中统一管理,便于用例开发的复用,如图5

Figure 5. Object repository management

图5. 对象库管理

脚本开发不仅指UFT录制的测试脚本的完善,还包括开发工程中常用函数库的积累,比如测试数据读写、测试日志函数、邮件收发函数等等。

测试用例设计时已充分考虑到测井数据的实际应用场景,将每个独立功能进行拆分,通过对测试用例的灵活组合,结合相应的测井数据应用场景驱动,完成不同测井业务的测试自动化过程,如图6所示。

Figure 6. Flexible combination and configuration of test cases

图6. 测试用例灵活组合配置

5.4. 异常处理

在本次自动化测试实施过程初期,脚本运行过程中,频繁出现的异常主要有:

1) 程序报空对象异常(Object reference not set to an instance of an object);

2) 未处理的异常(Unhandled Exception);

3) 内存溢出(Out Of Memory Exception)。

出现这些异常时,一般情况下,处在当前测试用例的被测程序无法再正常运行下去,需要特殊处理,清理和恢复测试环境和被测应用,以便其它测试用例按照计划继续执行下去,所以针对这些异常,我们开发了异常处理模块,及时记录异常的出现上下文步骤、测试运行数据,应用操作名称等,并记录到测试报告中,为进一步的诊断,解决问题提供有效信息,同时完成测试环境的清理和被测应用的进程处理,不让该异常影响到接下来的自动化测试用例的执行,如图7所示。

Figure 7. Exception handling setting

图7. 异常处理配置

藉由异常处理模块的开发和日志记录,我们能够发现WellScope测井软件中很难复现的偶发性的缺陷,比如成像仪器波形曲线编辑内存溢出问题,并修复这种深层次的缺陷。

6. 应用效果

在研发完成这一套自动化测试框架和测试脚本后,经估算,手工完成每日回归涉及的测试用例,两个经验丰富的测试人员需要3个完整的工作日,而机器完成仅需2个小时左右,测试效率得到了大幅度提高,从而更快地发现和修复软件的缺陷。

后期,通过把手工测试过程中发现的缺陷,加入到自动化测试中进行版本验证,可有效规避重复性的错误,使软件最终的缺陷数量越来越收敛(见图8),测试人员可以专注于新开发的功能和业务的测试和设计,不用担心新的功能的引入对旧有功能造成影响。

Figure 8. Bug convergence trend chart

图8. 缺陷收敛趋势

自动化测试采用测井数据驱动模式,测试人员只要建立测试数据池,不断往数据池里积累测试数据,让自动化脚本去运行配置的测试数据,能够发现手工测试无法覆盖的比较隐蔽的软件缺陷。随着软件版本的迭代更新,一些早期测井数据的不兼容问题,大型成像仪器数据处理异常问题,在自动化测试中被发掘出来,使得软件更加健壮,质量更加可靠。

目前,WellScope采集软件每天进行最新版本程序的构建,结合一系列自动化测试,确保最新签入代码没有错误。每日回归测试在整个开发和测试过程中是非常重要的一环,是确保WellScope采集软件版本迭代质量的重要保障,图9为邮件发送的每日回归测试的测试报告。

Figure 9. Daily regression test report

图9. 每日回归测试报告

7. 结论

通过搭建自动化测试框架,运用UFT自动化测试工具的关键字驱动和脚本编程技术,采用场景驱动和数据驱动相结合的测试用例设计理念,研发了一套适用于测井采集软件WellScope的自动化测试系统,建立包含公共函数库、测试驱动模块、测试用例配置模块、容错处理及场景恢复模块、邮件发送模块、测试数据池等功能模块的测试体系,从而可以灵活驱动测试用例,配置测试数据,加大测试的覆盖面,增强了测试运行的健壮性。

通过研发这套自动化测试系统,大大节省了软件人工测试的工作量,提高了工作效率,让测试人员将精力更多投入测试用例的设计以及必要的手工测试当中,有力保障了WellScope采集软件平台不断优化、迭代更新的研发过程。

后期,将对该自动化测试系统进行持续优化,方便该系统服务于其他软件项目的自动化测试,积聚宝贵的测试资产。

文章引用

柳宁花,周正志,林南粤,赵长锋. 自动化测试技术在石油测井软件中的应用
Application of Test Automation Technology in Petroleum Logging Software[J]. 软件工程与应用, 2023, 12(01): 124-133. https://doi.org/10.12677/SEA.2023.121013

参考文献

  1. 1. 肖加奇, 陈文轩, 白庆杰, 等. 新一代网络化测井系统LEAP800 [J]. 石油仪器, 2012, 26(1): 26-29. https://doi.org/10.3969/j.issn.1004-9134.2012.01.010

  2. 2. 邓敏, 郑人杰. 软件过程改进与软件过程支撑工具研究[J]. 计算机工程与应用, 2001(7): 39-41.

  3. 3. 张婷. 基于软件测试技术的软件质量保证研究[D]: [硕士学位论文]. 成都: 中国科学院成都计算机应用研究所, 2006.

  4. 4. 陈雷. 软件测试实践之缺陷跟踪管理[J]. 程序员, 2004(12): 58-62.

  5. 5. 陈能技. QTP 自动化测试实践[M]. 北京: 电子工业出版社, 2008.

  6. 6. 杨晨. 软件自动化测试方法的分析及应用[J]. 现代工业经济和信息化, 2022(1): 167-168, 171.

  7. 7. 干晓鸣. 软件自动化测试的合理应用[J]. 计算机应用与技术, 2010, 27(8): 172-174, 214.

  8. 8. 孟黎歌, 朱凌燕, 汪彩云, 王婷婷, 杨梦露. 地震勘探软件持续测试框架的研究与应用[C]. 2022年中国石油物探学术年会论文集(下). 2022: 616-619. https://doi.org/10.26914/c.cnkihy.2022.039617

  9. 9. 方垒, 边涛. 工业控制软件平台自动化测试技术研究与应用实践[J]. 自动化博览, 2022, 39(5): 48-51. https://doi.org/10.3969/j.issn.1003-0492.2022.05.025

  10. 10. 崔国华, 张皎丹. 软件自动化测试方法的研究与应用[J]. 今日自动化, 2022(3): 104-106.

  11. NOTES

    *第一作者。

期刊菜单