CN106095668A - 基于事件和动作的c++测试用例的生成方法 - Google Patents
基于事件和动作的c++测试用例的生成方法 Download PDFInfo
- Publication number
- CN106095668A CN106095668A CN201610389850.4A CN201610389850A CN106095668A CN 106095668 A CN106095668 A CN 106095668A CN 201610389850 A CN201610389850 A CN 201610389850A CN 106095668 A CN106095668 A CN 106095668A
- Authority
- CN
- China
- Prior art keywords
- function
- event
- action
- base class
- virtual function
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 155
- 230000009471 action Effects 0.000 title claims abstract description 116
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims description 211
- 239000011800 void material Substances 0.000 claims 1
- 230000007423 decrease Effects 0.000 abstract description 7
- 238000013461 design Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000007613 environmental effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 241000208340 Araliaceae Species 0.000 description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 235000008434 ginseng Nutrition 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000009958 sewing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及嵌入式软件测试技术领域,公开了一种基于事件和动作的C++测试用例的生成方法。本发明中,基于事件和动作的C++测试用例的生成方法,包括:根据事件和动作创建测试流程;构建第一虚函数与第二虚函数;其中,第一虚函数为C++语言编写的第一基类的虚函数;第一基类为事件的基类;第二虚函数为C++语言编写的第二基类的虚函数,第二基类为动作的基类;根据测试流程、第一虚函数与第二虚函数自动生成基于事件和动作的C++测试用例。相对于现有技术,本发明实施方式减少了开发测试代码的工作量,同时,有助于提高测试的效率,还有助于提高测试的实时性。
Description
技术领域
本发明涉及嵌入式软件测试技术领域,特别涉及一种基于事件和动作的C++测试用例的生成方法。
背景技术
在汽车、军工、航空、航天等嵌入式软件测试中,传统上测试用例的编写语言一般是脚本语言。脚本语言编写的测试用例,在测试时,边执行边解释,运行慢,效率低,实时性差。
目前嵌入式测试领域对实时性要求越来越苛刻,利用脚本语言编写的测试用例已经不能满足测试系统的实时性要求。采用接近底层的语言来设计测试用例,可以提高测试系统的实时性。但是,需要人工用接近底层的语言来重新编写测试用例,工作量大,效率低,延长了测试代码的开发时间。
发明内容
本发明的目的在于提供一种基于事件和动作的C++测试用例的生成方法,减少了开发测试代码的工作量,缩短了开发测试代码的时间,有助于提高测试的效率,还有助于提高测试的实时性。
为解决上述技术问题,本发明的实施方式提供了一种基于事件和动作的C++测试用例的生成方法,包括:
根据事件和动作创建测试流程;
构建第一虚函数与第二虚函数;其中,所述第一虚函数为C++语言编写的第一基类的虚函数;所述第一基类为所述事件的基类;所述第二虚函数为C++语言编写的第二基类的虚函数,所述第二基类为所述动作的基类;
根据所述测试流程、所述第一虚函数与所述第二虚函数分别自动生成基于所述事件和所述动作的C++测试用例;其中,所述C++测试用例为C++语言编写的测试代码,所述C++测试用例中包含头文件与源文件;所述头文件为采用C++语言编写的用于声明所述事件与所述动作的文件;所述源文件为采用C++语言编写的用于实现所述事件与所述动作的文件。
本发明的实施方式还提供了一种基于事件和动作的C++测试用例的生成方法,包括:
根据事件和动作创建测试流程;
构建第一虚函数、第二虚函数、第三虚函数与第四虚函数;其中,所述第一虚函数为C++语言编写的第一基类的虚函数;所述第一基类为所述事件的基类;所述第二虚函数为C++语言编写的第二基类的虚函数,所述第二基类为所述动作的基类;所述第三虚函数为C++语言编写的第一基类的虚函数;所述第四虚函数为C++语言编写的第二基类的虚函数;所述第一虚函数与所述第三虚函数的函数名不同、参数相同、返回值类型相同;所述第二虚函数与所述第四虚函数的函数名不同、参数相同、返回值类型相同;
根据所述测试流程、所述第一虚函数与所述第二虚函数分别自动生成基于所述事件和所述动作的C++测试用例中的头文件,根据所述测试流程、所述第三虚函数与所述第四虚函数分别自动生成基于所述事件和所述动作的C++测试用例中的源文件;
其中,所述C++测试用例为C++语言编写的测试代码,所述头文件为采用C++语言编写的用于声明所述事件与所述动作的文件;所述源文件为采用C++语言编写的用于实现所述事件与所述动作的文件。
本发明实施方式相对于现有技术而言,将测试用例中的每一个事件和动作都分别视为一个类,事件和动作各有一个基类,每一个具体的事件和动作类型都分别继承此动作基类和事件基类,每个动作基类和事件基类分别对应有C++语言编写的虚函数,在该虚函数中,可以用于自动生成基于事件和动作的C++测试用例。本发明实施方式实现自动生成C++测试用例,无需人工用接近底层的语言来重新编写测试用例,减少了开发测试代码的工作量,缩短了开发测试代码的时间;而且,相对于使用脚本语言编写测试用例,本发明实施方式使用C++语言,无需边执行边解释,可以提高测试用例的运行速度;另外,C++语言是接近底层的语言,用于设计测试用例,有助于提高测试的实时性。综上所述,本发明实施方式减少了开发测试代码的工作量,缩短了开发测试代码的时间,有助于提高测试的效率,还有助于提高测试的实时性。
所述事件包含第一事件;所述第一事件为第一子类;所述第一子类继承所述第一基类;所述第一子类包括第一函数;其中,所述第一函数与所述第一虚函数的函数名称、参数、返回值类型分别相同;在所述自动生成基于所述事件和所述动作的C++测试用例中,具体包括:在指向所述第一子类的第一基类指针或者指向所述第一子类的第一基类引用调用所述第一虚函数时,自动调用所述第一函数。这样便于自动调用各个子类的与基类虚函数具有相同名称、相同参数、相同返回值的函数,能够很好地解决头文件和源文件之间的一一对应关系。
所述C++测试用例中包含至少所述第五函数与第六函数;所述第五函数与所述第六函数用于生成信号值;所述第五函数与所述第六函数的名称均包含前缀与后缀;所述第五函数的名称的前缀与所述第六函数的名称的前缀相同,所述第五函数的名称的后缀与所述第六函数的名称的后缀不同。这样,前缀相同可以方便函数的自动获取与调用,后缀不同可以进行排重处理,避免编译时出现重复错误。
另外,若在编译所述C++测试用例的计算机上的Windows系统下采用VC编译器、MicrosoftSDKs与WinDDK,且编译所述C++测试用例的应用软件是Release版本,则对所述VC编译器、MicrosoftSDKs与WinDDK进行剪裁,剪裁掉Debug库文件,仅保留Release库文件。这样,可以去掉不必要的文件、减小安装包的大小,提高运行速度。
附图说明
图1是根据本发明第一实施方式的基于事件和动作的C++测试用例的生成方法流程图;
图2是根据本发明第四实施方式的基于事件和动作的C++测试用例的生成方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
在本发明实施方式中,需要预先在上位机安装VC编译器,配置编译环境。
本发明的第一实施方式涉及一种基于事件和动作的C++测试用例的生成方法,具体流程如图1所示。
在步骤101中,根据事件和动作创建测试流程。具体的说,在本步骤中,是在图形化界面中创建基于事件和动作的测试流程。
在步骤102中,构建第一虚函数与第二虚函数。具体的说,本实施方式中测试用例中的每一个事件和动作都分别视为C++测试用例中的一个类,事件和动作各有一个基类,可以分别设为第一基类和第二基类。第一虚函数为C++语言编写的第一基类的虚函数。第二虚函数为C++语言编写的第二基类的虚函数。
本实施方式中的事件可以包含第一事件,且该第一事件为第一子类;第一子类继承第一基类;第一子类包括第一函数;其中,第一函数与第一虚函数的函数名称、参数、返回值类型分别相同。本实施方式中的动作可以包含第一动作,且该第一动作为第三子类;第三子类继承第二基类;第三子类包括第三函数;其中,第三函数与第二虚函数的函数名称、参数、返回值类型分别相同。
在步骤103中,根据测试流程、第一虚函数与第二虚函数自动生成C++测试用例。具体的说,根据测试流程、第一虚函数与第二虚函数自动生成基于事件和动作的C++测试用例;其中,C++测试用例为C++语言编写的测试代码,C++测试用例中包含头文件与源文件;头文件为采用C++语言编写的用于声明事件与动作的文件;源文件为采用C++语言编写的用于实现事件与动作的文件。在本步骤中,在指向第一子类的第一基类的指针或者指向第一子类的第一基类的引用调用第一虚函数时,自动调用第一函数。在指向第三子类的第二基类的指针或者指向第三子类的第二基类的引用调用第二虚函数时,自动调用第三函数。
由于测试系统中有很多不同类型的信号,因此在本实施方式中,C++测试用例中包含至少第五函数与第六函数,第五函数与第六函数用于生成信号值。第五函数与第六函数的名称均包含前缀与后缀,第五函数的名称的前缀与第六函数的名称的前缀相同,方便函数的自动获取与调用。第五函数的名称的后缀与第六函数的名称的后缀不同,可以进行排重处理,避免编译时出现重复错误。比如说,可以采用函数名称形如XXXd(XXX代表相同的前缀,d代表不同的后缀)的方法来完成信号值的自动获取及比较和函数的自动调用。
在本实施方式中,头文件和源文件是编译代码不可分割的两个部分,而且具有紧密的对应关系。头文件负责函数、类、结构体和枚举类型等的声明,而源文件负责函数的具体实现方法。因此,在实际应用中,自动生成程序代码时需要指定每一个变量的类型。
C++测试用例中采用一对大括弧“{}”界定程序代码中结构体、类以及函数的作用域,在自动生成基于事件和动作的C++测试用例中,先设置变量,该变量用于标记“{”与“}”的嵌套层次,以供在执行C++测试用例时,然后根据变量与“{”的嵌套层次,来确定对应的“}”的层次和位置。
需要说明的是,在本实施方式中,若在编译C++测试用例的计算机上的Windows系统下采用VC编译器、MicrosoftSDKs与WinDDK,且编译C++测试用例的应用软件是Release版本,则对VC编译器、MicrosoftSDKs与WinDDK进行剪裁,剪裁掉Debug库文件,仅保留Release库文件。具体的说,对于自动生成的程序代码(包含测试用例上下位机源代码和对应Makefile文件),上位机Windows系统下采用VC编译器(内含所需的VC库文件和MFC库文件)、MicrosoftSDKs、WinDDK,并对这三个部分进行有目的的裁剪(裁剪掉Debug库文件,只保留Release库文件,因为整个软件是Release版本,裁剪之后可以去掉不必要的文件、减小安装包的大小)Makefile文件负责组建编译环境和规则,调用VC编译器实现上位机程序代码的编译和链接。另外,为了解决VC编译器在Release版本编译时可能产生nafxcw.lib和unafxcw.lib库冲突的问题,在Makefile文件中的LFLAGS=后添加nafxcw.lib。调用VC的nmake之前将MAKEFLAGS环境变量置空,以排除此环境变量对编译链接的影响。下位机Redhat系统下采用自带的GCC编译器,由于编译环境已经具备,下位机Makefile文件只负责组建编译规则,调用GCC编译器实现下位机程序代码的编译和链接。
相对于现有技术而言,将测试用例中的每一个事件和动作都分别视为一个类,事件和动作各有一个基类,每一个具体的事件和动作类型都分别继承此动作基类和事件基类,每个事件基类和动作基类分别对应有C++语言编写的虚函数,在该虚函数中,可以用于自动生成基于事件和动作的C++测试用例。本发明实施方式实现自动生成C++测试用例,无需人工用接近底层的语言来重新编写测试用例,减少了开发测试代码的工作量,缩短了开发测试代码的时间;而且,相对于使用脚本语言编写测试用例,本发明实施方式使用C++语言,无需边执行边解释,可以提高测试用例的运行速度;另外,C++语言是接近底层的语言,用于设计测试用例,有助于提高测试的实时性。综上所述,本发明实施方式减少了开发测试代码的工作量,缩短了开发测试代码的时间,有助于提高测试的效率,还有助于提高测试的实时性。
本发明的第二实施方式涉及一种基于事件和动作的C++测试用例的生成方法。第二实施方式与第一实施方式大致相同,主要区别之处在于:第一实施方式中的事件可以包含第一事件。而在本发明第二实施方式中,事件还可以包含第二事件。
具体的说,本实施方式中的第二事件为第二子类;第二子类继承第一基类;第二子类包括第二函数;其中,第二函数与第一虚函数的函数名称、参数、返回值类型分别相同。在自动生成基于事件和动作的C++测试用例中,具体包括:在指向第二子类的第一基类的指针或者指向第二子类的第一基类的引用调用第一虚函数时,自动调用第二函数。
需要说明的是,本实施方式中的事件可以不止包括第二事件,还可以包括第三事件、第四事件等多个事件,比如说事件可以是:内部事件、外部事件、系统事件、同步事件等事件,每个具体的事件都为第一基类的子类,且每个事件对应一个函数,且每个事件对应的函数与第一虚函数的函数名称、参数、返回值类型分别相同,在调用函数时,可以采用分别指向每个事件的第一基类的指针也可以采用分别指向每个事件的第一基类的引用,自动调用每个事件对应的函数。
本实施方式在存在多个事件时,也可以使用C++语言自动生成测试用例,提高了测试的效率,使得本发明实施方式更实用。
本发明的第三实施方式涉及一种基于事件和动作的C++测试用例的生成方法。第三实施方式与第一实施方式大致相同,主要区别之处在于:在第一实施方式中的动作可以包含第一动作。而在本发明第三实施方式中的动作还可以包含第二动作。
具体的说,本实施方式中第二动作为第四子类,第四子类继承第二基类,且第四子类包括第四函数;其中,第四函数与第二虚函数的函数名称、参数、返回值类型分别相同。在自动生成基于事件和动作的C++测试用例中,具体包括:在指向第四子类的第二基类的指针或者指向第四子类的第二基类的引用调用第二虚函数时,自动调用第四函数。
需要说明的时,本实施方式中的动作可以不止包括第二动作,还可以包括第三动作、第四动作等多个动作,比如这些动作可以是:发送总线消息、比较期望值、动作延时、常用算法等动作,每个具体的动作都为第二基类的子类,且每个动作对应一个函数,且每个动作对应的函数与第二虚函数的函数名称、参数、返回值类型分别相同,在调用函数时,可以采用分别指向每个动作的第二基类的指针也可以采用分别指向每个动作的第二基类的引用,自动调用每个动作对应的函数。
本实施方式在存在多个动作时,也可以使用C++语言自动生成测试用例,提高了测试的效率,使得本发明实施方式更实用。
本发明的第四实施方式涉及一种基于事件和动作的C++测试用例的生成方法。本实施方式的流程如图2所示,具体如下:
在步骤201中,根据事件和动作创建测试流程。
在步骤202中,构建第一虚函数、第二虚函数、第三虚函数与第四虚函数。其中,第一虚函数为C++语言编写的第一基类的虚函数;第一基类为事件的基类;第二虚函数为C++语言编写的第二基类的虚函数,第二基类为动作的基类;第三虚函数为C++语言编写的第一基类的虚函数;第四虚函数为C++语言编写的第二基类的虚函数;第一虚函数与第三虚函数的函数名不同、参数相同、返回值类型相同;第二虚函数与第四虚函数的函数名不同、参数相同、返回值类型相同。
在步骤203中,根据测试流程、第一虚函数与第二虚函数自动生成基于事件和动作的C++测试用例中的头文件。具体的说,本实施方式中的C++测试用例为C++语言编写的测试代码,头文件为采用C++语言编写的用于声明事件与动作的文件。
在步骤204中,根据测试流程、第三虚函数与第四虚函数自动生成基于事件和动作的C++测试用例中的源文件。具体的说,本实施方式中的源文件为采用C++语言编写的用于实现事件与动作的文件。其中,步骤203与步骤204可以同时生成。
在本实施方式中,头文件在继承于第一虚函数、第二虚函数的函数中生成,源文件在继承于第三虚函数、第四虚函数的函数中生成。也就是,头文件和源文件分别在两个函数中生成,这两个函数都是继承于同一个基类的子类中分别和基类中两个名称不相同、参数相同、返回值类型相同的虚函数的函数,在调用这两个函数时可以采用基类的指针,也可以采用基类的引用。
在本实施方式中,上位机编译采用VS(Visual Studio)自带的VC编译器,MFC静态链接,因此先确保上位机已经安装VS,再配置编译环境,具体的配置可以在Makefile文件中完成,Makefile文件指明了编译需要的源文件、头文件路径以及支持编译所需库的头文件和库文件路径。另外,为了解决VC编译器在Release版本编译时可能产生nafxcw.lib和unafxcw.lib库冲突的问题,在Makefile文件中的LFLAGS=后添加nafxcw.lib。编译链接过程是:先开启一个进程,以命令行方式调用VC编译器根据Makefile中的编译链接规则进行编译和链接,最后生成可执行程序。
调用VC的nmake之前将MAKEFLAGS环境变量置空,以排除此环境变量对编译链接的影响。
下位机编译采用Redhat自带的GCC编译器,用make命令调用Makefile文件进行编译链接,由于下位机涉及文件权限问题,因此可以将make命令写在一个shell脚本中。
相对于现有技术而言,将测试用例中的每一个事件和动作都分别视为一个类,事件和动作各有一个基类,每一个具体的事件和动作类型都分别继承此动作基类和事件基类,每个动作基类和事件基类分别对应有C++语言编写的虚函数,在该虚函数中,可以用于自动生成基于事件和动作的C++测试用例。本发明实施方式实现自动生成C++测试用例,无需人工用接近底层的语言来重新编写测试用例,减少了开发测试代码的工作量,缩短了开发测试代码的时间;而且,相对于使用脚本语言编写测试用例,本发明实施方式使用C++语言,无需边执行边解释,可以提高测试用例的运行速度;另外,C++语言是接近底层的语言,用于设计测试用例,有助于提高测试的实时性。综上所述,本发明实施方式减少了开发测试代码的工作量,缩短了开发测试代码的时间,有助于提高测试的效率,还有助于提高测试的实时性。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包含相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (9)
1.一种基于事件和动作的C++测试用例的生成方法,其特征在于,包括:
根据事件和动作创建测试流程;
构建第一虚函数与第二虚函数;其中,所述第一虚函数为C++语言编写的第一基类的虚函数;所述第一基类为所述事件的基类;所述第二虚函数为C++语言编写的第二基类的虚函数,所述第二基类为所述动作的基类;
根据所述测试流程、所述第一虚函数与所述第二虚函数分别自动生成基于所述事件和所述动作的C++测试用例;其中,所述C++测试用例为C++语言编写的测试代码,所述C++测试用例中包含头文件与源文件;所述头文件为采用C++语言编写的用于声明所述事件与所述动作的文件;所述源文件为采用C++语言编写的用于实现所述事件与所述动作的文件。
2.根据权利要求1所述的基于事件和动作的C++测试用例的生成方法,其特征在于,所述事件包含第一事件;所述第一事件为第一子类;所述第一子类继承所述第一基类;所述第一子类包括第一函数;其中,所述第一函数与所述第一虚函数的函数名称、参数、返回值类型分别相同;
在所述自动生成基于所述事件和所述动作的C++测试用例中,具体包括:
在指向所述第一子类的第一基类指针或者指向所述第一子类的第一基类引用调用所述第一虚函数时,自动调用所述第一函数。
3.根据权利要求2所述的基于事件和动作的C++测试用例的生成方法,其特征在于,所述事件包含第二事件;所述第二事件为第二子类;所述第二子类继承所述第一基类;所述第二子类包括第二函数;其中,所述第二函数与所述第一虚函数的函数名称、参数、返回值类型分别相同;
在所述自动生成基于所述事件和所述动作的C++测试用例中,具体包括:
在指向所述第二子类的第一基类指针或者指向所述第二子类的第一基类引用调用所述第一虚函数时,自动调用所述第二函数。
4.根据权利要求1所述的基于事件和动作的C++测试用例的生成方法,其特征在于,所述动作包含第一动作;所述第一动作为第三子类;所述第三子类继承所述第二基类;所述第三子类包括第三函数;其中,所述第三函数与所述第二虚函数的函数名称、参数、返回值类型分别相同;
在所述自动生成基于所述事件和所述动作的C++测试用例中,具体包括:
在指向所述第三子类的第二基类指针或者指向所述第三子类的第二基类引用调用所述第二虚函数时,自动调用所述第三函数。
5.根据权利要求4所述的基于事件和动作的C++测试用例的生成方法,其特征在于,所述动作还包含第二动作;所述第二动作为第四子类;所述第四子类继承所述第二基类;所述第四子类包括第四函数;其中,所述第四函数与所述第二虚函数的函数名称、参数、返回值类型分别相同;
在所述自动生成基于所述事件和所述动作的C++测试用例中,具体包括:
在指向所述第四子类的第二基类指针或者所述第四子类的第二基类引用调用所述第二虚函数时,自动调用所述第四函数。
6.根据权利要求1所述的基于事件和动作的C++测试用例的生成方法,其特征在于,所述C++测试用例中包含至少所述第五函数与第六函数;所述第五函数与所述第六函数用于生成信号值;所述第五函数与所述第六函数的名称均包含前缀与后缀;
所述第五函数的名称的前缀与所述第六函数的名称的前缀相同,所述第五函数的名称的后缀与所述第六函数的名称的后缀不同。
7.根据权利要求1所述的基于事件和动作的C++测试用例的生成方法,其特征在于,所述C++测试用例中采用一对大括弧界定程序代码中结构体、类以及函数的作用域;所述一对大括弧包含{与};
在所述自动生成基于所述事件和所述动作的C++测试用例中,具体包括:
设置变量;所述变量用于标记所述{与所述}的嵌套层次,以供在执行所述C++测试用例时,根据所述变量与所述{的嵌套层次,来确定所述}的层次和位置。
8.根据权利要求1所述的基于事件和动作的C++测试用例的生成方法,其特征在于,若在编译所述C++测试用例的计算机上的Windows系统下采用VC编译器、MicrosoftSDKs与WinDDK,且编译所述C++测试用例的应用软件是Release版本,则对所述VC编译器、MicrosoftSDKs与WinDDK进行剪裁,剪裁掉Debug库文件,仅保留Release库文件。
9.一种基于事件和动作的C++测试用例的生成方法,其特征在于,包含:
根据事件和动作创建测试流程;
构建第一虚函数、第二虚函数、第三虚函数与第四虚函数;其中,所述第一虚函数为C++语言编写的第一基类的虚函数;所述第一基类为所述事件的基类;所述第二虚函数为C++语言编写的第二基类的虚函数,所述第二基类为所述动作的基类;所述第三虚函数为C++语言编写的第一基类的虚函数;所述第四虚函数为C++语言编写的第二基类的虚函数;所述第一虚函数与所述第三虚函数的函数名不同、参数相同、返回值类型相同;所述第二虚函数与所述第四虚函数的函数名不同、参数相同、返回值类型相同;
根据所述测试流程、所述第一虚函数与所述第二虚函数分别自动生成基于所述事件和所述动作的C++测试用例中的头文件,根据所述测试流程、所述第三虚函数与所述第四虚函数分别自动生成基于所述事件和所述动作的C++测试用例中的源文件;
其中,所述C++测试用例为C++语言编写的测试代码,所述头文件为采用C++语言编写的用于声明所述事件与所述动作的文件;所述源文件为采用C++语言编写的用于实现所述事件与所述动作的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610389850.4A CN106095668B (zh) | 2016-06-02 | 2016-06-02 | 基于事件和动作的c++测试用例的生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610389850.4A CN106095668B (zh) | 2016-06-02 | 2016-06-02 | 基于事件和动作的c++测试用例的生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106095668A true CN106095668A (zh) | 2016-11-09 |
CN106095668B CN106095668B (zh) | 2018-12-11 |
Family
ID=57448126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610389850.4A Active CN106095668B (zh) | 2016-06-02 | 2016-06-02 | 基于事件和动作的c++测试用例的生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106095668B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958717A (zh) * | 2018-06-28 | 2018-12-07 | 深圳数字动能信息技术有限公司 | C++事件总线实现方法 |
CN109542536A (zh) * | 2018-11-12 | 2019-03-29 | 北京许继电气有限公司 | 面向对象的插件数据处理方法 |
CN111274144A (zh) * | 2020-01-20 | 2020-06-12 | 苏州浪潮智能科技有限公司 | 一种基于网络文件系统操作字接口的单元测试方法与系统 |
CN112783765A (zh) * | 2021-01-13 | 2021-05-11 | 北京轩宇信息技术有限公司 | 一种适用于指针的单元测试用例生成方法及装置 |
CN114328209A (zh) * | 2021-12-24 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种自动化测试插件生成方法、装置、设备及存储介质 |
CN116822040A (zh) * | 2023-03-17 | 2023-09-29 | 中国人民解放军63620部队 | 基于虚函数的飞行器仿真模型的单元测试框架构建方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786925A (zh) * | 2005-03-08 | 2006-06-14 | 中国科学院软件研究所 | 基于c++映射的ttcn-3测试系统及测试方法 |
CN102339252A (zh) * | 2011-07-25 | 2012-02-01 | 大连理工大学 | 基于xml中间模型以及缺陷模式匹配的静态检测系统 |
US8732676B1 (en) * | 2007-08-29 | 2014-05-20 | Parasoft Corporation | System and method for generating unit test based on recorded execution paths |
CN103995778A (zh) * | 2014-05-29 | 2014-08-20 | 上海科梁信息工程有限公司 | 一种基于事件和动作的脚本文件生成方法及其装置 |
-
2016
- 2016-06-02 CN CN201610389850.4A patent/CN106095668B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786925A (zh) * | 2005-03-08 | 2006-06-14 | 中国科学院软件研究所 | 基于c++映射的ttcn-3测试系统及测试方法 |
US8732676B1 (en) * | 2007-08-29 | 2014-05-20 | Parasoft Corporation | System and method for generating unit test based on recorded execution paths |
CN102339252A (zh) * | 2011-07-25 | 2012-02-01 | 大连理工大学 | 基于xml中间模型以及缺陷模式匹配的静态检测系统 |
CN103995778A (zh) * | 2014-05-29 | 2014-08-20 | 上海科梁信息工程有限公司 | 一种基于事件和动作的脚本文件生成方法及其装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958717A (zh) * | 2018-06-28 | 2018-12-07 | 深圳数字动能信息技术有限公司 | C++事件总线实现方法 |
CN109542536A (zh) * | 2018-11-12 | 2019-03-29 | 北京许继电气有限公司 | 面向对象的插件数据处理方法 |
CN111274144A (zh) * | 2020-01-20 | 2020-06-12 | 苏州浪潮智能科技有限公司 | 一种基于网络文件系统操作字接口的单元测试方法与系统 |
CN111274144B (zh) * | 2020-01-20 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种基于网络文件系统操作字接口的单元测试方法与系统 |
CN112783765A (zh) * | 2021-01-13 | 2021-05-11 | 北京轩宇信息技术有限公司 | 一种适用于指针的单元测试用例生成方法及装置 |
CN112783765B (zh) * | 2021-01-13 | 2024-02-09 | 北京轩宇信息技术有限公司 | 一种适用于指针的单元测试用例生成方法及装置 |
CN114328209A (zh) * | 2021-12-24 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种自动化测试插件生成方法、装置、设备及存储介质 |
CN114328209B (zh) * | 2021-12-24 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种自动化测试插件生成方法、装置、设备及存储介质 |
CN116822040A (zh) * | 2023-03-17 | 2023-09-29 | 中国人民解放军63620部队 | 基于虚函数的飞行器仿真模型的单元测试框架构建方法 |
CN116822040B (zh) * | 2023-03-17 | 2024-06-14 | 中国人民解放军63620部队 | 基于虚函数的飞行器仿真模型的单元测试框架构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106095668B (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106095668A (zh) | 基于事件和动作的c++测试用例的生成方法 | |
US20070277163A1 (en) | Method and tool for automatic verification of software protocols | |
US7487080B1 (en) | Partitioning a model in modeling environments | |
CN106933609B (zh) | Android应用程序安装包的生成方法及装置 | |
Silva et al. | Model-based user interface testing with spec explorer and concurtasktrees | |
CN101247292B (zh) | 基于通用测试仪表应用编程接口的测试设备及测试方法 | |
JP2021501953A (ja) | エンジンデバッグ、テスト、較正、及び調節を制御するためのソフトウェア環境 | |
Stoppe et al. | Data extraction from SystemC designs using debug symbols and the SystemC API | |
Blouin et al. | Synchronization of models of rich languages with triple graph grammars: an experience report | |
Pasareanu et al. | Model based analysis and test generation for flight software | |
Bonfiglio et al. | Executable models to support automated software FMEA | |
US11442845B2 (en) | Systems and methods for automatic test generation | |
Kirshin et al. | A UML simulator based on a generic model execution engine | |
JP2010140408A (ja) | ソースコード変換装置 | |
Ahmadi et al. | mCUTE: a model-level concolic unit testing engine for UML state machines | |
Zhang et al. | Automated unit testing intelligent agents in PDT | |
US8423977B2 (en) | Implementing a class oriented data flow program on a programmable hardware element | |
CN108614764B (zh) | Ima应用软件故障注入方法 | |
Hoffmann et al. | Experience report: White box test case generation for automotive embedded software | |
Jung et al. | Advanced typing for the Kieker instrumentation languages | |
US8375355B2 (en) | Conversion of a class oriented data flow program to a structure oriented data flow program | |
Voelter | Embedded software development with projectional language workbenches | |
Bousse et al. | Domain-level observation and control for compiled executable DSLs | |
US8356290B2 (en) | Conversion of a class oriented data flow program with inheritance to a structure oriented data flow program | |
CN103488519A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 201, building 6, 829 Yishan Road, Xuhui District, Shanghai 200233 Patentee after: Shanghai Keliang Information Technology Co.,Ltd. Address before: Room 201, building 6, 829 Yishan Road, Xuhui District, Shanghai 200233 Patentee before: SHANGHAI KELIANG INFORMATION ENGINEERING Co.,Ltd. |