CN101908015A - 一种基于构件生成测试案例的装置及方法 - Google Patents
一种基于构件生成测试案例的装置及方法 Download PDFInfo
- Publication number
- CN101908015A CN101908015A CN200910138277XA CN200910138277A CN101908015A CN 101908015 A CN101908015 A CN 101908015A CN 200910138277X A CN200910138277X A CN 200910138277XA CN 200910138277 A CN200910138277 A CN 200910138277A CN 101908015 A CN101908015 A CN 101908015A
- Authority
- CN
- China
- Prior art keywords
- data
- case
- name
- parameter
- object elements
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于构件生成测试案例的装置及方法。该装置包括装置服务器端(101)、装置客户端(102)和待测系统数据库(103),装置服务器(101)与装置客户端(102)通过网络连接方式连接,装置客户端(102)与待测系统数据库(103)通过数据库直连方式连接。利用此装置及方法,能够描述待测软件对象与动作的特征,从而通过组合生成特定的测试案例场景,达到测试案例快速组合、投入少、覆盖率高的效果。
Description
技术领域
本发明涉及计算机软件测试技术领域,特别涉及一种基于构件生成测试案例的装置及方法。利用此装置及方法,能够描述待测软件对象与动作的特征,从而通过组合生成特定的测试案例场景,达到测试案例快速组合、投入少、覆盖率高的效果。
背景技术
软件产品的测试,是指在不同的阶段和粒度,从不同的角度和业务要求,对软件产品的可用性、易用性、安全性等进行的验证工作。测试案例的编写,在软件测试中有重要意义,同时也占了很大的工作量比重。
软件测试的开展,需要一些对待测对象、测试执行方法、测试数据、测试判断依据等进行说明的描述性文本,称为测试案例。
目前业界对测试案例的管理方法,如附图1所示,一般采用按案例所属的业务系统、业务流程等测试对象进行管理,一个案例属于一个或多个业务系统(或业务流程)下的一个功能模块(或功能分支)。比如以银行金融系统的测试案例为例,一个“活期开户输入不存在的用户名”的测试案例,就可能属于“个人金融系统-活期存款应用-开户操作-用户名校验模块”下。这种管理方法存在的问题是:
1、案例属于特定的业务系统或流程,需要查询案例时的查询难度大。同时因为目前的软件都是跨应用、多模块的交易,一个功能和流程可能涉及多个应用、多个模块,很难将其准确归类到特定的业务系统和应用中进行管理。
2、针对每个功能的不同测试场景编写多个完整的功能案例,案例编写的工作量非常大。另外案例的重用性很差,消耗了大量工作量编写的案例,仅能用于特定的系统甚至特定的版本。即使其他系统有类似的功能,也需要重新编写案例并指定数据。
3、案例分析与编写难度大,在做案例分析时很难准确的描述该功能、流程中某一特定测试场景的全貌。同时也很难达到高的案例覆盖率。
4、不便于根据案例自动转化成测试脚本
5、某些案例编写与管理方法,甚至把特定的测试数据值在测试案例中进行指定与管理。这样进一步约束了案例的重用性,特别对于数据仅能使用一次的系统,这样无形中使案例几乎无法重用,更加降低了测试效率。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种基于构件生成测试案例的装置与方法,以适用于软件开发过程中的所有阶段,提高软件测试案例的覆盖率和可重用性,同时大幅减少编写和维护测试案例的难度,提高测试效率和测试质量。
(二)技术方案
为达到上述目的的一个方面,本发明提供了一种基于构件生成测试案例的装置,该装置包括装置服务器端101、装置客户端102和待测系统数据库103,装置服务器101与装置客户端102通过网络连接方式连接,装置客户端102与待测系统数据库103通过数据库直连方式连接;其中:
装置服务器端101,用于响应装置客户端102的操作请求,收集并保存由装置客户端102维护、上送的动作元素和对象元素属性,实现对案例构件的管理,并根据对象元素属性生成数据描述;
装置客户端102,用于向案例编写人员提供案例构件元素维护和下载、案例逻辑编写、获取测试数据,并根据案例逻辑生成案例实例;
待测系统数据库103,用于响应装置客户端102的数据采集请求,为测试案例的生成提供测试数据。
上述方案中,所述装置服务器端101包括对象元素属性管理单元1、数据描述生成单元2、动作元素管理单元3、数据存储单元6和业务参数维护单元7,其中:
对象元素属性管理单元1,用于接收装置客户端102上送的对象元素属性定义,包括对象元素属性涉及的待测系统数据表、数据表的业务区分参数和每个业务区分参数可能的取值类型,并进行合法性校验,将处理过的数据保存到数据存储单元6中;
数据描述生成单元2,用于根据对象元素属性涉及的表、业务区分参数及每个业务区分参数可能的取值类型,生成以SQL语言描述的多个数据描述,从而形成对象元素属性和数据库中实际数据的对应关系,并将该对应关系保存到数据存储单元6中;
动作元素管理单元3,用于接收装置客户端102上送的动作元素定义,进行合法性校验后保存到数据存储单元6中;
数据存储单元6,用于将动作元素、对象元素属性和数据描述保存到不同的数据表中;
业务参数维护单元7,用于实现案例构件维护人员的维护,并通过装置客户端102上送的、对待测系统数据表及表包括的所有业务区分参数的维护信息进行合法性校验。
上述方案中,所述数据存储单元6保存有对象元素属性表、属性与业务区分参数对应表、数据描述表、动作元素表和业务参数表,其中:
对象元素属性表,用于保存对象元素属性的基础信息,其中的字段至少包括对象元素属性编号、对象元素属性名以及涉及的表;
属性与业务区分参数对应表,用于保存对象元素属性的多个业务区分参数信息,其中的字段至少包括业务区分参数编号、所属的对象元素属性编号和业务区分参数的可能取值类型;
数据描述表,用于保存数据描述的内容以及与对象元素属性的对应关系,其中的字段至少包括数据描述编号、数据描述对应的对象元素属性编号、数据描述名和数据描述内容;
动作元素表,用于保存动作元素信息,其中的字段至少包括动作元素编号、动作元素名、执行对象个数和执行内容;
业务参数表,用于保存待测系统数据库中可能存在的表以及数据表所拥有的字段,方便案例编写人员在新增对象元素属性时根据表和字段制定其业务区分参数并增加可能取值。
上述方案中,所述所属的对象元素属性编号字段以外键的形式关联到对象元素属性表,所述业务区分参数字段以外键形式关联到业务参数表。
上述方案中,所述业务参数表由案例构件维护人员在客户端维护,其中的字段至少包括业务参数编号、业务参数名、业务参数所属表和字段名。
上述方案中,所述装置客户端102包括案例逻辑生成单元4、业务案例生成单元5和参数及已有构件下载单元8,其中:
案例逻辑生成单元4,用于对案例设计人员编写的案例逻辑进行解析,拆解成一个个利用特定动作元素操作特定对象的流程,以及流程中每一步的操作对象所拥有的对象元素属性,并进行存在性和合法性校验;
业务案例生成单元5,用于响应案例设计人员的案例生成请求,根据选定的案例逻辑按步骤枚举拼装动作元素及可能的数据描述组合,然后通过JDBC方式连接待测系统数据库103,根据每个数据描述中的SQL语句查询待测系统数据库103,如果查询到数据,就在其中选中一条并分配到相应的待测对象中,最终枚举形成多个操作流程相同且数据特点相异的业务测试案例;
参数及已有构件下载单元8,用于定时与服务器进行同步,下载最新的业务区分参数和案例构件元素,提供给对象元素属性管理单元1、动作元素管理单元3、案例逻辑生成单元4和业务案例生成单元5使用。
为达到上述目的的另一个方面,本发明还提供了一种基于构件生成测试案例的方法,该方法包括:
步骤A:装置客户端启动并下载已有的业务参数和案例构件;
步骤B:新增业务参数;
步骤C:新增动作元素;
步骤D:新增对象元素属性;
步骤E:根据对象元素属性生成数据描述;
步骤F:新增案例逻辑;
步骤G:业务案例自动生成。
上述方案中,步骤A中所述下载已有的业务参数和案例构件具体包括:
步骤A1:装置客户端启动后,触发参数及已有构件下载单元,通过装置客户端主动与装置服务器端建立TCP连接,顺次访问装置服务器端的数据存储单元中保存的各张数据表,全量下载已有的参数和案例构件到装置客户端;
步骤A2:装置客户端接收返回数据,并将数据保存在本地缓存中;
步骤A3:参数及已有构件下载单元定时触发,访问装置服务器端的数据存储单元中各张数据表,增量下载参数及案例构件的更新。
上述方案中,所述步骤B具体包括:
步骤B1:在装置客户端录入待测系统数据库中的数据表名、字段名及字段对应的业务参数名,录入完成后,装置客户端主动连接装置服务端,以TCP方式把数据表名、字段名和业务参数名打包上送装置服务器端处理;
步骤B2:装置服务端接收到数据后,调用业务参数维护单元,利用“数据库表名-字段名-业务参数名”为条件,查询服务段数据库中业务参数表,如果已有匹配的记录,则向装置客户端返回记录已存在的报错信息;反之若无匹配记录,则认为校验通过;
步骤B3:装置服务器端调用数据存储单元,为该条数据分配唯一的业务参数编号,然后将业务参数编号和该数据插入装置服务器端数据库中的业务参数表,并将插入结果返回对应的装置客户端。
上述方案中,所述步骤C具体包括:
步骤C1:在装置客户端录入测试过程中较通用的、对任意对象进行操作或实现一定目的描述性文本,并指定动作元素名及执行对象个数,输入完成后,客户端主动连接装置服务端,把动作元素名、执行对象个数、描述性文本等数据打包上送服务器端处理;
步骤C2:装置服务器端调用动作元素管理单元,对输入的数据进行存在性和合法性校验;
步骤C3:装置服务器端调用数据存储单元为该条数据分配唯一的动作元素编号,然后将动作元素编号、动作元素名、执行对象个数、描述文本插入装置服务器端数据库中的动作元素表的相应字段中,并将插入结果返回对应的装置客户端。
上述方案中,步骤C2中所述对输入的数据进行存在性和合法性校验,具体包括:以动作元素名为条件查询装置服务端数据库的动作元素表,如果存在同名的动作元素,则向装置客户端返回记录已存在的报错信息;反之,则通过存在性校验,然后统计描述性文本中的变量个数,与输入的执行对象个数是否一致,若一致则通过合法性校验。
上述方案中,所述步骤D具体包括:
步骤D1:在装置客户端录入测试中可涉及的、有重用意义的业务属性,指定该属性的对象元素属性名,以及涉及的数据库表;
步骤D2:装置客户端根据选中的数据库表,用数据库表名为条件查询本地缓存,获取该数据库表拥有的业务区分参数及各自的中文对照名,返回到装置客户端并由装置客户端组织成下拉框;
步骤D3:案例构件维护人员根据测试需要,在下拉框中选择需要包含的业务区分参数,然后填写每个业务区分参数的可能取值或取值分段;定义完成后,装置客户端自动根据业务区分参数和数据库字段名的对照关系,得到用数据库字段名表示的业务区分参数及取值分段;
步骤D4:录入完成后,装置客户端将对象元素属性名、涉及的表、业务区分参数名及每个业务区分参数可能的取值信息一起,通过TCP连接由装置客户端上送到装置服务器端;
步骤D5:装置服务端调用对象元素属性管理单元,对输入的数据进行合法性校验,合法性校验进行时,对象元素属性管理单元检查对象元素属性名、涉及的表、业务区分参数名及每个业务区分参数可能的取值,校验上述每一项是否非空,如果有空的值则向装置客户端报错返回,反之则视为校验通过;
步骤D6:装置服务器端调度数据存储单元为对象元素属性计算对象元素属性编号,然后把对象元素属性编号、对象元素属性名、涉及的表新增到对象元素属性表的相应字段中;然后为每个业务区分参数计算业务区分参数编号,再针对每一个业务区分参数把业务区分参数编号、对象元素属性编号、业务区分参数名、业务区分参数的可能取值类型新增到“属性与业务区分参数对应表”的一条记录相应字段中;保存完成后,装置服务器端一方面将保存结果返回装置客户端,另一方面调度数据描述生成单元,进行下一步处理。
上述方案中,所述步骤E具体包括:
步骤E1:装置服务器端调度数据描述生成单元,用对象元素属性编号查询数据库对象元素属性表、属性与业务区分参数对应表,获取对象元素属性涉及的表、拥有的业务区分参数及每个业务区分参数的可能取值类型;
步骤E2:数据描述生成单元根据一定的转化逻辑,将对象元素属性转化为一系列以SQL语言表示的数据描述,即将对象元素属性转化为描述具有一定业务要求的数据集的组合;
步骤E3:对于转化而来的每一条数据描述内容,数据描述生成单元计算唯一的数据描述编号,然后数据描述生成单元将数据描述编号、数据描述名、数据描述内容及对象元素属性编号新增到数据库数据描述表的相应字段中。
上述方案中,步骤E2中所述转化逻辑,具体包括:
拼装数据库select语句,将对象元素属性名转化成select语句中需要查询的字段名;将“涉及的表”转化为from关键字后的查询对象,将“业务区分参数”转化为where关键字后的查询限制条件,业务区分参数的每种可能取值对应限制条件的一种值情况。
上述方案中,所述步骤F具体包括:
步骤F1:在装置客户端根据测试的操作流程编写案例逻辑;
步骤F2:编写完成后,装置客户端调度案例逻辑分析管理单元,针对案例逻辑里面的每一步进行拆分,分解出动作元素名、待测对象和对象元素属性名;
步骤F3:对于案例逻辑中的每一步,案例逻辑分析管理单元以动作元素名查询装置客户端本地缓存,若不存在匹配记录则提示报错,反之读取该动作元素对应的描述文本,将步骤中的各个待测对象的值,替换描述文本中的对应变量,形成“向某对象执行某操作”格式的操作步骤;
步骤F4:对于对象元素属性,案例逻辑分析管理单元以对象元素属性名查询装置客户端本地缓存,如果查询不到匹配记录则提示报错;
步骤F5:若案例逻辑仍有步骤待分析,则循环执行步骤F3和F4,否则返回页面。
上述方案中,所述步骤G具体包括:
步骤G1:业务案例生成单元对读取案例逻辑中的一个步骤并进行拆分,分析出其中包括的对象元素属性名;
步骤G2:以对象元素属性名为条件,查询本地缓存中的数据描述,若查询不到结果则报错返回,反之则获取所有与该对象元属属性对应的数据描述的编号;
步骤G3:业务案例生成单元对于案例逻辑的每一个操作步骤,循环执行步骤G1和步骤G2直到案例逻辑结束;
步骤G4:业务案例生成单元对于案例逻辑中所有操作步骤中对象元素的所有数据描述编号,一次选中每个操作步骤的一种数据描述编号,以全排列组合计算案例逻辑的所有数据描述编号组合,并将生成的数据描述编号组合按对应步骤分配到步骤F5输出的案例逻辑中,得到该案例逻辑所有可能的案例实例;
步骤G5:业务案例生成单元针对每一个案例实例,循环分析每一个操作步骤,获取其数据描述编号,然后以数据描述编号为条件查询本地缓存,得到数据描述的SQL;
步骤G6:业务案例生成单元通过装置客户端,以JDBC方式连接待测系统的数据库,用步骤G5得到的SQL语句查询待测系统数据库,若找不到匹配数据则返回报错;反之若能查找到数据,则在结果集中随机选中一条并将其作为测试使用的数据与案例实例的步骤合并,得到“向待测对象使用某数据执行某操作”格式的操作步骤;
步骤G7:循环执行步骤G5和G6,最终生成实际测试可用的所有业务测试案例。
(三)有益效果
本发明提出的这种基于构件的测试案例生成方法和装置,适用于软件开发过程中的所有阶段,特别适合系统测试阶段以及需要从界面发起对完整软件系统进行黑盒测试的测试过程。本发明在案例生成过程中引入构件元素的概念,将实际使用的案例抽象成具有相同操作流的案例逻辑,再将案例逻辑看作是一系列案例构件元素的组合,以极高的抽象度概括了实际使用的案例,首先极大精简了相似功能、相似案例设计与管理工作中存在的重复劳动,提高了案例的重用性。其次,本发明将数据与动作看作案例组成的基本单元,方便其组合达到高的覆盖率。再次,只需要将本发明中的动作元素与自动化测试脚本中的程序单元对应,即可很容易的实现从测试案例到测试程序的自动转化。
另外,流程、数据的变动,只需要修改案例逻辑,甚至动作元素、对象元素属性,所有包括该动作或对象属性的相关案例实例都可自动完成修改,避免了传统管理模式需要每个案例都进行一次修改的情况,进一步减少了工作量。
利用本发明,可以有效的促进测试效率以及测试质量的提高。
附图说明
图1是案件逻辑、步骤、动作元素及待测对象之间的关系图。
图2是案件逻辑与案例实例之间的关系图。
图3是对象元素属性与数据描述之间的关系图。
图4是案例实例、步骤、动作元素、待测对象及数据描述之间的关系图。
图5是本发明提供的基于构件生成测试案例的装置的结构示意图。
图6是本发明提供的基于构件生成测试案例的装置中装置服务器端的结构示意图。
图7是本发明提供的基于构件生成测试案例的装置中装置客户端的结构示意图。
图8是业界常见的测试案例管理结构示意图。
图9是装置数据库表的数据结构及表字段之间的相互关系图。
图10是本发明提供的基于构件生成测试案例的方法流程图。
图11是客户端启动并下载已有的业务参数和案例构件的方法流程图。
图12是新增业务参数的方法流程图。
图13是新增动作元素的方法流程图。
图14是新增对象元素属性的方法流程图。
图15是根据对象元素属性生成数据描述的方法流程图。
图16是新增案例逻辑的方法流程图。
图17是业务案例自动生成的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
下面,首先介绍本发明的理论基础。软件测试中所谓测试案例,一般是指对需要进行测试的特定功能模块或业务,按照一定的操作流程,依次地对模块或流程中的每个对象(比如页面输入场、模块的接口函数等),使用一定的数据进行一定操作的描述性文本。在对测试案例的定义进行分析可以发现,其多个组成部分具有一定的功能与业务雷同性:
a、不同的待测功能或流程中,可能拥有雷同的对象。比如活期开户功能页面与公民信息查询功能页面,都包括数据输入场这一对象。
b、不同的待测功能或流程的雷同对象,拥有的业务属性亦可能相同,因此对于这样的对象进行完整的业务测试,其需要的各种数据类型和数据特点也是相同的。比如活期开户功能页面与公民信息查询功能页面,其中都存在一个输入客户信息号的输入场,换句话说这两个功能都包括一个输入场,该输入场拥有客户信息号属性。因此对这两个功能的雷同输入场,进行完整测试需要的各种数据也一样(比如都需要正常的客户信息号与错误的客户信息号)。
c、测试过程中对对象进行操作的动作也非常类似。再以活期开户功能页面与公民信息查询功能页面为例,两个测试案例都需要有赋值动作,以便对客户信息号输入场输入客户信息号数据。
因此在上面的例子中,两个测试案例的对象(输入场对象)、对象拥有的业务属性(客户信息号属性)、动作(赋值动作),都具有雷同性。也正因为测试案例中使用的对象、动作及对象的业务属性都存在一定的雷同性,因此即具有重用性,可以对它们使用一定的装置和方法实现“一次维护,多次使用”的目的。这就是本发明实现的理论基础。
下面介绍本发明涉及的约定名词及其相互间关系。
a、案例构件元素(以下简称案例元素):案例构件元素是指案例中重用度较高、可独立进行维护、多案例共享使用的一些构件单元。其中包括对待测对象进行操作的一系列动作(称为“动作元素”)与以及待测对象本身所具有的业务特性与控制(称为“对象元素属性”)。
b、动作元素:动作元素测试过程中使用的,描述测试人员对待测对象(如函数、输入场等)的一种操作逻辑。比如对输入场的赋值、对按钮的点击等,都属于动作元素。动作元素与特定的对象有关,但与特定的数据或数据描述无关。
c、待测对象:待测对象指的是待测系统中的一个可测试单元,具有一定的业务属性要求,在操作过程中可以用一定的动作进行操作。比如待测客户信息查询功能,页面上的客户信息号输入框具有业务属性要求:客户信息号,在操作过程中可以对其进行输入操作,因此“客户信息号输入框”是一个待测对象。
d、对象元素属性:对象元素属性是待测对象所能拥有的业务特性、数据要求或控制,是对不同的待测对象中类似的业务要求进行抽象总结的结果。不同的待测对象可能拥有同样的属性,同一个待测对象也可能同时拥有多个不同的属性。为了建立对象元素属性与测试使用的实际数据的对应关系,需要在维护对象元素属性的时候说明该属性涉及的数据表,以及对该表数据的一些业务区分参数。比如“往来户帐号”的业务属性,涉及的是待测系统的往来户表,业务区分参数是冻结标志(可选值是0或1)和销户标志(可选值是0或1)。
e、数据描述:数据描述是对数据库中数据特点的结构化描述。数据描述通常直接使用数据库SQL语句,对应数据库中满足语句查询条件的一批语句。同时,数据描述是对象元素属性某一种可能的取值情况,用数据库语言的翻译。因此,对象元素属性与数据描述是一对多的关系。通过数据描述,对象元素属性与数据库中特定的几种数据就建立了映射关系。
f、案例逻辑:从业务上讲,案例逻辑是对需要进行测试的特定功能模块或业务流程进行测试的操作流程。从组成来讲,案例逻辑与具体的业务要求及具体数据无关,仅是对特定模块或流程进行测试需要的步骤,以及每个步骤使用何种动作元素对哪一个待测对象进行操作、待测对象拥有哪些对象元素属性进行描述,一直描述到流程完成的过程。
g、案例实例:案例实例是案例逻辑与具体数据的结合。描述了在待测对象的测试流程的每一个步骤中,哪个动作元素使用了何种业务数据,操作了哪个对象元素的过程。案例实例在案例逻辑的基础上体现了业务数据要求,反映了特定的一个测试场景,是实际有用的业务测试案例。
上述各约定名词之间的相互关系如下:
a、如图1所示,图1是案件逻辑、步骤、动作元素及待测对象之间的关系图。案例逻辑由多个操作步骤组成,每个步骤包括一定的动作元素及其操作的待测对象。
b、如图2所示,图2是案件逻辑与案例实例之间的关系图。一个案例逻辑与不同的数据结合,可以对应多个案例实例。
c、如图3所示,图3是对象元素属性与数据描述之间的关系图。一个对象元素可以包括多个对象元素属性,一个对象元素属性亦可对应多个数据描述。
d、如图4所示,图4是案例实例、步骤、动作元素、待测对象及数据描述之间的关系图。一个案例实例由多个步骤组成,每个步骤包括一定的动作元素和动作元素操作的待测对象,另外还包括案例实例所对应的特定一种数据描述组合。
图5是本发明提供的基于构件生成测试案例的装置的结构示意图,该装置包括装置服务器端101、装置客户端102和待测系统数据库103,装置服务器101与装置客户端102通过网络连接方式连接,装置客户端102与待测系统数据库103通过数据库直连方式连接。其中:装置服务器端101,用于响应装置客户端102的操作请求,收集并保存由装置客户端102维护、上送的动作元素和对象元素属性,实现对案例构件的管理,并根据对象元素属性生成数据描述。装置客户端102面向案例编写人员,用于向案例编写人员提供案例构件元素维护和下载、案例逻辑编写、获取测试数据,并根据案例逻辑生成案例实例。待测系统数据库103,用于响应装置客户端102的数据采集请求,为测试案例的生成提供测试数据。
图6是本发明提供的基于构件生成测试案例的装置中装置服务器端的结构示意图。装置服务器端101包括对象元素属性管理单元1、数据描述生成单元2、动作元素管理单元3、数据存储单元6和业务参数维护单元7。其中:对象元素属性管理单元1,用于接收装置客户端102上送的对象元素属性定义,包括对象元素属性涉及的待测系统数据表、数据表的业务区分参数和每个业务区分参数可能的取值类型,并进行合法性校验,将处理过的数据保存到数据存储单元6中。数据描述生成单元2,用于根据对象元素属性涉及的表、业务区分参数及每个业务区分参数可能的取值类型,生成以SQL语言描述的多个数据描述,从而形成对象元素属性和数据库中实际数据的对应关系,并将该对应关系保存到数据存储单元6中。动作元素管理单元3,用于接收装置客户端102上送的动作元素定义,进行合法性校验后保存到数据存储单元6中。数据存储单元6,用于将动作元素、对象元素属性和数据描述保存到不同的数据表中。业务参数维护单元7,用于实现案例构件维护人员的维护,并通过装置客户端102上送的、对待测系统数据表及表包括的所有业务区分参数的维护信息进行合法性校验。
图7是本发明提供的基于构件生成测试案例的装置中装置客户端的结构示意图。装置客户端102包括案例逻辑生成单元4、业务案例生成单元5和参数及已有构件下载单元8,其中:案例逻辑生成单元4,用于对案例设计人员编写的案例逻辑进行解析,拆解成一个个利用特定动作元素操作特定对象的流程,以及流程中每一步的操作对象所拥有的对象元素属性,并进行存在性和合法性校验。业务案例生成单元5,用于响应案例设计人员的案例生成请求,根据选定的案例逻辑按步骤枚举拼装动作元素及可能的数据描述组合,然后通过JDBC方式连接待测系统数据库103,根据每个数据描述中的SQL语句查询待测系统数据库103,如果查询到数据,就在其中选中一条并分配到相应的待测对象中,最终枚举形成多个操作流程相同且数据特点相异的业务测试案例。参数及已有构件下载单元8,用于定时与服务器进行同步,下载最新的业务区分参数和案例构件元素,提供给对象元素属性管理单元1、动作元素管理单元3、案例逻辑生成单元4和业务案例生成单元5使用。
如图9所示,图9是装置数据库表的数据结构及表字段之间的相互关系图。根据本发明方法的要求,在实际生成测试案例之前,需要在数据存储单元6的数据库中建立相应的数据格式,以便保存案例构件元素和数据描述。数据存储单元6的数据库中保存格式详述如下:
1、对象元素属性表:对象元素属性表保存对象元素属性的基础信息,字段包括对象元素属性编号、对象元素属性名、涉及的表。
2、属性与业务区分参数对应表:属性与业务区分参数对应表保存对象元素属性的多个业务区分参数信息,字段包括业务区分参数编号、所属的对象元素属性编号,业务区分参数的可能取值类型。其中所属的对象元素属性编号字段以外键的形式关联到对象元素属性表,业务区分参数字段以外键形式关联到业务参数表。
3、数据描述表:数据描述表保存数据描述的内容以及与对象元素属性的对应关系,字段包括数据描述编号、数据描述对应的对象元素属性编号、数据描述名、数据描述内容(SQL语句)。其中所属的对象元素属性编号字段以外键的形式关联到对象元素属性表。
4、动作元素表:动作元素表保存动作元素信息,字段包括动作元素编号、动作元素名、执行对象个数、执行内容。
5、业务参数表:业务区分参数表用于保存待测系统数据库中可能存在的表以及数据表所拥有的字段,方便案例编写人员在新增对象元素属性时根据表和字段制定其业务区分参数并增加可能取值。该表由案例构件维护人员在客户端维护,字段包括业务参数编号、业务参数名、业务参数所属表、字段名。
如图10所示,图10是本发明提供的基于构件生成测试案例的方法流程图,包括以下步骤:
步骤A:客户端启动并下载已有的业务参数和案例构件。如图11所示。
步骤A1:客户端启动后,触发参数及已有构件下载单元,通过客户端主动与装置服务器端建立TCP连接,顺次访问服务器端数据库中各张数据表,全量下载数据库中已有的参数和案例构件到客户端。
步骤A2:客户端接收返回数据,并将数据保存在本地缓存中。
步骤A3:参数及已有构件下载单元定时触发,访问服务器端数据库中各张表,增量下载参数及案例构件的更新。
步骤B:新增业务参数,如图12所示。
步骤B1:案例构件维护人员使用客户端,录入待测系统数据库中的数据表名、字段名及字段对应的业务参数名,其中业务参数名后续需要向案例设计人员展示,因此含义须清晰明了。录入完成后,客户端主动连接装置服务端,以TCP方式把数据表名、字段名、业务参数名等数据打包上送服务器端处理。
步骤B2:服务端接收到数据上送后,调用业务参数维护单元,利用“数据库表名-字段名-业务参数名”为条件,查询服务段数据库中业务参数表,如果已有匹配的记录,则向客户端返回记录已存在的报错信息;反之若无匹配记录,则认为校验通过。
步骤B3:服务器端调用数据存储单元,为该条数据分配唯一的业务参数编号,然后将业务参数编号和该数据插入服务器端数据库中的业务参数表,并将插入结果返回对应的客户端。
步骤C:新增动作元素,如图13所示。
步骤C1:案例构件维护人员根据待测对象的需求说明,在客户端录入测试过程中较通用的、对任意对象进行操作或实现一定目的描述性文本,并指定动作元素名及执行对象个数。具体要求如下:
1、涉及的操作要语义清晰,以便生成案例时直接将文本拼接成案例的一部分。
2、文本中涉及待测对象的部分,用变量表示,以便生成案例时将具体的待测对象替换变量。变量名可使用中英文字符,其前后分别用<%和%>包围。如一个名为“Name”的变量,则表示为<%Name%>。
比如一个赋值的动作元素,其含义是“把特定的数据赋值给特定的输入场”,那么该动作元素的描述性文本可表示为:在<%对象1%>输入值为<%对象2%>的数据。
录入完成后,客户端主动连接装置服务端,以TCP方式把动作元素名、执行对象个数、描述性文本等数据打包上送服务器端处理。
步骤C2:服务器端调用动作元素管理单元,对输入的数据进行存在性和合法性校验。首先以动作元素名为条件查询数据存储单元中的动作元素表,如存在同名的动作元素,则向客户端返回记录已存在的报错信息;反之则通过存在性校验。然后统计描述性文本中的变量个数,与输入的执行对象个数是否一致,若一致则通过合法性校验。
步骤C3:服务器端调用数据存储单元为该条数据分配唯一的动作元素编号,然后将动作元素编号、动作元素名、执行对象个数、描述文本等插入服务器端数据库中的动作元素表的相应字段中,并将插入结果返回对应的客户端。
步骤D:新增对象元素属性,如图14所示。
步骤D1:案例构件维护人员根据需要,在客户端录入测试中可涉及的、有重用意义的业务属性,指定该属性的对象元素属性名,以及涉及的数据库表。
步骤D2:客户端根据选中的数据库表,用数据库表名为条件查询本地缓存,获取该数据库表拥有的业务区分参数及各自的中文对照名,返回到客户端并由客户端组织成下拉框。
步骤D3:案例构件维护人员根据测试需要,在下拉框中选择需要包含的业务区分参数,然后填写每个业务区分参数的可能取值或取值分段。定义完成后,客户端自动根据业务区分参数和数据库字段名的对照关系,得到用数据库字段名表示的业务区分参数及取值分段。
步骤D4:录入完成后,客户端将对象元素属性名、涉及的表、业务区分参数名及每个业务区分参数可能的取值等信息一起,通过TCP连接由客户端上送到服务器端。
步骤D5:服务端调用对象元素属性管理单元,对输入的数据进行合法性校验。合法性校验进行时,对象元素属性管理单元检查对象元素属性名、涉及的表、业务区分参数名及每个业务区分参数可能的取值,校验上述每一项是否非空,如果有空的值则向客户端报错返回,反之则视为校验通过。
步骤D6:服务器端调度数据存储单元为对象元素属性计算对象元素属性编号(流水号)、然后把对象元素属性编号、对象元素属性名、涉及的表等字段新增到对象元素属性表的相应字段中。然后为每个业务区分参数计算业务区分参数编号(流水号),再针对每一个业务区分参数把业务区分参数编号、对象元素属性编号、业务区分参数名、业务区分参数的可能取值类型新增到“属性与业务区分参数对应表”的一条记录相应字段中。保存完成后,服务器端一方面将保存结果返回客户端,另一方面调度数据描述生成单元,进行下一步处理。
步骤E:根据对象元素属性生成数据描述。如图15所示。
步骤E1:服务器端调度数据描述生成单元,用对象元素属性编号查询数据库对象元素属性表、属性与业务区分参数对应表,获取对象元素属性涉及的表、拥有的业务区分参数及每个业务区分参数的可能取值类型。
步骤E2:数据描述生成单元根据一定的转化逻辑,将对象元素属性转化为一系列以SQL语言表示的数据描述,即将对象元素属性转化为描述具有一定业务要求的数据集的组合。具体的转化逻辑为:拼装数据库select语句,对象元素属性名转化成select语句中需要查询的字段名;“涉及的表”转化为from关键字后的查询对象,“业务区分参数”转化为where关键字后的查询限制条件,业务区分参数的每种可能取值对应限制条件的一种值情况。
比如,假设一个对象元素属性如下:
对象元属属性名:账户名
涉及表:个人帐户表
业务区分参数及可能的取值类型:冻结标志(0或1)、销户标志(0或1)
那么,根据上述逻辑转化得到的几种数据描述包括:
数据描述名称:个人帐户名1
数据描述内容:select帐户名from个人帐户表where冻结标志=0and销户标志=0;
数据描述名称:个人帐户名2
数据描述内容:select帐户名from个人帐户表where冻结标志=0and销户标志=1;
数据描述名称:个人帐户名3
数据描述内容:select帐户名from个人帐户表where冻结标志=1and销户标志=0;
数据描述名称:个人帐户名4
数据描述内容:select帐户名from个人帐户表where冻结标志=1and销户标志=1;
步骤E3:对于转化而来的每一条数据描述内容,数据描述生成单元计算唯一的数据描述编号,然后数据描述生成单元将数据描述编号、数据描述名、数据描述内容(SQL语句)及对象元素属性编号等数据新增到数据库数据描述表的相应字段中。
步骤F:新增案例逻辑,如图16所示。
步骤F1:案例编写人员根据待测对象软需的设计,在客户端根据测试的操作流程编写案例逻辑。注意,编写案例逻辑时需要定义好流程中每步包括动作元素和相应的待测对象,以及待测对象拥有的对象元素属性。即“流程中顺次使用哪个动作元素对哪个对象进行了操作,每个对象拥有的对象元素属性是什么”的操作过程。
比如,一个客户信息查询功能的操作流程为:需要输入客户信息号,点击查询后到数据库查询相应的客户信息并返回其状态。
那么对应的案例逻辑即为:
步骤1)动作元素:“赋值”
待测对象1:输入场A,A无属性。
待测对象2:数据,该数据具有客户信息号属性。
步骤22)动作元素:“数据上送”
待测对象:按钮B,B无属性。
步骤F2:编写完成后,客户端调度案例逻辑分析管理单元,针对案例逻辑里面的每一步进行拆分,分解出动作元素名、待测对象和对象元素属性名。
步骤F3:对于案例逻辑中的每一步,案例逻辑分析管理单元以动作元素名查询客户端本地缓存,若不存在匹配记录则提示报错,反之读取该动作元素对应的描述文本,将步骤中的各个待测对象的值,替换描述文本中的对应变量,形成“向某对象执行某操作”格式的操作步骤。
步骤F4:对于对象元素属性,案例逻辑分析管理单元以对象元素属性名查询客户端本地缓存,如果查询不到匹配记录则提示报错。
步骤F5:若案例逻辑仍有步骤待分析,则循环执行步骤F-3、F-4,否则返回页面。
步骤G:业务案例自动生成,如图17所示。
客户端调度业务案例生成单元,然后对操作F生成的案例逻辑作如下处理:
步骤G1:业务案例生成单元对读取案例逻辑中的一个步骤并进行拆分,分析出其中包括的对象元素属性名。
步骤G2:以对象元素属性名为条件,查询本地缓存中的数据描述,若查询不到结果则报错返回,反之则获取所有与该对象元属属性对应的数据描述的编号。
步骤G3:业务案例生成单元对于案例逻辑的每一个操作步骤,循环执行步骤G1、步骤G2直到案例逻辑结束。
步骤G4:业务案例生成单元对于案例逻辑中所有操作步骤中对象元素的所有数据描述编号,一次选中每个操作步骤的一种数据描述编号,以全排列组合计算案例逻辑的所有数据描述编号组合,并将生成的数据描述编号组合按对应步骤分配到步骤F5输出的案例逻辑中,即得到该案例逻辑所有可能的案例实例。
例如:假设待测对象包括的A、B、C三个对象元素,对象元素A对应a、b两种数据描述,B对应c、d、e三种数据描述,C对应f、g两种数据描述,那么待测对象一共有2×3×2=12种可能的数据组合,即12个测试数据场景。第一个对应a-c-f,第二个对应a-c-g,如此类推。将12种测试数据与同一个案例逻辑结合,即可得到对待测功能进行测试的12个案例实例。
步骤G5:业务案例生成单元针对每一个案例实例,循环分析每一个操作步骤,获取其数据描述编号。然后以数据描述编号为条件查询本地缓存,得到数据描述的SQL。
步骤G6:业务案例生成单元通过客户端,以JDBC方式连接待测系统的数据库,用步骤G5得到的SQL语句查询待测系统数据库,若找不到匹配数据则返回报错;反之若能查找到数据,则在结果集中随机选中一条并将其作为测试使用的数据与案例实例的步骤合并,得到“向待测对象使用某数据执行某操作”格式的操作步骤。
步骤G7:循环执行步骤G5、G6,最终即生成实际测试可用的所有业务测试案例。
经过上述的操作,即可生成对于任意待测系统的所有业务测试案例。
为了更好地说明本发明方法,以下是应用本发明方法生成案例的一个实施例:
待测目标是一个查询本地区的客户信息状态的功能。其包括一个客户信息号输入场、一个查询按钮。该功能的大概使用方法是:输入一个客户信息号,点击查询按钮。如果是本地区的客户信息且状态正常,则返回1,否则都返回0。现需要生成系统测试案例,验证其是否可以正常返回账户状态。
根据本发明上述的方法,前期案例构件元素新增步骤如下:
a、案例构件维护人员启动客户端,客户端通过与服务端建立TCP连接,顺次访问并全量下载数据库中已有的参数和案例构件,保存在客户端本地缓存中(对应详细方案中的步骤A)。
b、案例构件维护人员在客户端录入业务参数(对应详细方案中的步骤B):
数据库表名:客户信息表
字段名:status
业务参数名:状态
数据库表名:客户信息表
字段名:local
业务参数名:本地区标志
录入完成后,客户端将上送装置服务端,由业务参数维护单元对业务参数进行校验,校验通过后由数据存储单元将数据保存在业务参数表中。
c、案例编写人员在客户端中把测试中较通用的“赋值”、“点击按钮”等动作录入,由客户端将录入数据上送装置服务端,由动作元素管理单元对其进行合法性校验。校验通过后,由数据存储单元将数据保存在动作元素表中。(对应详细方案中的步骤C)保存格式如下:
动作元素名:赋值
执行对象个数:2
描述文本:为<%对象1%>输入<%对象2%>
动作元素名:点击按钮
执行对象个数:1
描述文本:用鼠标点击<%对象1%>
d、案例构件维护人员根据软需,在客户端逐个录入对象元素属性(对应详细方案中的步骤D)。如指明属性名为“客户信息号”,涉及的表为“客户信息表”,然后客户端查询本地缓存,获取该表所有可选的参数并在客户端以下拉框的方式展现。然后,案例构件维护人员选择本属性包括的业务区分参数1为“状态”,可能的取值是0或1,业务区分参数2为“本地区标志”,可能的取值是Y或N。维护完成后,客户端将数据上送服务端,由对象元素属性管理单元对数据进行合法性校验。校验通过后将数据作为对象元素属性,由数据存储单元保存于服务端数据库的对象元素属性表、属性与业务区分参数对应表。
e、数据描述生成单元触发,对b中新增的对象元素属性,利用本发明方法的算法,生成该属性相应的数据描述(对应详细方案中的步骤E)。如下:
数据描述名称:客户信息号1
数据描述内容:select客户信息号from客户信息表where状态=1and本地区标志=Y;
数据描述名称:客户信息号2
数据描述内容:select客户信息号from客户信息表where状态=1and本地区标志=N;
数据描述名称:客户信息号3
数据描述内容:select客户信息号from客户信息表where状态=0and本地区标志=Y;
数据描述名称:客户信息号4
数据描述内容:select客户信息号from客户信息表where状态=0and本地区标志=N;
数据描述生成后,上送装置服务器端数据库进行保存,同时保存对象元素属性与数据描述的对应关系。
前期案例构件元素新增工作完成后,利用本发明方法,对一个新的待测功能生成其业务测试案例步骤包括:
a、案例设计人员根据待测对象软需的要求,在客户端将待测功能的操作流程录入(对应详细方案中的步骤F)。案例逻辑生成单元接收输入并进行解析,得到该操作流程设计的动作及操作对象如下:
步骤1)动作元素:“赋值”
待测对象1:输入场A,A无属性。
待测对象2:数据,该数据具有客户信息号属性。
步骤2)动作元素:“数据上送”
待测对象:按钮B,B无属性。
案例逻辑分析管理单元针对每个动作和对象元素属性,查询本地缓存,分别确认客户信息号属性、“赋值”动作、“数据上送”动作均已在装置数据库中相关表存在。于是案例逻辑生成单元替换步骤中的变量,使用规范化的结构语言生成案例逻辑操作步骤如下:
a)为输入场A输入数据
b)点击按钮B
b、业务案例生成单元对案例逻辑的每个步骤进行分析,再根据拆分的得到的对象元素名查询本地缓存,得到对象元素属性对应的数据描述(对应详细方案中的步骤G1到步骤G4)。接着,业务案例生成单元全排列枚举待测功能的测试案例实例如下:
案例实例1:
a)为输入场A输入数据描述为“客户信息号1”的数据。
b)点击按钮B
案例实例2:
a)为输入场A输入数据描述为“客户信息号2”的数据。
b)点击按钮B
案例实例3:
a)为输入场A输入数据描述为“客户信息号3”的数据。
b)点击按钮B
案例实例4:
a)为输入场A输入数据描述为“客户信息号4”的数据。
b)点击按钮B
c、业务案例生成单元查询本地缓存,分析每个案例实例需要的数据描述(分别是客户信息号1、客户信息号2、客户信息号3、客户信息号4),获取其对应的SQL。然后客户端根据对应的SQL,以JDBC方式连接待测系统数据库并进行查询,得到符合条件的测试数据集并在其中选择一条分配给对应的案例实例(对应详细方案中的步骤G5到步骤G7)。如下:
客户信息号1:1111111
客户信息号2:2222222
客户信息号3:3333333
客户信息号4:4444444
通过上述的多个步骤,即可得到完整测试该待测功能需要的测试案例为:
案例1:
a)为输入场A输入“1111111”。
b)点击按钮B
案例2:
a)为输入场A输入“2222222”。
b)点击按钮B
案例3:
a)为输入场A输入“3333333”。
b)点击按钮B
案例4:
a)为输入场A输入“4444444”。
b)点击按钮B
与现有的案例生成方法进行比较,本发明有如下优点:
1、从案例编写方法和工作量方面进行比较。
现有方法:对于测试案例的产生,基本上依靠手工编写完成。案例设计人员针对每个测试场景可能的操作和数据组合,逐条编写测试案例。在每次执行案例前,还需要查询待测系统数据库,找出可用的测试数据并填入测试案例中。案例编写的工作量非常大。
本发明:只需要根据测试场景编写案例逻辑,指定执行流程,即可由计算机自动生成所有的案例,极大减少了工作量。
2、从生成的案例的实用性方面比较。
现有方法:测试案例仅需要从业务角度描述案例涉及的数据要求以及预期结果。对于整个测试场景的操作步骤、每个步骤分别需要填入的数据等,都没有明确的说明。这样很难根据从测试案例转化出测试时实际使用的操作,使测试执行人员难以根据案例开展测试,就减弱了案例对测试的指导作用。同时,因为存在步骤和数据的缺失,很难从现有方法编写的测试案例直接生成自动化测试脚本。
本发明:要求案例设计人员在编写案例逻辑时明确的规划测试中每个步骤需要的操作和数据描述,生成案例实例时还根据数据库中的现有情况获取到实际可用的测试数据,使得案例可以直接作为测试执行的指导。同时只需要在自动化工具中实现与动作元素相对应的操作,即可根据案例生成自动化测试脚本。
3、从案例元素的重用性和案例覆盖率方面比较。
现有方法:案例生成方法缺少对重用的考虑。有一些对象的操作具有一定的业务控制和要求(比如“币种”字段要求输入001/013等0开头的数字),当采用传统方法编写案例时,对于这类型的对象,如果案例设计人员没有足够的业务经验,就有可能对可能的情况考虑不全,从而造成遗漏。
本发明:引入了对象重用的概念,由资深测试人员维护好的对象元素属性,可以在所有测试人员中共享并引用。同时本发明将特殊业务要求对应到一定的数据描述,利用计算机算法生成所有可能的数据组合。尽量减少了对测试人员经验的要求,避免了遗漏。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种基于构件生成测试案例的装置,其特征在于,该装置包括装置服务器端(101)、装置客户端(102)和待测系统数据库(103),装置服务器(101)与装置客户端(102)通过网络连接方式连接,装置客户端(102)与待测系统数据库(103)通过数据库直连方式连接;其中:
装置服务器端(101),用于响应装置客户端(102)的操作请求,收集并保存由装置客户端(102)维护、上送的动作元素和对象元素属性,实现对案例构件的管理,并根据对象元素属性生成数据描述;
装置客户端(102),用于向案例编写人员提供案例构件元素维护和下载、案例逻辑编写、获取测试数据,并根据案例逻辑生成案例实例;
待测系统数据库(103),用于响应装置客户端(102)的数据采集请求,为测试案例的生成提供测试数据。
2.根据权利要求1所述的基于构件生成测试案例的装置,其特征在于,所述装置服务器端(101)包括对象元素属性管理单元(1)、数据描述生成单元(2)、动作元素管理单元(3)、数据存储单元(6)和业务参数维护单元(7),其中:
对象元素属性管理单元(1),用于接收装置客户端(102)上送的对象元素属性定义,包括对象元素属性涉及的待测系统数据表、数据表的业务区分参数和每个业务区分参数可能的取值类型,并进行合法性校验,将处理过的数据保存到数据存储单元(6)中;
数据描述生成单元(2),用于根据对象元素属性涉及的表、业务区分参数及每个业务区分参数可能的取值类型,生成以SQL语言描述的多个数据描述,从而形成对象元素属性和数据库中实际数据的对应关系,并将该对应关系保存到数据存储单元(6)中;
动作元素管理单元(3),用于接收装置客户端(102)上送的动作元素定义,进行合法性校验后保存到数据存储单元(6)中;
数据存储单元(6),用于将动作元素、对象元素属性和数据描述保存到不同的数据表中;
业务参数维护单元(7),用于实现案例构件维护人员的维护,并通过装置客户端(102)上送的、对待测系统数据表及表包括的所有业务区分参数的维护信息进行合法性校验。
3.根据权利要求2所述的基于构件生成测试案例的装置,其特征在于,所述数据存储单元(6)保存有对象元素属性表、属性与业务区分参数对应表、数据描述表、动作元素表和业务参数表,其中:
对象元素属性表,用于保存对象元素属性的基础信息,其中的字段至少包括对象元素属性编号、对象元素属性名以及涉及的表;
属性与业务区分参数对应表,用于保存对象元素属性的多个业务区分参数信息,其中的字段至少包括业务区分参数编号、所属的对象元素属性编号和业务区分参数的可能取值类型;
数据描述表,用于保存数据描述的内容以及与对象元素属性的对应关系,其中的字段至少包括数据描述编号、数据描述对应的对象元素属性编号、数据描述名和数据描述内容;
动作元素表,用于保存动作元素信息,其中的字段至少包括动作元素编号、动作元素名、执行对象个数和执行内容;
业务参数表,用于保存待测系统数据库中可能存在的表以及数据表所拥有的字段,方便案例编写人员在新增对象元素属性时根据表和字段制定其业务区分参数并增加可能取值。
4.根据权利要求3所述的基于构件生成测试案例的装置,其特征在于,所述所属的对象元素属性编号字段以外键的形式关联到对象元素属性表,所述业务区分参数字段以外键形式关联到业务参数表。
5.根据权利要求3所述的基于构件生成测试案例的装置,其特征在于,所述业务参数表由案例构件维护人员在客户端维护,其中的字段至少包括业务参数编号、业务参数名、业务参数所属表和字段名。
6.根据权利要求1所述的基于构件生成测试案例的装置,其特征在于,所述装置客户端(102)包括案例逻辑生成单元(4)、业务案例生成单元(5)和参数及已有构件下载单元(8),其中:
案例逻辑生成单元(4),用于对案例设计人员编写的案例逻辑进行解析,拆解成一个个利用特定动作元素操作特定对象的流程,以及流程中每一步的操作对象所拥有的对象元素属性,并进行存在性和合法性校验;
业务案例生成单元(5),用于响应案例设计人员的案例生成请求,根据选定的案例逻辑按步骤枚举拼装动作元素及可能的数据描述组合,然后通过JDBC方式连接待测系统数据库(103),根据每个数据描述中的SQL语句查询待测系统数据库(103),如果查询到数据,就在其中选中一条并分配到相应的待测对象中,最终枚举形成多个操作流程相同且数据特点相异的业务测试案例;
参数及已有构件下载单元(8),用于定时与服务器进行同步,下载最新的业务区分参数和案例构件元素,提供给对象元素属性管理单元(1)、动作元素管理单元(3)、案例逻辑生成单元(4)和业务案例生成单元(5)使用。
7.一种基于构件生成测试案例的方法,其特征在于,该方法包括:
步骤A:装置客户端启动并下载已有的业务参数和案例构件;
步骤B:新增业务参数;
步骤C:新增动作元素;
步骤D:新增对象元素属性;
步骤E:根据对象元素属性生成数据描述;
步骤F:新增案例逻辑;
步骤G:业务案例自动生成。
8.根据权利要求7所述的基于构件生成测试案例的方法,其特征在于,步骤A中所述下载已有的业务参数和案例构件具体包括:
步骤A1:装置客户端启动后,触发参数及已有构件下载单元,通过装置客户端主动与装置服务器端建立TCP连接,顺次访问装置服务器端的数据存储单元中保存的各张数据表,全量下载已有的参数和案例构件到装置客户端;
步骤A2:装置客户端接收返回数据,并将数据保存在本地缓存中;
步骤A3:参数及已有构件下载单元定时触发,访问装置服务器端的数据存储单元中各张数据表,增量下载参数及案例构件的更新。
9.根据权利要求7所述的基于构件生成测试案例的方法,其特征在于,所述步骤B具体包括:
步骤B1:在装置客户端录入待测系统数据库中的数据表名、字段名及字段对应的业务参数名,录入完成后,装置客户端主动连接装置服务端,以TCP方式把数据表名、字段名和业务参数名打包上送装置服务器端处理;
步骤B2:装置服务端接收到数据后,调用业务参数维护单元,利用“数据库表名-字段名-业务参数名”为条件,查询服务段数据库中业务参数表,如果已有匹配的记录,则向装置客户端返回记录已存在的报错信息;反之若无匹配记录,则认为校验通过;
步骤B3:装置服务器端调用数据存储单元,为该条数据分配唯一的业务参数编号,然后将业务参数编号和该数据插入装置服务器端数据库中的业务参数表,并将插入结果返回对应的装置客户端。
10.根据权利要求7所述的基于构件生成测试案例的方法,其特征在于,所述步骤C具体包括:
步骤C1:在装置客户端录入测试过程中较通用的、对任意对象进行操作或实现一定目的描述性文本,并指定动作元素名及执行对象个数;
步骤C2:装置客户端调用动作元素管理单元,对输入的数据进行存在性和合法性校验;
步骤C3:装置服务器端调用数据存储单元为该条数据分配唯一的动作元素编号,然后将动作元素编号、动作元素名、执行对象个数、描述文本插入装置服务器端数据库中的动作元素表的相应字段中,并将插入结果返回对应的装置客户端。
11.根据权利要求10所述的基于构件生成测试案例的方法,其特征在于,步骤C2中所述对输入的数据进行存在性和合法性校验,具体包括:
以动作元素名为条件查询装置服务端数据库的动作元素表,如果存在同名的动作元素,则向装置客户端返回记录已存在的报错信息;反之,则通过存在性校验,然后统计描述性文本中的变量个数,与输入的执行对象个数是否一致,若一致则通过合法性校验。
12.根据权利要求7所述的基于构件生成测试案例的方法,其特征在于,所述步骤D具体包括:
步骤D1:在装置客户端录入测试中可涉及的、有重用意义的业务属性,指定该属性的对象元素属性名,以及涉及的数据库表;
步骤D2:装置客户端根据选中的数据库表,用数据库表名为条件查询本地缓存,获取该数据库表拥有的业务区分参数及各自的中文对照名,返回到装置客户端并由装置客户端组织成下拉框;
步骤D3:案例构件维护人员根据测试需要,在下拉框中选择需要包含的业务区分参数,然后填写每个业务区分参数的可能取值或取值分段;定义完成后,装置客户端自动根据业务区分参数和数据库字段名的对照关系,得到用数据库字段名表示的业务区分参数及取值分段;
步骤D4:录入完成后,装置客户端将对象元素属性名、涉及的表、业务区分参数名及每个业务区分参数可能的取值信息一起,通过TCP连接由装置客户端上送到装置服务器端;
步骤D5:装置服务端调用对象元素属性管理单元,对输入的数据进行合法性校验,合法性校验进行时,对象元素属性管理单元检查对象元素属性名、涉及的表、业务区分参数名及每个业务区分参数可能的取值,校验上述每一项是否非空,如果有空的值则向装置客户端报错返回,反之则视为校验通过;
步骤D6:装置服务器端调度数据存储单元为对象元素属性计算对象元素属性编号,然后把对象元素属性编号、对象元素属性名、涉及的表新增到对象元素属性表的相应字段中;然后为每个业务区分参数计算业务区分参数编号,再针对每一个业务区分参数把业务区分参数编号、对象元素属性编号、业务区分参数名、业务区分参数的可能取值类型新增到“属性与业务区分参数对应表”的一条记录相应字段中;保存完成后,装置服务器端一方面将保存结果返回装置客户端,另一方面调度数据描述生成单元,进行下一步处理。
13.根据权利要求7所述的基于构件生成测试案例的方法,其特征在于,所述步骤E具体包括:
步骤E1:装置服务器端调度数据描述生成单元,用对象元素属性编号查询数据库对象元素属性表、属性与业务区分参数对应表,获取对象元素属性涉及的表、拥有的业务区分参数及每个业务区分参数的可能取值类型;
步骤E2:数据描述生成单元根据一定的转化逻辑,将对象元素属性转化为一系列以SQL语言表示的数据描述,即将对象元素属性转化为描述具有一定业务要求的数据集的组合;
步骤E3:对于转化而来的每一条数据描述内容,数据描述生成单元计算唯一的数据描述编号,然后数据描述生成单元将数据描述编号、数据描述名、数据描述内容及对象元素属性编号新增到数据库数据描述表的相应字段中。
14.根据权利要求13所述的基于构件生成测试案例的方法,其特征在于,步骤E2中所述转化逻辑,具体包括:
拼装数据库select语句,将对象元素属性名转化成select语句中需要查询的字段名;将“涉及的表”转化为from关键字后的查询对象,将“业务区分参数”转化为where关键字后的查询限制条件,业务区分参数的每种可能取值对应限制条件的一种值情况。
15.根据权利要求7所述的基于构件生成测试案例的方法,其特征在于,所述步骤F具体包括:
步骤F1:在装置客户端根据测试的操作流程编写案例逻辑;
步骤F2:编写完成后,装置客户端调度案例逻辑分析管理单元,针对案例逻辑里面的每一步进行拆分,分解出动作元素名、待测对象和对象元素属性名;
步骤F3:对于案例逻辑中的每一步,案例逻辑分析管理单元以动作元素名查询装置客户端本地缓存,若不存在匹配记录则提示报错,反之读取该动作元素对应的描述文本,将步骤中的各个待测对象的值,替换描述文本中的对应变量,形成“向某对象执行某操作”格式的操作步骤;
步骤F4:对于对象元素属性,案例逻辑分析管理单元以对象元素属性名查询装置客户端本地缓存,如果查询不到匹配记录则提示报错;
步骤F5:若案例逻辑仍有步骤待分析,则循环执行步骤F3和F4,否则返回页面。
16.根据权利要求7所述的基于构件生成测试案例的方法,其特征在于,所述步骤G具体包括:
步骤G1:业务案例生成单元对读取案例逻辑中的一个步骤并进行拆分,分析出其中包括的对象元素属性名;
步骤G2:以对象元素属性名为条件,查询本地缓存中的数据描述,若查询不到结果则报错返回,反之则获取所有与该对象元属属性对应的数据描述的编号;
步骤G3:业务案例生成单元对于案例逻辑的每一个操作步骤,循环执行步骤G1和步骤G2直到案例逻辑结束;
步骤G4:业务案例生成单元对于案例逻辑中所有操作步骤中对象元素的所有数据描述编号,一次选中每个操作步骤的一种数据描述编号,以全排列组合计算案例逻辑的所有数据描述编号组合,并将生成的数据描述编号组合按对应步骤分配到步骤F5输出的案例逻辑中,得到该案例逻辑所有可能的案例实例;
步骤G5:业务案例生成单元针对每一个案例实例,循环分析每一个操作步骤,获取其数据描述编号,然后以数据描述编号为条件查询本地缓存,得到数据描述的SQL;
步骤G6:业务案例生成单元通过装置客户端,以JDBC方式连接待测系统的数据库,用步骤G5得到的SQL语句查询待测系统数据库,若找不到匹配数据则返回报错;反之若能查找到数据,则在结果集中随机选中一条并将其作为测试使用的数据与案例实例的步骤合并,得到“向待测对象使用某数据执行某操作”格式的操作步骤;
步骤G7:循环执行步骤G5和G6,最终生成实际测试可用的所有业务测试案例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910138277 CN101908015B (zh) | 2009-06-04 | 2009-06-04 | 一种基于构件生成测试案例的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910138277 CN101908015B (zh) | 2009-06-04 | 2009-06-04 | 一种基于构件生成测试案例的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101908015A true CN101908015A (zh) | 2010-12-08 |
CN101908015B CN101908015B (zh) | 2013-04-17 |
Family
ID=43263479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910138277 Active CN101908015B (zh) | 2009-06-04 | 2009-06-04 | 一种基于构件生成测试案例的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101908015B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN102902685A (zh) * | 2011-07-27 | 2013-01-30 | 阿里巴巴集团控股有限公司 | 基于数据库的工具系统的测试方法及装置 |
CN102968370A (zh) * | 2012-11-26 | 2013-03-13 | 中国电信股份有限公司云计算分公司 | 一种测试数据生成方法及装置 |
CN103186455A (zh) * | 2011-12-28 | 2013-07-03 | 阿里巴巴集团控股有限公司 | 页面自动化测试脚本生成方法及系统 |
CN103226514A (zh) * | 2013-04-28 | 2013-07-31 | 中国工商银行股份有限公司 | 一种快速变更案例的软件测试方法与装置 |
CN103810094A (zh) * | 2012-11-14 | 2014-05-21 | 中国农业银行股份有限公司 | 一种测试案例的执行方法、装置和测试工具 |
CN103853652A (zh) * | 2012-11-29 | 2014-06-11 | 百度在线网络技术(北京)有限公司 | 一种测试案例生成方法及装置 |
CN104572961A (zh) * | 2014-12-30 | 2015-04-29 | 北京奇虎科技有限公司 | 一种交易数据的获取方法和装置 |
CN107105037A (zh) * | 2017-04-25 | 2017-08-29 | 上海幻电信息科技有限公司 | 一种基于文件校验的分布式视频cdn资源管理系统及方法 |
CN107748720A (zh) * | 2017-11-24 | 2018-03-02 | 中国银行股份有限公司 | 一种检测功能测试案例的业务参数的方法及装置 |
CN107908559A (zh) * | 2017-11-15 | 2018-04-13 | 中国农业银行股份有限公司 | 一种测试案例设计方法及装置 |
CN108182142A (zh) * | 2016-12-08 | 2018-06-19 | 武汉安天信息技术有限责任公司 | 测试资源整合方法、系统及功能测试方法、系统 |
CN109033345A (zh) * | 2018-07-24 | 2018-12-18 | 中国科学技术大学 | 用于大科学装置控制系统的分布式数据存档参数配置方法 |
CN109634866A (zh) * | 2018-12-14 | 2019-04-16 | 泰康保险集团股份有限公司 | 数据测试方法、装置、介质及电子设备 |
CN110162459A (zh) * | 2019-04-15 | 2019-08-23 | 深圳壹账通智能科技有限公司 | 测试案例生成方法、装置及计算机可读存储介质 |
CN111625467A (zh) * | 2020-06-03 | 2020-09-04 | 深圳华锐金融技术股份有限公司 | 自动化测试方法、装置、计算机设备和存储介质 |
CN112395183A (zh) * | 2019-08-19 | 2021-02-23 | 北京中关村科金技术有限公司 | 创建测试数据集成文件的方法、装置以及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100625597B1 (ko) * | 1999-12-27 | 2006-09-20 | 한국전자통신연구원 | 객체 지향 칠 프로그램의 시험을 위한 테스트 케이스 자동생성 방법 |
CN101221502A (zh) * | 2008-02-01 | 2008-07-16 | 中国建设银行股份有限公司 | 软件测试的案例设计方法及装置 |
CN201435074Y (zh) * | 2009-06-04 | 2010-03-31 | 中国工商银行股份有限公司 | 一种基于构件生成测试案例的装置 |
-
2009
- 2009-06-04 CN CN 200910138277 patent/CN101908015B/zh active Active
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902685B (zh) * | 2011-07-27 | 2016-04-20 | 阿里巴巴集团控股有限公司 | 基于数据库的工具系统的测试方法及装置 |
CN102902685A (zh) * | 2011-07-27 | 2013-01-30 | 阿里巴巴集团控股有限公司 | 基于数据库的工具系统的测试方法及装置 |
CN103186455A (zh) * | 2011-12-28 | 2013-07-03 | 阿里巴巴集团控股有限公司 | 页面自动化测试脚本生成方法及系统 |
CN103186455B (zh) * | 2011-12-28 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 页面自动化测试脚本生成方法及系统 |
CN102722537A (zh) * | 2012-05-22 | 2012-10-10 | 苏州阔地网络科技有限公司 | 一种数据库测试数据的生成方法及系统 |
CN103810094B (zh) * | 2012-11-14 | 2016-10-05 | 中国农业银行股份有限公司 | 一种测试案例的执行方法、装置和测试工具 |
CN103810094A (zh) * | 2012-11-14 | 2014-05-21 | 中国农业银行股份有限公司 | 一种测试案例的执行方法、装置和测试工具 |
CN102968370A (zh) * | 2012-11-26 | 2013-03-13 | 中国电信股份有限公司云计算分公司 | 一种测试数据生成方法及装置 |
CN102968370B (zh) * | 2012-11-26 | 2016-07-06 | 中国电信股份有限公司 | 一种测试数据生成方法及装置 |
CN103853652A (zh) * | 2012-11-29 | 2014-06-11 | 百度在线网络技术(北京)有限公司 | 一种测试案例生成方法及装置 |
CN103226514A (zh) * | 2013-04-28 | 2013-07-31 | 中国工商银行股份有限公司 | 一种快速变更案例的软件测试方法与装置 |
CN103226514B (zh) * | 2013-04-28 | 2016-05-18 | 中国工商银行股份有限公司 | 一种快速变更案例的软件测试方法与装置 |
CN104572961A (zh) * | 2014-12-30 | 2015-04-29 | 北京奇虎科技有限公司 | 一种交易数据的获取方法和装置 |
CN108182142A (zh) * | 2016-12-08 | 2018-06-19 | 武汉安天信息技术有限责任公司 | 测试资源整合方法、系统及功能测试方法、系统 |
CN107105037A (zh) * | 2017-04-25 | 2017-08-29 | 上海幻电信息科技有限公司 | 一种基于文件校验的分布式视频cdn资源管理系统及方法 |
CN107908559A (zh) * | 2017-11-15 | 2018-04-13 | 中国农业银行股份有限公司 | 一种测试案例设计方法及装置 |
CN107908559B (zh) * | 2017-11-15 | 2021-05-07 | 中国农业银行股份有限公司 | 一种测试案例设计方法及装置 |
CN107748720A (zh) * | 2017-11-24 | 2018-03-02 | 中国银行股份有限公司 | 一种检测功能测试案例的业务参数的方法及装置 |
CN109033345A (zh) * | 2018-07-24 | 2018-12-18 | 中国科学技术大学 | 用于大科学装置控制系统的分布式数据存档参数配置方法 |
CN109033345B (zh) * | 2018-07-24 | 2022-07-15 | 中国科学技术大学 | 用于大科学装置控制系统的分布式数据存档参数配置方法 |
CN109634866A (zh) * | 2018-12-14 | 2019-04-16 | 泰康保险集团股份有限公司 | 数据测试方法、装置、介质及电子设备 |
CN110162459A (zh) * | 2019-04-15 | 2019-08-23 | 深圳壹账通智能科技有限公司 | 测试案例生成方法、装置及计算机可读存储介质 |
CN112395183A (zh) * | 2019-08-19 | 2021-02-23 | 北京中关村科金技术有限公司 | 创建测试数据集成文件的方法、装置以及存储介质 |
CN111625467A (zh) * | 2020-06-03 | 2020-09-04 | 深圳华锐金融技术股份有限公司 | 自动化测试方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101908015B (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101908015B (zh) | 一种基于构件生成测试案例的装置及方法 | |
CN110309071B (zh) | 测试代码的生成方法及模块、测试方法及系统 | |
CN201435074Y (zh) | 一种基于构件生成测试案例的装置 | |
JP5298117B2 (ja) | 分散コンピューティングにおけるデータマージング | |
CN100492316C (zh) | 测试自动化的系统和方法 | |
Hermanns et al. | Stochastic process algebras–between LOTOS and Markov chains | |
US7953762B2 (en) | Infrastructure and architecture for development and execution of predictive models | |
CN103930898A (zh) | 程序分析/验证服务提供系统及其控制方法、控制程序、用于使计算机发挥功能的控制程序、程序分析/验证装置、程序分析/验证工具管理装置 | |
CN101515245A (zh) | 操作日志记录方法及系统 | |
CN108111364B (zh) | 一种业务系统的测试方法及装置 | |
CN100375057C (zh) | 一种自动化测试辅助系统及相应的软件自动测试方法 | |
WO2009126281A1 (en) | Infrastructure and architecture for development and execution of predictive models | |
CN107301179A (zh) | 数据库读写分离的方法和装置 | |
CN110852559A (zh) | 资源的分配方法和装置、存储介质、电子装置 | |
CN112070608A (zh) | 信息处理方法、装置、介质及电子设备 | |
CN102486749A (zh) | 数据驱动测试方法及系统 | |
CN113342679A (zh) | 接口测试方法及测试装置 | |
CN103186384A (zh) | 一种面向业务组件的软件设计分析系统及其使用方法 | |
CN111161052B (zh) | 银行作业数据的处理方法及装置 | |
CN116126291A (zh) | 基于信息管理的快速开发方法、装置、设备及存储介质 | |
CN106951225B (zh) | 基于服务配置模板的数据处理方法及装置 | |
CN114896164A (zh) | 接口优化方法、装置、电子设备及存储介质 | |
CN114398282A (zh) | 测试脚本的生成方法、装置、设备及存储介质 | |
CN114722789A (zh) | 数据报表集成方法、装置、电子设备及存储介质 | |
CN114218100A (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 |