一种自动化测试辅助系统及相应的软件自动测试方法

文档序号:6411684阅读:246来源:国知局
专利名称:一种自动化测试辅助系统及相应的软件自动测试方法
技术领域
本发明涉及一种计算机软件测试技术,尤其是一种对某个应用软件的功能的执行可靠性进行自动测试的测试技术。
背景技术
目前对功能软件或应用软件的自动测试有多种方法,主要方法有一、捕捉/回放机制直接使用商业软件脚本程序的编写测试案例100a用商业测试软件200a对被测软件300a进行自动测试,如

图1所示。使用这种方法,测试人员不仅需要熟悉测试案例,而且需要熟悉商业软件脚本程序的编写,同时编写的测试脚本也存在正确性验证的问题。因此会耗费大量的时间在脚本维护上,而不是专注于应用软件的测试本身;二、功能分解法部分利用数据驱动引擎(Data Driven Engine)框架100c对案例100b进行测试,如图2所示。按照该框架所提供的案例模板和关键字,使用通用的商业软件(如EXCEL)编写案例,案例中包括了描述测试过程中进行操作所需要的控制数据、测试输入数据、预期结果数据,测试人员只需要熟悉案例编写方法(如案例的关键字等),而不必涉及测试脚本的修改和维护,也就是将测试设计和测试自动化看成为两个互相分开的过程。
把所有的测试任务分解为最基本的功能,将数据和功能区分开,引入了层级式的架构,使用结构化和模块化的设计。包括驱动脚本、测试案例脚本、商业功能脚本、子程序脚本、用户定义功能。
例如测试“进行一次支付,并验证帐户数据的准确性”。
如果使用“功能分解方法”,则这个案例就可能被分解为以下商业功能,然后就每个商业功能分别编写脚本①导航从主菜单进入支付屏幕②进行一次支付
③验证现金流的正确性④退回主要菜单⑤接入帐户系统⑥验证帐户系统更新⑦退回到主菜单这样的测试方法,其优点非常明显1.应用被分解为若干个基本的“商业功能”,只要对这些商业功能编写脚本,而具体的数据则通过输入数据文件和验证数据文件进行。如果应用改变了,只需要更改这些“商业功能脚本”即可。
2.“商业功能脚本”是针对测试每一个基本商业功能的,因此,很容易组合这些商业功能脚本以实现一系列更为复杂的操作。
方法二相比于方法一已经在测试用的案例编写上取得了很大的进步,但是,还存在如下不足之处1.每一个商业功能都需要一个脚本,一旦有上百个商业功能的话,就需要上百个脚本;2.一旦改动测试集,就需要改动成百上千个输入数据文件/验证数据文件;3.不仅需要各种脚本,而且每个“商业功能脚本”往往需要与之对应的输入数据文件/验证数据文件;4.使用文本文件编写输入数据文件/验证数据文件,很容易犯错误。
三、关键字驱动方法(如测试计划驱动方法TEST PLAN DRIVEN)属于DDE(数据驱动引擎框架)的一种,按照其所提供的模板、关键词,使用EXCEL文件编写测试案例。在测试案例中包括进行操作所需要的控制数据、输入测试数据、预期结果数据等。
脚本编写人员与测试案例编写人员可以独立。由前者负责将案例中的关键词转换为商业测试软件的脚本,熟悉商业测试软件脚本的编写,而后者只需要关注案例的编写,即只需要熟悉案例模板的格式。
该方法主要是由如下模块实现的
驱动脚本①进行框架的初始化;②调用特殊应用的控制脚本,将测试案例的名称传送给控制脚本(测试案例是以TAB分割的文本文件格式);控制脚本①读入和处理以TAB分割的文本文件;②在关键词和数据之间建立一种对应关系;③根据关键词调用功能脚本;功能脚本①处理从“控制脚本”传送过来的输入序列②执行特定的动作(如进行一次按键操作、输入一个数据、验证一个数据等);③报告一些错误情况;该方法三与方法二相比,由于采用了完全的DDE技术,其有两种主要的实现方法其一案例不采用结构化的编写,即在案例中直接明确每一步的具体操作,这样即使在不同的案例中包含相同的几个步骤也只能重复输入,导致使编写案例重复性太大,而且案例维护也相当不方便;其二、案例编写采用结构化方法进行,即将基本的功能抽象出来,封装为流程,然后采用案例调用流程的方法,这样就大大简化了案例编写的复杂性。由于采用了以上的结构化设计技术,其后果必然在每次测试的时候,需要把所有的流程都装入到内存中,大大增加了系统的开销,也增加了案例测试的时间。而事实上,每次测试的时候,并不会涉及所有的案例和流程,而仅仅涉及其中一部分。如此大的系统开销,使案例的执行速度显著降低。

发明内容
本发明的目的是要解决如下技术问题,利用现有的商业化测试软件,可以更方便的生成测试案例,并且高效准确地完成特定的功能测试任务。
①案例编写的独立性要求将案例编写相对独立于商业测试软件脚本的编写;②采用案例调用流程的方法,增加了案例维护的方便性③降低了内存的占用率,提高了案例执行的效率④测试正确性要求/对例外情况的处理。
本发明的主要技术方案是①采用了DDE数据驱动引擎技术,使案例编写人员与测试脚本维护人员相对独立;②定义了一定案例格式,采用了结构化的案例编写方法。这样就可以在具体测试应用改变的情况下不改动所有的案例文件,只需要改动调用流程的顺序或已经输入数据的数值就可以了。因为“流程”定义了一系列基本操作的集合,即某个功能的测试需要使用若干个测试案例,而每个测试案例则由若干“基本操作”和“流程”的组成,而一个“流程”是若干个“基本操作”的集合,参见附图3。通过“案例”调用“流程”和“基本操作”,“流程”调用“基本操作”的方法实现测试案例“结构化”。
③采用了案例的动态执行和延迟装载技术——即把案例名(流程名)、案例模板(流程模板)的装入与具体的案例数据(流程数据)的装入分为两步进行。即将案例测试区分为案例初始化和案例执行两步。相比于一次装入全部流程的方法,采用本发明,相关测试速度可以提高10倍到20倍。
本发明的系统结构如下一种自动化测试辅助系统软件测试系统,用来驱动商业测试软件,由如下模块组成a)动态执行控制模块,b)案例调度模块,c)语法分析模块,d)文件接口,e)测试执行软件接口,f)测试管理工具接口;其中,本系统测试所需要的案例文件、流程文件和案例测试的执行序列文件,均通过所述的文件接口读入到系统运行的内存;测试执行软件接口连接到商业测试执行软件并驱动该商业测试软件,测试管理工具接口连接到测试管理工具;动态执行控制模块一端与案例调度模块连接,另一端分别连接到语法分析模块、测试执行软件接口、测试管理工具接口,通过调用案例调度模块对案例进行读入,调用语法分析模块对案例进行分析、执行,并转换为相应的商业测试软件脚本,通过测试执行软件接口驱动商业测试软件,将执行结果通过测试管理工具接口记载到测试管理工具中。
使用本发明自动化测试辅助系统的软件自动测试方法主要包括如下步骤a)初始化装载;b)进行案例调度;c)分析案例、加载案例数据;d)执行案例并生成脚本函数供商业测试软件进行测试;e)将测试结果与期望数据进行比较;f)写日志文件,同时将运行结果输入到测试管理工具。
其中的初始化装载包括如下内容把系统运行所需要的配置文件的相关参数调入内存,包含了案例文件名、流程文件名、案例执行序列文件名、跟被测软件相关的参数,和跟测试管理工具相关的参数,分别根据案例文件名和流程文件名读入案例文件和流程文件,对其中的案例模板部分进行分析,同时也对流程文件中的流程模板进行分析,(但不装入案例数据或者流程数据),根据案例执行序列文件名把案例执行序列调入内存。
所述的案例文件、流程文件和案例执行序列文件可以是存放在多个文件中,也可以存放在一个文件的多个不同的工作表中。
所述的案例调度是由动态执行控制模块进行案例调度。
所述的案例执行序列中记载了该序列要执行的案例是属于哪个测试集的。
对其中的案例模板部分进行分析包括对该模板的指令序列进行初步分析,在内存中形成案例模板与案例模板指令序列之间的对应关系。还包括对基于每个案例模板的案例进行识别,在内存中形成案例、案例模板、案例在案例文件中的位置之间的对应关系。
同样地,还包括对该流程的指令序列进行初步分析,在内存中形成流程模板与流程模板指令序列之间的对应关系;对基于每个流程模板的流程进行识别,在内存中形成流程、流程模板、流程在流程文件中的位置之间的对应关系。
所述的分析案例、加载案例数据指判断案例数据是否已经装载到内存中,并根据分析结果加载案例数据,该步骤由动态执行控制模块来完成的。
本发明的测试方法中,所述的案例调度也可以由测试管理工具进行,对执行失败的案例或者需要重新运行的案例,可以使用测试管理工具方便地选择以构成下一次的案例执行序列,从而实现非人工输入案例执行序列,从而使系统的自动化程度更高,因为通过测试管理工具,案例执行序列可以自动生成,并且可以灵活组合。
本发明的测试案例生成方法如下采用结构化的案例编写方式,减少了案例编写中的重复工作量,并且提高了案例的可重复性。
基于案例的动态执行和延迟装载技术,该系统在案例的编写方式上采用了对操作流程的复用机制,具体如下引入类似于程序设计中过程调用的语义,在编写案例的时候,如果每次均需执行相同的一系列的操作步骤,就可以将这一系列操作步骤抽象出来,定义称为一个流程模板,每一组具有不同的输入数据但与具有相同操作步骤的集合定义为不同的流程,这些流程同属于一个流程模板,先编写这些流程与流程模板,然后在案例编写中,调用已经定义好的流程,从而既简化了案例的编写过程,增加了案例的可维护性,同时也能提高了案例的执行速度,减少了案例执行过程中的内存消耗。
案例执行序列定义了需要执行了案例名称等数据,根据其显示的案例名称调用相应的案例,其基本结构如表1
表1

其中,“是否运行标志”表示本次测试该案例是否需要运行,使用该标志可以避免每次输入案例名,直接对该标志进行修改就可以便捷地修改需要运行的测试案例;“所属测试集”则根据功能的不同将所有的测试案例分解为不同的测试集,在配置文件中可以设置本次需要执行的测试集,从而方便地实现某类功能的批量测试;“案例名称”则与“案例文件”中的案例名称相对应,根据该名称既可以到内存中查找该案例是否已经装载,也可以到案例文件中查找相关的案例数据;“案例描述”则简单地描述该测试案例的测试目的。
案例文件则定义了需要测试案例的名称、操作步骤(调用流程或直接执行基本操作),其结构举例如表2表2

如表2所示,“案例文件”主要包括了案例模板、案例数据、案例名等组成。“案例模板”是案例的结构,该结构定义了案例操作的关键词,即每一步执行的操作本身,并不涉及具体数据(如“调用流程关键词”、“赋值关键词”,仅仅记录的是进行什么操作,而不记录调用的流程名称、赋予的具体数值是多少),在案例测试的初始化装载时会对测试案例模板进行分析,在上表中的从上往下一到四行就可以被认为是一个案例模板,通过记录案例与案例模板的对应关系,就可以知道该案例的第一列是“案例名”、第二列表示“测试的目的”、第五列表示“调用流程”、第六列表示“选择交易类型”;“案例数据”是指具体的“流程”和“基本操作”,如表2中的“流程A”和“步骤B”都可以被认为是案例数据。
流程文件其结构与案例文件基本一致。
本发明的有益效果·提高案例读写的效率本发明的测试辅助系统利用文件接口可以直接基于某种通用格式的案例文件进行执行,保证了测试过程的高效率,同时减小了文件转换过程所带来的案例文件的版本维护问题。
·系统的可适用性程度提高本发明所提供的测试辅助系统,通过提供与具体的商业测试软件的接口层函数,就可以与相应的商业测试软件协同使用,因此本发明易于移植到不同的商业测试软件平台上。
·测试的执行效率提高案例的动态执行与延迟装载,这是本发明最主要技术点。因为大量案例和流程装入内存之后,会导致内存占用率过高,执行测试案例的速度减慢。而本发明的技术方案将测试的初始化过程与案例数据的获取分布在测试的不同阶段完成,一方面减少了案例文件的初始化过程的时间;另一方面,案例的延迟装载技术可以根据执行的具体案例加载案例数据,而且在一次运行过程中,某个案例或者流程的数据只需要加载一次,后面的案例若需要调用同一个流程,只需要到内存中直接获取,而不必再次加载,在一定程度上提高了执行速度。
以下结合附图详细描述本发明,但实施例的描述是为了说明本发明的方案,而不是限制本发明的内容。
图1是直接使用商业测试软件进行测试的过程图;图2是使用DDE框架进行测试的过程图;图3是案例、流程、基本操作的调用关系图;图4是软件测试运行的网络连接图;图5是自动化测试辅助系统与商业测试软件、被测软件的关系图;图6是自动化测试辅助系统模块结构图;图7是测试案例自动化测试的过程图;图8是自动化测试的初始化过程图;图9是测试案例的执行过程图;图10是分析并且执行案例的流程图。
图11是用测试管理工具生成测试执行序列的运行流程图;图12是本发明实施例“消费交易”测试的具体过程图。
具体实施例方式
为了更清楚地说明本发明,特将若干概念解释如下(参见图3)案例执行序列定义了需要进行测试的案例,包括需要执行的案例名、案例所属的测试运行集,以及是否需要测试的状态标志等。通过定义案例执行序列,也就指定了本次测试中所需要执行的全部案例。即在“初始化过程”之后,首先应当调入该“执行序列”,然后系统会根据该执行序列调用相关的案例。
案例用一定格式的通用的软件来编写,例如用EXCEL编写,由案例名称、流程、基本操作、数据、注释等组成。
案例(流程)模板是案例的结构,该结构定义了案例(流程)的操作关键词,即每一步执行的操作本身,并不涉及具体数据(如“调用流程关键词”、“赋值关键词”,仅仅记录的是什么操作,而不记录调用的流程名称、赋予的具体数值是多少)。在案例测试初始化的时会对测试案例模板进行分析,同时对流程模板进行分析。
流程是一系列有序基本操作的集合。
基本操作是流程的组成部分,是不能再分割的最小执行单位,包括输入、检查、赋值等。
参见图4所示,其为使用本自动化测试辅助系统进行网络软件测试的的典型网络连接示意图,发送方和接收方通过被测试网络3进行连接,商业测试软件2通过与发送方软件4、接收方软件5的进行连接就能够实现对发送方传送给接收方的过程进行测试,同时验证所传送数据的正确性;增加了自动化测试辅助系统与商业测试软件的连接后,就可以增加测试的自动化程度,直接通过自动化测试辅助系统1读取案例,并将其转换为特定的商业测试软件脚本,通过商业测试软件对系统进行自动化测试,并将测试结果反馈到该自动化测试辅助系统进行分析,进而可以进行下一步测试。如图5所示,本发明的自动化测试辅助系统1在一定程度上充当了案例文件6与商业测试软件2之间的连接桥梁,利用本系统进行自动化测试的时候,首先需要根据一定的规则编写案例文件6,然后通过过本自动化测试辅助系统将相关的案例文件6转换为商业测试软件的脚本,在输入到商业测试软件2对被测试软件7进行测试。
参见图6,其所示为本发明的自动化测试辅助系统模块结构,其中,本系统测试所需要的案例(流程)文件6和案例测试的执行序列文件18,均通过所述的文件接口11读入到系统运行的内存;测试执行软件接口15连接到商业测试执行软件并驱动该商业测试软件2,测试管理工具接口16连接到测试管理工具17;动态执行控制模块13一端与案例调度模块12连接,另一端分别连接到语法分析模块14、测试执行软件接口15、测试管理工具接口15,通过调用案例调度模块12对案例进行读入,调用语法分析模块14对案例进行分析、执行,并转换为相应的商业测试软件脚本,通过测试执行软件接口15驱动商业测试软件2,将执行结果通过测试管理工具接口16记载到测试管理工具17中。
各个模块功能介绍案例调度模块是测试案例的调度中心,其工作方式是首先通过文件接口模块读入案例执行序列,然后根据所读入的案例执行序列调度相应的测试案例,通过文件接口模块将其读入内存。
动态流程执行控制是本系统的核心模块,该模块包括三个主要作用其一、通过调用案例调度模块对案例进行读入;其二、调用语法分析模块对案例进行分析、执行,并转换为相应的商业测试软件脚本,通过测试执行软件接口输入到商业测试软件,从而完成对被测软件的自动化测试;其三、将执行结果反馈到测试管理工具接口。
语法分析模块该模块有两大作用,其一、在案例的初始化阶段,对测试案例的模板进行分析,从而构建起测试案例的所有操作步骤在内存中的映像;同时对流程进行分析,区分出动作关键字映射到相应的处理功能、输入数据、期望数据等信息;其二、在执行过程中,对案例数据进行语法分析。
文件接口模块该接口主要将一定格式的测试案例、案例的执行序列转换为本系统案例调度模块所支持的格式。
本自动化测试辅助系统最突出的特点不仅仅在于采用了DDE框架驱动,而且在于其采用了动态执行和延迟装载技术,即将自动化测试过程分解为“案例的初始化过程”和“案例的执行过程”两步,在初始化过程中只将案例模板、流程模板、案例名、流程名记录到内存中,并形成案例模板名、案例模板指令序列、案例名称、案例在文件中的位置等对应关系;同时形成流程模板名、流程模板指令序列、流程名称、流程在文件中的位置等对应关系,只有在执行的时候才根据需要装载有关的案例和流程的数据,而不是直接装载所有的案例数据,减少了对系统内存的占用。并且采用了案例调用流程,流程调用基本操作的两步调用,大大简化了案例的编写。
参见图7,其所示为本发明的自动化测试过程图,先根据一定的规则编写案例100、然后对进行案例的初始化处理200,最后进行案例的执行与结果处理300。
参见图8,其所示为本发明的自动化测试流程中初始化处理200过程1、编写初始化的配置文件201,包括跟测试管理工具相关的参数、跟数据库相关的参数、案例执行序列的文件名、案例工作表名;2、读入配置文件,同时分析配置文件所设置的参数202;3、根据配置文件读入案例模板,分析案模板的关键词,在内存中形成案例模板名与案例模板指令序列的对应关系203;4、对基于每个模板的案例(流程)进行识别,在内存中形成案例(流程)名称、案例(流程)模板名称、案例(流程)在文件中的位置之间的对应关系204。
经过了这两个步骤的处理,在内存中已经形成了案例名(流程名)、案例模板之间的对应关系,同时为了支持延迟装载所需要的文件位置等信息也一起保存。此时,案例本身的初始化过程已经完成。因此,在案例的执行过程中,只需访问案例(流程)的内存映象,不必关心具体的案例数据是否已经装载。如果在执行过程中发现某个案例(流程)的数据不存在,动态执行控制模块的延迟装载功能会自动从案例文件中装载指定案例(流程)的数据;如果所访问的案例(流程)的数据已经存在,则不需重复装载,这样所有的案例(流程),在一次测试过程中不管使用多少遍,也仅需装载一次,提高了对案例的处理速度。
每次测试往往仅仅涉及到某个或某几个测试集,因此就避免了大量装入所有案例数据装入之后所引起的内存占用,从而提高执行的效率;同时也避免了通过案例执行序列查找案例,而后边分析案例模板边执行案例而引起的重复分析与执行速度变慢。
结构化的案例编写,减少了重复工作量,并且提高了案例的可重复性。
基于案例的动态执行和延迟装载技术,该系统在案例的编写方式上实现了对操作流程的复用机制,具体如下引入类似于程序设计中过程调用的语义,在编写案例的时候,如果每次均需执行相同的一系列的操作步骤,就可以将这一系列操作步骤抽象出来,定义称为一个流程模板,每一组具有不同的输入数据但与具有相同操作步骤的集合定义为不同的流程,这些流程同属于一个流程模板,先编写这些流程与流程模板,然后在案例编写中,调用已经定义好的流程,从而既简化了案例的编写过程,增加了案例的可维护性,同时也能提高了案例的执行速度,减少了案例执行过程中的内存消耗。
参见图9,其所示为本发明的自动化测试流程中案例的执行过程300由于在案例的初始化过程中已经在系统内存中记录了案例(流程)模板的指令序列、案例(流程)模板名与案例(流程)名的对应关系、某个案例在案例文件中的位置、某个流程在流程中的位置,因此在执行过程中主要包括如下步骤①读入案例执行序列301;②根据该案例的执行序列,通过文件接口读入相关的案例文件302;根据案例执行序列中要执行的案例名称到内存中查找相关“案例”是否存在,然后判断相关案例的数据是否已经装载;若数据尚未装载,则通过内存中已经存在的该案例的存储位置到案例文件中读取案例数据;③分析并且执行案例303;④驱动商业测试软件进行测试304;⑤比较测试结果与期望数据305;⑥某个案例执行完毕,则将相关的结果通过测试管理工具接口反馈到测试管理工具中306。
参见图10,分析并且执行案例303,根据初始化过程中形成的该案例所属模板的指令序列中的关键词判断这一步骤是调用某个流程还是执行某个基本操作;若属于执行基本操作,则直接通过本自动化测试辅助系统将该操作转换为商业测试软件脚本,然后通过商业测试软件接口驱动商业测试软件;若为调用流程,则根据流程名到内存中查找流程数据是否已经装载,若没有装载,则进行装载,若已经装载,则直接根据流程模板分析流程并执行一个一个的基本操作,直至该流程执行完毕。当一个基本操作或者流程执行完毕之后,该自动化测试系统通过语法分析模块取得案例指令序列的下一个关键词,进行下一步骤的执行,直到该案例完全执行完毕。(注由于流程代表了一系列基本操作的集合,所以当有大量案例需要测试的情况下,流程的重复程度是很高的,因此很多流程只要装载一次就可以了,避免了重复装载流程数据带来的时间损失)。
参见图11,本发明的测试管理工具既可以对测试的结果进行自动分析,灵活地组合形成需要再度测试的案例,以取代人工编写“案例执行序列”的过程;也可以案件测试之前把相关的案例信息(主要为案例名、案例功能、案例所属于的测试案例集)通过接口输入到测试管理工具(步骤401),再通过测试管理工具选择需要测试的案例(步骤402),形成“案例执行序列”;然后本自动化测试辅助系统进行初始化设置,并根据自动形成的“案例执行序列”分析和执行相关案例(步骤403);通过商业测试软件进行测试(步骤404);最后,将测试结果再反馈到测试管理工具中(步骤405);接着,若需要再进行案例的测试,则仍然可以通过测试管理工具可以对测试的结果进行自动分析,灵活地组合形成需要再度测试的案例,以取代人工编写“案例执行序列”的过程。通过测试管理工具选取案例的执行序列主要包括下面几种方式就案例的选择而言一种方式是通过测试管理工具提供的界面直接进行操作,测试管理工具的界面列明了所有的案例名、案例描述、案例所属的测试集、案例被测试的次数、案例测试成功的次数、案例测试失败的次数等信息,操作人员可以通过界面对需要测试的案例进行选取;另一种方式是通过后台直接对测试管理工具的数据库进行处理,选取需要执行的案例。在选取完成之后,测试管理工具即可以自动生成某种格式的测试案例的执行序列,然后通过文件接口将该执行序列读入,由此进行案例测试;也可以不必生成测试案例的执行序列,而是直接将这些案例信息读入内存,进而进行案例测试。
实施例1参见图12,下面以对某个“消费交易”功能进行测试为例对本发明做详细说明“消费交易”主要是测试在发送端输入必要的数据,提交到被测试网络,然后由网络进行转接,发送到接受方进行必要的检查和处理,再通过网络回送给发送端。
案例的测试过程1、编写测试案例、编写测试案例执行序列、编写初始化配置文件。
①测试案例执行序列的编写(步骤501)以表格的方式表示,包含了该案例是否需要执行、所属案例集的名称(案例集目前的分类依据的是应用,如可以分为预授权案例集、消费案例集、取款案例集等)、案例名称、案例描述等信息。
②测试案例的编写(步骤501)同样以表格的形式出现。主要由案例名称、关键词、流程名称、基本数据等几个组成部分,其中每一列的关键词表示所要进行的操作类型,或调用一个流程,或进行一次赋值操作等。(测试流程的编写把某些最基本的操作抽象出来编写为流程模板)。
③初始化配置的编写(CONFIG.XLS)(步骤502)主要包括环境的设定、关于数据库连接的参数、与测试管理工具相关的参数、执行序列文件名、执行的案例集名(可以指定本次运行消费案例集,而不运行其他案例集)、以及案例或者流程中所使用到一些常数。
2、初始化过程(步骤503)①把配置文件调入内存,进行测试系统的环境配置。
②对案例模板进行分析、对流程模板进行分析(但不装入案例数据与流程数据),并在内存中形成这样几组对应关系将“消费案例”的模板装入内存,即在内存中记录了该模板的指令序列,但并不装载具体数据,如第一步进行赋值操作、第二步调用流程等,至于具体赋什么值,调用哪个流程在初始化过程中并不需要加载;建立“每个消费案例”与“消费案例模板”的对应关系,即记录每个“消费案例”在“案例”文件中的位置,以及每个消费案例的名称;同时装载所有“流程”模板,并形成流程与流程模板的对应关系;某个流程在流程文件中的具体位置等信息。
3、“某个消费案例POS-1”进行测试的详细过程由于在初始化过程中已经形成案例与案例模板的对应关系,也就是经过初始化,内存中记录了某个案例模板的指令序列,即一步步应该进行什么操作,并且记录了哪个案例属于哪个案例模板。因此,在执行过程中,首先,导入案例的执行序列,然后根据该执行序列所指定的需要执行的案例名称POS-1,查找内存中是否存在该案例数据,查找结果内存中有该案例名,但没有该案例数据,则加载该案例数据,再根据在初始化过程中在内存中形成的该案例所属的案例模板的指令序列进行分析,若该指令需要执行,则判断是属于调用流程还是进行基本操作,如果需要调用流程的话,则根据流程名称判断是否数据已经装载,如果没有装载,则通过相关的映射把相关的流程数据调入内存,然后执行流程中的基本操作;若属于基本操作,则直接执行基本操作。
根据初始化过程中在内存中形成的案例POS-1所属的案例模板的指令序列表明,该案例的指令序列为“调用流程——调用流程——赋值——发送报文——调用流程——调用流程——调用流程——调用流程……调用流程”。
因此,在执行过程中,加载案例POS-1的数据后,将会进行案数据和案例模板指令序列匹配,如案例POS-1第一步的数据为A,则根据指令序列第一步为“调用流程”,就知道该案例第一步的操作为“调用流程A”。
①受理方页面设置,调用流程A(步骤504)流程A的操作为受理方的动作,如设置卡介质、交易类型、报文头选择(带报头、不带报头)、新旧密钥选择、发送控制(直接发送、不发送、延迟发送、重复发送)、加密选择。在调用流程A504的过程中,首先判断该流程的数据是否已经装载到内存,如果还没有装载,则执行装载过程,若已经装载,则直接从内存中取得流程数据;②发卡方页面设置,调用流程B(步骤505)流程B的操作为自动进行发卡方的动作(与受理方类似);③交易类型选择设置为“消费”(步骤506)这步为赋值操作,用来进行相关域的设置和报文头的参数设置;如设置用案例编号EXP010XXN01;④发送报文(步骤507)发送报文为一个基本操作,直接将发卡方的数据发送,该操作直接执行,通过本系统的动态执行控制模块转换为商业软件测试脚本;⑤受理方仿真器日志获取,调用流程C(步骤508)流程C的作用是对发送报文日志的数值与预期的数值进行比对,是否与预期数值一致;⑥发送方仿真器日志获取,调用流程D(步骤509)流程D的作用是对发送报文日志的数值与预期的数值进行比对,是否与预期数值一致;⑦受理方报文检查,调用流程E(步骤510)流程E的作用是对受理方的报文进行检查,判断结果;⑧发卡方报文检查,调用流程F(步骤511)流程F的作用是对发卡方的报文进行检查,判断结果;
⑨数据库获取数据,调用流程G(步骤512);该流程主要实现的是对数据库中的数据进行比对;⑩检查应答报文写的转接日志,比对结果、生成LOG文件(步骤513)。
将测试结果反馈到测试管理工具(步骤514)。如果案例的执行序列指明还有其他案例需要测试,则继续读取案例——初始化——执行,只是调用的流程、执行的步骤有所不同而已。
由于采用了本发明所述的技术手段,取得了如下明显的效果每次运行并非针对所有运行集进行,也并非会涉及所有的流程,因此把所有案例数据调入内存需要很长的时间,在某种程度上也是一种浪费。
将案例的执行与案例的初始化相区分,在初始化过程中只需要调入案例模板、关键词、案例名称等信息。这就避免了大量数据的调入,同时也避免了将一个案例所有信息串联起来需要耗费的大量时间。
从理论上说,调度一个案例的时候,通过案例名调用该案例,同时分析关键词,如果关键词表示调度流程的话,还需要根据流程名称调度相关的操作与步骤,时间上比原来单个案例的执行会有所增加,但根据我们的测试和实验数据,这种时间上的增加几乎感觉不出。
例如要测试400个案例,原先其初始化过程需要耗费20到30分钟,每笔交易测试执行速度将近2到3分钟;而采用了案例的动态执行和延迟装载之后,速度大幅度提高,其初始化过程只需要2到3分钟,而每笔交易测试的执行速度基本上没有大的变化。
案例执行序列可以是由人工编写的,并给各个案例指定了其所在的案例子集,和是否执行的标志。也可以是由测试管理工具实现案例的动态运行调度,可以由测试管理工具自动控制案例执行序列,利用测试管理工具对所有案例进行动态而便捷的调度。例如我们重新运行的某些案例,或者需要对所有执行失败的案例重新运行的话,我们只要利用测试管理工具修改执行序列即可。
权利要求
1.一种自动化测试辅助系统,用于驱动软件测试系统中的商业测试软件,其特征在于,该系统由如下模块组成a)动态执行控制模块,b)案例调度模块,c)语法分析模块,d)文件接口,e)测试执行软件接口,f)测试管理工具接口;其中,本系统测试所需要的案例文件、流程文件和案例测试的执行序列文件,均通过所述的文件接口读入到系统运行的内存;测试执行软件接口连接到商业测试执行软件并驱动该商业测试软件,测试管理工具接口连接到测试管理工具;动态执行控制模块一端与案例调度模块连接,另一端分别连接到语法分析模块、测试执行软件接口、测试管理工具接口,通过调用案例调度模块对案例进行读入,调用语法分析模块对案例进行分析、执行,并转换为相应的商业测试软件脚本,通过测试执行软件接口驱动商业测试软件,将执行结果通过测试管理工具接口记载到测试管理工具中。
2.如权利要求1所述的自动化测试辅助系统,其特征在于,所述的语法分析模块包括案例模板分析单元,并且动态执行控制模块连接到该单元。
3.如权利要求1所述的自动化测试辅助系统,其特征在于所述的文件接口模块还具有将测试案例、案例的执行序列转换为本系统案例调度模块所支持的格式的功能。
4.一种使用本发明的系统的软件自动测试方法,包括如下步骤a)初始化装载,b)把案例执行序列调入内存,并据此进行案例调度;c)分析案例、加载案例数据;d)执行案例并生成脚本函数供商业测试软件进行测试;e)将测试结果与期望数据进行比较;f)写日志文件,同时将运行结果输入到测试管理工具。
5.如权利要求4所述的方法,其特征在于,所述的初始化装载包括如下内容把系统运行所需要的配置文件的相关参数调入内存,包含了案例文件名、流程文件名、案例执行序列文件名、跟被测软件相关的参数,和跟测试管理工具相关的参数;分别根据案例文件名和流程文件名读入案例文件和流程文件,对其中的案例模板部分进行分析,同时也对流程文件中的流程模板进行分析。
6.如权利要求4所述的方法,其特征在于,所述的案例文件、流程文件和案例执行序列文件可以是存放在多个文件中,也可以存放在一个文件的多个不同的工作表中。
7.如权利要求4所述的方法,其特征在于,所述的案例调度是由动态执行控制模块进行案例调度。
8.如权利要求4所述的方法,其特征在于,所述的分析案例、加载案例数据指判断案例数据是否已经装载到内存中,并根据分析结果加载案例数据,该步骤由动态执行控制模块来完成的。
9.如权利要求5所述的方法,其特征在于,所述的案例执行序列中记载了该序列要执行的案例是属于哪个测试集的。
10.如权利要求5所述的方法,其特征在于,所述的对其中的案例模板部分进行分析,还包括对该模板的指令序列进行初步分析,在内存中形成案例模板与案例模板指令序列之间的对应关系。
11.如权利要求10所述的方法,其特征在于,所述的对其中的案例模板部分进行分析,还包括对基于每个模板的案例进行识别,在内存中形成案例、案例模板、案例在案例文件中的位置之间的对应关系。
12.如权利要求5所述的方法,其特征在于,所述的对其中的流程模板部分进行分析,还包括对该流程的指令序列进行初步分析,在内存中形成流程模板与流程模板指令序列之间的对应关系。
13.如权利要求12所述的方法,其特征在于,所述对其中的流程模板部分进行分析,还包括对基于每个模板的流程进行识别,在内存中形成流程、流程模板、流程在流程文件中的位置之间的对应关系。
14.如权利要求6所述的方法,其特征在于,所述的案例调度是由测试管理工具进行的。
15.如权利要求14所述的方法,其特征在于,对执行失败的案例或者需要重新运行的案例,用测试管理工具动态修改,以自动生成新的案例执行序列。
全文摘要
本发明提供了一种自动化测试辅助系统以及相应的软件自动测试方法。本系统由动态执行控制模块、案例调度模块、语法分析模块、文件接口、测试执行软件接口、测试管理工具接口组成。通过本系统,可以将相关的测试案例方便地转换为商业测试软件的脚本,并且将基本操作封装成流程,实现了由测试案例调用流程的结构化方法,同时采用案例、流程的动态执行和延迟装载技术,将案例的测试过程分解为“案例测试的初始化过程”和“案例测试的执行过程”两个步骤,从而一方面实现案例编写的独立性、案例和流程的复用,同时降低了系统内存的占用率、提高了案例的执行效率。
文档编号G06F11/36GK1744054SQ20041005416
公开日2006年3月8日 申请日期2004年8月31日 优先权日2004年8月31日
发明者柴洪峰, 单怀光, 戚跃民, 郭锐, 胡文斌, 吴金坛, 黎宝华 申请人:中国银联股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1