CN113448851A - 一种rust编程语言编译器的自动化测试方法及系统 - Google Patents

一种rust编程语言编译器的自动化测试方法及系统 Download PDF

Info

Publication number
CN113448851A
CN113448851A CN202110726385.XA CN202110726385A CN113448851A CN 113448851 A CN113448851 A CN 113448851A CN 202110726385 A CN202110726385 A CN 202110726385A CN 113448851 A CN113448851 A CN 113448851A
Authority
CN
China
Prior art keywords
expression
code
rust
source code
language
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
CN202110726385.XA
Other languages
English (en)
Other versions
CN113448851B (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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110726385.XA priority Critical patent/CN113448851B/zh
Publication of CN113448851A publication Critical patent/CN113448851A/zh
Application granted granted Critical
Publication of CN113448851B publication Critical patent/CN113448851B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本文提供了一种RUST编程语言编译器的自动化测试方法及系统,其中,所述方法包括:获得第一源代码程序;根据所述第一源代码程序构建RUST语言的抽象语法树;通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例,根据所述第一源代码程序的测试用例进行自动化测试。解决了现有技术中由于人工编写RUST编译器的测试用例和人为确定检测是否通过,存在测试效率较低和人工成本较高的技术问题。

Description

一种RUST编程语言编译器的自动化测试方法及系统
技术领域
本文涉及到软件测试技术领域,特别是涉及一种RUST编程语言编译器的自动化测试方法及系统。
背景技术
编译器被广泛地运用在软件开发中,具有漏洞的编译器可能导致在软件开发的过程中出现一些无法被开发人员预料到的意外行为,这可能导致软件出现问题,或者是引发关键安全领域的灾难。
RUST是一门比较新的语言,其编译器RUSTC也问世不久。
不同的编程语言,其编译器都会通过词法分析将源代码作为一串字符读入,解析建立表达式逻辑的语法树,最后转换成可执行的二进制机械语言。不同语言由于其语言特性不同,生成的语法树不同,后续对于语法树的处理也不同。为了保证编译器的良好运行,对编译器的工作流程进行检测是常用的手段。
目前针对RUST编译器的测试方法也十分原始,也就通过自带的测试套件,来分别检测编译器在各个流程中的状态。编译器测试最耗时的是测试用例编写,这项工作是手动的,并人为决定这些案例是否应该通过或失败,这需要编写者具有良好的代码能力,同时也意味着大量人力成本。
但本文发明人在实现本文施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:
现有技术中由于人工编写RUST编译器的测试用例和人为确定检测是否通过,存在测试效率较低和人工成本较高的技术问题。
发明内容
鉴于上述由于人工编写RUST编译器的测试用例和人为确定检测是否通过,存在测试效率较低和人工成本较高的技术问题,提出了本文,以便提供一种关于RUST编程语言的编译器的自动化测试方法及系统克服上述问题或者至少部分地解决上述问题,通过采用等效模数输入,生成RUST语言独有的抽象语法树,对不同的程序编译场景进行测试用例的生成,达到了RUST编程语言的编译器自动生成测试用例的技术效果。
依据本文的一个方面,提供一种关于RUST编程语言的编译器的自动化测试方法,其中,所述方法包括:获得第一源代码程序;根据所述第一源代码程序构建RUST语言的抽象语法树;通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例;根据所述第一源代码程序的测试用例进行自动化测试。
进一步的,所述RUST语言的抽象语法树的树节点包括:树节点表达式、ID编号和树节点位置。
进一步的,所述通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例,包括:根据所述RUST语言的抽象语法树的所述树节点位置,确定第一代码;按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例。
进一步的,其中,所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例,包括:根据所述第一代码,获得所述第一代码的所述树节点表达式;获得RUST的源代码库;根据所述RUST的源代码库,获得RUN-FAIL类型测试代码集;将所述RUN-FAIL类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第一替换表达式;将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例。
进一步的,其中,所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例,包括:获得RUST的源代码库;根据所述RUST的源代码库,获得RUN-PASS类型测试代码集;将所述RUN-PASS类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第二替换表达式;将第一代码的所述树节点表达式替换为所述第二替换表达式,生成所述第一源代码程序的测试用例。
进一步的,其中,所述将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例包括:根据第三替换表达式对所述第一代码的所述树节点表达式进行更新;获得第一变量;根据所述第一变量对所述第三替换表达式进行赋值,获得第四替换表达式;对所述第四替换表达式进行虚拟调用;根据所述第三替换表达式对所述第四替换表达式进行赋值,获得所述第一替换表达式;将所述第一替换表达式对所述第一代码的所述树节点表达式进行替换,生成所述第一源代码程序的测试用例。
进一步的,其中,所述对所述第四替换表达式进行虚拟调用,包括:构建第一条件判断逻辑,所述第一条件判断逻辑为输出结果均为假的条件判断逻辑;根据所述第一条件判断逻辑,对所述第一变量进行虚拟调用。
依据本文的另一个方面,提供一种RUST编程语言编译器的自动化测试系统,其中,所述系统包括:第一获得单元,所述第一获得单元用于获得第一源代码程序;第一构建单元,所述第一构建单元用于根据所述第一源代码程序构建RUST语言的抽象语法树;第一生成单元,所述第一生成单元用于通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例。第一测试单元,所述第一测试单元用于根据所述第一源代码程序的测试用例进行自动化测试
进一步的,所述系统还包括:第二构建单元,所述第二构建单元用于分配所述RUST语言的抽象语法树的树节点为:树节点表达式、ID编号和树节点位置。
进一步的,所述系统还包括:第一确定单元,所述第一确定单元用于根据所述RUST语言的抽象语法树的所述树节点位置,确定第一代码;第二生成单元,所述第二生成单元用于按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:第二获得单元,所述第二获得单元用于根据所述第一代码,获得所述第一代码的所述树节点表达式;第三获得单元,所述第三获得单元用于获得RUST的源代码库;第四获得单元,所述第四获得单元用于根据所述RUST的源代码库,获得RUN-FAIL类型测试代码集;第五获得单元,所述第五获得单元用于将所述RUN-FAIL类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第一替换表达式;第三生成单元,所述第三生成单元用于将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:第六获得单元,所述第六获得单元用于获得RUST的源代码库;第七获得单元,所述第七获得单元用于根据所述RUST的源代码库,获得RUN-PASS类型测试代码集;第八获得单元,所述第八获得单元用于将所述RUN-PASS类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第二替换表达式;第四生成单元,所述第四生成单元用于将第一代码的所述树节点表达式替换为所述第二替换表达式,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:第一更新单元,所述第一更新单元用于根据第三替换表达式对所述第一代码的所述树节点表达式进行更新;第九获得单元,所述第九获得单元用于获得第一变量;第一赋值单元,所述第一赋值单元用于根据所述第一变量对所述第三替换表达式进行赋值,获得第四替换表达式;第一调用单元,所述第一调用单元用于对所述第四替换表达式进行虚拟调用;第二赋值单元,所述第二赋值单元用于根据所述第三替换表达式对所述第四替换表达式进行赋值,获得所述第一替换表达式;第五生成单元,所述第五生成单元用于将所述第一替换表达式对所述第一代码的所述树节点表达式进行替换,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:第三构建单元,所述第三构建单元用于构建第一条件判断逻辑,所述第一条件判断逻辑为输出结果均为假的条件判断逻辑;第二调用单元,所述第二调用单元用于根据所述第一条件判断逻辑,对所述第一变量进行虚拟调用。
依据本文的第三方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项的方法。
依据本文的第四方面,提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面中任一项的方法。
上述说明仅是本文技术方案的概述,为了能够更清楚了解本文的技术手段,而可依照说明书的内容予以实施,并且为了让本文的上述和其它目的、特征和优点能够更明显易懂,以下特举本文的具体实施方式。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种RUST编程语言编译器的自动化测试方法的流程示意图;
图2为一种RUST编程语言编译器的自动化测试系统的结构示意图;
图3为一种计算机设备的结构示意图;
附图标记说明:
11、第一获得单元;
12、第一构建单元;
13、第一生成单元;
14、第一测试单元;
1002、计算机设备;
1004、处理器;
1006、存储器;
1008、驱动机构;
1010、输入/输出模块;
1012、输入设备;
1014、输出设备;
1016、呈现设备;
1018、图形用户接口;
1020、网络接口;
1022、通信链路;
1024、通信总线。
具体实施方式
本文概述
编译器被广泛地运用在软件开发中,具有bug的编译器可能导致在软件开发的过程中出现一些无法被开发人员预料到的意外行为,这可能导致软件出现问题,或者是引发关键安全领域的灾难。RUST是一门比较新的语言,其编译器RUSTC也问世不久。不同的编程语言,其编译器都会通过词法分析将源代码作为一串字符读入,解析建立表达式逻辑的语法树,最后转换成可执行的二进制机械语言。不同语言由于其语言特性不同,生成的语法树不同,后续对于语法树的处理也不同。为了保证编译器的良好运行,对编译器的工作流程进行检测是常用的手段。目前针对RUST编译器的测试方法也十分原始,也就通过自带的测试套件,来分别检测编译器在各个流程中的状态。编译器测试最耗时的是测试用例编写,这项工作是手动的,并人为决定这些案例是否应该通过或失败,这需要编写者具有良好的代码能力,同时也意味着大量人力成本。但现有技术中由于人工编写RUST编译器的测试用例和人为确定检测是否通过,存在测试效率较低和人工成本较高的技术问题。
对于上述技术问题,本文实施例提供如下解决方案:
提供一种关于RUST编程语言的编译器的自动化测试方法,其中,所述方法包括:获得第一源代码程序;根据所述第一源代码程序构建RUST语言的抽象语法树;通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例。
进一步的,所述RUST语言的抽象语法树的树节点包括:树节点表达式、ID编号和树节点位置。
进一步的,所述通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例,包括:根据所述RUST语言的抽象语法树的所述树节点位置,确定第一代码;按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例。
进一步的,其中,所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例,包括:根据所述第一代码,获得所述第一代码的所述树节点表达式;获得RUST的源代码库;根据所述RUST的源代码库,获得RUN-FAIL类型测试代码集;将所述RUN-FAIL类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第一替换表达式;将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例。
进一步的,其中,所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例,包括:获得RUST的源代码库;根据所述RUST的源代码库,获得RUN-PASS类型测试代码集;将所述RUN-PASS类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第二替换表达式;将第一代码的所述树节点表达式替换为所述第二替换表达式,生成所述第一源代码程序的测试用例。
进一步的,其中,所述将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例包括:根据第三替换表达式对所述第一代码的所述树节点表达式进行更新;获得第一变量;根据所述第一变量对所述第三替换表达式进行赋值,获得第四替换表达式;对所述第四替换表达式进行虚拟调用;根据所述第三替换表达式对所述第四替换表达式进行赋值,获得所述第一替换表达式;将所述第一替换表达式对所述第一代码的所述树节点表达式进行替换,生成所述第一源代码程序的测试用例。
进一步的,其中,所述对所述第四替换表达式进行虚拟调用,包括:构建第一条件判断逻辑,所述第一条件判断逻辑为输出结果均为假的条件判断逻辑;根据所述第一条件判断逻辑,对所述第一变量进行虚拟调用。
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
实施例一
如图1所示,本文实施例提供一种RUST编程语言编译器的自动化测试方法,其中,所述方法包括:
S100:获得第一源代码程序;
具体而言,所述第一源代码程序指的是未编译的按照一定的程序设计语言规范书写的文本文件,通常是人类可读的计算机语言指令。
S200:根据所述第一源代码程序构建RUST语言的抽象语法树;
具体而言,所述RUST语言的抽象语法树指的是将所述第一源代码程序的抽象语法结构的树状表示。优选的构建方式举一例:先对所述源代码程序进行词法分析,此步会依据一个个字母的读取代码,遇到空格,操作符,或者特殊符号的时候,判定为一个话完成,一个话指的是从第一个源代码字母或者从上一个空格,操作符,或者特殊符号后面的第一代码到下一个空格,操作符,或者特殊符号之间的源代码内容,在一个话分析完成之后,即开始下一话的分析,直到获取所需要模数的内容量时停止,模数指的是所述抽象语法树中表达式的容量,容量的单位和大小在此不做限定。其次是对词法分析得到的数组通过语法分析,转化为树形的表达形式,同时验证语法,若是出现语法错误,则进行报错。所述RUST语言的抽象语法树因为不依赖于具体的文法和语言的细节,可以减少工作量和提高编译器的可维护性。
S300:通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例。
S400:根据所述第一源代码程序的测试用例进行自动化测试。
具体而言,所述活代码变例算法指的是将程序某个时刻中所有变量的值设置为环境,环境可以随着代码的实时执行更新的算法。自动生成随机内容的逻辑是首先对变量赋值,更新环境形成不同程序的编译场景,再利用更新后的环境生成随机内容,而随机内容是容易获取的,只要是更新后的环境中任意合法的变量即可,在此处随机内容指的是所述第一源代码程序的测试用例;所述等效模数输入指的是输入和所述RUST语言的抽象语法树相同模数的内容量,保障生成的所述第一源代码程序的测试用例和所述RUST语言的抽象语法树被替换的内容是相同的模数,避免所述第一源代码程序的测试用例不符合所述RUST语言的抽象语法树容量大小导致无法检测所述RUST编译器;进一步的,基于所述RUST语言的抽象语法树,基于等效模数输入,将符合RUST语法规范的源代码通过活代码变例算法,可以自动生成符合RUST语法规范的测试用例,即为所述第一源代码程序的测试用例。更进一步的,基于自动生成的测试用例对所述RUST编程语言的编译器各个工作流程进行测试,当出现错误时自动报错。达到了自动生成RUST编程语言的编译器的测试用例的技术效果。
进一步的,所述方法步骤S200还包括:
S210:所述RUST语言的抽象语法树的树节点包括:树节点表达式、ID编号和树节点位置。
具体而言,所述RUST语言的抽象语法树节点大致分为三个成员,第一个成员为所述树节点表达式;第二个成员为所述树节点表达式独有的所述ID编号;第三个成员为所述树节点位置,这个成员是作为一个定位器定为节点在代码中的位置,以便编译器报错的时候指出报错的位置。
进一步的,基于所述通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例,所述方法步骤S300还包括:
S310:根据所述RUST语言的抽象语法树的所述树节点位置,确定第一代码;
S320:按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例。
具体而言,所述第一代码指的是所述RUST语言的抽象语法树中需要替换的代码内容,其在抽象语法树中的树节点表达式中是随机确定的,确定之后即可根据所述第一代码的模数大小,进而限定替换的代码模数和所述第一代码的模数大小相同,避免替换后的代码模数不匹配。通过所述第一代码的在所述RUST语言的抽象语法树中对应的所述树节点位置信息,可以确定所述第一代码的所述树节点表达式内容,即需要修改替换的所述树节点表达式部分。进一步的,使用基于等效模数输入,将符合RUST语法规范的源代码通过活代码变例算法,自动生成的符合RUST语法规范的测试用例对所述第一代码对应的所述树节点表达式替换,得到所述第一源代码程序的测试用例。
进一步的,基于所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例,所述方法步骤S320还包括:
S321:根据所述第一代码,获得所述第一代码的所述树节点表达式;
S322:获得RUST的源代码库;
S323:根据所述RUST的源代码库,获得RUN-FAIL类型测试代码集;
S324:将所述RUN-FAIL类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第一替换表达式;
S325:将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例。
具体而言,所述RUST的源代码库指的是严格符合所述RUST语法规范的测试用例源代码集合;为了保证能准确判断出现错误是所述RUST编译器的错误,就需要得到在编译过程不会出错,而在运行过程会出错的源代码内容,基于此在所述RUST的源代码库进行筛选,得到所述RUN-FAIL类型测试代码集。进一步的,所述词法分析器是可以将所述RUN-FAIL类型测试代码集一一读取,并转化为和所述RUST语言的抽象语法树中表达式模数相同的表达式内容的工具;所述第一替换表达式即为经过所述词法分析器转化之后的内容,再基于等效模数输入,将其输入源代码通过活代码变例算法,自动生成的符合RUST语法规范的测试用例。更进一步的,所述第一替换表达式和所述第一代码对应的所述树节点表达式是相同的模数,替换成所述第一替换表达式,即得到所述第一源代码程序的测试用例。
进一步的,基于所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例步骤S320还包括另一种方法和S321-S325并列,在选用所述第一源代码程序的测试用例的源代码时可选用步骤S321-S325的方法或者如下步骤S326-S329的方法:
S326:获得RUST的源代码库;
S327:根据所述RUST的源代码库,获得RUN-PASS类型测试代码集;
S328:将所述RUN-PASS类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第二替换表达式;
S329:将第一代码的所述树节点表达式替换为所述第二替换表达式,生成所述第一源代码程序的测试用例。
具体而言,所述RUN-PASS类型测试代码集指的是基于编译过程不会出错,而在运行过程会出错的筛选原则,在所述RUST的源代码库中筛选得到的另外一种符合要求的测试代码集。进一步的,将所述RUN-PASS类型测试代码集经过所述词法分析器转化为和所述RUST语言的抽象语法树中表达式模数相同的表达式内容,再基于等效模数输入,将其输入通过活代码变例算法,自动生成的符合RUST语法规范的测试用例即为所述第二替换表达式。更进一步的,将所述第一代码对应的所述树节点表达式替换成所述第二替换表达式,即得到所述第一源代码程序的测试用例。所述第二替换表达式和所述第一替换表达式是等同的选用地位,选择其一生成所述第一源代码程序的测试用例。通过在所述RUST的源代码库中依据编译过程不会出错,而在运行过程会出错进行筛选源代码,可准确判断是否为所述RUST编译器出错。
进一步的,基于所述将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例,所述方法步骤S325还包括:
S3251:根据第三替换表达式对所述第一代码的所述树节点表达式进行更新;
S3252:获得第一变量;
S3253:根据所述第一变量对所述第三替换表达式进行赋值,获得第四替换表达式;
S3254:对所述第四替换表达式进行虚拟调用;
S3255:根据所述第三替换表达式对所述第四替换表达式进行赋值,获得所述第一替换表达式;
S3256:将所述第一替换表达式对所述第一代码的所述树节点表达式进行替换,生成所述第一源代码程序的测试用例。
具体而言,所述第三替换表达式指的是根据程序编译场景预设的符合所述RUST语法规范的表达式内容,从上述表达式内容中筛选和所述第一代码的所述树节点表达式模数相同的随机表达式对所述第三替换表达式初始化处理,通过初始化处理后的所述第三替换表达式对所述第一代码对应的所述树节点表达式进行更新,即得到更新后的变量环境,程序编译场景在此不做限定,据所述RUST编译器实际应用而定。进一步的,所述第一变量指的是更新后的变量环境中的任意合法变量,在更新后的变量环境中获取任意合法变量是容易的。
更进一步的,将所述第一变量赋值给初始化处理之后的所述第三替换表达式,当所述第三替换表达式的模数和所述第一代码的所述树节点表达式模数相同时停止,将其赋值给所述第四替换表达式,存储为所述第四替换表达式,所述活代码变例算法结束。其中,所述第三替换表达式用于生成测试用例内容的算法过程中,所述第四替换表达式用于存储得到的符合要求的测试用例内容。
更进一步的,所述虚拟调用指的是欺骗计算机会调用该变量但实际上运行过程并未调用,因为仅需要生成检测所述RUST编译器编译工作是否正常的测试用例,此外并不需要多余的进程,所以使用所述虚拟调用的方式调用所述第四替换表达式达到将所述第四替换表达式内容输出,却不进行真实调用的目的。
更进一步的,在所述活代码变例算法结束时,将所述第三替换表达式赋值给所述第四替换表达式,得到最终的所述第一替换表达式,因为所述第四替换表达式已经是符合要求的测试用例内容,所以使用所述第四替换表达式作为所述第一替换表达式。更进一步的,使用所述第一替换表达式对所述第一代码的所述树节点表达式进行替换,得到所述第一源代码程序的测试用例。通过基于所述活代码变例算法,达到了自动生成所述第一源代码程序的测试用例的技术效果,同理也可以使用相同实施方式对步骤S325中的所述第二替换表达式操作。
进一步的,基于所述对所述第四替换表达式进行虚拟调用,所述方法步骤S3254还包括:
S32541:构建第一条件判断逻辑,所述第一条件判断逻辑为输出结果均为假的条件判断逻辑;
S32542:根据所述第一条件判断逻辑,对所述第一变量进行虚拟调用。
具体而言,所述虚拟调用的优选实现方式为:预设一个输出结果始终为假的判断逻辑,即为所述第一条件判断逻辑,在此基础上对所述第一变量进行调用,则就会欺骗所述RUST编译器调用所述第一变量,但实际上在运行过程并不会调用。
综上所述,本文实施例所提供的一种RUST编程语言编译器的自动化测试方法及系统具有如下技术效果:
1、由于采用了获得第一源代码程序;根据所述第一源代码程序构建RUST语言的抽象语法树;通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例的技术方案;根据所述第一源代码程序的测试用例进行自动化测试,达到了RUST编程语言的编译器自动生成测试用例的技术效果。
实施例二
基于与前述实施例一中一种RUST编程语言的编译器的自动化测试方法相同的发明思路,如图2所示,本文实施例还提供一种关于RUST编程语言的编译器的自动化测试系统,其中,所述系统包括:
第一获得单元11,所述第一获得单元11用于获得第一源代码程序;
第一构建单元12,所述第一构建单元12用于根据所述第一源代码程序构建RUST语言的抽象语法树;
第一生成单元13,所述第一生成单元13用于通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例。
第一测试单元14,所述第一测试单元14用于根据所述第一源代码程序的测试用例进行自动化测试。
进一步的,所述系统还包括:
第二构建单元,所述第二构建单元用于分配所述RUST语言的抽象语法树的树节点为:树节点表达式、ID编号和树节点位置。
进一步的,所述系统还包括:
第一确定单元,所述第一确定单元用于根据所述RUST语言的抽象语法树的所述树节点位置,确定第一代码;
第二生成单元,所述第二生成单元用于按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:
第二获得单元,所述第二获得单元用于根据所述第一代码,获得所述第一代码的所述树节点表达式;
第三获得单元,所述第三获得单元用于获得RUST的源代码库;
第四获得单元,所述第四获得单元用于根据所述RUST的源代码库,获得RUN-FAIL类型测试代码集;
第五获得单元,所述第五获得单元用于将所述RUN-FAIL类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第一替换表达式;
第三生成单元,所述第三生成单元用于将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:
第六获得单元,所述第六获得单元用于获得RUST的源代码库;
第七获得单元,所述第七获得单元用于根据所述RUST的源代码库,获得RUN-PASS类型测试代码集;
第八获得单元,所述第八获得单元用于将所述RUN-PASS类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第二替换表达式;
第四生成单元,所述第四生成单元用于将第一代码的所述树节点表达式替换为所述第二替换表达式,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:
第一更新单元,所述第一更新单元用于根据第三替换表达式对所述第一代码的所述树节点表达式进行更新;
第九获得单元,所述第九获得单元用于获得第一变量;
第一赋值单元,所述第一赋值单元用于根据所述第一变量对所述第三替换表达式进行赋值,获得第四替换表达式;
第一调用单元,所述第一调用单元用于对所述第四替换表达式进行虚拟调用;
第二赋值单元,所述第二赋值单元用于根据所述第三替换表达式对所述第四替换表达式进行赋值,获得所述第一替换表达式;
第五生成单元,所述第五生成单元用于将所述第一替换表达式对所述第一代码的所述树节点表达式进行替换,生成所述第一源代码程序的测试用例。
进一步的,所述系统还包括:
第三构建单元,所述第三构建单元用于构建第一条件判断逻辑,所述第一条件判断逻辑为输出结果均为假的条件判断逻辑;
第二调用单元,所述第二调用单元用于根据所述第一条件判断逻辑,对所述第一变量进行虚拟调用。
示例性电子设备
基于与前述实施例一中一种RUST编程语言编译器的自动化测试方法相同的发明思路,如图3所示,本文实施例还提供一种计算机设备,计算机设备1002可以包括一个或多个处理器1004,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备1002还可以包括任何存储器1006,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器1006可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留,存储器1006上存储有可在处理器1004上运行的计算机程序,处理器1004执行计算机程序时实现前述任一实施例所述的电动汽车充放电控制方法。进一步地,任何存储器可以表示计算机设备1002的固定或可移除部件。在一种情况下,当处理器1004执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备1002可以执行相关联指令的任一操作。计算机设备1002还包括用于与任何存储器交互的一个或多个驱动机构1008,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备1002还可以包括输入/输出模块1010(I/O),其用于接收各种输入(经由输入设备1012)和用于提供各种输出(经由输出设备1014))。一个具体输出机构可以包括呈现设备1016和相关联的图形用户接口(GUI)1018。在其他实施例中,还可以不包括输入/输出模块1010(I/O)、输入设备1012以及输出设备1014,仅作为网络中的一台计算机设备。计算机设备1002还可以包括一个或多个网络接口1020,其用于经由一个或多个通信链路1022与其他设备交换数据。一个或多个通信总线1024将上文所描述的部件耦合在一起。
通信链路1022可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路1022可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任一实施例所述一种关于RUST编程语言的编译器的自动化测试方法。
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行上述任一实例所述的一种关于RUST编程语言的编译器的自动化测试方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。

Claims (16)

1.一种RUST编程语言编译器的自动化测试方法,其特征在于,包括:
获得第一源代码程序;
根据所述第一源代码程序构建RUST语言的抽象语法树;
通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例;
根据所述第一源代码程序的测试用例进行自动化测试。
2.如权利要求1所述的方法,其特征在于,其中,所述RUST语言的抽象语法树的树节点包括:树节点表达式、ID编号和树节点位置。
3.如权利要求2所述的方法,其特征在于,其中,所述通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例,包括:
根据所述RUST语言的抽象语法树的所述树节点位置,确定第一代码;
按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例。
4.如权利要求3所述的方法,其特征在于,其中,所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例,包括:
根据所述第一代码,获得所述第一代码的所述树节点表达式;
获得RUST的源代码库;
根据所述RUST的源代码库,获得RUN-FAIL类型测试代码集;
将所述RUN-FAIL类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第一替换表达式;
将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例。
5.如权利要求3所述的方法,其特征在于,其中,所述按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例,包括:
获得RUST的源代码库;
根据所述RUST的源代码库,获得RUN-PASS类型测试代码集;
将所述RUN-PASS类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第二替换表达式;
将第一代码的所述树节点表达式替换为所述第二替换表达式,生成所述第一源代码程序的测试用例。
6.如权利要求4或5所述的方法,其特征在于,其中,所述将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例包括:
根据第三替换表达式对所述第一代码的所述树节点表达式进行更新;
获得第一变量;
根据所述第一变量对所述第三替换表达式进行赋值,获得第四替换表达式;
对所述第四替换表达式进行虚拟调用;
根据所述第三替换表达式对所述第四替换表达式进行赋值,获得所述第一替换表达式;
将所述第一替换表达式对所述第一代码的所述树节点表达式进行替换(将第一代码的所述树节点表达式替换为所述第一替换表达式)为了和前面权利要求描述一致,生成所述第一源代码程序的测试用例。
7.如权利要求6所述的方法,其特征在于,其中,所述对所述第四替换表达式进行虚拟调用,包括:
构建第一条件判断逻辑,所述第一条件判断逻辑为输出结果均为假的条件判断逻辑;
根据所述第一条件判断逻辑,对所述第一变量进行虚拟调用。
8.一种RUST编程语言编译器的自动化测试系统,其特征在于,所述系统包括:
第一获得单元,所述第一获得单元用于获得第一源代码程序;
第一构建单元,所述第一构建单元用于根据所述第一源代码程序构建RUST语言的抽象语法树;
第一生成单元,所述第一生成单元用于通过活代码变例算法在所述RUST语言的抽象语法树中进行等效模数输入,生成所述第一源代码程序的测试用例;
第一测试单元,所述第一测试单元用于根据所述第一源代码程序的测试用例进行自动化测试。
9.如权利要求8所述的系统,其特征在于,其中,所述系统还包括:
第二构建单元,所述第二构建单元用于分配所述RUST语言的抽象语法树的树节点为:树节点表达式、ID编号和树节点位置。
10.如权利要求9所述的系统,其特征在于,其中,所述系统还包括:
第一确定单元,所述第一确定单元用于根据所述RUST语言的抽象语法树的树节点位置,确定第一代码;
第二生成单元,所述第二生成单元用于按照RUST语法规范对所述RUST语言的抽象语法树中的所述第一代码的所述树节点表达式进行修改替换,生成所述第一源代码程序的测试用例。
11.如权利要求10所述的系统,其特征在于,其中,所述系统还包括:
第二获得单元,所述第二获得单元用于根据所述第一代码,获得所述第一代码的所述树节点表达式;
第三获得单元,所述第三获得单元用于获得RUST的源代码库;
第四获得单元,所述第四获得单元用于根据所述RUST的源代码库,获得RUN-FAIL类型测试代码集;
第五获得单元,所述第五获得单元用于将所述RUN-FAIL类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第一替换表达式;
第三生成单元,所述第三生成单元用于将第一代码的所述树节点表达式替换为所述第一替换表达式,生成所述第一源代码程序的测试用例。
12.如权利要求10所述的系统,其特征在于,其中,所述系统还包括:
第六获得单元,所述第六获得单元用于获得RUST的源代码库;
第七获得单元,所述第七获得单元用于根据所述RUST的源代码库,获得RUN-PASS类型测试代码集;
第八获得单元,所述第八获得单元用于将所述RUN-PASS类型测试代码集通过词法分析器,获得所述RUST语言的抽象语法树中的第二替换表达式;
第四生成单元,所述第四生成单元用于将第一代码的所述树节点表达式替换为所述第二替换表达式,生成所述第一源代码程序的测试用例。
13.如权利要求11所述的系统,其特征在于,其中,所述系统还包括:
第一更新单元,所述第一更新单元用于根据第三替换表达式对所述第一代码的所述树节点表达式进行更新;
第九获得单元,所述第九获得单元用于获得第一变量;
第一赋值单元,所述第一赋值单元用于根据所述第一变量对所述第三替换表达式进行赋值,获得第四替换表达式;
第一调用单元,所述第一调用单元用于对所述第四替换表达式进行虚拟调用;
第二赋值单元,所述第二赋值单元用于根据所述第三替换表达式对所述第四替换表达式进行赋值,获得所述第一替换表达式;
第五生成单元,所述第五生成单元用于将所述第一替换表达式对所述第一代码的所述树节点表达式进行替换,生成所述第一源代码程序的测试用例。
14.如权利要求13所述的系统,其特征在于,其中,所述系统还包括:
第三构建单元,所述第三构建单元用于构建第一条件判断逻辑,所述第一条件判断逻辑为输出结果均为假的条件判断逻辑;
第二调用单元,所述第二调用单元用于根据所述第一条件判断逻辑,对所述第一变量进行虚拟调用。
15.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述权利要求1-7中任一项的方法。
16.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述权利要求1-7任一项的方法。
CN202110726385.XA 2021-06-29 2021-06-29 一种rust编程语言编译器的自动化测试方法及系统 Active CN113448851B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110726385.XA CN113448851B (zh) 2021-06-29 2021-06-29 一种rust编程语言编译器的自动化测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110726385.XA CN113448851B (zh) 2021-06-29 2021-06-29 一种rust编程语言编译器的自动化测试方法及系统

Publications (2)

Publication Number Publication Date
CN113448851A true CN113448851A (zh) 2021-09-28
CN113448851B CN113448851B (zh) 2024-06-21

Family

ID=77813910

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110726385.XA Active CN113448851B (zh) 2021-06-29 2021-06-29 一种rust编程语言编译器的自动化测试方法及系统

Country Status (1)

Country Link
CN (1) CN113448851B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115150483A (zh) * 2022-05-17 2022-10-04 浙江木链物联网科技有限公司 一种网络数据包解析方法、系统及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530223A (zh) * 2012-07-06 2014-01-22 百度在线网络技术(北京)有限公司 一种自动生成单元测试用例的方法及装置
CN104298594A (zh) * 2014-09-25 2015-01-21 南京航空航天大学 一种源代码中值计算错误的自动检测和定位方法
CN112527316A (zh) * 2020-12-29 2021-03-19 Oppo广东移动通信有限公司 代码编译方法、装置、电子设备及存储介质
CN112560041A (zh) * 2021-02-25 2021-03-26 北京微步在线科技有限公司 质量自动化验证检测的方法、设备及计算机存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530223A (zh) * 2012-07-06 2014-01-22 百度在线网络技术(北京)有限公司 一种自动生成单元测试用例的方法及装置
CN104298594A (zh) * 2014-09-25 2015-01-21 南京航空航天大学 一种源代码中值计算错误的自动检测和定位方法
CN112527316A (zh) * 2020-12-29 2021-03-19 Oppo广东移动通信有限公司 代码编译方法、装置、电子设备及存储介质
CN112560041A (zh) * 2021-02-25 2021-03-26 北京微步在线科技有限公司 质量自动化验证检测的方法、设备及计算机存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115150483A (zh) * 2022-05-17 2022-10-04 浙江木链物联网科技有限公司 一种网络数据包解析方法、系统及可读存储介质
CN115150483B (zh) * 2022-05-17 2023-08-29 浙江木链物联网科技有限公司 一种网络数据包解析方法、系统及可读存储介质

Also Published As

Publication number Publication date
CN113448851B (zh) 2024-06-21

Similar Documents

Publication Publication Date Title
JP5965080B2 (ja) コンパイル及び配備サービスを用いたソフトウェアのビルド及びロード処理のためのシステム、方法及びコンピュータプログラムプロダクト
US8943423B2 (en) User interface indicators for changed user interface elements
US6671874B1 (en) Universal verification and validation system and method of computer-aided software quality assurance and testing
US7987460B2 (en) Automation tool for application installations
US8091066B2 (en) Automated multi-platform build and test environment for software application development
US7266809B2 (en) Software debugger and software development support system for microcomputer operable to execute conditional execution instruction
US7934205B2 (en) Restructuring computer programs
US20050204344A1 (en) Program analysis device, analysis method and program of same
US20070011669A1 (en) Software migration
CN109918081B (zh) 一种编译方法及编译器
CN109634869B (zh) 二进制翻译中间表示正确性测试方法及装置
US10303467B2 (en) Target typing-dependent combinatorial code analysis
US9965257B2 (en) Automatic configuration of project system from project capabilities
CN110825386B (zh) 代码的编译方法和装置、存储介质
CN113342590B (zh) NVMe设备调试功能实现方法、装置、设备及存储介质
US20200183658A1 (en) Identification and visualization of associations among code generated from a model and sources that affect code generation
US10387124B2 (en) System and method for creating domain specific language
CN115543781A (zh) 汽车软件模型自动化验证的方法及交互系统
Strüber et al. Scalability of Model Transformations: Position Paper and Benchmark Set.
CN113836023B (zh) 一种基于体系结构交叉检查的编译器安全性测试方法
CN113448851B (zh) 一种rust编程语言编译器的自动化测试方法及系统
US11615016B2 (en) System and method for executing a test case
US20140089738A1 (en) System and method for identifying source of run-time execution failure
US9710360B2 (en) Optimizing error parsing in an integrated development environment
US10453019B1 (en) Business activity resource modeling system and method

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