CN100561445C - 一种根据程序内容自动生成测试数据集的方法和装置 - Google Patents

一种根据程序内容自动生成测试数据集的方法和装置 Download PDF

Info

Publication number
CN100561445C
CN100561445C CNB2007101778299A CN200710177829A CN100561445C CN 100561445 C CN100561445 C CN 100561445C CN B2007101778299 A CNB2007101778299 A CN B2007101778299A CN 200710177829 A CN200710177829 A CN 200710177829A CN 100561445 C CN100561445 C CN 100561445C
Authority
CN
China
Prior art keywords
test data
condition
program
logical relation
qualifications
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.)
Expired - Fee Related
Application number
CNB2007101778299A
Other languages
English (en)
Other versions
CN101183332A (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.)
Vimicro Corp
Original Assignee
Vimicro Corp
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 Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2007101778299A priority Critical patent/CN100561445C/zh
Publication of CN101183332A publication Critical patent/CN101183332A/zh
Application granted granted Critical
Publication of CN100561445C publication Critical patent/CN100561445C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

一种根据程序内容自动生成测试数据集的方法,其特征在于,包括以下步骤:(a)读取输入的源程序文件;(b)对程序的内容进行逻辑关系分析,得到其中包含的输入参数的限定条件;(c)根据所述限定条件生成测试数据并输出。一种根据程序内容自动生成测试数据集的装置,其特征在于,包括依次连接的文件读取器、逻辑关系分析器、测试数据生成器和测试数据报告器。按照本发明来生成测试数据速度快捷,由于是对源程序进行分析生成测试数据,保证了测试数据全面性。当测试需求更新或升级后,只需要重新运行此装置,就可以得到最新的测试数据。

Description

一种根据程序内容自动生成测试数据集的方法和装置
技术领域
本发明涉及程序的测试,尤其涉及一种测试数据的生成方法及装置。
背景技术
信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量自然成为人们共同关注的焦点。不论软件的生产者还是软件的使用者,均生存在竞争的环境中,软件开发商为了占有市场,必须把软件质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。成熟的软件企业,在一个软件产品的开发周期中,软件开发的任务量占30%,软件测试占70%,其重要性不言而喻,对软件进行专业的测试,不但是产品质量的保证、控制成本的关键,更是企业具备国际竞争力的必备条件。
在具体的测试中,测试数据准备是软件测试的重中之重。
在目前的测试工作中,测试数据都是手工搜集整理的。一般都是根据测试需求点,结合一定的测试方法,得到一组测试数据。测试数据的整理缓慢,效率很低,工作量大。由于是手工整理,测试数据的有效性和具体的测试数据整理者存在密切的关系,如果整理者水平高,整理后的测试数据有效性就比较高,反之有效性就差。
并且,当测试需求文档更新或升级后,就需要重新整理测试数据,以前的测试数据重复利用性很低;对项目级的测试来说,由于一个项目通常都是多个人准备测试数据的,导致测试数据的风格不统一,影响测试效果。
发明内容
本发明要解决的技术问题是提供一种根据程序内容自动生成测试数据集的方法和装置,可以高效、自动地生成测试数据。
为了解决上述问题,本发明提供了一种根据程序内容自动生成测试数据集的方法,其特征在于,包括以下步骤:
(a)读取输入的源程序文件,对所述源程序文件进行语法分析,筛选出满足语法要求的程序部分;
(b)对所述满足语法要求的程序部分的内容进行逻辑关系分析,得到其中包含的输入参数的限定条件;
(c)根据所述限定条件生成测试数据并输出。
进一步地,上述方法还可具有以下特点,步骤(b)中,识别出程序中与输入参数相关的限定条件并记录其类型和内容,所述限定条件包括变量声明条件、判断条件、限制条件、循环条件中的一个或任意组合。
进一步地,上述方法还可具有以下特点,对于变量声明条件,使用等价类分析法生成该条件下有效和无效的测试数据。
对于判断条件、限制条件和循环条件包含的判断条件中的部分或全部条件,使用边界值分析法生成该条件下有效和无效的测试数据;
一个输入参数的某一测试数据只有在其相关的所有限定条件下都有效时,才认为该测试数据是有效的。
进一步地,上述方法还可具有以下特点,步骤(b)中,还同时记录得到的各个限定条件所属的对象;
步骤(c)中根据测试数据对应条件所属对象确定各条件之间的关联性,对生成的测试数据进行关联组合后输出。
进一步地,上述方法还可具有以下特点,步骤(b)中记录的对应条件所属对象是函数、文件和项目中的一种或任意组合;
步骤(c)对生成的测试数据进行关联组合和输出时,采用以下方式中的一种或多种:
以函数为单位进行测试数据逻辑关系组合,输出函数级的测试数据;
以文件为单位进行测试数据逻辑关系组合,输出文件级的测试数据;
以项目为单位进行测试数据逻辑关系组合,输出项目级的测试数据。
进一步地,上述方法还可具有以下特点,步骤(b)中,还记录得到的各个限定条件所属的函数及其在所属函数中的执行顺序。
为了解决上述问题,本发明还提供了一种根据程序内容自动生成测试数据集的装置,其特征在于,包括依次连接的文件读取器、语法分析器、逻辑关系分析器、测试数据生成器和测试数据报告器,其中:
所述文件读取器,用于读取需要生成测试数据的源程序文件并输出;
所述语法分析器,用于接收所述文件读取器输出的源程序文件,对源程序文件进行语法分析,筛选出满足语法要求的程序部分并输出到所述逻辑关系分析器;
所述逻辑关系分析器,用于对所述语法分析器筛选出的满足语法要求的程序部分的内容进行逻辑关系分析,得到其中包含的输入参数的限定条件,输出到所述测试数据生成器;
所述测试数据生成器,用于根据所述限定条件生成测试数据;
所述测试数据报告器,用于按规定的格式输出生成的测试数据。
进一步地,上述装置还可具有以下特点,所述逻辑关系分析器进行逻辑关系分析时,识别出程序中与输入参数相关的限定条件并记录其类型和内容,所述限定条件包括变量声明条件、判断条件、限制条件、循环条件中的一个或任意组合。
进一步地,上述装置还可具有以下特点,所述测试数据生成器在生成测试数据时,对于变量声明条件使用等价类分析法生成该条件下有效和无效的测试数据;和/或,对于判断条件、限制条件或循环条件中包含的判断条件使用边界值分析法生成该条件下有效和无效的测试数据;
一个输入参数的某一测试数据只有在其相关的所有限定条件下都有效时,才认为该测试数据是有效的。
进一步地,上述装置还可具有以下特点,还包括测试数据分级器,
所述逻辑关系分析器进行逻辑关系分析时,还同时记录得到的各个限定条件所属的对象,包括函数、文件和项目中的一种或任意组合;
所述测试数据分级器,用于根据测试数据对应条件所属对象确定各条件之间的关联性,以函数、文件和项目中的一种或多种为单位进行测试数据逻辑关系组合,输出到所述测试数据报告器;
所述测试数据报告器输出函数级、文件级和项目级测试数据中的一种或多种。
综上所述,按照本发明来生成测试数据速度快捷,由于是对源程序进行分析生成测试数据,保证了测试数据全面性。当测试需求更新或升级后,只需要重新运行此装置,就可以得到最新的测试数据。
另外,还可以选择生成不同级别的测试数据,生成测试数据具有非常强的灵活性;可以依据等价分析法和边界值法进行测试数据生成,以保证测试数据的有效性和实用性。该方法生成的测试数据,不但可供测试人员使用,也可以供开发人员调试程序时使用。
附图说明
图1是本发明实施例装置的结构框图。
图2是本发明实施例方法的流程图。
具体实施方式
本发明是根据源程序的内容自动生成软件测试(包括调试)需要的测试数据集,这些测试数据是指在测试时需输入的参数,如数值、符号、汉字和表达式等。在读取源程序后,对源程序先进行语法分析,然后符合语法的部分进行逻辑关系分析,然后进行测试数据的生成。
下面结合附图对本发明的具体实施方式进行详细说明。
图1示出了本实施例测试数据集的生成装置的结构,如图所示,包括依次连接的文件读取器、语法分析器、逻辑关系分析器、测试数据生成器、测试数据分级器和测试数据报告器。其中:
文件读取器,用于读取需要生成测试数据的源程序文件,输出到语法分析器。可以读取一个或多个文件。
语法分析器,用于分析源程序的内容,标志哪部分符合程序的语法,哪部分不符合程序的语法,然后输出到逻辑关系分析器。后续模块都只对符合语法的部分进行处理。
逻辑关系分析器,用于对满足语法要求的程序部分的内容进行逻辑关系分析,得到输入参数的限定条件信息,输出到测试数据生成器。其中的限定条件可以是变量声明条件、判断条件、限制条件、循环条件等,相关信息包括条件所属对象,该对象可以是函数(本文中的“函数”是指广义上的用于对输入值进行某种运算的程序代码,在不同语言中可能有不同的名称,如也可能称为“类”、“方法”等)、文件或项目等,该信息也体现了条件之间的关联性,即多个条件是否在同一函数、文件或项目。具体的分析方法将在流程中再详细阐述,这里不再重复。
测试数据生成器,用于输入参数的限定条件信息生成测试数据,输出到测试数据分级器。如:根据变量的声明使用等价类分析法生成该条件下有效的和无效的测试数据;根据判定条件和限制条件使用边界值分析法生成该条件下有效和无效的测试数据;等等。一个输入参数的测试数据是否有效,需要根据其相关的所有限定条件来判断,即在所有限定条件下都是有效的数据才认为是有效的。
测试数据分级器,用于在得到具体的测试数据后,根据测试数据对应条件所属对象确定测试数据之间的关联性(如是否同属一个函数、文件或项目等),对测试数据进行关联组合,输出到测试数据报告器。
测试数据报告器,用于按规定的格式输出测试数据,这里是将测试数据分级输出。测试数据的级别可以是函数级、文件级和项目级中的一种或多种,输出时可以以函数为单位输出与某个或多个函数相关的测试数据,也可以以文件为单位输出与某个或多个文件相关的测试数据,也可以以项目为单位输出与某个或多个项目相关的测试数据,或者采用以上几种方式的任意组合来输出测试数据。
上述语法分析器和测试数据分级器是可选的,因为测试的程序可能已经经过了语法分析。另外,使用者可能只对函数、文件或项目进行测试且只需要要该级别的测试数据,即无需分级。特别地,在只对某一个函数运用上述方法生成测试数据时,可以不记录限定条件所属的对象。同理,下面流程中的语法分析和对测试数据的分级也是可选的。
图2示出了本实施例测试数据集的生成方法的流程,如图所示,包括以下步骤:
S110,读取输入的源程序文件;
可以选择读取单个源程序文件,进行文件内的测试数据的独立生成;也可以选择读取一个项目里的多个源程序文件,进行文件间的测试数据的生成,同时读取多个文件时便于生成项目级的测试数据。
S120,对源程序文件进行语法分析,筛选出满足语法要求的程序部分;
只所以允许程序中存在不符合语法的部分,是为了满足程序还没有写完时,就用该工具进行测试数据生成的情况(对程序来说,符合语法是最低级别的要求)。
S130,对满足语法要求的程序部分的内容进行逻辑关系分析,得到程序中包含的输入参数的限定条件信息;
首先,识别出程序中与输入参数相关的限定条件,包括变量声明条件、判断条件、限制条件、循环条件及其它条件中的一个或任意组合。其中限制条件可以是输入参数可能的取值如枚举等;
然后,记录输入参数的限定条件信息,如可以创建一个限定条件信息列表,该列表的每一项包括条件类型、条件内容和条件所属对象等信息,所属的对象可以是函数、所属文件、所属项目中的一种或多种。该信息也体现了条件之间的关联性。此外,每项中还可以包含条件的执行顺序信息,一般是以一个函数为单位,即记录该条件在所属函数中的执行顺序。
S140,根据分析得到的输入参数的限定条件生成测试数据,可以同时生成有效和无效的测试数据;
对于变量声明条件,可以根据变量的声明使用等价类分析法生成该条件下有效的和无效的测试数据。
例如,如果声明如:int x;
有效等价类就是:“1”;“-1”
无效等价类就是:“abA”,“汉字”,“。,”……
对于判断条件,可以根据判断的内容使用边界值分析法生成该条件下有效和无效的测试数据,供使用者参考使用。
例如,如果判断条件是if((x>=1)&&(y=8))
有效边界值:x:“1”;“2”y:“8”
无效边界值:x:“0”;y:“7”,“9”
对于限制条件,可以根据限制的内容使用边界值分析法生成该条件下有效和无效的测试数据。
例如,如果限制条件是x可以取的值为1,2,3
有效边界值:x:“1”;“2”;“3”
无效边界值:x:“0”;“4”
对于循环条件,可以根据循环包含的判断条件按上述判断条件的相同方式来生成该条件下有效和无效的测试数据。
同一输入参数可能与多个限定条件相关如上面的x,根据每一限定条件会生成一组测试数据,一个输入参数的某一测试数据只有在其相关的所有限定条件下都有效时,才认为该测试数据是有效的。这些测试数据在测试时都可以逐一使用,以进行全面的测试。
S150,根据测试数据对应条件所属对象确定测试数据之间的关联性,对生成的测试数据进行关联组合,分级输出测试数据。
以函数为单位进行测试数据逻辑关系组合,可以输出函数级的测试数据;以源程序文件为单位进行测试数据逻辑关系组合,可以输出文件级的测试数据;以包含多个文件的项目为单位进行测试数据的逻辑关系组合,可以输出项目级的测试数据。即生成的测试数据可以三种方式来体现:第一种是方法级的测试数据集;第二种是文件级的测试数据集;第三种是项目级的测试数据集。
有了这三种测试数据集,软件开发人员将重点对函数级和文件级的测试数据进行程序功能测试;软件测试人员将重点使用项目级的测试数据进行项目功能测试。

Claims (10)

1、一种根据程序内容自动生成测试数据集的方法,其特征在于,包括以下步骤:
(a)读取输入的源程序文件,对所述源程序文件进行语法分析,筛选出满足语法要求的程序部分;
(b)对所述满足语法要求的程序部分的内容进行逻辑关系分析,得到其中包含的输入参数的限定条件;
(c)根据所述限定条件生成测试数据并输出。
2、如权利要求1所述的方法,其特征在于:
步骤(b)中,识别出程序中与输入参数相关的限定条件并记录其类型和内容,所述限定条件包括变量声明条件、判断条件、限制条件、循环条件中的一个或任意组合。
3、如权利要求2所述的方法,其特征在于:步骤(c)中,采用以下分析法中的一种或多种:
对于变量声明条件,使用等价类分析法生成该条件下有效和无效的测试数据。
对于判断条件、限制条件和循环条件包含的判断条件中的部分或全部条件,使用边界值分析法生成该条件下有效和无效的测试数据;
一个输入参数的某一测试数据只有在其相关的所有限定条件下都有效时,才认为该测试数据是有效的。
4、如权利要求2所述的方法,其特征在于:
步骤(b)中,还同时记录得到的各个限定条件所属的对象;
步骤(c)中根据测试数据对应条件所属对象确定各条件之间的关联性,对生成的测试数据进行关联组合后输出。
5、如权利要求4所述的方法,其特征在于:
步骤(b)中记录的对应条件所属对象是函数、文件和项目中的一种或任意组合;
步骤(c)对生成的测试数据进行关联组合和输出时,采用以下方式中的一种或多种:
以函数为单位进行测试数据逻辑关系组合,输出函数级的测试数据;
以文件为单位进行测试数据逻辑关系组合,输出文件级的测试数据;
以项目为单位进行测试数据逻辑关系组合,输出项目级的测试数据。
6、如权利要求4所述的方法,其特征在于:
步骤(b)中,还记录得到的各个限定条件所属的函数及其在所属函数中的执行顺序。
7、一种根据程序内容自动生成测试数据集的装置,其特征在于,包括依次连接的文件读取器、语法分析器、逻辑关系分析器、测试数据生成器和测试数据报告器,其中:
所述文件读取器,用于读取需要生成测试数据的源程序文件并输出;
所述语法分析器,用于接收所述文件读取器输出的源程序文件,对源程序文件进行语法分析,筛选出满足语法要求的程序部分并输出到所述逻辑关系分析器;
所述逻辑关系分析器,用于对所述语法分析器筛选出的满足语法要求的程序部分的内容进行逻辑关系分析,得到其中包含的输入参数的限定条件,输出到所述测试数据生成器;
所述测试数据生成器,用于根据所述限定条件生成测试数据;
所述测试数据报告器,用于按规定的格式输出生成的测试数据。
8、如权利要求7所述的装置,其特征在于:
所述逻辑关系分析器进行逻辑关系分析时,识别出程序中与输入参数相关的限定条件并记录其类型和内容,所述限定条件包括变量声明条件、判断条件、限制条件、循环条件中的一个或任意组合。
9、如权利要求8所述的装置,其特征在于:
所述测试数据生成器在生成测试数据时,对于变量声明条件使用等价类分析法生成该条件下有效和无效的测试数据;和/或,对于判断条件、限制条件或循环条件中包含的判断条件使用边界值分析法生成该条件下有效和无效的测试数据;
一个输入参数的某一测试数据只有在其相关的所有限定条件下都有效时,才认为该测试数据是有效的。
10、如权利要求7或9所述的装置,其特征在于:还包括测试数据分级器,
所述逻辑关系分析器进行逻辑关系分析时,还同时记录得到的各个限定条件所属的对象,包括函数、文件和项目中的一种或任意组合;
所述测试数据分级器,用于根据测试数据对应条件所属对象确定各条件之间的关联性,以函数、文件和项目中的一种或多种为单位进行测试数据逻辑关系组合,输出到所述测试数据报告器;
所述测试数据报告器输出函数级、文件级和项目级测试数据中的一种或多种。
CNB2007101778299A 2007-11-21 2007-11-21 一种根据程序内容自动生成测试数据集的方法和装置 Expired - Fee Related CN100561445C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2007101778299A CN100561445C (zh) 2007-11-21 2007-11-21 一种根据程序内容自动生成测试数据集的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2007101778299A CN100561445C (zh) 2007-11-21 2007-11-21 一种根据程序内容自动生成测试数据集的方法和装置

Publications (2)

Publication Number Publication Date
CN101183332A CN101183332A (zh) 2008-05-21
CN100561445C true CN100561445C (zh) 2009-11-18

Family

ID=39448619

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007101778299A Expired - Fee Related CN100561445C (zh) 2007-11-21 2007-11-21 一种根据程序内容自动生成测试数据集的方法和装置

Country Status (1)

Country Link
CN (1) CN100561445C (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101539766B (zh) * 2009-04-14 2011-06-15 浙江中控技术股份有限公司 一种程序调试方法和装置
CN102566562A (zh) * 2010-12-07 2012-07-11 镇江灵芯软件实验室有限公司 一种对plc程序自动测试的方法
CN103530223B (zh) * 2012-07-06 2018-05-04 百度在线网络技术(北京)有限公司 一种自动生成单元测试用例的方法及装置
CN103049382B (zh) * 2012-12-27 2015-08-05 中国建设银行股份有限公司 用于软件模块测试的测试案例生成方法及装置
CN103744781B (zh) * 2013-12-27 2016-05-18 北京交控科技股份有限公司 一种联锁软件的测试方法和测试系统
CN104360940A (zh) * 2014-10-31 2015-02-18 北京交控科技有限公司 一种dsu的测试方法及装置
CN104461565B (zh) * 2014-12-25 2018-02-13 索尔思光电(成都)有限公司 一种光模块测试参数配置方法及系统
CN105468514B (zh) * 2015-01-29 2019-04-16 深圳Tcl数字技术有限公司 基于数据组合的测试方法及装置
CN107239392B (zh) * 2016-03-29 2021-02-12 腾讯科技(深圳)有限公司 一种测试方法、装置、终端及存储介质
CN106294130A (zh) * 2016-07-28 2017-01-04 浪潮电子信息产业股份有限公司 一种单元测试方法及装置
CN110287118B (zh) * 2019-06-28 2022-09-16 四川长虹电器股份有限公司 测试用例的测试数据生成方法及软件测试方法

Also Published As

Publication number Publication date
CN101183332A (zh) 2008-05-21

Similar Documents

Publication Publication Date Title
CN100561445C (zh) 一种根据程序内容自动生成测试数据集的方法和装置
CN101377759B (zh) 自动化界面测试系统
CN103092761B (zh) 基于差异信息文件识别和检查修改代码块的方法及装置
US9619373B2 (en) Method and apparatus to semantically connect independent build and test processes
US8732676B1 (en) System and method for generating unit test based on recorded execution paths
US20090259685A1 (en) Infrastructure and Architecture for Development and Execution of Predictive Models
CN101944059A (zh) 计算机软件崩溃信息的自动分析方法和装置
CN104850411A (zh) 存储系统基准评测程序生成方法及装置
CN106227654A (zh) 一种测试平台
WO2009126281A1 (en) Infrastructure and architecture for development and execution of predictive models
CN102043720A (zh) 利用sql语句自动生成测试数据的方法和装置
CN112632893B (zh) 图形筛选方法及装置、服务器和存储介质
CN107547944A (zh) 接口实现方法及装置、机顶盒
CN201548954U (zh) 一种对Web页面进行自动化测试的装置
CN113609008A (zh) 测试结果分析方法、装置和电子设备
CN102495795B (zh) 一种基于中间语言分析的软件脆弱性测试方法
KR101321599B1 (ko) 동일 서식을 갖는 엑셀파일의 취합분리 시스템을 이용한 취합 및 분리방법
CN114238048B (zh) 一种Web前端性能自动化测试方法及系统
CN113051262B (zh) 一种数据质检方法、装置、设备及存储介质
CN101719062A (zh) 一种脚本执行测试设计的实现方法
CN114625633A (zh) 用于接口测试的方法、系统和存储介质
WO2021104027A1 (zh) 代码性能检测方法、装置、设备及存储介质
CN102662834B (zh) 一种重构CoSy中间表示的缓冲区溢出检测方法
CN102193556A (zh) 汽车电子器件中断安全隐患检测系统及其检测方法
CN112416727A (zh) 批处理作业的检核方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091118

Termination date: 20131121