CN111566625B - 测试用例生成装置、测试用例生成方法和计算机能读取的记录介质 - Google Patents
测试用例生成装置、测试用例生成方法和计算机能读取的记录介质 Download PDFInfo
- Publication number
- CN111566625B CN111566625B CN201880085785.3A CN201880085785A CN111566625B CN 111566625 B CN111566625 B CN 111566625B CN 201880085785 A CN201880085785 A CN 201880085785A CN 111566625 B CN111566625 B CN 111566625B
- Authority
- CN
- China
- Prior art keywords
- test case
- steps
- equivalent
- unit
- software
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 351
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 51
- 230000008569 process Effects 0.000 claims abstract description 44
- 238000001514 detection method Methods 0.000 claims abstract description 3
- 238000007689 inspection Methods 0.000 claims description 44
- 238000000605 extraction Methods 0.000 claims description 42
- 239000000284 extract Substances 0.000 claims description 16
- 230000006870 function Effects 0.000 description 48
- 238000012856 packing Methods 0.000 description 15
- 238000004806 packaging method and process Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 238000012905 input function Methods 0.000 description 4
- YTAHJIFKAKIKAV-XNMGPUDCSA-N [(1R)-3-morpholin-4-yl-1-phenylpropyl] N-[(3S)-2-oxo-5-phenyl-1,3-dihydro-1,4-benzodiazepin-3-yl]carbamate Chemical compound O=C1[C@H](N=C(C2=C(N1)C=CC=C2)C1=CC=CC=C1)NC(O[C@H](CCN1CCOCC1)C1=CC=CC=C1)=O YTAHJIFKAKIKAV-XNMGPUDCSA-N 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000004088 simulation Methods 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—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
-
- 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/3676—Test management for coverage analysis
-
- 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/3692—Test management for test results analysis
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
测试用例生成装置(10)对在每次被输入值时执行1个步骤的处理的软件即测试对象软件进行分析,生成为了测试该软件而输入的值的序列作为测试用例。此时,当关于状态变量,执行共用状态变量的多个步骤中的任意1个步骤的处理后的值和执行另1个步骤的处理后的值相等的情况下,等效步骤检査部(19)判定为这2个步骤是等效步骤。测试用例生成部(20)将由等效步骤检査部(19)判定为等效步骤的2个步骤中的一方排除,对测试对象软件进行分析而生成测试用例中包含的值。
Description
技术领域
本发明涉及测试用例生成装置、测试用例生成方法和计算机能读取的记录介质。
背景技术
在汽车和工业机器人等的控制设备中,搭载有用于进行各种控制的嵌入式实时软件。如果这样的软件误动作,将导致危及生命的事故。因此,需要在出厂前实施充分的测试。例如,在面向汽车的功能安全标准ISO26262和面向飞机的功能安全标准DO-178C中,要求按照每个测试工序来确定应采用的测试方法等作为测试要件,按照这些测试要件来实施测试。作为单体测试的测试要件的例子,根据等价划分或边界值分析来生成测试用例,由此以覆盖要求的方式执行测试,与此同时,要求该测试用例覆盖测试对象软件的源代码构造。作为源代码构造,将描述有处理的各命令行或if语句和for语句等的分支部位等作为基准。使用的基准根据测试对象软件而不同。将该基准称作构造覆盖基准。在将命令行作为构造覆盖基准的情况下,测量命令覆盖率,该命令覆盖率表示通过测试用例执行了测试对象软件中包含的多少代码。在将if语句等的分支作为构造覆盖基准的情况下,测量分支覆盖率,该分支覆盖率表示是否已经执行了代码中包含的全部分支目的地。如果命令覆盖率或分支覆盖率足够高,则判断为测试充分。
在嵌入式实时软件中,通常具有初始状态、执行状态和结束准备状态等多个状态。在这样的软件中,有时仅输入1次测试用例无法覆盖源代码构造而需要多次输入测试用例。将测试对象软件的执行单位称作步骤。例如,输入1次测试用例为1个步骤。
近年来,嵌入式实时软件的源代码变得大规模且复杂化。因此,手动地生成满足软件的要求规格并覆盖源代码构造的涉及多个步骤的测试用例的工时增加成为问题。
在专利文献1中公开有自动地生成单体测试用的多个步骤的测试用例以应对工时增加的方法。
在专利文献2中公开有如下方法:在基准测试(benchmark)程序内的反复进行同一处理的部位,处理不由于该反复而发生变化的情况下,削减反复次数。
在专利文献3中公开有如下方法:在执行某个处理块之前,处理器的内部状态与该处理块以前成为处理对象时相同的情况下,不进行与该处理块相关的处理而沿用上次信息,由此使仿真高速化。
现有技术文献
专利文献
专利文献1:日本特开2014-063415号公报
专利文献2:日本特开2003-316612号公报
专利文献3:国际公开第2015/045472号
发明内容
发明要解决的课题
在专利文献1的方法中,使用有限模型检査来分析是否能够生成从第1步骤起至达到预先设定的最大步骤数依次满足测试要求的测试用例。当存在未覆盖的要求或分支时,增加步骤数来反复进行测试用例生成用的分析。设将该方法应用于等待一定时间直到状态转变为止的软件。该情况下,在等待期间不论有怎样的输入,状态也不发生变化,因此不会覆盖新的构造。结果是,在相当于等待的步骤中,即使进行测试用例生成用的分析,也不会生成新的测试用例。随着步骤数的增加,有限模型检査的分析时间有呈指数函数型变长的趋势。因此,尽管不生成新的测试用例,分析时间也增加,测试用例生成时间有时未收敛于实用时间内。为了削减该分析时间,考虑如下方法:将对等待时间进行计数而得到的计数器值有意义地变更成较小的值,从而削减测试用例生成所需的步骤数。但是,为了将计数器值变更成状态转变发生前的恰当的值,必须掌握规格信息的详情。在设置有多个等待时间的情况下,可能将计数器值设定成错误的值,其结果是,生成针对被变更成不同于实际的行为的软件的测试用例。
在专利文献2的方法中,在特定的执行环境下判断是否存在内部状态的变化。在外部输入发生变化的环境中,未考虑是否将某个处理始终判断为不存在内部状态的变化。
在专利文献3的方法中,即使在执行处理块之前的内部状态中包含输入值,也仅在特定的输入值的内部状态时,将基于该处理块的处理判断为相同。因此,在上次步骤与此次步骤的输入值不同的情况下,无法将上次步骤与此次步骤的处理判断为相同。
这样,以往的方法无法应用于将如嵌入式实时软件那样来自外部装置的输入在步骤间变化的软件作为对象的涉及多个步骤的测试用例的生成。
本发明的目的在于,削减涉及多个步骤的测试用例的生成所需的时间。
用于解决课题的手段
本发明的一个方式的测试用例生成装置对在每次被输入值时执行1个步骤的处理的软件进行分析,生成为了测试所述软件而输入的值的序列作为测试用例,该测试用例生成装置具有:
等效步骤检査部,当关于在多个步骤的处理中共用且在依次执行所述多个步骤的处理的过程中保持与各步骤的处理的执行结果对应的值的状态变量,执行所述多个步骤中的任意1个步骤的处理后的值与执行另1个步骤的处理后的值相等的情况下,所述等效步骤检査部判定为这2个步骤是等效步骤;以及
测试用例生成部,其将由所述等效步骤检査部判定为等效步骤的2个步骤中的一方排除,对所述软件进行分析而生成所述测试用例中包含的值。
发明效果
在本发明中,对于被判定为等效步骤的2个步骤中的一方,能够省去对软件进行分析而生成测试用例中包含的值的处理。因此,能够削减涉及多个步骤的测试用例的生成所需的时间。
附图说明
图1是示出实施方式1的测试用例生成装置的结构的框图。
图2是示出实施方式1的测试用例生成装置的动作的流程图。
图3是示出实施方式1的测试用例生成装置的动作的流程图。
图4是示出实施方式1的测试对象软件的程序的图。
图5是示出实施方式1的测试对象软件的程序中包含的覆盖对象部位的图。
图6是示出实施方式1的测试用例生成装置的包装函数生成部生成的包装函数的图。
图7是示出实施方式2的测试用例生成装置的动作的流程图。
图8是示出实施方式2的测试用例生成装置的动作的流程图。
图9是示出实施方式2的测试对象软件的程序的图。
图10是示出实施方式2的测试对象软件的程序中包含的覆盖对象部位的图。
图11是示出实施方式2的测试用例生成装置的包装函数生成部生成的包装函数的图。
图12是示出实施方式2的测试用例生成装置的包装函数生成部生成的包装函数的图。
具体实施方式
以下,使用附图来说明本发明的实施方式。在各图中,对相同或相应的部分标注有相同标号。在实施方式的说明中,对于相同或相应的部分适当省略或简化说明。另外,本发明不限于以下说明的实施方式,能够根据需要进行各种变更。例如,可以组合实施以下说明的实施方式中的2个以上的实施方式。或者,也可以部分地实施以下说明的实施方式中的1个实施方式或2个以上的实施方式的组合。
实施方式1
使用图1~图6对本实施方式进行说明。
***结构的说明***
参照图1对本实施方式的测试用例生成装置10的结构进行说明。
测试用例生成装置10是计算机。测试用例生成装置10具有处理器11,并且具有存储器12、通信装置13和输入输出装置14这些其他硬件。处理器11经由信号线与其他硬件连接,控制这些其他硬件。
作为功能要素,测试用例生成装置10具有程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20。程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的功能由软件来实现。
处理器11是执行测试用例生成程序的装置。测试用例生成程序是实现程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的功能的程序。处理器11例如是CPU。“CPU”是Central Processing Unit(中央处理单元)的缩写。
存储器12是存储测试用例生成程序的装置。存储器12例如是RAM、闪存或它们的组合。“RAM”是Random Access Memory(随机存取存储器)的缩写。存储器12中还存储有测试对象软件的程序和测试对象软件的规格信息。测试对象软件可以是任意种类的软件,在本实施方式中是嵌入式软件。
通信装置13包含接收输入到测试用例生成程序的数据的接收器和发送从测试用例生成程序输出的数据的发送器。通信装置13例如是通信芯片或NIC。“NIC”是NetworkInterface Card(网络接口卡)的缩写。
输入输出装置14与被用户操作而向测试用例生成程序输入数据的输入设备和将从测试用例生成程序输出的数据显示到画面的显示器连接。输入设备例如是鼠标、键盘、触摸面板,或者它们中的若干个或全部的组合。显示器例如是LCD。“LCD”是Liquid CrystalDisplay(液晶显示器)的缩写。显示器特别用于显示测试用例生成部20生成的测试用例。
测试用例生成程序由处理器11从存储器12读入并由处理器11执行。存储器12中不仅存储有测试用例生成程序,还存储有OS。“OS”是Operating System(操作系统)的缩写。处理器11在执行OS的同时执行测试用例生成程序。另外,测试用例生成程序的一部分或全部也可以被组入到OS。
测试用例生成程序和OS也可以被存储到辅助存储装置。辅助存储装置例如是HDD、闪存或它们的组合。“HDD”是Hard Disk Drive(硬盘驱动器)的缩写。在测试用例生成程序和OS被存储到辅助存储装置的情况下,被加载到存储器12并由处理器11执行。
测试用例生成装置10也可以具有代替处理器11的多个处理器。这些多个处理器分担执行测试用例生成程序。各个处理器例如是CPU。
被测试用例生成程序利用、处理或输出的数据、信息、信号值和变量值被存储到存储器12、辅助存储装置或处理器11内的寄存器或高速缓冲存储器。
测试用例生成程序是如下程序:使计算机执行由程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20进行的进程,分别作为程序信息输入进程、状态变量提取进程、构造提取进程、包装函数生成进程、等效步骤检査进程和测试用例生成进程。测试用例生成程序可以记录在计算机能读取的介质中来提供,也可以存储在记录介质中来提供,还可以作为程序产品来提供。
测试用例生成装置10可以由1台计算机构成,也可以由多台计算机构成。在测试用例生成装置10由多台计算机构成的情况下,程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的功能可以被分散在各计算机中实现。
***动作的说明***
参照图1对本实施方式的测试用例生成装置10的动作概要进行说明。测试用例生成装置10的动作相当于本实施方式的测试用例生成方法。
程序信息输入部15从存储器12或者经由通信装置13或输入输出装置14从外部读入测试对象软件的程序、计数器规格信息、输入规格信息和最大步骤数的信息。
状态变量提取部16对程序信息输入部15读入的程序进行分析,提取该程序中包含的状态变量并存储到存储器12。状态变量是指全局变量等即使在涉及多个步骤执行了程序的情况下也在步骤间保持的变量。即,状态变量是在多个步骤的处理中共用且在依次执行多个步骤的处理的过程中保持与各步骤的处理的执行结果对应的值的变量。该状态变量存储初始状态或正常状态这些表示模式的值。状态变量提取部16根据程序信息输入部15读入的计数器规格信息,区分提取出的状态变量中的具有计数器作用的变量。以下,将除了计数器以外的状态变量称作检査对象状态变量VAR。另外,状态变量的数量也可以为2个以上。当存在多个检査对象状态变量的情况下,VAR是指多个变量的集合。
在本实施方式中,由状态变量提取部16对测试对象软件的程序进行分析来提取状态变量,但是,也可以从外部读入状态变量的列表信息。
构造提取部17根据测试中使用的构造覆盖基准,提取程序信息输入部15读入的程序中包含的应覆盖的对象部位。
包装函数生成部18调用测试对象程序并且生成包装函数,该包装函数将执行各步骤后的检査对象状态变量的值存储到按照每个步骤而不同的变量中。在本实施方式中,设存储有执行X步骤后的检査对象状态变量的值的变量为VAR_X。
等效步骤检査部19通过形式方法来检查某个步骤的执行和其之前的步骤的执行在功能上是否等效。如果执行某个步骤X后的VAR_X和执行步骤(X-1)后的VAR_(X-1)始终为相同值,则等效步骤检査部19将步骤X和步骤(X-1)判定为等效步骤。其中,X是2以上且最大步骤数以下的值。
测试用例生成部20根据等效步骤检査部19的结果,使用形式方法生成并输出覆盖构造提取部17提取出的覆盖覆盖对象这样的测试用例。
参照图2和图3,对本实施方式的测试用例生成装置10的动作详情进行说明。
在步骤S101中,程序信息输入部15读入测试对象软件的程序、计数器规格信息、输入规格信息和最大步骤数的信息,进入步骤S102。计数器规格信息和输入规格信息能够由使用者根据软件规格来手动设定,或者根据以确定的形式描述的规格自动设定,或者对程序进行分析来自动地选择设定作为状态转变的触发而使用的变量。最大步骤数是覆盖测试对象软件的程序所需的步骤数,在本实施方式中,设与计数器规格信息等同样地进行提取。
在步骤S102中,状态变量提取部16对读入的程序进行分析,提取程序中包含的状态变量,进入步骤S103。
在步骤S103中,状态变量提取部16将提取出的状态变量中的将计数器规格信息所表示的计数器排除的变量作为检査对象状态变量,进入步骤S104。
在步骤S104中,构造提取部17按照要使用的构造覆盖基准,提取测试对象软件的程序中包含的覆盖对象部位,进入步骤S105。在执行测试时使用分支作为构造覆盖基准,在测量分支覆盖率的情况下,构造提取部17在步骤S104中提取程序中包含的分支部位。例如,如果是if语句,则提取判定为“真”的情况和判定为“假”的情况下这2个部位作为覆盖对象。另外,步骤S104与步骤S102、步骤S103以及步骤S105之间没有依存关系,因此,能够调换执行顺序来执行或并行地执行。
在步骤S105中,包装函数生成部18生成等效步骤检査用的包装函数,进入步骤S106。
在步骤S106中,等效步骤检査部19使用形式方法,将包装函数作为输入函数来检查步骤间的等效性。具体而言,等效步骤检査部19检查不论输入规格信息中包含的输入变量的值是怎样的值,执行步骤X后的检査对象状态变量VAR_X与执行步骤(X-1)后的检査对象状态变量VAR_(X-1)的值是否都始终为相同值。X取表示2到最大步骤数间的步骤数的值。并且,如果VAR_X与VAR_(X-1)为相同值,则等效步骤检査部19将步骤X和步骤(X-1)判定为等效步骤。如果有时不是相同值,则等效步骤检査部19判定为不等效。等效步骤检査部19在从第1步骤起执行检査至达到最大步骤数后,进入步骤S107。
在步骤S107中,测试用例生成部20将变量i设定为1,进入步骤S108。
在步骤S108中,测试用例生成部20判定变量i的值是否大于最大步骤数或是否存在覆盖对象部位。在变量i的值大于最大步骤数的情况下,由于测试用例生成对象的步骤已结束,因此,测试用例生成部20结束处理。如果虽然变量i的值在最大步骤数以下但不存在覆盖对象部位,则测试用例生成部20判断为不需要生成测试用例而结束处理。在除此以外的情况下,测试用例生成部20进入步骤S109。
在步骤S109中,测试用例生成部20参照步骤S106中的等效步骤检査的结果。在将步骤i和步骤(i-1)判定为等效步骤的情况下,由于不需要步骤S110和步骤S111的处理,因此,测试用例生成部20进入步骤S112。在步骤i和步骤(i-1)不是等效步骤即是不等效步骤的情况下,测试用例生成部20进入步骤S110。但是,在i=1的情况下没有等效步骤检査结果,因此,测试用例生成部20始终设为不等效而进入步骤S110。
在步骤S110中,测试用例生成部20使用形式方法对直到步骤(i-1)为止未覆盖的覆盖对象部位或i=1的情况下在步骤S104中提取出的覆盖对象部位进行分析而生成测试用例。具体而言,测试用例生成部20分析程序信息输入部15读入的输入变量是否可取使得通过覆盖对象部位的输入值,如果存在那样的输入值,则输出该输入值作为测试用例。如果分析的结果是没有输入值,则在该步骤中有时也未生成测试用例。测试用例生成部20接着进入步骤S111。
在步骤S110中生成了测试用例的情况下,在步骤S111中,测试用例生成部20从覆盖对象部位排除由该测试用例通过的部位。测试用例生成部20接着进入步骤S112。
在步骤S112中,测试用例生成部20将变量i增加1,返回到步骤S108。
本实施方式中,在步骤S106中,等效步骤检査部19从第1步骤起至达到最大步骤数,实施一次等效步骤检査。作为变形例,也可以是,在步骤S108与步骤S109之间,等效步骤检査部19检查步骤i和步骤(i-1)是否等效,按照每1个步骤反复进行等效步骤检査以及覆盖对象部位的分析和测试用例的生成。
这样,在本实施方式中,测试用例生成装置10对在每次被输入值时执行1个步骤的处理的软件即测试对象软件进行分析,生成为了测试该软件而输入的值的序列作为测试用例。此时,当关于状态变量VAR,执行共用状态变量VAR的多个步骤中的任意1个步骤的处理后的值和执行另1个步骤的处理后的值相等的情况下,等效步骤检査部19判定为这2个步骤是等效步骤。测试用例生成部20将由等效步骤检査部19判定为等效步骤的2个步骤中的一方排除,对测试对象软件进行分析而生成测试用例中包含的值。
在本实施方式中,等效步骤检査部19判定多个步骤中的连续2个步骤的各组合是否为等效步骤。“由等效步骤检査部19判定为等效步骤的2个步骤中的一方”是由等效步骤检査部19判定为等效步骤的2个步骤中的后执行处理的步骤。即,测试用例生成部20将由等效步骤检査部19判定为等效步骤的2个步骤中的后执行处理的步骤排除,对测试对象软件进行分析而生成测试用例中包含的值。
在本实施方式中,测试用例生成部20将由等效步骤检査部19判定为等效步骤的2个步骤中的一方排除,逐个步骤地依次对测试对象软件进行分析而生成测试用例中包含的值,直到满足测试对象软件的测试覆盖基准为止。
在本实施方式中,状态变量提取部16对测试对象软件进行分析,提取在多个步骤的处理中共用且保持与各步骤的处理的执行结果对应的值的多个变量中的排除第1变量的第2变量作为状态变量VAR,该第1变量根据是否达到阈值而使下一步骤的处理不同。此时,状态变量提取部16根据输入到程序信息输入部15的表示第1变量的规格的信息来判别第1变量。作为变形例,状态变量提取部16也可以对测试对象软件进行分析来判别第1变量。在本实施方式中,计数器变量相当于第1变量,状态变量VAR相当于第2变量。此外,计数器规格信息相当于表示第1变量的规格的信息。
使用具体例子对测试用例生成装置10的动作进行说明。
在以下的例子中,使用图4所示的测试对象软件的程序的一部分。该程序中,在规格上设计数器为cnt,输入变量为b、c,最大步骤数为4。设使用分支覆盖作为执行测试时的构造覆盖基准。
程序信息输入部15读入测试对象软件的程序、计数器规格信息、输入规格信息和最大步骤数。程序在本例中仅包含2个函数func、func_init,但也可以是,不仅是描述1个函数的1个文件,还是多个函数或多个文件的集合。计数器规格信息包含有状态变量cnt,作为在用于等待至状态转变的1个步骤的执行中增加1的计数器的信息。输入规格信息包含测试对象软件的程序的输入变量b、c的信息。最大步骤数被设定为4。
在读入这些信息时,状态变量提取部16提取测试对象程序中包含的状态变量。这里,设提取d、cnt。状态变量提取部16根据这些状态变量中的计数器规格信息,识别出检査对象状态变量VAR为d。
由于if语句有2个部位且分别是“真”和“假”的2个分支,因此,构造提取部17从测试对象软件的程序中提取共计4个部位作为要覆盖的分支部位。图5针对图4所示的程序用P1~P4示出要覆盖的分支部位。
包装函数生成部18生成用于等效步骤检査的包装函数。图6示出该包装函数的例子。X=1、2、3、4,按照每个步骤将针对测试对象软件的程序的输入变量b、c的输入值区分成b_X和c_X。将实施各步骤后的检査对象状态变量的值存储到变量VAR_X。最后3行的ASSERT语句是等效步骤检査用的命令的一例。这些ASSERT语句是用于在输入变量b、c可取任何值的情况下对检査对象状态变量VAR_X与VAR_(X-1)是否相等进行检査的命令。
等效步骤检査部19使用形式方法,将该包装函数作为输入函数来执行检査。在针对ASSERT语句找到了反例的情况下,等效步骤检査部19判定为该步骤不等效。例如,ASSERT语句的最后一行是对执行第3步骤后与执行第4步骤后的检査对象状态变量的值相等进行检査的语句。即,ASSERT语句的最后一行是对在执行第3步骤和第4步骤时,不论对输入变量b_1~b_4和c_1~c_4赋予怎样的值,检査对象状态变量的值都不变进行检査的语句。在针对该检査输出了反例的情况下,有时检査对象状态变量的值改变,因此,判定为第3步骤和第4步骤不等效。如果未输出反例,则能够判定为第3步骤和第4步骤等效。在本例中,设第1步骤和第2步骤等效,其他步骤不等效。
作为第1步骤,测试用例生成部20使用等效步骤检査部19的检査结果,判断是否进行用于测试用例生成的分析。第1步骤始终被判断为不等效,因此,测试用例生成部20进行将构造提取部17提取出的覆盖对象部位作为对象的分析和测试用例的生成。由此,能够生成测试用例。设生成的测试用例满足图5所示的覆盖对象部位中的P4时,测试用例生成部20从覆盖对象部位中排除P4,进入第2步骤。根据等效步骤检査结果,第2步骤与第1步骤等效,因此,不需要分析和测试用例生成,测试用例生成部20立即进入第3步骤。第3步骤是不与第2步骤等效的步骤,因此,测试用例生成部20与第1步骤同样地将覆盖对象部位P1~P3作为对象来进行分析和测试用例生成。由此,能够生成测试用例,设已覆盖P1、P3时,剩余的覆盖对象部位为P2。测试用例生成部20进入第4步骤,与第3步骤同样地进行分析和测试用例生成。由于最大步骤数为4,因此,测试用例生成部20不再进行处理而结束处理。
这样执行判定步骤间的等效性的等效步骤检査,根据其结果进行分析和测试用例生成,由此,在第2步骤中不用进行测试用例生成用的分析,就能够进入下一步骤,从而能够削减分析时间。与其相比,在不进行等效步骤检査的情况下,从第1步骤到第4步骤每次都执行分析和测试用例生成,结果在第2步骤中由于不存在使得新通过覆盖对象部位的输入值,因此不生成测试用例,从而耗费无用的分析时间。
此外,通过这样使用形式方法自动判定步骤间的等效性,不再需要手动变更计数器的阈值这样的操作,能够将测试用例生成时间收敛在实用时间内而不变更测试对象软件的行为。能够避免以下问题:在进一步手动地变更了计数器值的情况下成为错误值,由此将进行不同于实际的行为的程序作为对象来生成测试用例,结果无法生成适当的测试用例。
***实施方式的效果说明***
在本实施方式中,对于被判定为等效步骤的2个步骤中的一方,能够省去对软件进行分析而生成测试用例中包含的值的处理。因此,能够削减涉及多个步骤的测试用例的生成所需的时间。
在本实施方式中,生成涉及多个步骤间的测试用例的测试用例生成装置10具有等效步骤检査部19和测试用例生成部20。即使对输入赋予任意的值,等效步骤检査部19也检查内部状态在步骤间是否等效。从第1步骤直到达到最大步骤数为止,依次基于等效步骤检査部19的结果,在该步骤与之前的步骤等效的情况下,测试用例生成部20不进行用于测试用例生成的分析和测试用例生成而进入下一步骤,在不等效的情况下,测试用例生成部20进行分析和测试用例生成。
根据本实施方式,在执行某个步骤后和执行另一步骤后分别判定为内部状态等效的情况下,不进行用于该步骤用的测试用例自动生成的分析,由此能够削减测试用例自动生成所需的时间。进而不变更测试对象软件的行为而自动生成测试用例,由此,能够执行适于测试对象软件的测试。
在本实施方式中,在自动生成涉及多个步骤的测试用例时,即使在各步骤中对测试对象软件的程序输入赋予任意的值,在执行某个步骤后和执行另一步骤后内部状态不发生变化的情况下,也判定为这2个步骤等效。并且,能够省去用于该步骤的测试用例自动生成的分析。
在本实施方式中,在每个步骤的测试用例生成用的分析前,检查该步骤与之前的步骤中的除了计数器以外的内部状态变量是否在全部输入值中始终等效,使得在判定为与之前的步骤等效的步骤中,不进行需要时间的测试用例生成用分析和生成。由此,能够削减生成测试用例的所需时间。
在本实施方式中,使用形式方法来自动判定某个步骤与之前的步骤是否等效,由此,能够削减手动变更所需的成本,同时解决以下问题:手动的错误变更导致无法生成充分的测试用例,从而无法适当执行测试。
在本实施方式中,状态变量不包含由于达到阈值而使得测试对象软件的处理发生变化的变量。具体而言,通过使用除了计数器以外的状态变量作为等效步骤检査对象,在包含每个步骤地发生变化以等待一定时间直到状态转变为止的状态变量的程序中,也能够判定为该等待中的步骤间为等效步骤,能够削减测试用例生成所需的时间。
在本实施方式中,由于达到阈值而使得测试对象软件的处理发生变化的变量从形式化描述的规格信息中自动提取,或者通过对测试对象软件的程序动作进行分析而被自动提取。具体而言,通过参照形式化描写的规格,或者对测试对象软件的程序进行分析来提取包含作为从等效步骤检査对象中排除的状态变量的计数器的计数器规格信息,由此能够省去手动设定的作业,能够削减测试用例生成所需的时间。
***其他结构***
在本实施方式中,程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的功能通过软件来实现,作为变形例,程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的功能也可以通过软件和硬件的组合来实现。即,也可以是,程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的功能的一部分通过专用硬件来实现,剩余部分通过软件来实现。
专用硬件例如是单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA、FPGA、ASIC,或者它们中的若干个或全部的组合。“IC”是Integrated Circuit(集成电路)的缩写。“GA”是Gate Array(门阵列)的缩写。“FPGA”是Field-Programmable GateArray(现场可编程门阵列)的缩写。“ASIC”是Application Specific Integrated Circuit(面向特定用途的集成电路)的缩写。
处理器11和专用硬件均是处理电路。即,不论程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的功能通过软件来实现,还是通过软件和硬件的组合来实现,程序信息输入部15、状态变量提取部16、构造提取部17、包装函数生成部18、等效步骤检査部19和测试用例生成部20的动作都由处理电路进行。
实施方式2
关于本实施方式,主要使用图7~图12来说明与实施方式1之间的差异。
***结构的说明***
本实施方式的测试用例生成装置10的结构与图1所示的实施方式1相同,因此省略说明。
***动作的说明***
参照图12对本实施方式的测试用例生成装置10的动作概要进行说明。测试用例生成装置10的动作相当于本实施方式的测试用例生成方法。
程序信息输入部15从存储器12或者经由通信装置13或输入输出装置14从外部读入测试对象软件的程序、反馈控制规格信息、输入规格信息和最大步骤数的信息。
状态变量提取部16对程序信息输入部15读入的程序进行分析,提取该程序中包含的状态变量并存储到存储器12。状态变量提取部16根据程序信息输入部15读入的反馈控制规格信息,区分提取出的状态变量中的表示反馈控制量的变量。以下,将该变量称作状态变量CTRL。将除了状态变量CTRL以外的状态变量称作状态变量VAR。
包装函数生成部18调用测试对象程序并且生成包装函数,该包装函数将执行各步骤后的状态变量VAR的值和状态变量CTRL的值存储到按照每个步骤而不同的变量中。在本实施方式中,设存储有执行X步骤后的状态变量VAR的值的变量为VAR_X,设存储有状态变量CTRL的值的变量为CTRL_X。
等效步骤检査部19通过形式方法来检查某个步骤的执行和另1个步骤的执行在功能上是否等效。如果执行某个步骤X后的VAR_X和执行步骤Y后的VAR_Y始终为相同值,则等效步骤检査部19关于状态变量VAR将步骤X和步骤Y判定为等效步骤。其中,设X和Y为相互不同的1以上且最大步骤数以下的值。关于状态变量CTRL,等效步骤检査部19也同样地进行检査。如果在执行步骤X和步骤Y后,关于全部状态变量即状态变量VAR和状态变量CTRL,VAR_X与VAR_Y相等且CTRL_X与CTRL_Y相等,则等效步骤检査部19将步骤X和步骤Y判定为完全等效步骤。
测试用例生成部20根据等效步骤检査部19的结果,使用形式方法生成并输出覆盖构造提取部17提取出的覆盖对象的测试用例。
参照图7和图8,对本实施方式的测试用例生成装置10的动作详情进行说明。
在步骤S201中,程序信息输入部15读入测试对象软件的程序、反馈控制规格信息、输入规格信息和最大步骤数,进入步骤S202。反馈控制规格信息能够由使用者根据软件规格来手动设定,或者根据以确定的形式描述的规格自动设定,或者对程序进行分析而自动地选择设定作为状态转变的触发而使用的变量。
在步骤S202中,状态变量提取部16对读入的程序进行分析,提取程序中包含的状态变量,进入步骤S203。
在步骤S203中,状态变量提取部16将提取出的状态变量中的除了反馈控制规格信息表示的状态变量CTRL以外的状态变量作为状态变量VAR,进入步骤S204。状态变量CTRL是表示反馈控制量的变量。例如,状态变量CTRL是在运算作为控制对象的电机的控制量等的程序中存储其运算结果的变量。在某个步骤中运算控制量时使用之前步骤中的控制量的情况下等,使用状态变量CTRL。这是为了抑制电机控制量的急剧变化等来实现平稳的控制等。
在步骤S204中,构造提取部17按照要使用的构造覆盖基准,提取测试对象软件的程序中包含的覆盖对象部位,进入步骤S205。另外,步骤S204与步骤S202、步骤S203以及步骤S205之间没有依存关系,因此,能够调换执行顺序来执行或并行地执行。
在步骤S205中,包装函数生成部18生成等效步骤检査用的包装函数,进入步骤S206。
在步骤S206中,等效步骤检査部19使用形式方法,将包装函数作为输入函数,关于状态变量VAR检查步骤间的等效性。具体而言,不论输入规格信息中包含的输入变量的值是怎样的值,等效步骤检査部19都检查执行步骤X后的状态变量VAR_X与执行步骤Y后的状态变量VAR_Y的值是否始终是相同值。X和Y取相互不同的表示1~最大步骤数间的步骤数的值。并且,如果VAR_X与VAR_Y是相同值,则等效步骤检査部19关于状态变量VAR将步骤X和步骤Y判定为等效步骤。如果不是相同值,则等效步骤检査部19判定为不等效。等效步骤检査部19在从第1步骤起执行检査至达到最大步骤数后,进入步骤S207。
在步骤S207中,等效步骤检査部19针对关于状态变量VAR判定为等效的步骤,检查关于状态变量CTRL是否也等效,即是否为完全等效步骤。例如,在VAR_X与VAR_Y相等,从而关于状态变量VAR判定为步骤X和步骤Y等效的情况下,等效步骤检査部19关于CTRL_X和CTRL_Y也检查是否为相同值从而为完全等效步骤。然后,等效步骤检査部19进入步骤S208。
在步骤S208中,测试用例生成部20将变量i设定为1,进入步骤S209。
在步骤S209中,测试用例生成部20判定变量i的值是否大于最大步骤数或是否存在覆盖对象部位。在变量i的值大于最大步骤数的情况下,由于测试用例生成对象的步骤已结束,因此,测试用例生成部20结束处理。如果虽然变量i的值在最大步骤数以下但不存在覆盖对象部位,则测试用例生成部20判断为不需要生成测试用例而结束处理。在除此以外的情况下,测试用例生成部20进入步骤S210。
在步骤S210中,测试用例生成部20参照步骤S207中的等效步骤检査的结果。测试用例生成部20确认是否存在与步骤i完全等效的步骤j。j是小于i的值。当存在与步骤i完全等效的步骤j时,测试用例生成部20判断为执行了全部状态转变,结束处理。当不存在与步骤i完全等效的步骤j时,测试用例生成部20判断为存在未达到的状态,进入步骤S211。
在步骤S211中,测试用例生成部20参照步骤S206中的与状态变量VAR相关的等效步骤检査的结果。在将步骤i和步骤(i-1)判定为等效步骤的情况下,由于不需要步骤S212和步骤S213的处理,因此,测试用例生成部20进入步骤S214。在步骤i和步骤(i-1)关于状态变量VAR也不是等效步骤即是不等效步骤的情况下,测试用例生成部20进入步骤S212。但是,在i=1的情况下没有等效步骤检査结果,因此,测试用例生成部20始终设为不等效而进入步骤S212。
在步骤S212中,测试用例生成部20使用形式方法对直到步骤(i-1)为止未覆盖的覆盖对象部位或在i=1的情况下在步骤S204中提取出的覆盖对象部位进行分析而生成测试用例。具体而言,测试用例生成部20分析程序信息输入部15读入的输入变量是否可取使得通过覆盖对象部位的输入值,如果存在这样的输入值,则输出该输入值作为测试用例。如果分析的结果是没有输入值,则在该步骤中有时也未生成测试用例。测试用例生成部20接着进入步骤S213。
在步骤S212中生成了测试用例的情况下,步骤S213中,测试用例生成部20从覆盖对象部位排除由该测试用例通过的部位。测试用例生成部20接着进入步骤S214。
在步骤S214中,测试用例生成部20将变量i增加1,进入步骤S209。
这样,在本实施方式中,与实施方式1同样,状态变量提取部16对测试对象软件进行分析,提取在多个步骤的处理中共用且保持与各步骤的处理的执行结果对应的值的多个变量中的除了第1变量以外的第2变量作为状态变量VAR,该第1变量根据是否达到阈值而使下一步骤的处理不同。此时,状态变量提取部16根据输入到程序信息输入部15的表示第1变量的规格的信息来判别第1变量。作为变形例,状态变量提取部16也可以对测试对象软件进行分析来判别第1变量。在本实施方式中,状态变量CTRL相当于第1变量,状态变量VAR相当于第2变量。此外,反馈控制规格信息相当于表示第1变量的规格的信息。
在本实施方式中,当关于状态变量VAR和状态变量CTRL双方,执行多个步骤中的任意1个步骤的处理后的值和执行另1个步骤的处理后的值相等的情况下,等效步骤检査部19判定为这2个步骤是完全等效步骤。即,等效步骤检査部19判定从多个步骤中得到的2个步骤的全部组合是否分别为完全等效步骤。测试用例生成部20将由等效步骤检査部19判定为等效步骤的2个步骤中的一方排除,逐个步骤地依次对测试对象软件进行分析而生成测试用例中包含的值,直至达到由等效步骤检査部19判定为完全等效步骤的2个步骤中的后执行处理的步骤为止。
使用具体例子对测试用例生成装置10的动作进行说明。
在以下的例子中,使用图9所示的测试对象软件的程序的一部分。该程序中,在规格上,设表示反馈控制量的变量为a,输入变量为b、c,最大步骤数为5。设使用分支覆盖作为测试执行时的构造覆盖基准。
程序信息输入部15读入测试对象软件的程序、反馈控制规格信息、输入规格信息和最大步骤数。反馈控制规格信息包含状态变量a。输入规格信息包含测试对象软件的程序的输入变量b、c的信息。最大步骤数被设定为5。
在读入这些信息后,状态变量提取部16提取测试对象程序中包含的状态变量。这里,设提取a、d。状态变量提取部16根据这些状态变量中的反馈控制规格信息,将状态变量VAR识别为d,状态变量CTRL识别为a。
由于if语句有1个部位且是“真”和“假”的2个分支,因此,构造提取部17从测试对象软件的程序中提取至少这2个部位作为要覆盖的分支部位。图10针对图9所示的程序用P1、P2示出要覆盖的分支部位。另外,设在省略的程序中还包含其他覆盖对象部位。
包装函数生成部18生成用于等效步骤检査的包装函数。图11和图12示出该包装函数的例子。X=1、2、3、4、5,按照每个步骤,将针对测试对象软件的程序的输入变量b、c的输入值区分成b_X、c_X。最后20行的ASSERT语句是用于执行各步骤间的与状态变量VAR相关的等效步骤检査和与状态变量CTRL相关的等效步骤检査的命令。这里,为了使包装函数的生成为1次,描述有全部命令。
等效步骤检査部19使用形式方法,将该包装函数作为输入函数,执行ASSERT语句中的最初10行的与状态变量VAR相关的等效步骤检査。本例中,设在与包含VAR_3的ASSERT语句相关的检査中存在反例而判定为不等效,剩余的全部没有反例。即,设第1步骤、第2步骤、第4步骤以及第5步骤关于状态变量VAR是等效的,仅第3步骤不等效。等效步骤检査部19针对这4个步骤,还关于状态变量CTRL检查是否等效且是否是完全等效的步骤。该检査中使用的ASSERT语句是最后10行中的不包含CTRL_3的语句。本例中,设在检查CTRL_1和CTRL_4、CTRL_2和CTRL_5始终相等的与ASSERT语句相关的检査中没有反例,剩余的全部有反例。即,第1步骤和第4步骤以及第2步骤和第5步骤是不论输入和执行怎样的输入值,全部状态变量都等效的完全等效步骤。
作为第1步骤,测试用例生成部20使用等效步骤检査部19的检査结果,判断是否进行用于测试用例生成的分析。第1步骤始终被判断为不等效,因此,测试用例生成部20进行将构造提取部17提取出的覆盖对象部位作为对象的分析和测试用例的生成。由此,能够生成测试用例。如果生成的测试用例通过图10所示的覆盖对象部位中的任意一个,则将该部位从覆盖对象部位中排除,进入第2步骤。本例中,设仅排除覆盖对象部位P2,保留P1作为覆盖对象部位。测试用例生成部20参照等效步骤检査的结果来确认第2步骤是否是与第1步骤完全等效的步骤。由于第2步骤不与第1步骤完全等效,因此,测试用例生成部20关于状态变量VAR确认第2步骤是否与第1步骤等效。关于状态变量VAR,第2步骤与第1步骤等效,因此,不需要分析和测试用例生成,测试用例生成部20立即进入第3步骤。在第3步骤中,既没有完全等效的步骤也没有与状态变量VAR相关的等效步骤。因此,测试用例生成部20进行分析和测试用例生成。由此,能够生成测试用例。如果生成的测试用例通过图10所示的覆盖对象部位中的任意一个,则将该部位从覆盖对象部位中排除,进入第4步骤。本例中,假设覆盖对象部位P1在第3步骤中被覆盖,但剩余其他未覆盖的覆盖对象部位。测试用例生成部20参照等效步骤检査结果来确认第4步骤是否与第1步骤~第3步骤完全等效。由于能够确认第4步骤与第1步骤等效,因此,测试用例生成部20判断为执行了全部可转变的状态并结束处理。
***实施方式的效果说明***
本实施方式中,在使得状态循环的测试对象软件中,判断为在达到最大步骤数之前已达到全部状态的情况下,即使剩余未覆盖的覆盖对象部位也结束处理。即,在执行某个步骤的处理后,该步骤与该步骤之前的步骤等效的情况下,在达到最大步骤之前结束处理。由此,不用进行不必要的测试用例生成用的分析,与执行至最大步骤数的情况相比,能够削减分析时间。未覆盖的覆盖对象部位是指在存在死代码等不论输入怎样的值都不能执行的代码等的情况下包含的部位。
标号说明
10:测试用例生成装置;11:处理器;12:存储器;13:通信装置;14:输入输出装置;15:程序信息输入部;16:状态变量提取部;17:构造提取部;18:包装函数生成部;19:等效步骤检査部;20:测试用例生成部。
Claims (8)
1.一种测试用例生成装置,其对在每次被输入值时执行1个步骤的处理的软件进行分析,生成为了测试所述软件而输入的值的序列作为测试用例,该测试用例生成装置具有:
状态变量提取部,其对所述软件进行分析,提取在多个步骤的处理中共用且在依次执行所述多个步骤的处理的过程中保持与各步骤的处理的执行结果对应的值的多个变量中的除了第1变量以外的第2变量作为所述状态变量,该第1变量根据是否达到阈值而使下一步骤的处理不同;
等效步骤检査部,当执行所述多个步骤中的任意1个步骤的处理后的所述状态变量的值与执行另1个步骤的处理后的所述状态变量的值相等的情况下,所述等效步骤检査部判定为这2个步骤是等效步骤;以及
测试用例生成部,其将由所述等效步骤检査部判定为等效步骤的2个步骤中的一方排除,对所述软件进行分析而生成所述测试用例中包含的值。
2.根据权利要求1所述的测试用例生成装置,其中,
该测试用例生成装置还具有程序信息输入部,该程序信息输入部被输入表示所述第1变量的规格的信息,
所述状态变量提取部根据输入到所述程序信息输入部的信息来判别所述第1变量。
3.根据权利要求1所述的测试用例生成装置,其中,
所述状态变量提取部对所述软件进行分析来判别所述第1变量。
4.根据权利要求1~3中的任意一项所述的测试用例生成装置,其中,
所述测试用例生成部将由所述等效步骤检査部判定为等效步骤的2个步骤中的一方排除,逐个步骤地依次对所述软件进行分析而生成所述测试用例中包含的值,直到满足所述软件的测试覆盖基准为止。
5.根据权利要求1~3中的任意一项所述的测试用例生成装置,其中,
所述等效步骤检査部判定所述多个步骤中的连续2个步骤的各组合是否是等效步骤,
所述测试用例生成部将由所述等效步骤检査部判定为等效步骤的2个步骤中的后执行处理的步骤排除,对所述软件进行分析而生成所述测试用例中包含的值。
6.根据权利要求1~3中的任意一项所述的测试用例生成装置,其中,
当关于所述状态变量和所述第1变量双方,执行所述多个步骤中的任意1个步骤的处理后的值和执行另1个步骤的处理后的值相等的情况下,所述等效步骤检査部判定为这2个步骤是完全等效步骤,
所述测试用例生成部将由所述等效步骤检査部判定为等效步骤的2个步骤中的一方排除,逐个步骤地依次对所述软件进行分析而生成所述测试用例中包含的值,直到达到由所述等效步骤检査部判定为完全等效步骤的2个步骤中的后执行处理的步骤为止。
7.一种测试用例生成方法,对在每次被输入值时执行1个步骤的处理的软件进行分析,生成为了测试所述软件而输入的值的序列作为测试用例,在该测试用例生成方法中,
状态变量提取部对所述软件进行分析,提取在多个步骤的处理中共用且在依次执行所述多个步骤的处理的过程中保持与各步骤的处理的执行结果对应的值的多个变量中的除了第1变量以外的第2变量作为所述状态变量,该第1变量根据是否达到阈值而使下一步骤的处理不同,
当执行所述多个步骤中的任意1个步骤的处理后的所述状态变量的值与执行另1个步骤的处理后的所述状态变量的值相等的情况下,等效步骤检査部判定为这2个步骤是等效步骤,
测试用例生成部将由所述等效步骤检査部判定为等效步骤的2个步骤中的一方排除,对所述软件进行分析而生成所述测试用例中包含的值。
8.一种记录有测试用例生成程序的计算机能读取的记录介质,该测试用例生成程序对在每次被输入值时执行1个步骤的处理的软件进行分析,生成为了测试所述软件而输入的值的序列作为测试用例,所述测试用例生成程序使计算机执行以下进程:
状态变量提取进程,对所述软件进行分析,提取在多个步骤的处理中共用且在依次执行所述多个步骤的处理的过程中保持与各步骤的处理的执行结果对应的值的多个变量中的除了第1变量以外的第2变量作为所述状态变量,该第1变量根据是否达到阈值而使下一步骤的处理不同,
等效步骤检査进程,当执行所述多个步骤中的任意1个步骤的处理后的所述状态变量的值与执行另1个步骤的处理后的所述状态变量的值相等的情况下,判定为这2个步骤是等效步骤;以及
测试用例生成进程,将通过所述等效步骤检査进程判定为等效步骤的2个步骤中的一方排除,对所述软件进行分析而生成所述测试用例中包含的值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/001227 WO2019142266A1 (ja) | 2018-01-17 | 2018-01-17 | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111566625A CN111566625A (zh) | 2020-08-21 |
CN111566625B true CN111566625B (zh) | 2024-01-09 |
Family
ID=67300958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880085785.3A Active CN111566625B (zh) | 2018-01-17 | 2018-01-17 | 测试用例生成装置、测试用例生成方法和计算机能读取的记录介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11347628B2 (zh) |
JP (1) | JP6723483B2 (zh) |
CN (1) | CN111566625B (zh) |
DE (1) | DE112018006331B4 (zh) |
WO (1) | WO2019142266A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023060521A1 (en) * | 2021-10-14 | 2023-04-20 | Intel Corporation | Apparatus, device, method and computer program for generating test cases for verification of hardware instructions of hardware device in hypervisor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007014521A1 (fr) * | 2005-08-01 | 2007-02-08 | Tong Wang | Procede permettant de concevoir un scenario d'essai et systeme correspondant |
JP2011227695A (ja) * | 2010-04-20 | 2011-11-10 | Computer Engineering & Consulting Ltd | テストケース作成システム、方法およびプログラム、並びにテスト観点作成システム |
CN102385551A (zh) * | 2010-08-31 | 2012-03-21 | 西门子公司 | 一种筛选测试用例的方法、装置及系统 |
JP2015069400A (ja) * | 2013-09-30 | 2015-04-13 | 日立オートモティブシステムズ株式会社 | ソフトウェアテストシステム |
CN105095085A (zh) * | 2015-08-25 | 2015-11-25 | 暨南大学 | 一种基于web的软件测试实训系统及方法 |
WO2017145300A1 (ja) * | 2016-02-24 | 2017-08-31 | 三菱電機株式会社 | テストケース生成装置及びテストケース生成プログラム |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05151023A (ja) | 1991-11-27 | 1993-06-18 | Mitsubishi Electric Corp | 情報制御装置 |
JPH11219293A (ja) | 1998-02-02 | 1999-08-10 | Nec Eng Ltd | アドレストレース方法及びトレーサメモリ制御装置 |
JP2003316612A (ja) | 2002-04-25 | 2003-11-07 | Fujitsu Ltd | 縮小プログラム自動作成装置 |
US7801715B2 (en) * | 2003-08-11 | 2010-09-21 | The Mathworks, Inc. | System and method for block diagram simulation context restoration |
FR2921170B1 (fr) * | 2007-09-14 | 2018-01-12 | Airbus Operations | Procede de generation automatique de programmes de test d'un logiciel de fonctionnement d'un systeme embarque a bord d'un aeronef, et dispositif de mise en oeuvre |
JP5198132B2 (ja) | 2008-04-23 | 2013-05-15 | 大日本スクリーン製造株式会社 | 状態遷移テスト支援装置、状態遷移テスト支援プログラム、および状態遷移テスト支援方法 |
JP2010140084A (ja) * | 2008-12-09 | 2010-06-24 | Toshiba Corp | 検査モデル生成装置、モデル検査装置、及び検査モデル生成方法 |
JP5321286B2 (ja) * | 2009-06-26 | 2013-10-23 | 富士通株式会社 | プログラムモデル検査方法、プログラムモデル検査プログラム |
US20130090911A1 (en) * | 2011-10-05 | 2013-04-11 | International Business Machines Corporation | Modeling Test Space for System Behavior Using Interchangeable Designations |
JP5987189B2 (ja) * | 2012-09-24 | 2016-09-07 | 三菱電機株式会社 | テストケース自動生成装置及びテストケース自動生成プログラム |
WO2015045472A1 (ja) | 2013-09-24 | 2015-04-02 | 富士通株式会社 | シミュレーション装置、シミュレーション方法およびシミュレーションプログラム |
US9830255B2 (en) * | 2015-12-03 | 2017-11-28 | Wipro Limited | System and method for optimizing test suite comprising plurality of test cases |
US10353810B2 (en) * | 2016-10-04 | 2019-07-16 | Sap Se | Software testing with minimized test suite |
-
2018
- 2018-01-17 DE DE112018006331.3T patent/DE112018006331B4/de active Active
- 2018-01-17 CN CN201880085785.3A patent/CN111566625B/zh active Active
- 2018-01-17 WO PCT/JP2018/001227 patent/WO2019142266A1/ja active Application Filing
- 2018-01-17 US US16/961,395 patent/US11347628B2/en active Active
- 2018-01-17 JP JP2019566031A patent/JP6723483B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007014521A1 (fr) * | 2005-08-01 | 2007-02-08 | Tong Wang | Procede permettant de concevoir un scenario d'essai et systeme correspondant |
JP2011227695A (ja) * | 2010-04-20 | 2011-11-10 | Computer Engineering & Consulting Ltd | テストケース作成システム、方法およびプログラム、並びにテスト観点作成システム |
CN102385551A (zh) * | 2010-08-31 | 2012-03-21 | 西门子公司 | 一种筛选测试用例的方法、装置及系统 |
JP2015069400A (ja) * | 2013-09-30 | 2015-04-13 | 日立オートモティブシステムズ株式会社 | ソフトウェアテストシステム |
CN105095085A (zh) * | 2015-08-25 | 2015-11-25 | 暨南大学 | 一种基于web的软件测试实训系统及方法 |
WO2017145300A1 (ja) * | 2016-02-24 | 2017-08-31 | 三菱電機株式会社 | テストケース生成装置及びテストケース生成プログラム |
Non-Patent Citations (2)
Title |
---|
冯俊池等.软件Markov链使用模型生成与化简技术.《计算机工程与设计》.2015,第第36卷卷(第第8期期),第1-6页. * |
程亮等.一种基于安全状态转移的简并测试集生成方法.《软件学报》.2010,第第21卷卷(第第3期期),第1-9页. * |
Also Published As
Publication number | Publication date |
---|---|
JP6723483B2 (ja) | 2020-07-15 |
DE112018006331T5 (de) | 2020-08-27 |
JPWO2019142266A1 (ja) | 2020-04-16 |
WO2019142266A1 (ja) | 2019-07-25 |
DE112018006331B4 (de) | 2022-05-05 |
CN111566625A (zh) | 2020-08-21 |
US20200364137A1 (en) | 2020-11-19 |
US11347628B2 (en) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8756460B2 (en) | Test selection based on an N-wise combinations coverage | |
US10387585B2 (en) | System and method for performing model verification | |
EP2352087A1 (en) | Source code processing method, system, and program | |
US9946628B2 (en) | Embedding and executing trace functions in code to gather trace data | |
US20170228309A1 (en) | System and method for equivalence class analysis-based automated requirements-based test case generation | |
CN110704304B (zh) | 一种应用程序测试方法、装置、存储介质和服务器 | |
US8868381B2 (en) | Control system design simulation using switched linearization | |
JP6142705B2 (ja) | オブジェクト指向言語のための記号テストドライバの反復生成 | |
US20140172344A1 (en) | Method, system and apparatus for testing multiple identical components of multi-component integrated circuits | |
CN111566625B (zh) | 测试用例生成装置、测试用例生成方法和计算机能读取的记录介质 | |
US9569572B2 (en) | Selectively loading design data for logical equivalency check | |
JP2011253253A (ja) | コンピュータ試験方法、コンピュータ試験装置およびコンピュータ試験プログラム | |
US20150082278A1 (en) | Clone detection method and clone function commonalizing method | |
EP3929751B1 (en) | Test case generation device, test case generation method, and test case generation program | |
US20120144352A1 (en) | Circuit design approximation | |
CN107885663B (zh) | 测试用例自动生成的方法、装置、计算机设备及存储介质 | |
Nyberg et al. | Closing the gap between speed and configurability of multi-bit fault emulation environments for security and safety–critical designs | |
KR20190084468A (ko) | 함수 정보 요약 장치 및 방법 | |
US20050166103A1 (en) | System, method, and apparatus for firmware code-coverage in complex system on chip | |
US11994977B2 (en) | Test case generation apparatus, test case generation method, and computer readable medium | |
KR102519639B1 (ko) | 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치 | |
US20240143300A1 (en) | Program analyzing apparatus, program analyzing method, and trace processing addition apparatus | |
US8996435B2 (en) | Determining invariants in a model | |
US11782682B2 (en) | Providing metric data for patterns usable in a modeling environment | |
CN117370092A (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 |