CN111176979B - 一种图数据库的测试用例生成方法和装置 - Google Patents
一种图数据库的测试用例生成方法和装置 Download PDFInfo
- Publication number
- CN111176979B CN111176979B CN201911138381.9A CN201911138381A CN111176979B CN 111176979 B CN111176979 B CN 111176979B CN 201911138381 A CN201911138381 A CN 201911138381A CN 111176979 B CN111176979 B CN 111176979B
- Authority
- CN
- China
- Prior art keywords
- test
- graph database
- test case
- gql
- generated
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供了一种图数据库的测试用例生成方法和装置,方法包括:对图数据库中已存在的数据进行初始化,通过编写配置文件或配置选项获取到图数据库中的元数据信息;对gremlin源码进行类解析得到语法遍历步骤信息,通过类与类之间的对应关系得到各GQL语法步骤的映射表;根据映射表得到孤立的步骤以及各步骤的前后关系,通过对不同步骤前后关系的匹配进行多种组合得到GQL语法模板,在需要参数的位置使用替代符进行填充;从获取到的元数据信息中抽取参数来替换所述GQL语法模板中的替代符信息,生成测试用例。该方法可针对不同的数据快速自动生成相应的测试用例,提高测试效率与测试覆盖度,可方便高效地完成冒烟测试以及系统测试。
Description
【技术领域】
本发明涉及图数据库测试技术领域,具体涉及一种图数据库的测试用例生成方法和装置。
【背景技术】
社会信息化建设的快速发展促使了大数据时代的来临,用户、系统、传感器产生的数量呈指数级增长,数据量不断增加,传统的关系型数据库已经难以支撑越来越复杂的应用场景,在此背景下,各种非关系型数据库技术得以蓬勃发展。作为非关系型数据库之一的图数据库,因其容易处理丰富的关系以及直观的数据展现方式,得到了较高的关注度,目前已经较为广泛地应用于分析型系统中。
伴随着图数据库的发展,数据量级的增大,对于图数据库的测试也显得愈发重要。传统测试方法是根据相关文档手动设计图数据模型,编写相应的测试语句,在越来越复杂的环境下,如何适应不同业务场景、对不同复杂度的数据进行全面测试,成为了一个难题,所以将测试过程中大量重复的过程转换为自动化测试显得尤为重要。如前所述,图数据库系统拥有广阔的市场前景,相对于关系型数据库的固定式表格数据结构,图数据库系统面向的应用场景更加复杂,与应用系统有着更加紧密的关系。目前图数据库依旧处于起步阶段,对于各种复杂业务场景的功能更新也在时时进行快速地迭代更新,所以对于查询语句这一核心功能,也是用户最能得到直观体验的功能,必须保证其正确性与有效性,每次功能迭代之后都需要在多种数据集下进行覆盖测试,保证产品质量。
通常的静态测试用例和测试数据只能解决图数据库图查询语言部分功能的正确性测试,如果人为对图查询语句进行编写,往往是根据常用的少部分语法步骤,在小数据场景下进行编写,不仅无法保证测试覆盖率还会耗费大量的时间。对于不同的业务场景,存在不一样的数据,每一次都需要重新编写不同的测试语句,所以需要一种方法可以根据图数据库中已知的元数据自动生成测试用例,提高测试效率与语句覆盖度。据了解,目前已经存在大量关系型数据库的测试数据自动生成方法,但是尚未发现可用于图数据库测试的自动用例生成方案。
鉴于此,克服上述现有技术所存在的缺陷是本技术领域亟待解决的问题。
【发明内容】
本发明需要解决的技术问题是:
传统方法对图数据库进行系统测试时,对于不同的业务场景以及业务数据,每一次都需要重新编写不同的测试语句,而无法复用测试用例,在耗费大量时间的情况下依旧无法保证测试覆盖率,因此需要一种方法可根据图数据库中已知的元数据自动生成测试用例,提高测试效率与语句覆盖度。
本发明通过如下技术方案达到上述目的:
第一方面,本发明提供了一种图数据库的测试用例生成方法,包括:
对图数据库中已经存在的数据进行初始化,通过编写配置文件或配置选项的形式获取到所述图数据库中的元数据信息;
通过对gremlin源码进行类解析得到gremlin语法遍历步骤信息,进而通过类与类之间的对应关系得到各GQL语法步骤的映射表;
根据映射表得到孤立的步骤以及各步骤的前后关系,通过对不同步骤前后关系的匹配进行多种组合得到GQL语法模板;其中,在需要参数的位置使用替代符来表示;
从获取到的元数据信息中抽取参数,并用抽取的参数替换所述GQL语法模板中的替代符信息,生成测试用例。
优选的,在所述生成测试用例之后,所述方法还包括:
利用生成的测试用例执行测试,判断所述测试用例是否可执行通过,从而完成测试用例的语句正确性校验。
优选的,所述方法还包括:在测试执行过程中,对不同类型的日志信息进行分类存储并输出,以便通过观察日志与命令行输出信息了解程序运行和用例执行情况,并在出现异常时对异常语句进行定位与处理;
其中,当同时对多个图进行测试时,按照图将不同的日志信息输出到不同的目录中。
优选的,在测试执行时,采用随机执行或顺序执行的方式来对测试用例进行执行;
当采用随机执行时,在各测试用例输出完毕后开始执行,执行时先根据配置文件中设置的抽样执行次数随机生成测试用例id,再根据测试用例id获取到具体的测试用例,然后利用GQL语句执行器进行执行;
当采用顺序执行时,先检查是否存在已经生成好并输出完毕的测试用例,如果存在则直接按顺序执行生成好的测试用例,如果不存在则先进行测试用例的生成,生成后再按照生成的顺序进行测试。
优选的,在进行数据初始化时,如果图数据库中预先没有准备好的数据,则根据系统业务抽取业务数据并导入所述图数据库中,或采用随机语句生成法生成随机数据并导入所述图数据库中;
其中,当同时对多个图进行测试时,产生多组不同的数据并分别导入不同的图中,以便分别生成测试用例。
优选的,在生成所述GQL语法模板时,对不同类型、不同情况下的参数采用不同的替代符来表示;其中,所述替代符的值通过以下方式获取:直接从图中获取,或者通过随机方法生成,或者给定一个固定的参数列表进行随机抽样。
优选的,在生成所述GQL语法模板时,所述方法还包括:
在模板生成时默认添加正确的参数信息并执行,以便检验生成的GQL语法模板的可行性;如果执行通过则将对应的GQL语法模板进行保存,如果执行不通过则将对应的GQL语法模板进行过滤。
优选的,在生成测试用例时,根据不同的测试场景选择不同的语句生成方式;其中,当进行冒烟测试或长时间稳定性测试时,采用随机生成的方式来进行测试用例的生成;当对整个系统进行全面测试时,采用随机与遍历混合的方式来进行测试用例的生成。
优选的,所述GQL语法模板生成后保存在文本文件中,则在生成所述测试用例时,按照顺序读取文本文件中的模板信息,或者随机读取文本文件中的模板信息,再根据读取的GQL语法模板中的替代符,从获取到的元数据信息中随机抽取参数进行替换,输出测试用例。
第二方面,本发明还提供了一种图数据库的测试用例生成装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成第一方面所述的图数据库的测试用例生成方法。
本发明的有益效果是:
本发明提供的测试用例生成方法中,先通过解析gremlin源码得到语法遍历步骤信息,再遍历不同步骤的组合生成GQL语法模板,在需要参数的位置使用替代符来表示,最后通过元数据信息生成有效参数来替换模板中的替代符,完成测试用例的生成。通过该方法可针对不同的数据快速自动生成相应的测试用例,满足不同的业务场景以及业务数据的需求,提高测试效率与测试覆盖度,可方便高效地完成冒烟测试以及系统测试,也可在长期运行状态下对整个系统的正确性以及稳定性进行验证。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种图数据库的测试用例生成方法流程图;
图2为本发明实施例提供的从数据初始化到报告输出的简易流程图;
图3为本发明实施例提供的一种通过解析源码得到的映射表示意图;
图4为本发明实施例提供的另一种通过解析源码得到的映射表示意图;
图5为本发明实施例提供的四种通过解析源码得到的映射表关系图;
图6为本发明实施例提供的一种图数据库的测试用例生成装置架构图。
【具体实施方式】
本发明提供的方法和装置主要是为了解决图数据库系统在测试不同业务场景以及业务数据时,无法根据图数据库中已知的元数据快速自动生成测试用例的情况而提出,意在提高测试效率,实现对图数据库系统查询功能的验证以及长时间随机查询下系统稳定性的测试。该方法和装置主要用于生成基于图形查询语言(Graph Query Language,简写为GQL)的查询语句,即生成GQL查询语句或GQL测试用例。
生成有效的GQL查询语句主要有以下两种方式:
1)手动编写语法规则随机组合生成
这种方式需要对gremlin语法规则非常熟悉,通过整理查询语句的各级步骤,并按照层级存放在不同的集合中,然后根据每一个步骤的前后级关系进行组合,在组合过程中添加参数信息,最终完成整个语句的拼接。这种方式相当于是根据测试人员对于语法的理解以及目前已知用例进行反向推导得出语句模板信息,优点是同一组模板可以使用随机产生的多组数据进行测试,可在一定程度上减少不同数据集的情况下重复修改用例的问题,但是这种方式下很难保证语法规则的全覆盖。
2)随机调用各种遍历方法生成
Gremlin是Thinkerpop框架下的图遍历语言,通过对开源代码的分析可以明确图遍历步骤之间的相互关系,得到每一个步骤的上一级结果集类型以及下一级可以连接的有效步骤信息。所以,可以通过对gremlin的源码进行解析,获取到各级步骤(即函数方法)之间的关系,将方法与步骤之间进行对应;然后通过随机算法,将不同步骤进行组合,可以最大限度地保证生成语句的有效性与覆盖率。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
实施例1:
结合前述GQL查询语句两种生成方式的优点,本发明实施例提供了一种图数据库的测试用例生成方法,如图1所示,主要包括以下几个步骤:
步骤201,对图数据库中已经存在的数据进行初始化,通过编写配置文件获取到所述图数据库中的元数据信息。
结合图2,该步骤又可分为“数据初始化”和“元数据提取”两个阶段。
关于数据初始化:在测试用例生成过程中,需要使用图数据库中已经存在的数据,所以在程序运行之初就需要对导入的数据进行初始化。初始化数据可以采用添加点边信息的GQL语句,可以使用符合图数据库导入方式的文本文件,甚至是其他数据库中的对应信息完成数据的导入。在进行数据初始化时,如果图数据库中预先没有准备好的数据,则可根据系统业务抽取一组业务数据导入图数据库中,或采用随机语句生成方法生成一组随机数据导入图数据库中,然后开启服务进行连接;当需要同时对多个图进行测试时,则需要生成多组不同的数据并分别导入不同的图中,以便后续分别对其生成测试用例。其中,为了保证测试不受测试数据模型的影响而导致测试结果不准确,可结合业务系统日常业务逻辑和业务数据周期变化等系统业务现状,采用常规的技术手段抽取多组不同的小规模业务数据,或采用随机方法产生结构更为复杂的网状数据。
关于元数据提取:图数据库查询语句中涉及到多种元数据参数,例如点标签、边标签、点属性、边属性、属性值等。在测试用例生成之前,需要先获取到元数据,以供后续测试用例语句生成时进行调用,具体可采用以下方式获取:一是通过编写配置文件,手动创建各种需要的元数据信息;其中,所述配置文件中的配置信息不仅可以用于初始数据的生成,还可以用于后续测试用例生成过程中的参数获取以及后续用例执行步骤中的结果验证,在此不做赘述。二是在图数据库中已经存在导入数据的情况下,可以通过配置选项的形式直接获取到图数据库中的元数据信息并存储到相应的文档之中。
步骤202,通过对gremlin源码进行类解析得到gremlin语法遍历步骤信息,进而通过类与类之间的对应关系得到各GQL语法步骤的映射表。
该步骤对应图2中的“语法解析”阶段。为了能够自动完成GQL查询语句的生成,需要明确gremlin语法生成规则。通过对gremlin源码的类解析可以得到gremlin语法遍历步骤信息,以及每一步的输入与输出;再通过类与类之间的对应关系,可以得到全部GQL语法步骤的映射表,进而明确了gremlin语法生成规则。另外,还可以进一步对映射表进行分类得到关系属性方法列表、图操作列表等方法列表,进一步明确gremlin语法生成规则,使得在生成GQL查询语句时可以按照更加细致的规则进行相对有序生成。
步骤203,根据映射表得到孤立的步骤以及各步骤的前后关系,通过对不同步骤前后关系的匹配进行多种组合得到GQL语法模板;其中,在需要参数的位置使用替代符来表示。
该步骤对应图2中的“模板生成”阶段。根据前一步获取到的GQL语法步骤映射表以及其他各种方法列表,可以得到孤立的步骤以及各个步骤的前后关系,通过对不同步骤前后关系的匹配,可以进行多种组合来得到GQL查询语句模板,即所述GQL语法模板。其中,在生成模板的时候,并不会直接添加相应的参数,而是在需要参数的位置使用带有@的替代符进行替换,以便后续能完成包含各种参数情况的语句生成。
其中,为了进一步保证不会由于遗漏导致大量错误模板的生成,还可在模板生成时默认添加正确的参数信息并对其进行执行,以便检验生成的GQL语法模板的可行性;如果执行通过则将对应的GQL语法模板进行保存,如果执行不通过则将对应的GQL语法模板进行过滤,最终可得到所有正确的语法模板以供后续的语句生成。如果出现错误的判断,也能迅速定位问题原因然后对程序执行逻辑进行相应的调整。
步骤204,从获取到的元数据信息中抽取参数,并用抽取的参数替换所述GQL语法模板中的替代符信息,生成测试用例。
该步骤对应图2中的“用例生成”阶段,且由图2可知,测试用例是基于前面得到的GQL语法模板和元数据来生成。在通过遍历映射表之后可以生成符合语法条件的全部GQL语法模板,之后便可根据模板来添加对应的参数完成语句生成。其中,模板生成之后可多次使用,在实际测试过程中如果更换测试图,将会直接根据生成好的模板与不同的元数据生成对应的测试用例,避免每一次都重新生成模板,产生不必要的时间消耗。
考虑到测试场景的问题,在生成测试用例时可根据不同的测试场景选择不同的语句生成方式。其中,当需要进行冒烟测试或长时间稳定性测试时,可采用随机生成的方式来进行测试用例的生成,即在需要获取某一类型参数的时候,从初始化阶段中得到的元数据中直接随机抽样;当后续需要对整个系统进行全面测试时,则可采用随机与遍历混合的方式来进行测试用例的生成。
通过上述步骤201-步骤204,即可针对图数据库中不同的元数据快速自动生成相应的测试用例,满足不同的业务场景以及业务数据的需求,提高测试效率与测试覆盖度,可方便高效地完成冒烟测试以及系统测试,也可在长期运行状态下对整个系统的正确性以及稳定性进行验证,解决了传统技术中存在的问题,为应用系统的顺利上线和稳定运行提供保障。
在本发明实施例中,为了保证生成的测试用例的准确性,在所述步骤204之后,即生成测试用例之后,所述方法还可进一步包括:
如图2所示的“自动执行”阶段,即利用前面生成的测试用例执行测试,判断所述测试用例是否可执行通过,从而完成测试用例的语句有效性和正确性校验。在本发明实施例中,通过提供接口,可以将生成的语句(即测试用例)直接写入文本文件中,也可以直接使用用于语句执行的测试程序进行实时的语句正确性校验。通过这种方式,不仅可以完成基于实际业务图谱的语句用例生成,还可以即时将出现异常的步骤进行统计,极大地降低测试人员手动编写测试用例的人力成本。
如果需要同时对多个图进行测试,在配置中可以设置多组存在数据的业务图谱名称,在生成测试用例与执行测试时均可根据图名分别进行处理。其中,在上述“自动执行”阶段中,即在测试执行时,对于每个图均可提供两种执行方式:随机执行或顺序执行。
当采用随机执行时,执行程序会在所有测试用例均输出完毕后开始执行,执行时先根据所述配置文件中设置的抽样执行次数,随机生成测试用例id,再根据测试用例id获取到具体的测试用例,然后利用GQL语句执行器进行执行,获取返回信息。其中,如果抽样次数大于生成语句总数,将会在完成一轮语句执行后,重新开始下一轮抽样,直到次数消耗完毕。
当采用顺序执行时,执行程序会先检查是否存在已经生成好并输出完毕的测试用例,如果存在则直接按顺序执行生成好的测试用例,如果不存在则先按照步骤204进行测试用例的生成,生成后再按照生成的顺序进行测试执行。
进一步参考图2,在“自动执行”阶段之后,还可包括“报告输出阶段”,即在测试执行过程中,根据测试图对不同类型的日志信息进行分类存储并输出(例如采用log4j对执行通过、异常抛出、语法错误等不同类型的日志进行控制输出)。如此一来,通过观察日志与命令行输出信息,即可及时了解程序运行和用例执行情况,并在出现异常时可以在不必停止测试程序的情况下对异常语句进行定位与处理。其中,当同时对多个图进行测试时,可按照图将不同的日志信息输出到不同的目录中。
下面结合图3-图5对应的具体实施例,对所述步骤203中GQL语法模板的生成进行详细说明:
在生成GQL语法模板时,主要依据源代码中类与方法之间的继承关系,通过对方法的返回值类型和参数类型的解析,可以得到该方法步骤的实际应用场景。如图3所示,该类中提供了四个方法,分别是:
vertices(),edges(),addVertex(object),addVertex(String);
在了解到GQL语法的实际使用方式之后,可以将每一个方法与具体的步骤进行对应,即:
vertices()->V;
edges()->E();
addVertex()->addV()。
当直接使用前两种语法步骤时,生成的步骤为:g.V()与g.E(),表示返回全部点与边的对象信息,同时也可以为其添加点与边的id信息,获取指定的点边迭代器。
同样的,g.addV()步骤中,如果参数为空,则会根据系统默认设置的标签信息来完成添加点的操作;反之,则会根据用户设置的参数来完成点的添加。在获取到这些信息之后,就可以通过方法名、返回值、方法参数等来分析该步骤可能出现的所有场景,从而清晰地了解所有可以正常执行的步骤与参数情况。
进一步结合图4可以得知,在得到边的对象之后,可以在之后添加对应的步骤获取该边的出点、入点、邻接点、属性等信息。其中,方法与步骤的对应关系为:
outVertex()->outV();
inVertex()->inV();
bothVertex()->bothV();
properties()->properties()。
通过前一级步骤得到一个边对象,例如直接使用g.E(1),就可获取到id为1的边;在之后添加步骤outV(),就可以得到该边所包含的出点。
再例如,在判断一个步骤之后是否可以连接by()步骤进行调制的时候,可以通过观察其父类是否继承了ByModulating类:
publicfinalclassGroupStep<S,K,V>extendsReducingBarrierStep<S,Map<K,V>>implementsByModulating,TraversalParent
publicfinalclassOrderGlobalStep<S,CextendsComparable>extendsCollectingBarrierStep<S>implementsComparatorHolder<S,C>,TraversalParent,ByModulating
由以上两段代码以及该类的UML图(如图5所示)可以得知,Group()与Order()步骤都实现了ByModulating类的接口,也就是说可以支持Group().by()以及Order().by()步骤的生成。
进一步地,由前述可知,在生成模板的时候并不会直接添加相应的参数,而是在需要参数的位置使用替代符进行替换。例如:查询点的属性映射表,模板可生成为:g.V(@id).valueMap(@bool)。其中,@id表示要查询的点的id,在导入数据固定的情况下,该值可以根据数据id范围进行随机生成,也可以采用其他固定语法步骤从图数据库中进行读取,保证生成的数据是有效的。与此同时,@id可以为空值,表示获取到所有点的属性信息。@bool表示其中可以添加bool类型的参数,即true与false。
在生成GQL语法模板时,对不同类型、不同情况下的参数需采用不同的替代符来表示;而所述替代符的值,可通过以下三种方式来获取:
一是直接从图中获取。通过固定的查询语句,可以得到全部参数的信息,将这些参数信息都存入列表之中备用,当需要使用到该参数信息的时候,通过随机方法进行获取即可。
二是通过随机方法生成。这种方式可以产生存在于图中的参数与随机生成的参数两种情况,通过这种方式产生的参数可以用于对异常情况的验证。同时,通过对相应生成规则的控制,还可用于检测当参数类型错误时程序是否能够正常运行,实现对图数据库软件的稳定性与健壮性的检测。
三是给定一个固定的参数列表进行随机抽样。类似于@bool这一类的替代符,本身只有三种固定的可能性(即true、false和空值),所以可以直接给定一个固定的参数列表进行随机抽样,然后将其进行替换。
以上所述即为所述GQL语法模板的具体生成过程及生成过程中的参数获取。通过上述方法生成的所述GQL语法模板通常会保存在文本文件中,并按照语法功能进行模块划分。基于所述GQL语法模板的这种保存和处理方式,在后续步骤204中生成测试用例语句时,可通过配置相应的配置项来调整语句生成模式:
一种是顺序生成模式,即按照顺序读取文本文件中的模板信息,再根据读取的GQL语法模板中的替代符,从获取到的元数据信息中随机抽取参数进行替换,输出测试用例。在此生成过程中,可通过读取GQL语法模板中存在的替代符类型,判断随机生成该类测试用例的数量,以保证覆盖到各种出现的情况。
一种是随机生成模式,即随机读取文本文件中的模板信息,再根据读取的GQL语法模板中的替代符,从获取到的元数据信息中随机抽取参数进行替换,并输出测试用例。在此生成过程中,可通过修改最大语句生成数来确定测试用例的生成数量,主要用于冒烟测试或者长时间的稳定性测试。
综上所述,本发明提供的测试用例生成方法中,先通过解析gremlin源码得到语法遍历步骤信息,再遍历不同步骤的组合生成GQL语法模板,最后通过元数据信息生成有效参数来替换模板中的替代符,完成测试用例的生成。通过该方法可针对不同的数据快速自动生成相应的测试用例,满足不同的业务场景以及业务数据的需求,提高测试效率与测试覆盖度。另外,测试用例生成后,还可自动进行用例执行测试,进而实现对测试用例的语句有效性和正确性的校验;在测试执行过程中,还可将不同类型的日志信息输出,使得通过观察日志与命令行输出信息,即可及时了解程序运行和用例执行情况,并在出现异常时及时对异常语句进行定位与处理。
实施例2:
在上述实施例1提供的图数据库的测试用例生成方法的基础上,本发明还提供了一种可用于实现上述方法的图数据库的测试用例生成装置,如图6所示,是本发明实施例的装置架构示意图。本实施例的图数据库的测试用例生成装置包括一个或多个处理器21以及存储器22。其中,图6中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图6中以通过总线连接为例。
所述存储器22作为一种图数据库的测试用例生成方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的图数据库的测试用例生成方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行图数据库的测试用例生成装置的各种功能应用以及数据处理,即实现实施例1的图数据库的测试用例生成方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的图数据库的测试用例生成方法,例如,执行以上描述的图1和图2所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种图数据库的测试用例生成方法,其特征在于,包括:
对图数据库中已经存在的数据进行初始化,通过编写配置文件或配置选项的形式获取到所述图数据库中的元数据信息;
通过对gremlin源码进行类解析得到gremlin语法遍历步骤信息,进而通过类与类之间的对应关系得到各GQL语法步骤的映射表;
根据映射表得到孤立的步骤以及各步骤的前后关系,通过对不同步骤前后关系的匹配进行多种组合得到GQL语法模板;其中,在需要参数的位置使用替代符来表示;
从获取到的元数据信息中抽取参数,并用抽取的参数替换所述GQL语法模板中的替代符信息,生成测试用例;
在生成测试用例时,根据不同的测试场景选择不同的语句生成方式;
其中,当进行冒烟测试或长时间稳定性测试时,采用随机生成的方式来进行测试用例的生成;当对整个系统进行全面测试时,采用随机与遍历混合的方式来进行测试用例的生成。
2.根据权利要求1所述的图数据库的测试用例生成方法,其特征在于,在所述生成测试用例之后,所述方法还包括:
利用生成的测试用例执行测试,判断所述测试用例是否可执行通过,从而完成测试用例的语句正确性校验。
3.根据权利要求2所述的图数据库的测试用例生成方法,其特征在于,所述方法还包括:在测试执行过程中,对不同类型的日志信息进行分类存储并输出,以便通过观察日志与命令行输出信息了解程序运行和用例执行情况,并在出现异常时对异常语句进行定位与处理;
其中,当同时对多个图进行测试时,按照图将不同的日志信息输出到不同的目录中。
4.根据权利要求2所述的图数据库的测试用例生成方法,其特征在于,在测试执行时,采用随机执行或顺序执行的方式来对测试用例进行执行;
当采用随机执行时,在各测试用例输出完毕后开始执行,执行时先根据配置文件中设置的抽样执行次数随机生成测试用例id,再根据测试用例id获取到具体的测试用例,然后利用GQL语句执行器进行执行;
当采用顺序执行时,先检查是否存在已经生成好并输出完毕的测试用例,如果存在则直接按顺序执行生成好的测试用例,如果不存在则先进行测试用例的生成,生成后再按照生成的顺序进行测试。
5.根据权利要求1所述的图数据库的测试用例生成方法,其特征在于,在进行数据初始化时,如果图数据库中预先没有准备好的数据,则根据系统业务抽取业务数据并导入所述图数据库中,或采用随机语句生成算法生成随机数据并导入所述图数据库中;
其中,当同时对多个图进行测试时,产生多组不同的数据并分别导入不同的图中,以便分别生成测试用例。
6.根据权利要求1所述的图数据库的测试用例生成方法,其特征在于,在生成所述GQL语法模板时,对不同类型、不同情况下的参数采用不同的替代符来表示;其中,所述替代符的值通过以下方式获取:直接从图中获取,或者通过随机方法生成,或者给定一个固定的参数列表进行随机抽样。
7.根据权利要求1所述的图数据库的测试用例生成方法,其特征在于,在生成所述GQL语法模板时,所述方法还包括:
在模板生成时默认添加正确的参数信息并执行,以便检验生成的GQL语法模板的可行性;如果执行通过则将对应的GQL语法模板进行保存,如果执行不通过则将对应的GQL语法模板进行过滤。
8.根据权利要求1所述的图数据库的测试用例生成方法,其特征在于,所述GQL语法模板生成后保存在文本文件中,则在生成所述测试用例时,按照顺序读取文本文件中的模板信息,或者随机读取文本文件中的模板信息,再根据读取的GQL语法模板中的替代符,从获取到的元数据信息中随机抽取参数进行替换,输出测试用例。
9.一种图数据库的测试用例生成装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-8任一所述的图数据库的测试用例生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138381.9A CN111176979B (zh) | 2019-11-20 | 2019-11-20 | 一种图数据库的测试用例生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911138381.9A CN111176979B (zh) | 2019-11-20 | 2019-11-20 | 一种图数据库的测试用例生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176979A CN111176979A (zh) | 2020-05-19 |
CN111176979B true CN111176979B (zh) | 2023-05-12 |
Family
ID=70653791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911138381.9A Active CN111176979B (zh) | 2019-11-20 | 2019-11-20 | 一种图数据库的测试用例生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111176979B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579472B (zh) * | 2020-12-30 | 2024-04-16 | 锐捷网络股份有限公司 | 测试用例的自动生成方法及装置 |
CN113010425B (zh) * | 2021-03-18 | 2024-04-02 | 中国平安人寿保险股份有限公司 | 系统质量监测方法、装置、计算机设备及存储介质 |
CN113505062A (zh) * | 2021-06-30 | 2021-10-15 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 自动遍历被测产品不同测试参数的测试方法 |
CN113535265A (zh) * | 2021-07-15 | 2021-10-22 | 中国第一汽车股份有限公司 | 业务数据生成方法、装置、电子设备及存储介质 |
CN115509909B (zh) * | 2022-09-26 | 2023-11-07 | 北京百度网讯科技有限公司 | 测试方法、装置、电子设备和存储介质 |
CN116822424B (zh) * | 2023-07-11 | 2023-12-22 | 北京云枢创新软件技术有限公司 | 一种源文件修改定位系统及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255712A (zh) * | 2017-12-29 | 2018-07-06 | 曙光信息产业(北京)有限公司 | 数据系统的测试系统和测试方法 |
CN108319547A (zh) * | 2017-01-17 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 测试用例生成方法、装置和系统 |
CN109446059A (zh) * | 2018-09-12 | 2019-03-08 | 北京邮电大学 | 测试模板脚本的生成方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9990183B2 (en) * | 2015-12-28 | 2018-06-05 | Wipro Limited | System and method for validating software development requirements |
WO2017144432A1 (en) * | 2016-02-26 | 2017-08-31 | Nokia Solutions And Networks Oy | Cloud verification and test automation |
US20180089252A1 (en) * | 2016-09-28 | 2018-03-29 | Linkedin Corporation | Verifying correctness in graph databases |
CN109902017A (zh) * | 2019-03-06 | 2019-06-18 | 厦门商集网络科技有限责任公司 | 一种基于RobotFramework测试Dubbo接口的方法及终端 |
-
2019
- 2019-11-20 CN CN201911138381.9A patent/CN111176979B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319547A (zh) * | 2017-01-17 | 2018-07-24 | 阿里巴巴集团控股有限公司 | 测试用例生成方法、装置和系统 |
CN108255712A (zh) * | 2017-12-29 | 2018-07-06 | 曙光信息产业(北京)有限公司 | 数据系统的测试系统和测试方法 |
CN109446059A (zh) * | 2018-09-12 | 2019-03-08 | 北京邮电大学 | 测试模板脚本的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111176979A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176979B (zh) | 一种图数据库的测试用例生成方法和装置 | |
CN109800175B (zh) | 一种基于代码插桩的以太坊智能合约重入漏洞检测方法 | |
CN109271326B (zh) | 云数据库的测试方法及其装置、设备和存储介质 | |
US8225288B2 (en) | Model-based testing using branches, decisions, and options | |
AU2010295547B2 (en) | Mapping dataset elements | |
US8832125B2 (en) | Extensible event-driven log analysis framework | |
CN109344056B (zh) | 一种测试方法以及测试装置 | |
US20130110879A1 (en) | Declarative support for reference data in relational databases | |
US11327874B1 (en) | System, method, and computer program for orchestrating automatic software testing | |
US9940215B2 (en) | Automatic correlation accelerator | |
CN111158656B (zh) | 基于因果树法的测试代码生成方法及装置 | |
CN108319711A (zh) | 数据库的事务一致性测试方法、装置、存储介质及设备 | |
CN109063040B (zh) | 客户端程序数据采集方法及系统 | |
US8850407B2 (en) | Test script generation | |
CN112860264B (zh) | 一种抽象语法树重构方法及装置 | |
Mrasek et al. | A new verification technique for large processes based on identification of relevant tasks | |
CN112256365B (zh) | 一种自动化管理多语言版本的方法及终端 | |
US10614421B2 (en) | Method and system for in-memory policy analytics | |
CN112783775A (zh) | 特殊字符输入测试方法及装置 | |
Bicevskis et al. | Data quality model-based testing of information systems | |
US11727204B2 (en) | Schema and object extractor | |
US20230004361A1 (en) | Code inspection interface providing method and apparatus for implementing the method | |
CN112925564B (zh) | 一种源代码的冗余导入类清理方法及装置 | |
CN115543836A (zh) | 脚本质量检测方法以及相关设备 | |
CN113448865A (zh) | 基于形式模型的关系型测试数据生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |