基于数据库的自动测试系统(ATS)软件

2024-10-09 版权声明 我要投稿

基于数据库的自动测试系统(ATS)软件(通用9篇)

基于数据库的自动测试系统(ATS)软件 篇1

基于数据库的自动测试系统(ATS)软件

介绍了一种自动测试系统(ATS)软件结构,在该结构中,应用数据库管理测试数据,并通过测试数据驱动测试系统工作.实践证明该软件结构具有一定的.通用性和可扩展性.

作 者:孟文龙 陈明  作者单位:西北工业大学,自动化学院,陕西,西安,710072 刊 名:测控技术  ISTIC PKU英文刊名:MEASUREMENT & CONTROL TECHNOLOGY 年,卷(期): 23(9) 分类号:V246 关键词:数据库   自动测试系统   VXI  

基于数据库的自动测试系统(ATS)软件 篇2

随着网络通信技术和信息技术在各个领域的广泛应用, 信息系统中交换数据的规模也越来越大, 系统平台及数据的异构性也大大增加。一方面, 数据分布广泛、管理自治和异构性强的特点严重阻碍了各个数据源之间的数据交换;另一方面, 要求各个系统能够进行数据交换的需求越来越多。然而长期以来, 由于信息化系统建设规范 (标准) 滞后或缺失, 造成我国各级各类信息化系统难以互通, 资源难以共享。这些异构的资源信息系统形成的一个个难以逾越的信息 (资源) “孤岛”, 使得大量的信息资源不能充分发挥应有的作用, 效率低下, 已经成为阻碍我国信息化建设进一步发展的最大障碍, 已经较严重地制约了各类组织的建设与发展。如何提高和保证信息系统的数据交换的质量逐渐成了软件测试领域致力解决的关键问题之一。

一、相关工作

就被测系统来说, 完成一个完整的软件测试项目需要耗费非常巨大的工作量。手工测试时间长、麻烦、容易出错, 测试数据或测试用例的设置容易出错, 测试文件不足。因此纯手工测试已经不适应目前的软件行业的发展, 因而对于许多操作是重复性的、非智力创造性的工作, 应用自动化测试, 以提高整个测试工作的质量、减少成本、缩短周期。软件自动化测试技术主要分为基于数据驱动自动化测试和基于模型自动化测试。数据驱动的自动化测试是针对开发与测试之间紧密耦合问题提出的测试方法。通过建立测试与开发定义的软件。元数据的关联——元数据映射表在测试与开发之间建立松耦合关系, 可以减少测试脚本调试的工作量, 更好地实现自动化测试。基于规范的测试[1,2]要求根据功能规范和设计规范产生测试用例, 针对相应的功能属性和设计属性进行测试, 并以相关属性是否得到了充分测试作为测试充分性准则[3], 如果测试充分性准则确定的相关属性在测试过程中都得到完全的执行, 则认为测试是充分的。基于模型的软件测试[4,5]属于基于规范的软件测试范畴。模型是一种抽象, 片面地描述被测试系统的某方面的行为。从这种模型中生成的测试用例是跟模型同等抽象层面的功能测试, 这种测试集被称作抽象测试集。抽象测试集不能被直接执行, 只有它派生的模型可以直接与系统交互的测试才能执行。

数据交换是指数据在不同的信息实体之间交互的过程。目前, 数据交换测试主要以手工测试为主, 辅助针对某一系统的自动化测试工具。手工测试主要将据用户操作手册、需求分析文档、软件开发规范作为测试的依据。测试方法主要采取场景法。由于手工测试带有更多的主观性, 对测试人员的依赖较强。对于那些需要一定的测试经验和洞察力才能完成的测试, 手工测试比较合适。但是, 对于格式校验, 符合性测试, 性能测试, 手工测试就暴露出其弊端, 不仅不具备经济性, 更无法达到充分性测试的标准。根据数据交换的特点, 基于数据驱动的软件测试方法和基于模型的软件测试方法都不太适合于基于数据交换的软件测试整个阶段。因此, 本文将根据数据交换软件测试阶段的特点结合基于模型的软件测试和基于数据驱动的软件测试的特点提出了基于数据交换模型的软件自动化测试框架。

二、基于数据交换的软件测试

a) 数据交换模型

数据交换[5]是指数据在不同的信息实体之间交互的过程。信息实体通常是相对独立的软件系统, 作为数据交换的参与者, 其数据交换行为可以概括为数据生成、数据传输、数据处理三个动作。由于不同的信息实体所处的业务环境、系统需求、软件规范、采用技术、工作流程等都存在着很大的差异, 所以其表现出的数据交互方式也不尽相同。不同的数据源可能会使用不同的数学模型、查询语言或概念表达模式来描述同一个充满语义的客观世界。系统异构是阻碍数据交换的主要因素, 具体包含平台、结构、语法和语义四个方面的异构。尽管有这些不同, 但是表现的方式主要基于如图1所示方式:

b) 基于数据交换的测试模型

数据交换[6]是指数据在不同的信息实体之间交互的过程, 它的核心对象是数据元素, 数据元素描述规则共同影响着测试模型。同时用户可以根据这些描述规则指定测试的需求, 测试规划人员根据需求来规划测试需求。于是测试规划人员就必须了解哪些描述规则是需要测试的, 哪些是不需要测试的, 进而规划测试。

数据交换中的数据元素可以包含一个或多个数据项。数据元素的描述规则是由其数据元素中的数据项的数据类型、数据项出现的规则以及数据元素的约束属性构成。一般而言, 基本的数据类型包含字符型、实型、整型 (有符号和无符号) 、枚举、字符串以及日期等类型。数据元素及其数据项的表示规则描述的是数据元素及其数据项出现的次数、次序和表示规则, 如规定数据项能够以任意顺序或顺序出现, 每个数据项可出现的次数为0到任意次数。对于字符串类型来说, 可以定义基于正则表达式的表示规则。数据元素约束属性主要指的是数据元素的数据项约束属性描述, 整型和实型都是属于值域范围的, 而像字符型、字符串型以及日期类型都是属于列表项目的。因此, 对于有值域范围的数据类型而言, 它们具有最大值和最小值约束属性, 且对于实数类型的数据而言, 可以有指定允许最大小数位数的属性。而对于属于列表项的数据类型而言, 它们具有最大长度和最小长度约束属性。

因此, 数据交换的内容和过程来看, 数据交换的测试内容主要表现为三个层面。

第一个层面是数据结构, 这一项主要测试的是数据交换主体的所要交换数据的数据结构是否相一致或者是符合已制定的标准;

第二个层面是在数据结构一致性的基础上检测同一标识的数据的数据类型是否相一致或者符合已制定的标准;

第三个层面是检测数据的约束属性, 包括数据长度 (固定长度、最大长度) 、数据精度 (小数位数、总位数) 、数据出现的次序以及数据重复出现次数等, 是否相一致或者符合已制定的标准。

三、基于数据交换模型的自动测试框架

软件自动化测试[7]可理解为测试过程自动化和测试结果分析自动化。测试过程的自动化指的是不用手工逐个的对用例进行测试。测试结果分析自动化指的是不用人工一点点去分析测试过程中的中间结果或数据流。软件自动化测试就是模拟手动测试步骤, 执行用某种程序设计语言编制的测试程序, 控制被测软件的执行, 完成全自动或半自动测试的过程。

a) 基本框架

在3.2节中讨论了数据交换的测试模型, 即测试的三个方面。就三个方面而言, 可以分为两个阶段, 测试模型的设计和测试数据的生成。测试模型是测试需求的直接映射:第一, 它反映了用户对于数据交换中数据约束的考虑;第二, 它反映了数据交换中测试用例的执行步骤和方式。测试数据主要依据测试模型而生成, 所生成的测试数据不能超出测试模型所规定的范围。因此, 基于数据交换的软件自动化测试也包含两个方面:基于模型的软件自动化测试和基于数据驱动的自动化测试。基于模型的软件自动化测试主要是采用半自动化方式, 人工参与部分主要在模型的设计, 需要测试规划人员指定测试的内容和范围, 全自动化测试部分主要是数据交换测试脚本的生成。基于数据驱动的软件自动化测试主要在数据生成阶段, 主要通过读取数据规范格式文件[8] (如:XSD格式文件) , 在限定的测试模型下, 按照等价类和边界值生成无效类和有效类测试数据[9], 并以文件形式 (如:XML格式文件) 保存。

一般而言, 一个完整的测试框架包括以下四部分:测试需求的输入、测试用例的设计 (分为两个部分, 抽象测试用例和实例化测试用例) 、测试用例的执行和测试结果的输出。因此, 本文提出的框架主要是基于该四个部分, 如图2所示:

◆数据交换规格说明书:该规格说明书是数据交换的信息主体根据双方数据匹配需求制定的规则。因此该规格说明书描述了数据交换的抽象的数据属性测试需求;

◆数据模板:数据模板定义了数据交换的信息主体双方所要交换的数据的数据结构。因此, 它描述了数据交换的明确的测试需求;

◆模板处理器:模板处理器主要是对于数据模板进行分析处理, 生成与其相关的元数据, 元数据主要是描述了数据交换中数据的结构及其约束属性;

◆模型设计器:模型设计器是根据我们提出的数据交换测试模型实现的;测试规划人员通过该设计器定制检测的项目;

◆用例自动生成引擎:用例自动生成引擎主要是根据模型设计器所定制的检测项目和模板处理器获得的元数据进行解析, 从而自动生成测试用例集, 并加以存储;

◆测试用例优化:测试用例优化主要是对生成测试用例集的规模进行控制, 利用正交试验的原理减少测试用例的生成但不会降低测试用例的覆盖度;

◆测试用例执行引擎:测试用例执行引擎主要是根据数据交换的特点自动设计测试逻辑, 根据测试逻辑执行测试自动生成引擎所生成的测试用例;

◆测试结果自动分析:测试结果分析主要是通过收集测试用例执行过程中的测试结果进行统计分析, 获得最终测试目标完成度;

◆测试库:测试库有包含有四类数据。第一类是数据规范中数据层次关系表, 用于生成测试逻辑;第二类是数据约束属性表, 用于生成抽象测试用例;第三类是测试数据, 包含有基础测试数据;第四类是测试结果, 用于测试结果展现和回归自动化测试。

b) 数据交换自动化测试过程

在本文提出的框架中, 数据交换自动化测试主要是半自动化测试和全自动化测试相结合。模型设计主要是以半自动化测试为主, 而在测试用例生成和测试结果分析方面是以全自动化测试为主。面向数据交换的软件自动化测试过程如下:

S t e p 1:导入数据交换规范文件 (如:X S D格式文件) ;

Step 2:生成基础数据交换模型并存储到测试库中, 这些基础数据包括字符型、实型、整型 (有符号和无符号) 、枚举、字符串以及日期型;

Step 3:分析规范中对于数据间关系及其数据的约束属性生成元数据并存入到测试库中, 即抽象测试用例;

Step 4:按照用户的需求设计测试模型, 在测试库中保持已设计的测试模型, 是抽象测试用例一部分;

Step 5:依据等价类和边界值原则, 采用测试充分性准则 (由测试用例优化引擎控制) , 并通过基础数据交换模型实例化抽象测试用例, 生成可执行的测试用例, 包括测试数据和测试脚本, 测试脚本主要是根据数据交换规范中自底向上的数据层次结构生成的;

Step 6:根据测试脚本, 找到对应的测试数据, 执行测试;

Step 7:分析并记录出现问题的测试数据, 以及该测试数据中所对应的约束, 以便回归测试时使用 (确定回归测试的测试用例) ;

Step 8:统计分析测试用例执行过程中的测试结果, 并将测试结果保存和展现, 以供回归测试时使用 (确定回归测试的范围) 。

Step 2到Step 5主要的任务就是构建测试模型和生成抽象测试用例, Step 6和Step 7是测试用例的执行过程, 其中Step7还包含有测试结果的收集与Step 8不同的是Step 7是在测试执行过程中实现的。Step 8主要的任务是进行测试结果的统计并展现, 它和Step 7一起来确定回归测试的内容和范围, 对于回归测试来说也是非常重要的一步。

四、结论与未来工作

本文主要从数据交换的测试过程出发讨论了基于数据交换的软件自动化测试框架, 并详细探讨了框架中各个元素的实现方式。我们所提出的框架依据于自动化测试框架设计指导原则, 具有如下三个特点。首先, 所提出的自动化测试框架独立于数据交换测试过程的测试细节, 并根据多次实践证明能够涵盖绝大多数的数据交换的测试场景;其次, 该自动化测试框架具有很强的扩展性, 能够满足用户扩展的需求;最后, 该自动化测试框架能够为今后测试用例提供快速生成的途径。在今后的研究工作中, 我们将在本文提出的自动化测试框架下, 主要研究基于数据交换的测试用例自动生成技术, 实现测试用例执行的自动化以及测试结果的自动化展现。

参考文献

[1]RobertMPoston.AutomatingSpecification-BasedSoftwareTesting[M].IEEEComputerSocietyPress, LosAlamitos, CA, 1997.

[2]Stocks P and D Carrington.A Framework for Specificationbased Testing[J].IEEE Transactions on Software Engineering, 1996, 22 (11) :P 777-793.

[3]RA DeMillo, AJ Offutt.Constraint-Based Automatic Test Data Generation[J].IEEE Transactions on Software Engineering, 17 (9) :900-910, September 1991.

[4]颜炯, 王戟, 陈火旺.基于模型的软件测试综述.计算机科学, 2004, 31 (2) :184-187.

[5]Tretmans, G J and Brinksma, H.TorX:Automated Model-Based Testing[C].First European Conference on Model-Driven Software Engineering, December 11-12, 2003, Nuremberg, Germany.

[6]朱夏, 王茜.异构系统间数据交换模型的设计与实现[J].东南大学学报:自然科学版, 2006, 36 (2) :226-231.

[7]邓波, 黄丽娟, 曹青春.软件测试自动化[M].北京:机械工业出版社, 2003.

[8]A Bertolino, Jinghua Gao, E Marchetti, A Polini.Automatic Test Data Generation for XML Schema-based Partition Testing[C].Proceedings of the Second International Workshop on Automation of Software Test (AST'07) , 2007.

基于XML的软件自动化测试 篇3

关键词: 软件测试; 自动化; 自动化测试; 测试工具; 可扩展标记语言技术

中图分类号: TP 31文献标识码: Adoi: 10.3969/j.issn.10055630.2013.02.004

引言随着计算机应用日益普及和深化,用户对软件的需求越来越多,对软件要求也总是在不断变化[1]。AutoCAD产品在软件国际化的过程中,每次修改都需要对大量的测试用例进行反复测试,还要在不同语言版本的操作系统平台上测试,这就使得该项目的测试工作极为繁琐。软件自动化测试作为保证软件质量和可靠性的关键技术手段,正日益受到广泛的重视。但如何进行测试,如何提高测试的质量和效率,仍然是许多人深感困扰的问题[2]。根据对AutoCAD软件测试项目研究与实践的体会,介绍软件自动化测试技术的概述、基本过程和实现。结合实用的Silk Test工具以及可扩展标记语言技术(extensible markup language,XML),给出整个自动化测试框架。1自动化测试概述整个自动化测试平台包含两部分:测试平台和服务器平台。测试平台包含不同语言版本或者不同操作系统的平台;服务器平台主要含有源代码版本管理库和测试结果的关系数据库[3]。一个规范化的软件自动化测试过程通常包括以下几个基本的测试活动:(1)自动化测试用例选择对于Silk Test工具而言,它对Java的支持很好,所以如果是多模块、多软件测试,首先要尽量选择和Java相关的部分来设计用例[4]。(2)自动化测试环境准备开启windows远程控制,设置文件的扩展名可见,安装待测试AutoCAD系列产品,安装测试过程所需的自动化测试软件(Silk Test软件)等等一系列配置。光学仪器第35卷

第2期商林霞,等:基于XML的软件自动化测试

(3)自动化测试脚本开发Silk Test自动化测试工具支持简单的捕获同放功能,但是这并不是自动化测试。测试工具直接录制产生的脚本是不能直接使用的,所以对于利用Silk Test工具编写的脚本来说,通常是通过捕获对话框图形,抓到测试对象。然后利用Silk Test所提供的4Test语言来添加函数、控制结构等[5]。 (4)自动化测试报告生成分析脚本运行的结果是否符合要求,决定每个用例自动化测试是否通过。对测试结果进行分类整理,生成测试报告。对于不能通过的测试结果要进行分析、记录和通报,方便相关的测试人员和开发人员了解测试结果。2自动化测试系统过程为了取得自动化测试效率和效益的最大化,现选取当前最适合自动化的测试用例。例如自动化测试脚本编写异常复杂的用例、运行自动化测试脚本很难发现软件缺陷的用例等等,都可以不运用自图1自动化测试系统实现框图

Fig.1Automation testing system

realization block diagram动化测试,而运用手动测试代替。同时在两个测试版本的间歇进行新的脚本的开发,当有了一定数量的脚本之后,就让脚本运行起来,发挥作用[6]。现只要保证自动化运行的环境足够充足,那么每个测试版本所需的时间就会足够短,节省了大量的人力。软件自动化测试是一个极为复杂的过程。在不同的测试环境下,测试的流程也会有所不同。一般都要根据实际情况,制定相应的测试流程。从软件测试对象出发,软件自动化测试系统实现框图,如图1所示。对于不同语言版本的本地化测试,测试过程大体是相似的。首先根据AutoCAD软件的功能特征选择和设计测试用例,然后就是由测试用例编写测试脚本,接着就是将这些测试脚本作为输入运行程序,将通过测试得到的结果与先得到的英语版本的结果进行比较,最后就是将两者的比较结果写成测试报告,软件开发者根据测试报告再决定对软件如何处理[7]。3系统实现

3.1脚本生成根据测试设计中的每个测试用例,利用 Silk Test软件进行编程,完成自动化测试脚本。脚本编写完成,进行不断地调试,直至完成的脚本符合测试用例验证的要求。编程语言是4Test语言,整个脚本的思路是基于AutoCAD软件对话框对象来实现的。函数中执行图像录像功能的语句,把整个自动化测试的windows平台界面上的执行过程录制下来,方便判断软件是否存在缺陷。针对每个自动化测试的测试用例,编写测试脚本。每个测试用例都有数个测试确认点,测试脚本要保证每个测试确认点都能被执行自动化测试,生成测试结果。测试脚本程序示例如下:

3.2结果信息读取软件本地化测试的对象是本地化的软件,需要在本地语言的操作系统上进行。以Windows中文语言操作平台为例,用Silk Test工具运行该对话框对应的测试脚本,生成XML的结果信息文件,该XML记录了该对话框上的所有信息:文字信息、控件位置信息、控件属性信息。图2中所示的AutoCAD软件对话框的XML部分信息示例如下:

在获取对话框信息之后,接着就要进行XML结果的分析。读取XML文件信息的程序片段为:

其中,利用XPath的路径表达式来选取XML文档中的节点或者节点集[8]。如要读取出对话框的标题信息“选择样板”,则正确的XPath语句是“/DIALOG/CONTROL[1]/Texts_LIST/@Texts_00000”。类似地,对话框上各控件的位置、大小、属性等信息都可获取到。如图2中的截断错误,都用红色线框标示出来,提升了后期错误分析的效率。

3.3结果对比国际化软件自动化测试包括软件国际化测试和软件本地化测试。软件的国际化测试一般是英语版本的测试,必须在本地化测试之前进行。首先进行国际化软件测试有助于判断软件国际化的设计程度,确定软件支持的国家区域,以及本地化是否容易[9]。本地化测试过程中,以源程序软件结果(标准英语版本)作为本地化软件的主要参考。运行英语版本和本地化版本的结果比较程序,本地化版本对话框都将与标准英语版本对话框的各项信息进行对比。经对比本地化软件存在缺陷时有三大类情况:(1)本地化软件对话框的某项XML信息(控件的位置、大小、属性等)是空值;(2)本地化软件对话框的某项信息值的长度和标准英语版本的不一致;(3)本地化软件对话框的某项信息内容(控件的位置、大小、属性等)和标准英语版本的不一致。结果比较程序的部分示例:

3.4结果分析在实际的项目测试过程中,每一步都有很具体的内容。例如在报告测试结果的同时,实际上还包含了对测试结果的统计和分析,测试工程师通过对结果进行分析来判断是否存在缺陷,将缺陷上传至Test Desk网站进行管理。表1对话框界面的典型错误类型

Tab.1Typical error type of dialog user interface

错误类型说明对话框的外观显示不正确控件相互重叠对话框的内容显示不正确控件、文本字段截断对话框的命令响应不正确控件的热键相重复对话框的外观布局不正确控件的位置、大小对话框的文本内容不正确本地版本的文本未翻译

软件测试的目的是尽可能早和尽可能多地找出缺陷,然后软件开发人员根据测试报告确定缺陷[10]。在获取所有的软件对话框对比信息之后,总结出的典型错误类型如表1所示。实践证明,采用自动化测试大幅度地减少了测试难度,并且能够确保测试结果满足如下标准[11]:(1)所有的测试脚本都已经执行;(2)所有的变化都已经及时地作了重新测试;(3)通过重新运行测试脚本,所有发现的错误和缺陷都已经被纪录而且得到解决。 4结论软件测试结果决定着软件产品质量的好坏。要在最短时间内完成软件测试工作,需要认真分析需求和研究设计说明书,做好自动化测试的每一步工作(测试计划、测试用例设计、测试开发、测试执行和测试

基于数据库的自动测试系统(ATS)软件 篇4

消息转发软件的测试内容大部分具有重复性的特点,如果单纯靠人工测试,不仅耗费较多的人力和财力去设计和执行测试用例,而且不能保证消息接口各个字段值内容的正确性。实现消息转发软件的自动化测试能够极大的减少测试的随机性和盲目性,减弱人为因素对测试过程的影响,极大的较少重复性的工作量,降低测试过程中出错的频率,因此消息转发软件的自动化测试体现了它的有效性和实用性。

1.消息转发软件自动化测试简介

消息转发软件自动化测试是整个军用系统自动化测试的一个缩影,作为一个军用软件系统的一个消息转发软件,对消息转发软件的正确性及测试充分性提出了很高的要求。众所周之,军事电子信息系统具有体系复杂、处理数据量大、人机交互频繁、评估结果直观等特点。所以为了满足要求,必须对消息转发软件进行详细而全面的测试。

消息转发自动化测试主要为了实现以下几方面的优点:提高消息转发软件测试工作率;较少消息转发软件测试的研发成本;完成消息转发软件手工测试难以完成的测试;消息转发软件的质量可信度极大增强;软件自动化测试可以多次进行重复性的测试。基于消息转发软件的自动化测试及测试用例生成系统能够很好的实现上述的几个方面优点。

2.消息转发软件自动化测试需求分析

消息转发软件实现的主要实现以下功能。

(a)头文件转换XML文件

头文件转化XML的过程分为单个文件转XML文件及多个头文件批量转换XML文件。能够将包含结构体或联合体的头文件按照ENUM值进行拆分转换为XML文件。

(b)解析XML文件以及输入消息参数

自动化测试软件可以解析XML文件,并且将解析结果存入My Sql数据库,测试人员在界面输入各个字段的合法值范围,软件自动根据设置的参数值范围及字段类型进行测试用例的脚本生成。关联应答消息,输入应答消息字段的合格判据。

(c)解析比对消息内容

自动化测试软件向消息转发软件发送激励消息,同时自动化测试软件记录应答时间,随时捕获收到的消息转发软件的应答消息,并对捕获到的应答消息进行解析,比对应答消息和发送消息的各个字段的参数值是否满足合格判据。

(d)自动化生成测试用例

根据测试人员设计的测试脚本,按照测试人员制定的测试策略,自动生成测试用例。同时,软件跟踪记录实际测试结果,随时写入数据库中,按照测试人员实际需求,可随时导出软件测试用例记录及自动生成每一轮次的软件问题报告单。

3.消息转发软件自动化测试的实现过程

自动化测试软件通过中间件软件与消息转发软件进行消息的交互,主要调用中间件的send()函数和get()函数,交互的消息主要包括发送消息和捕获消息两类。自动化测试软件搭建My Sql数据库,用于存储解析头文件产生的XML内容。每一个数据表中将消息ID号作为外键。数据库按照头文件字段属性进行内容的存储,一个XML文件生成一个数据表。软件能够实现自动填充消息字段值的功能,测试执行者设计的测试策略为:按照边界值法进行测试用例的设计,同时测试人员可以通过鼠标选择测试用例脚本的执行场景,软件根据场景的内容进行测试用例的执行。自动化软件将场景中的测试脚本自动生成测试用例,可支持生成Word版本和Excel版本。同时Word版和Excel版的测试用例能够被导入到自动化软件中,自动生成测试脚本。自动化测试软件可进行测试记录的增加、删除、修改和查看操作。测试人员按照用户需求和接口需求等需求文档,逐一输入各个发送消息字段值的范围,同时,设置被测软件应答该消息的间隔时间,激励消息发出后,软件设置一个时间戳,当接到应答消息后,获取间隔时间参数,获取的间隔时间与需求文档提出的间隔时间参数做比较。

收到的应答消息后,首先确认消息ID,按照消息ID寻找数据表,按照数据表各列的字段大小进行内容解析,解析完成后,将解析结果与判断准则比对,与判断准则不一致的地方做不一致记录,并随时写入数据表中,然后进行下一个测试用例脚本的执行,重复上述执行步骤。执行完成后可自行导出测试用例记录,生成软件问题报告单。自动化测试软件提供测试用例记录、软件问题报告单模板的定制功能,测试人员也可以将模板导入到自动化测试工具中。

自动化测试软件可以实现测试人员的管理功能,测试人员选取自己的账户去登录,选择测试场景,将需要执行的测试脚本拖拽到场景中,执行过程中,软件根据场景的要求进行测试脚本的执行。

本自动化测试软件基于B/S模式实现的,能够兼容IE6.0及以上版本,Fire Fox 3.0及以上版本。将自动化测试软件布置在测试服务器上,测试人员可以在任意一台计算机上访问测试服务,只需配置被测软件的IPV4地址和端口号,便可进行网路层的连接。

测试人员在编写脚本过程中,一定要编历到消息的每一个字段值,在保存字段值的时候,自动化测试软件会自动判断每一个字段值范围有无输入正确,若测试人员输入不正确或未输入,软件自动给出错误提示,测试人员根据错误提示进行字段值范围的输入,重复上述步骤,直至消息的各个字段值输入正确。

4.结语

利用自动化测试软件能够很快的完成测试执行工作,保证了测试节点,提高了测试的效率。本款自动化测试软件的优点是:当某些字段值未输入范围时,可以根据消息字段的类型自动输入一个正常值和一个越界值,同时提示测试人员字段范围异常。经过长时间的对消息转发软件的测试,发现自动化测试只能减轻人工测试的负担,但并不能完全的替代人工测试,本软件暂不能解决激励消息发送后无应答和激励消息发送后多条应答的情况,需要测试人员自己去分析判断。

参考文献

[1]王鹏.军用电子信息系统测试评估工具的研究和实践.中国电子科学研究院学报,2007,2(1):73-79.

基于数据库的自动测试系统(ATS)软件 篇5

关键词:软件自动化测试;自动化管理系统的框架构建;设计与实现

中图分类号:TP311.5

软件测试自动化管理系统不仅能测试数字化资产管理,方便数据在整个测试期间内循环使用,而且大大提高了测试效率,使得测试人员能有足够时间致力于研发更好、更快的测试新产品。自动化测试的目的就是减轻手工测试时的工作量,力争在最短时间内节省最多人力、物力资源,最终达到保证软件质量的目的。

1 软件自动化测试的优点

相比一般测试软件来说,软件测试主要有这三方面的优点。第一,软件测试能完成一些手工测试难以完成的项目。比如大数据量测试、压力测试、模拟系统测试等,都是一些手工测试无法驾驭的;第二,软件自动化测试能降低风险,提高软件产品质量。自动化测试相比手工测试成本较低,人力使用量少,大大降低了资金风险,以最少的花费取得最大的收益;第三,自动化测试具有统一性和可循环性。自动化测试时使用相同脚本,所以每次测试都能保证一致性,这点是手工测试无法做到的。

2 软件测试自动化管理系统的结构

软件测试自动化管理系统的结构其实就是通过一些假设和概念,以此为根据来为软件测试自动化管理系统提供支持的实际组成。

2.1 脚本模块结构。脚本模块结构的构建需要一系列相对较小、独立的脚本来表示一些程序和函数的帮助,然后采用分级方式来将这些脚本组成较大的测试,最终构成一个特殊的测试用列,自动化测试脚本有结构脚本和共享脚本。结构脚本中含有脚本执行的命令,在一定情況下,这些命令成为控制结构或调用结构。结构脚本的主要特点体现在控制性上,控制整个自动化流程的进行;共享脚本是脚本能同时被多个测试用例利用,实现脚本资源共享。共享脚本不仅稳定性好,而且可以循环利用,减少工程量。

2.2 测试库结构。测试库框架的结构与脚本模块框架差不多,不同的是测试库结构将待测试应用程序分解成函数和过程而不是脚本。实现功能的个体由脚本变成了函数,这些功能函数被储存在一个库中,这个库就被叫做测试库。当测试进行时,就可以调动测试库函数来执行程序。图1就是通过TCL语言实现测试库结构的自动测试化用例。

2.3 混合型测试结构。从字面上来说,混合型测试结构就是结合多个测试结构特点,取其精华以形成的一种框架结构。软件自动化测试管理系统是以关键字驱动为主要框架的系统,并以脚本模块和测试库结构为辅,较好解决了框架单一,功能简单的问题。图2就较好概括了混合型测试结构的工作原理。

3 软件测试自动化管理系统的设计与实现

自动化测试系统(Automated Testing System,ATS)主要以混合型测试自动测试框架为主,支持自动化测试系统完成一些基础设备操作的一类测试管理系统。ATS是一个与具体测试业务和被测对象无关的一个测试平台,可以被任何对象和测试业务所利用。其实真正和测试业务有联系的是ATS中的API,它为测试提供了一个统一的框架,使得测试具有统一性和稳定性。而且ATS还支持脚本管理,利用ATS提供的API较为方便的编写出测试脚本,提高测试效率。在ATS中,测试脚本主要分为三个部分:Test case、Test suite 和Test job。软件测试自动化管理系统ATS的设计结构总共由5个模块构成:User Interface、Request Handler Manager、Job Controller、Execution Server、Suite Execute Layer。下文主要对其中的2个模块做具体分析。

3.1 Request Handler Manager。ATS主要采用B/S结构,用户在使用软件自动化测试系统中只需打开Web浏览器,而不要安装客户软件就能完成测试,方便快捷了人们的工作。用户在界面上的所有操作都会以数据形式由Web浏览器发送到Web服务器上。但是,Web浏览器不能记住所有操作从而会大大降低系统机动性和延伸性。Request Handler Manager就能很好解决这问题,由它来记住操作和处理器之间的关系,Web浏览器只需接到指令就好。

3.2 Execution Server。Execution Server的主要特点是执行job。因为job由多个suite组成,所以Execution Server需要给每个job提供一个suite队列,然后来执行程序。但是Execution Server不会主动处理,它通常是接到请求后才会执行操作流程,扮演着一个被动者的身份。图3就完整的描述了Execution Server整个执行过程。

4 结束语

综上所述,软件自动化测试管理系统是软件开发的一个重要环节,将直接决定着软件质量和办事效率。但是软件本身就存在多变性和复杂性,相应的自动化测试系统要不断更新和改善,才能提高软件质量,从而方便人们生活。另外,软件开发技术人员要不断丰富自身专业知识和提高技术能力,为软件测试行业带来新的生机与活力。

参考文献:

[1]严少清,陈革,万年红.软件测试自动化管理系统的设计与实现[J].计算机工程,2002,09:152-153.

[2]江鲸.软件自动化测试系统的研究与实现[D].电子科技大学,2006.

作者简介:张思亚(1990-),女,贵州遵义人,本科在读,研究方向:计算机科学与技术(软件工程)。

软件开发中的自动化单元测试浅谈 篇6

关键词:单元测试;测试驱动开发;Stub;Mock

中图分类号:TP311.52

目前国内很多软件面临的现实问题是质量较差,潜在bug较多,系统不稳定性。这其中的主要原因在于对软件测试的重视程度不够,或者没有系统的测试管理方法。软件测试可分为单元测试、集成测试、系统测试、验收测试,其中单元测试一般由软件模块的开发人员来完成,是软件质量保证的第一道关口。本文将主要针对单元测试介绍的一些技巧和指导原则,以期能给广大一线开发人员以启发和指导,提高在软件开发过程中的效率和软件的质量。

1 单元测试技巧

1.1 使用TDD测试驱动开发

测试驱动开发[1]是由Kent Beck倡导的一种以测试为中心的开发方法,它要求在开始编程之前首先编写测试代码,然后只编写使测试通过的功能代码,通过这种方式以测试驱动开发。这种方法使得代码的设计思路清晰、代码整洁,保证了其做且只做应该做的事。Kent Beck团队为此开发的xUnit测试框架使得该方法的使用更加方便。

在TDD開发中遵循:不可运行->可运行->重构的一个反复过程。首先我们编写测试代码,这时的测试代码是不可运行的,甚至于连编译都通不过,然后我们写最少的代码尽快让测试通过,为了让测试尽快通过我们甚至可以采用一些看起来不合情理的方法,然后进行重构,消除重复设计,优化设计结构,如此反复进行最终得到我们所需的整洁可用的代码。在这种开发方式生成的代码具有高的可维护性和较高的质量保证。

1.2 Stub和Mock的应用

在单元测试中难免遇到一些模块依赖于其它模块,而这些其它的模块很可能并不在我们的控制范围内,它们的开发进度、特性、发布时机等都是未知的,这就可能减缓我们的开发进度,甚至可能会导致我们的测试无法进行。为了解决这类问题我们可以使用Stub和Mock技术,从而消除在测试过程中对第三方模块的依赖。Stub和Mock是两种不同的策略,在使用上是有所不同的,但在很多时候对同一个单位模块的测试我们既可以使用Stub也可以使用Mock,他们两者的不同主要在于Stub是状态验证的,Mock是行为验证的[2],具体如何选择可参考文献[2]。对于Mock技术,目前有很多的开源框架可以供我们选择,比较流行的有easymock,jmockit。在Stub和Mock技术的使用时机上,建议尽可能使用真实对象,只有当使用真实对象不方面时考虑才考虑使用Stub或Mock技术。

1.3 MVC构架的测试

MVC框架的测试是一个使用Mock技术的好例子。由于目前在一些主流MVC框架(如:struts,spring mvc等)下编写的一些模块(如Struts框架下的Action)在运行的过程中要依赖第三方容器,这就给自动化的单元测试带来了很大麻烦,使得这种测试很难进行,为此可以使用Mock技术来解决这一问题。我们使用Mock对象模拟容器,在这个模拟容器下对软件进行自动化测试。由于这些容器的功能一般比较复杂,所以编写这样的Mock也并不是一件轻松的事情,所幸目前和这些MVC框架对应的一般都已经有了比较成熟的Mock测试框架,我们只需要进行简单的配置就可以使用,如Struts框架有StrutsTestCase框架,Spring mvc下有Spring test框架等。

1.4 数据库测试

软件开发中比较流行分层架构,即将软件划分成多层,包括负责界面交互的表示层、负责处理业务逻辑的业务逻辑层、负责数据持久化的数据访问层。其中数据访问层中的DAO(数据访问对象)负责业务逻辑中对象的数据存取。数据的存取方案可以是多种多样的,但目前使用较多的还是关系型数据库。在这种关系型数据库做存储的系统中,DAO对象要负责和数据库管理系统进行交互。

单元测试中为依赖于外部系统的单元做测试是一件比较痛苦的事,为了消除这种依赖可以采用Stub或Mock技术,但如果要测试的对象就是DAO对象,这个问题就无法再回避。由于数据库是一个公共资源,如果测试过程中不加控制就很容易使其处于一种不可控的未知状态,使不同的测试之间相互干扰。为了在测试过程中始终保持数据库处于一种已知的可控状态,就要在DAO对象测试的过程中对测试数据库进行管理,为此在对DAO对象进行测试时要遵循以下过程:(1)对数据库当前状态进行备份;(2)为本测试准备数据;(3)进行测试;(4)将数据库恢复到测试前的状态。

目前比较成熟的数据库测试框架如:Dbunit,Unitils 等会提供的一些工具可以使我们更方便的完成数据库的备份恢复、测试数据的初始化等工作,从而使我们能够把更多的注意力集中在如何设计、编写单元测试和功能代码上来。

2 自动化单元测试中的一些原则

2.1 使得所用测试可以作为一个整体运行

自动化的单元测试要求我们将同一测试目的或同一测试环境下的所有测试用例组织成一个整体运行,以方便我们在重构或对程序修改时可以快速的对整个系统进行回归测试,可以使用xUnit框架下的testsuit将所有相关测试组织成一个测试套件。如果使用Maven开发则可以直接使用Maven提供的功能统一运行所有测试用例。

2.2 测试用例之间要做到相互隔离,避免存在相互干扰

保证各测试用例之间不产生相互干扰,这样可以方便我们在某一测试失败时快速定位问题所在。这就要求其一对于测试中公共资源的使用要特别小心,如果某测试用例对公共数据有影响,则要在测试执行前做好公共资源的备份,测试后做资源恢复,再者测试用例之间不能存在相互依赖关系,一个测试用例的成功与否不能依赖与另一个测试用例。

2.3 及时运行自动化的回归测试

对于每次重构或bug修复都要及时运行自动化的回归测试以保证此次修改没有将bug引入。无数经验证明在距离bug最近的地方发现并修复bug是代价最低的,同时及时的回归测试也可以给我们带来安全感,增强对程序的信心,提高代码的质量。

3 结束语

本文针对软件开发中的自动化单元测试,结合作者的实践经验,介绍了一些实用的测试技巧和测试基本原则。单元测试技巧部分主要介绍了一些目前业界在开发中最常使用的技术和框架,自动化测试原则部分则针对整个单元测试程序的编写和使用给出了作者的一些指导原则,通过这些方法和原则的使用以期能够帮助广大开发人员更好的做好单元测试,提高软件开发效率和软件质量。

参考文献:

[1]Kent Beck.孙平平,译.测试驱动开发[M].北京:中国电力出版社,2004.

[2]Martin Fowler.Mocks Aren't Stubs[OL].http://martinfowler.com/articles/mocksArentStubs-.html,2007,01.

[3]Martin Fowler.王怀民,译.企业架构应用模式[M].北京:机械工业出版社,2004(07):29-35.

作者简介:赵文杰(1979-),男,河南安阳人,助理工程师,硕士研究生,研究方向:软件工程。

基于数据库的自动测试系统(ATS)软件 篇7

关键词:软件测试,自动化技术,应用分析

软件作为依托计算机发展起来的一项新产品, 其应用领域越来越广, 软件在开发过程中, 需要经过多次测试才能完成, 这就是软件测试。软件测试最主要的目的就是检验软件系统与规定的需求、预期的结果是否相符合, 或者检验他们之间的差别 , 然后再据其进行系统改善, 确保产品在投入运行时, 能避免出现错误, 在提高公司的社会效益的同时还能提高公司的经济效益。当前, 在软件测试过程中, 由于其工作的复杂性和繁琐性, 往往需要耗费很长的时间, 使得软件测试在软件工程开发过程中占据较长周期, 不利于软件的开发及利用。

1 软件测试的概念

测试是为了找出系统或程序中所出现的错误, 以期提高产品的质量。软件测试作为软件工程开发过程中的重要环节, 其目的主要是为了帮助工程项目经理了解项目的进度, 为其提供准确的信息, 同时确保开发出来的软件符合用户的需求。软件测试不仅仅涉及软件本身, 还包括整个软件开发过程, 软件测试是提高整个软件开发过程的保证, 而软件测试人员的主要工作就是找到软件中存在的漏洞和缺陷, 并将其修复。自动化测试是指通过对某种程序设计进行语言编制, 来控制被测软件, 使其按照手动测试的形式, 完成自动测试。自动化测试最主要的目的就是使人手从庞大的工作量当中解脱出来, 缩短测试周期, 使软件质量在达到标准的情况下, 能够按时交付用户。软件测试自动化技术作为一项新兴技术, 使测试人员能够在较短的时间内检查出软件的缺陷, 同时, 作为一种机制, 它不仅是指运用自动工具进行测试, 而且包括如何管理测试自动化, 如何确定自动化测试的方法以及如何组织测试等。

2 软件测试自动化的设计及实施

2.1 软件自动化测试脚本设计

一般情况下, 软件自动化测试脚本设计包括以下几种:线性脚本, 结构化脚本, 共享脚本, 数据驱动脚本, 关键字驱动脚本。

线性脚本包括鼠标的移动以及用户在界面上的操作, 在实际处理中, 测试环境的些许改变会使得整个程序界面被改动, 所以, 线性脚本仅对于那些不需要进行深入的计划或需要跟踪实际操作、仅提供工具的演示等部分工作是比较适合的, 由于线性脚本的过程较为繁琐, 所有的工作均依赖于捕捉的内容, 且维护费用较高, 不利于长期或大量测试, 仅仅依赖于线性脚本不太现实。结构化脚本包含循环控制结构、选择控制结构、调用结构三种结构模式, 其性能较好, 且对开发人员的要求较高。但由于加入了条件判断语句, 使得整个脚本变得复杂, 容易发生处理功能类错误, 降低了脚本对被测系统的依赖性。共享脚本较结构化脚本有进步, 前者是指一段已编写完成的脚本可以被多个测试用例所使用。其出发点是当某个功能被测试脚本实现以后, 其它的测试会需要反复地调用这个功能。数据驱动脚本是将所需要测试的数据存放于独立的数据文件当中, 使得测试数据与测试操作得以分开, 其最大的优点是能够利用同一个脚本进行多种测试。关键字驱动脚本是一种较为复杂的逻辑扩展, 要求每个测试例执行的具体操作必须一样, 所以, 即便是改变了测试工具, 重新实现支持脚本便可, 方便测试人员进行测试。

总的来说, 选择脚本的原则是能够为用户或管理者提供帮助, 同时在执行任务时, 可以重复使用, 其结构能够被测试人员接受和理解, 客户在使用时, 能够有清楚、简明的文档, 方便用户或管理者在日后维护软件。

2.2 软件自动化测试的特点

自动测试技术最初的研究主要集中在如何采用自动方法来实现和替代人工测试中的一些繁琐和机械重复的工作。自动化测试最开始的出现只是偶然行为, 但随着各工作量的增大, 人们对测试的要求越来越高, 测试的自动化不仅是为了节省人工和测试资源, 更需要确定自动测试技术能否在测试效果上达到人工测试的水平。在自动化测试过程中, 其测试结果必须准确, 在最大程度上减少误差, 确保测试结果的精准性。只有保证了自动测试结果的可靠性, 自动化测试才具有实际的意义, 也才能将其应用于指导测试的自动化过程以及对测试的结果进行评估。软件测试是带有目的性、针对性地发现错误, 并不是偶然的。在传统的测试当中, 统计指标虽然可以帮助提高测试的可信度, 但由机械重复或穷尽搜索方式实现的自动测试在性能和效率上的效果都不太理想, 在自动测试方面, 人们希望能够在某些方面达到或甚至超过人工测试的能力。于是, 各种高新技术被运用到自动化测试当中, 不仅减少对人工的依赖性, 而且大大增加其测试结果的准确性, 使得软件自动化测试逐渐被推广和广泛运用。

2.3 软件测试自动化框架设计

软件自动测试与软件开发过程相融合的过程中存在的问题决定了软件测使用自动化测试技术或是采用人工测试方法。当前, 由于自动化测试技术的发展尚处于发展阶段, 其测试结果和测试方法难以完全能匹配到整个项目当中。更为实际的情况是项目开发中同时包含了可实现自动化的测试活动, 以及难以完全实现自动化的测试活动, 这就要求设计出具有较大可塑性的自动测试模型, 可在较少改动或者配置的情况下, 最大化适应自动化测试的需求。

2.4 软件自动化测试的实施

测试用例是针对被测系统各项功能而设计并开发的, 需要以下几个步骤共同实施, 具体包括:标识测试条件、设计测试用例、建立测试用例、运行测试用例、比较结果。

标识测试条件是测试活动的第一步, 必须明确对测试的内容, 标识出测试条件。在同一个系统中, 测试条件有被测试的系统所决定, 包括被测系统的功能、性能等方面, 而测试条件可以由被测试的环境通过不同的方法所描述, 例如简单的语言、表格形式、图画列表等。设计测试用例是按一定顺序执行的与测试目标相关的一系列测试, 产生相关的结果或其他测试信息。建立测试用例包括准备测试脚本、测试输入、测试数据以及期望输出, 通过文本的形式, 将测试的结果保存, 且能够在同时实现多个测试用例。在测试脚本时, 其测试形式既可以通过手工的形式执行, 也可以通过手工的形式执行, 此外, 测试输入和期望输出既可以包括在脚本中, 也可以以脚本外的文件或数据库的形式存在。运行测试用例是被测软件在运行时使用的测试用例, 在手工测试当中, 测试人员在测试前做好相关准备, 包括录入相关数据, 观察数据的输出, 从中发现问题;在软件自动化测试当中, 测试人员只需要启动测试工具, 同时告诉工具执行哪些测试用例即可, 使得人力从繁琐的工作中解脱出来。

2.5 软件自动化测试的设计

当软件自动化设计不合理时, 常具有以下几种表现:首先, 在测试任务和测试时间的压力下, 测试人员很难把精力专注在实现自动化测试的地方, 使得测试人员在测试时缺少足够的时间进行。其次, 由于为了节省时间, 测试人员需要在同一时间里同时做好很多事情, 加大了测试人员的工作量, 团队的不同, 其工作和任务也会有所不同, 这就使得测试人员常出现目标不明确等现象。此外, 缺乏足够的经验也是软件自动化设计不合理最常见的表现, 尝试测试自己极限的初级开发人员经常会绊倒在测试自动化项目, 其结果常常是很难继续下去。再次, 会出现人员流动大的情况, 其工作经验难以得到传递和积累, 不利于软件自动化测试的设计。除上述现象外, 还会出现使得测试人员在工作过程中出现不愿意积极思考的现象, 一些测试人员会以自动化的项目为不涉及测试为借口, 在工作上表现出不积极、懒惰现象。最后, 在测试中, 由于自动化测试软件是与技术相关的问题, 使得项目部门过于重视技术而忽视软件其他方面的设计。

针对自动化设计不合理出现的一系列不合理的问题, 在进行测试自动化是, 必须进行精心的设计, 在最大限度上减少风险, 实现利益的最大化, 因此, 软件自动化测试的设计需要从以下几个方面进行综合考虑。

第一, 实现软件自动化测试的可测试性。软件测试的接口包括命令行接口、应用程序编程接口、图形用户界面, 绝大多数软件只有其中两个或一个, 在开发过程中, 需有制定合理的测试计划, 测试部门要和开发部门协调各类需求, 确保在代码编写和对象创建的时候就插入了标识符。第二, 实现软件自动化测试的可维护性。软件自动化测试中最终重要的问题便是维护成本问题, 当前, 在竞争激烈的电信领域中, 各类软件更新换代的速度较快, 这就要求软件的测试必须跟上时代发展的脚步, 防止软件升级造成自动化测试的维护工作量过大是很重要的一个环节, 若不能处理好, 将导致整个测试自动化工作被较廉价的手工测试所取代, 不适合时代的要求。第三, 加强相关测试人员的培养。对于软件测试人员而言, 加强其相关人员的培训是非常重要的, 能够在很大程度上控制测试预算成本、提高测试结果, 确保软件测试过程高效、合理, 也利于测试人员提升在测试方面的专业水平。除此以外, 软件自动化测试的测试数据、构建测试过程、可审查性、可重复性等都是其设计过程需要考虑的因素。

3 结束语

总的来说, 软件测试自动化具有高效、快速、易于操作等优点, 在快速发展的现代社会, 将是软件测试的发展趋势, 本次研究通过对软件测试自动化技术的各个方面进行综合考虑, 根据不同软件自动化测试的脚本选择, 采用最优设计方案, 实现软件测试的自动化, 尽最大可能提高效率地进行软件测试。

参考文献

[1]卫征.嵌入式软件测试自动化技术研究[D].北京工业大学, 2009.

[2]董娜娜, 詹惠琴.软件测试自动化技术应用研究[J].电子测试, 2010 (11) :47-50.

[3]杜德鑫, 孙继银, 张翼飞, 等.一种面向应用的测试任务自动生成与运行方法[J].电子技术应用, 2009, 35 (9) :98-104.

[4]钱月琴.软件自动化测试脚本生成技术研究[D].南京邮电大学, 2010.

基于数据库的自动测试系统(ATS)软件 篇8

一系统构成

烟草物流电气控制系统由底层工业网络数据采集系统、上位机操作及数据存储分析系统组成,采用标准的工业以太网连接。其中,底层为西门子系列PLC S7-400,CPU、通讯模块以及I/O模块组成,以PROFIBUS及PROFINET网的方式连接。工程师站以InTouch 10.1为工作平台,该软件通过TCP/IP的方式与S7-300 PLC相连,PLC以PROFIBUS-DP的方式连接断路器、电机保护器等采集现场的运行数据。上位机操作系统及数据存储分析系统选用的操作系统是Windous XP,数据存储为SQL SERVER 2005,操作及分析系统为Wonder Ware公司的Intouch 10.1。

InTouch软件是一种工业自动化组态软件,用于控制工业生产过程并实现可视化。它为工程师提供了易用的开发环境和广泛的功能,使工程师能够快速地建立、测试和部署强大的连接和传递实时信息的自动化应用。InTouch软件是一个开放的、可扩展的人机界面,为定制应用程序设计提供了灵活性,同时为工业中的各种自动化设备提供了连接能力。

InTouch包含三个主要程序部门,分别是InTouch应用程序管理器、WindowMakerÔ以及WindowViewerÔ。

InTouch应用程序管理器用于组织管理创建的应用程序。它也可以用于将WindowViewer配置成服务、为基于客户端和基于服务器的架构配置网络应用程序开发(NAD),以及配置动态分辨率转换(DRC)。DBDumpÔ与DBLoadÔ数据库实用程序也从应用程序管理器启动。

WindowMaker是一种开发环境,在其中可以使用面向对象的图形来创建富于动感的触控式显示窗口。这些显示窗口可以连接到工业I/0系统以及其他的Microsoft Windows应用程序。

WindowViewer则是一种运行时的环境,用于显示在WindowMaker中创建的图形窗口。WindowViewer可以执行InTouch QuickScript、执行历史数据记录与报告、处理报警记录与报告,同时可以充当DDE与SuiteLinkÔ通讯协议的客户端和服务器。

二系统软件设计与应用

烟草物流监控系统是整个调度控制层的一部分,对现场执行层的所有输送设备进行实时监视和控制的是提供给管理人员的人机界面,一般放置在中央控制室内,本系统配置一套中控室监控系统。监控系统由监控计算机、通讯网卡等硬件系统构成,通过InTouch和PROFINET总线网络与下层控制系统进行数据交换,网络系统配置图如图1。

烟草物流监控系统具有以下功能:

1.持续监控物流系统的运行状态。在系统运行中,显示备件托盘实时的运行方向及当前位置信息。

2.提供完整的报警信息。系统根据不同的异常状态报警,不同异常状态对应不同的报警内容,界面上显示相应的报警点并进行状态指示,维护人员从中央控制室内进行实时检测,可以实时掌握物流系统的运行情况,及时发现运行中出现的问题并处理,从而提高系统运行的效率,减少故障时间。

3.有更多的操作位,为系统的扩展提供了方便。

4.用户登录多级密码体系,防止非操作人员误操作。系统安全问题是每一个操作站软件设计人员必须考虑的,本系统操作软件为Windows XP,操作系统本身稳定可靠,具有很高的安全性能,InTouch通过账号管理机制,限制不同人员的访问权限,来实现系统安全运行。在本系统中共设置2个级别的访问权限,分为工程师级、操作工级。工程师级的权限最高可以修改系统参数、画面组态、实时监控。操作工级的权限较低,只能实时监控。

5.实时监控各种不同类型设备的网络在线情况,根据不同设备类型,将当前的运行状况反馈到监控界面上。

三画面组态

WindowMaker程序提供许多图形符号供选择,利用简单的线条、图形、多边形等勾勒出物流示意图,利用标记名字典中的变量与这些图形相关联,可以得到复杂的趋势图、组合符号等,还可以自主定义图形符号,按照一定的逻辑关系连接摆放形象地表示整个系统流程。其中包括工艺流程画面、报警画面及帮助画面等。操作人员可以从监控画面上直观地了解工艺流程,便捷地放下出现问题的位置,从而保证生产过程中出现的问题能及时得到解决、维护,使生产能正常进行。具体工艺操作都可以用鼠标在相应的画面上进行,操作方便,界面友好,各设备的开关状态在画面上用不同的颜色区显示,一般灰色为停止,绿色为运行,红色为报警。不同的颜色显示表示不同状态,更直观,更形象逼真(见图2)。

四数据通讯

在InTouch软件中,内存型数据为InTouch程序内部定义的变量,不需要通过I/O Server即可进行访问;I/0型数据的来源一般为其他计算机站点或本机运行的其他程序,这类数据由InTouch通过NETDDE或DDE的方式获得。在本系统的监控上位机采集控制站西门子PLC中来自生产现场的I/O数据,经过处理,将控制命令传给控制站,以此控制生产过程。不过一般操作站无法直接从控制站中取得数据,这时需要一个通讯接口一I/O SERVER,本系统的电器控制系统使用西门子公司的PLC,InTouch提供了广泛的协议转换接口,能无缝连接到西门子的PLC上。

五。实际应用

基于数据库的自动测试系统(ATS)软件 篇9

软件测试是软件质量保证的重要手段,其目的不是为了证明软件的正确性,而是以尽可能少的时间和人力检测出软件的各种错误和缺陷。测试用例的选择对软件测试至关重要,不同的测试用例发现软件错误或缺陷的能力差别很大,测试用例设计和选择,将直接影响软件测试的质量[1]。

如何智能化选择覆盖率高的测试用例,提高测试质量,学者们进行了大量研究。文献[2]在面向对象测试用例生成上应用遗传算法,完成了对公共方法的优化覆盖。文献[3]利用程序的依赖性对程序中需要覆盖的分支进行约简,利用相应的静态信息构建适应度函数,采用遗传算法生成测试数据。文献[4]设计了基于遗传算法的测试数据自动生成方法,设计和实现了基于指定测试序列的类测试数据自动生成系统。遗传算法源于自然界“自然选择”和“优胜劣汰”的进化规律,通过模拟生物进化中的自然选择和交配变异寻找问题全局最优解,具有较好的全局搜索能力。然而,在遗传算法中,整个种群比较均匀地向最优区域移动,收敛速度较慢,使得测试数据生成效率较低[5]。本文提出一种改进的遗传算法,对交叉和变异操作进行改进,用于测试用例自动生成。

1 基于改进遗传算法的测试用例生成方法设计

1.1 参数编码设计

编码是把问题空间的参数转换成遗传空间的染色体或个体。目前,常用的编码技术有二进制编码、浮点数编码、字符编码、格雷编码等[6]。在自动生成测试数据的过程中,需要多个参数,本文采用二进制编码。编码和解码方法如下:

假设一个参数的取值范围是【UMIN,UMAX】,用长度为N的二进制编码方法来表示该参数,则能产生2N种不同的编码,编码的最大值为Umax,最小值为Umin,则编码精度p的公式如下:

设一个参数的编码为:anan-1an-2……a2a1,则对应的解码公式如下:

1.2 构造适应度函数

适应度函数也叫评估函数,其根据所求问题的目标函数来评估群体中个体优劣程度。适应度函数是否有良好的适应功能可以评价个体的好坏,良好的适应度函数可以提高遗传算法在求解问题上的效率,更有效地完成算法对问题解空间的搜索[3]。由于遗传算法中,需要根据选择概率筛选可遗传到下一代的种群个体,通常遗传算法要求适应度函数值要取非负值。因此,需要构造一个合适的适应度函数,既能评价测试数据优劣,又可以通过遗传算法最终找到符合要求的测试数据。本文通过广义海明距离法来构造适应度函数。该方法可以衡量被覆盖分支和所选择分支之间的距离。假定α表示目标路径集合,实际路径结合用β表示,则用Dα-β表示实际路径与目标路径之间的差距。

集合α与集合β的标准化距离如下:

两个类测试序列的相似程度可表示为Mα-β。

Sim的值越接近1,表示α与β相似程度越高,实际测试数据越能满足测试需求。Sim作为适应度函数,决定了当前测试序列与目标测试序列之间的适应度。

1.3 改进遗传算子

(1)选择算子。又称复制算子,是指按照某种策略从父代中挑选个体进入下一代。选择算子就是把群体中劣质的个体淘汰,优胜的个体留下并遗传到下一代。通过个体的适应度评估进行选择,可使用比例选择、随机遍历抽样选择、轮盘式选择等方法。本文采用轮盘赌选择法。先计算各个体的选择概率,设群体大小为n,fi为个体i的适应度,pi表示个体被选择的概率,计算如下:

个体适应度值与被选择概率成正比,个体适应度值越大越容易被选择。先计算群体中每个个体的选择概率,需要进行多轮选择,每一轮产生一个[0,1]之间均匀随机数,根据该随机数作为选择指针确定被选个体。个体被选后,可随机地组成交配对,提供给后面的交叉操作。

(2)交叉算子。又称杂交算子,在遗传操作中起核心作用。交叉操作将从群体中选择的两个个体按照某种策略使两个个体相互交换部分染色体,从而形成两个新的个体[6]。方法有单点交叉、两点交叉等。交叉概率与子代的产生速度呈正比。交叉概率越大,子代产生得越快。但是交叉概率过大或过小都会影响子代个体的产生,过大则会破坏优良的个体模式,过小会推迟新个体产生,造成遗传算法的早熟。传统遗传算法采用固定交叉概率。本文采用自适应交叉。交叉概率可以在算法运行过程中随着适应值变化。将个体适应值与平均适应值进行比较,取以下值,即式(7)。

Fmax:适应度函数在群体中最大的函数值,Favg:平均值,Pc1,Pc2:交叉率初始化时的第1,2代。当个体适应度值大于平均适应度值时,pc将变小,从而阻止其被修改;当个体的适应度值小于平均值时,PC将变大。

(3)变异算子。变异操作是按照一定的概率(一般较小)改变染色体中某些基因座上的基因值。变异概率可以改变局部最优解的情况。

简单遗传算法中变异概率是常量,变异范围较小,实际上适应度高的个体变异概率较小,适应度低的个体变异概率较大。交叉概率可以在算法运行过程中随着适应值变化。将个体适应值与平均适应值进行比较,取以下值,计算如下:

1.4 算法流程

传统遗传算法流程图如图1所示,改进遗传算法流程如图2所示。

根据流程图,先对参数进行编码,再初始化种群,再进行求解。遗传算法的求解过程是适应度计算、遗传算子的选择、交叉、变异操作,是不断迭代的过程,当达到终止条件时算法结束。终止条件为:(1)达到最大迭代数,若此时未找到最优解,也要结束算法;(2)在限定的迭代次数内找到了最优解,算法结束。

判断算法终止一般可以将这两者综合考虑。在改进的算法中交叉算子采用自适应交叉,变异算子采用自适应变异。

2 测试用例生成方法实验

2.1 实例分析

本文采用判断三角形的实例作为自动生成测试用例的测试程序。

这里的输入数据是三角形的三条边,三条边输入值不同,结果可以是以下4种情况:不构成三角形、等腰三角形、等边三角形和普通三角形。采用二进制编码,用8位二进制,各条边的取值范围是0~255。对上述程序进行测试,需要设计足够多的测试用例以覆盖各条路径。按照基于遗传算法的测试数据自动生成模型,首先需要对程序中的输入数据、类型和程序本身进行分析。通过分析得出程序流程图如图3所示。分析得出三角形判断的所有路径,如表1所示。

2.2 实验结果分析

分别针对传统遗传算法和本文改进遗传算法生成测试用例并进行比较,分别做10次实验,实验采用以下控制参数:(1)实验条件是:三角形三条边的初始值采用随机值,范围是(0,255],种群大小为100;(2)选择算子方式:轮盘赌选择;(3)自适应交叉概率:0.6;(4)自适应变异概率:0.06;(5)终止世代数:400。生成覆盖目标路径P2的测试数据,首次找到等值的三条边则算法结束,得到效果对比图如图4和图5。实验结果表明,在首次找到最优解时所用时间和进化世代数上,改进后的遗传算法生成测试用例比传统遗传算法更少,本文提出的测试用例自动生成方法是一种行之有效的方法。

3 结语

本文分析了基于遗传算法进行测试用例生成的研究现状,提出了一种基于改进的遗传算法进行测试用例的自动生成,通过适应度函数的构造,改进交叉算子和变异算子的方法,针对典型实例三角形判断问题进行实验。实验结果表明,该方法相比于传统的遗传算法能够达到更好效果。通过本文研究发现,自适应交叉和自适应变异算子可在一定程度上避免算法“早熟收敛”,能生成覆盖率高的测试用例,组成测试用例集,提高软件测试的效率和质量。本文方法主要针对输入数据为数值型测试用例的生成,如何将该方法应用到字符型输入程序还有待进一步研究。

参考文献

[1]姚尧.一种基于遗传算法的软件测试用例生成新方法[J].计算机与数字工程,2009,37(1):18-21.

[2]周瑞杰,江国华.基于遗传算法的面向对象类测试用例生成研究[C].全国青年通信学术会议,2010:151-155

[3]姜元鹏,董庆杰.基于遗传算法和分支覆盖的测试数据生成方法[J].计算机工程与设计,2016,37(1):112-117.

[4]张霞.面向对象软件类测试用例自动生成研究及应用[D].太原:太原理工大学,2008.

[5]董跃华.混合粒子群算法的软件测试数据自动生成[J].计算机应用,2015,35(2):545-549.

上一篇:地球的诉说作文1000字下一篇:情人节的英语句子