CN1744054A - 一种自动化测试辅助***及相应的软件自动测试方法 - Google Patents

一种自动化测试辅助***及相应的软件自动测试方法 Download PDF

Info

Publication number
CN1744054A
CN1744054A CN 200410054163 CN200410054163A CN1744054A CN 1744054 A CN1744054 A CN 1744054A CN 200410054163 CN200410054163 CN 200410054163 CN 200410054163 A CN200410054163 A CN 200410054163A CN 1744054 A CN1744054 A CN 1744054A
Authority
CN
China
Prior art keywords
case
test
file
flow
template
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200410054163
Other languages
English (en)
Other versions
CN100375057C (zh
Inventor
柴洪峰
单怀光
戚跃民
郭锐
胡文斌
吴金坛
黎宝华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Unionpay Co Ltd
Original Assignee
China Unionpay Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Unionpay Co Ltd filed Critical China Unionpay Co Ltd
Priority to CNB2004100541634A priority Critical patent/CN100375057C/zh
Publication of CN1744054A publication Critical patent/CN1744054A/zh
Application granted granted Critical
Publication of CN100375057C publication Critical patent/CN100375057C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供了一种自动化测试辅助***以及相应的软件自动测试方法。本***由动态执行控制模块、案例调度模块、语法分析模块、文件接口、测试执行软件接口、测试管理工具接口组成。通过本***,可以将相关的测试案例方便地转换为商业测试软件的脚本,并且将基本操作封装成流程,实现了由测试案例调用流程的结构化方法,同时采用案例、流程的动态执行和延迟装载技术,将案例的测试过程分解为“案例测试的初始化过程”和“案例测试的执行过程”两个步骤,从而一方面实现案例编写的独立性、案例和流程的复用,同时降低了***内存的占用率、提高了案例的执行效率。

Description

一种自动化测试辅助***及相应的软件自动测试方法
技术领域
本发明涉及一种计算机软件测试技术,尤其是一种对某个应用软件的功能的执行可靠性进行自动测试的测试技术。
背景技术
目前对功能软件或应用软件的自动测试有多种方法,主要方法有:
一、捕捉/回放机制:直接使用商业软件脚本程序的编写测试案例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
  是否运行标志   所属测试集   案例名称   案例描述
  TRUE(需要执行)   TEST_A   A   测试a功能
  FALSE(不执行)   TEST_B   B   测试b功能
其中,“是否运行标志”表示本次测试该案例是否需要运行,使用该标志可以避免每次输入案例名,直接对该标志进行修改就可以便捷地修改需要运行的测试案例;“所属测试集”则根据功能的不同将所有的测试案例分解为不同的测试集,在配置文件中可以设置本次需要执行的测试集,从而方便地实现某类功能的批量测试;“案例名称”则与“案例文件”中的案例名称相对应,根据该名称既可以到内存中查找该案例是否已经装载,也可以到案例文件中查找相关的案例数据;“案例描述”则简单地描述该测试案例的测试目的。
案例文件则定义了需要测试案例的名称、操作步骤(调用流程或直接执行基本操作),其结构举例如表2:
                               表2
 描述1   描述2   描述3
  TRUE   TRUE   TRUE   TRUE  TRUE   TRUE   TRUE
案例名   案件的测试目的   案例的子编号 CALL   交易类型选择
 =   《
  案例名A   目的A  流程名C   步骤B
如表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分钟,而每笔交易测试的执行速度基本上没有大的变化。
案例执行序列可以是由人工编写的,并给各个案例指定了其所在的案例子集,和是否执行的标志。也可以是由测试管理工具实现案例的动态运行调度,可以由测试管理工具自动控制案例执行序列,利用测试管理工具对所有案例进行动态而便捷的调度。例如:我们重新运行的某些案例,或者需要对所有执行失败的案例重新运行的话,我们只要利用测试管理工具修改执行序列即可。

Claims (15)

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所述的方法,其特征在于,对执行失败的案例或者需要重新运行的案例,用测试管理工具动态修改,以自动生成新的案例执行序列。
CNB2004100541634A 2004-08-31 2004-08-31 一种自动化测试辅助***及相应的软件自动测试方法 Active CN100375057C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100541634A CN100375057C (zh) 2004-08-31 2004-08-31 一种自动化测试辅助***及相应的软件自动测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100541634A CN100375057C (zh) 2004-08-31 2004-08-31 一种自动化测试辅助***及相应的软件自动测试方法

Publications (2)

Publication Number Publication Date
CN1744054A true CN1744054A (zh) 2006-03-08
CN100375057C CN100375057C (zh) 2008-03-12

Family

ID=36139438

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100541634A Active CN100375057C (zh) 2004-08-31 2004-08-31 一种自动化测试辅助***及相应的软件自动测试方法

Country Status (1)

Country Link
CN (1) CN100375057C (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043714A (zh) * 2010-12-10 2011-05-04 成电汽车电子产业园(昆山)有限公司 一种嵌入式软件自动测试***
CN102135939A (zh) * 2011-03-30 2011-07-27 镇江睿泰信息科技有限公司 一种测试用例执行调度装置及方法
CN102135938A (zh) * 2011-03-21 2011-07-27 中国工商银行股份有限公司 一种软件产品测试方法及***
WO2012075889A1 (zh) * 2010-12-08 2012-06-14 深圳市茁壮网络股份有限公司 浏览器测试方法及***
CN102591775A (zh) * 2011-12-30 2012-07-18 苏州汉清投资管理有限公司 一种实现软件自动测试的***
CN102789401A (zh) * 2012-07-12 2012-11-21 北京泛华恒兴科技有限公司 基于柔性测试技术的测试流程控制方法和装置
CN101802792B (zh) * 2007-09-14 2012-12-26 空中客车运营简易股份公司 用于测试航空器上的***的操作软件的有效性的自动脚本生成方法及用于实现该方法的设备
CN101587441B (zh) * 2008-05-20 2013-01-16 株式会社理光 辅助软件开发的设备、方法和***
CN101789002B (zh) * 2010-01-22 2013-09-11 浪潮(北京)电子信息产业有限公司 一种服务器上数据库兼容性的测试的装置及方法
CN101098200B (zh) * 2006-06-27 2014-02-19 中兴通讯股份有限公司 一种实现可定制测试流程的方法
CN103810094A (zh) * 2012-11-14 2014-05-21 中国农业银行股份有限公司 一种测试案例的执行方法、装置和测试工具
CN103942138A (zh) * 2013-01-23 2014-07-23 纽海信息技术(上海)有限公司 测试方法及装置
CN105824747A (zh) * 2015-01-27 2016-08-03 程文彬 一种用于软件自动化测试的云服务***
CN106354628A (zh) * 2016-08-12 2017-01-25 北京小米移动软件有限公司 支付应用的测试方法及装置
CN106951349A (zh) * 2017-03-16 2017-07-14 郑州云海信息技术有限公司 一种利用spec cpu对国产服务器进行cpu测试的方法与装置
CN107656846A (zh) * 2017-09-19 2018-02-02 郑州云海信息技术有限公司 一种设备的硬件信息的获取方法及装置
CN107704392A (zh) * 2017-09-30 2018-02-16 华为技术有限公司 一种测试用例的处理方法及服务器
CN108182142A (zh) * 2016-12-08 2018-06-19 武汉安天信息技术有限责任公司 测试资源整合方法、***及功能测试方法、***
WO2019084861A1 (zh) * 2017-11-02 2019-05-09 深圳市汇顶科技股份有限公司 测试软件的方法和装置
CN112132176A (zh) * 2020-08-14 2020-12-25 中信银行股份有限公司 一种差异化提取方法、装置、电子设备及计算机可读存储介质
CN112418230A (zh) * 2020-11-14 2021-02-26 武汉光庭信息技术股份有限公司 一种基于车载显示的自动化测试方法及测试***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6966013B2 (en) * 2001-07-21 2005-11-15 International Business Machines Corporation Method and system for performing automated regression tests in a state-dependent data processing system
CN1248116C (zh) * 2002-09-23 2006-03-29 上海贝尔有限公司 一种基于主机平台的嵌入式模块和子***的通用测试装置
CN1310150C (zh) * 2002-11-21 2007-04-11 中兴通讯股份有限公司 一种嵌入式软件测试方法

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101098200B (zh) * 2006-06-27 2014-02-19 中兴通讯股份有限公司 一种实现可定制测试流程的方法
CN101802792B (zh) * 2007-09-14 2012-12-26 空中客车运营简易股份公司 用于测试航空器上的***的操作软件的有效性的自动脚本生成方法及用于实现该方法的设备
CN101587441B (zh) * 2008-05-20 2013-01-16 株式会社理光 辅助软件开发的设备、方法和***
CN101789002B (zh) * 2010-01-22 2013-09-11 浪潮(北京)电子信息产业有限公司 一种服务器上数据库兼容性的测试的装置及方法
WO2012075889A1 (zh) * 2010-12-08 2012-06-14 深圳市茁壮网络股份有限公司 浏览器测试方法及***
CN102043714A (zh) * 2010-12-10 2011-05-04 成电汽车电子产业园(昆山)有限公司 一种嵌入式软件自动测试***
CN102043714B (zh) * 2010-12-10 2013-01-02 成电汽车电子产业园(昆山)有限公司 一种嵌入式软件自动测试***
CN102135938A (zh) * 2011-03-21 2011-07-27 中国工商银行股份有限公司 一种软件产品测试方法及***
CN102135938B (zh) * 2011-03-21 2015-04-15 中国工商银行股份有限公司 一种软件产品测试方法及***
CN102135939A (zh) * 2011-03-30 2011-07-27 镇江睿泰信息科技有限公司 一种测试用例执行调度装置及方法
CN102135939B (zh) * 2011-03-30 2014-01-22 镇江睿泰信息科技有限公司 一种测试用例执行调度装置及方法
CN102591775A (zh) * 2011-12-30 2012-07-18 苏州汉清投资管理有限公司 一种实现软件自动测试的***
CN102789401B (zh) * 2012-07-12 2014-11-05 北京泛华恒兴科技有限公司 基于柔性测试技术的测试流程控制方法和装置
CN102789401A (zh) * 2012-07-12 2012-11-21 北京泛华恒兴科技有限公司 基于柔性测试技术的测试流程控制方法和装置
CN103810094A (zh) * 2012-11-14 2014-05-21 中国农业银行股份有限公司 一种测试案例的执行方法、装置和测试工具
CN103810094B (zh) * 2012-11-14 2016-10-05 中国农业银行股份有限公司 一种测试案例的执行方法、装置和测试工具
CN103942138A (zh) * 2013-01-23 2014-07-23 纽海信息技术(上海)有限公司 测试方法及装置
CN105824747A (zh) * 2015-01-27 2016-08-03 程文彬 一种用于软件自动化测试的云服务***
CN106354628A (zh) * 2016-08-12 2017-01-25 北京小米移动软件有限公司 支付应用的测试方法及装置
CN108182142A (zh) * 2016-12-08 2018-06-19 武汉安天信息技术有限责任公司 测试资源整合方法、***及功能测试方法、***
CN106951349A (zh) * 2017-03-16 2017-07-14 郑州云海信息技术有限公司 一种利用spec cpu对国产服务器进行cpu测试的方法与装置
CN107656846A (zh) * 2017-09-19 2018-02-02 郑州云海信息技术有限公司 一种设备的硬件信息的获取方法及装置
CN107704392A (zh) * 2017-09-30 2018-02-16 华为技术有限公司 一种测试用例的处理方法及服务器
CN107704392B (zh) * 2017-09-30 2021-05-18 华为技术有限公司 一种测试用例的处理方法及服务器
WO2019084861A1 (zh) * 2017-11-02 2019-05-09 深圳市汇顶科技股份有限公司 测试软件的方法和装置
CN110023913A (zh) * 2017-11-02 2019-07-16 深圳市汇顶科技股份有限公司 测试软件的方法和装置
CN112132176A (zh) * 2020-08-14 2020-12-25 中信银行股份有限公司 一种差异化提取方法、装置、电子设备及计算机可读存储介质
CN112418230A (zh) * 2020-11-14 2021-02-26 武汉光庭信息技术股份有限公司 一种基于车载显示的自动化测试方法及测试***

Also Published As

Publication number Publication date
CN100375057C (zh) 2008-03-12

Similar Documents

Publication Publication Date Title
CN1744054A (zh) 一种自动化测试辅助***及相应的软件自动测试方法
CN1811702A (zh) 开发门户应用和自动部署门户应用的***和方法
CN1368693A (zh) 用于全球化软件的方法和设备
CN1315017A (zh) 包含内部引用的两种版本数据表格之间的差别提取
CN100351811C (zh) 一种软件产品健壮性的测试方法及装置
CN1955991A (zh) 在业务模型中集成模型语义和领域语义的方法和装置
CN101046812A (zh) 一种数据库表记录构造与检查的方法及其装置
CN101052948A (zh) 对象过程图应用程序开发***
CN1773508A (zh) 把源文档转换成目标网页文件的方法
CN1648874A (zh) 一种银行主机运行压力测试***
CN1680959A (zh) 进程编辑设备和方法以及进程管理设备和方法
CN1767453A (zh) 自动测试方法和***
CN1737598A (zh) 用于配置在线测试的自动化调试的方法和装置
CN1379882A (zh) 将二维数据转换为标准形式的方法
CN1790957A (zh) 设备测试方法
CN1858742A (zh) 一种在实时数据库中实现更新数据的方法和***
CN1228558A (zh) 程序变换方法和程序变换***
CN1519753A (zh) 程序、字符输入编辑方法、装置及记录媒体
CN100347682C (zh) 自动化测试构建方法
CN1991765A (zh) 手持终端应用程序的开发装置和方法
CN1633638A (zh) 在外貌特征模式中带有总功能特性的连接实体
CN101047555A (zh) 一种设备质量检查方法
CN1862545A (zh) 绘制原理图设计文件的方法和***
CN1200516A (zh) 利用电子邮件的信息处理方法和装置及存储其控制程序的媒体
CN1623826A (zh) 公交车载机控制***及其方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant