CN1776643A - 一种软件产品健壮性的测试方法及装置 - Google Patents

一种软件产品健壮性的测试方法及装置 Download PDF

Info

Publication number
CN1776643A
CN1776643A CN 200410088673 CN200410088673A CN1776643A CN 1776643 A CN1776643 A CN 1776643A CN 200410088673 CN200410088673 CN 200410088673 CN 200410088673 A CN200410088673 A CN 200410088673A CN 1776643 A CN1776643 A CN 1776643A
Authority
CN
China
Prior art keywords
test
detecting information
data
information
software product
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
CN 200410088673
Other languages
English (en)
Other versions
CN100351811C (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2004100886733A priority Critical patent/CN100351811C/zh
Publication of CN1776643A publication Critical patent/CN1776643A/zh
Application granted granted Critical
Publication of CN100351811C publication Critical patent/CN100351811C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种软件产品健壮性的测试方法,包括步骤:解析被测对象,从所述被测对象中提取测试信息;显示所述提取的测试信息,接收用户的测试信息输入;根据前述提取的测试信息和测试信息输入,生成测试用例;结合所述测试用例与被测对象,生成测试目标代码;运行所述测试目标代码,实现软件产品健壮性的测试。本发明还涉及一种软件产品健壮性的测试装置。本发明可以实现对被测对象测试信息的自动生成和自动提取。

Description

一种软件产品健壮性的测试方法及装置
技术领域
本发明涉及软件产品可靠性验证技术,特别是涉及一种软件产品健壮性的测试方法及装置。
背景技术
随着信息技术的发展,软件产品的应用日益广泛,影响着人们的工作、学习和生活等诸多领域,而软件产品在设计或运行时,需要对其应用可靠性进行测试,以便进行针对性的改善,例如,对软件产品的健壮性的测试。对软件产品的测试通常包括对软件***或软件组件的测试,所谓软件组件是指具有独立接口,能完成一定功能的软件模块。
软件健壮性是软件***或组件在异常输入或压力环境条件下正常运行的程度。健壮性测试就是制造、模拟异常输入或环境来验证软件***或组件运行的健壮性。
软件健壮性测试随着软件测试概念的发展,从最早白盒、灰盒测试,发展到目前的黑盒测试(白盒测试是指根据被测程序的内部结构设计测试用例的一种测试方法;灰盒测试介于白盒与黑盒测试之间,关注函数或模块间的测试用例的实现;黑盒测试则基于规格说明书的分析去选择测试用例,且不考虑其内部实现);测试对象也从原来的函数、模块,扩展到软件***、组件;但测试的思想、概念并没有太大变化。随着被测软件可靠性要求不断地提高,促使测试技术需要不断地发展,对健壮性测试的效果、效率也提出了更高的要求。
请参阅图1,是现有技术中一种人工实现软件组件健壮性黑盒测试方法的示意。被测模块包括若干API(Application Progress Interface,应用程序接口)函数,其中函数API_n(intn)的n值的合法取值范围为n<0或者n>10。在进行测试前,由测试人员构造测试用例test_API_n(),根据对被测函数的分析,取0-10之间的非法随机值作为输入,对被测函数进行异常取值注入;随后,在测试环境中调用该测试用例进行软件健壮性测试;并监测被测***运行状态,不断更正、验证测试设计。
该方法的缺陷在于:人员参与测试用例的设计、构造程度较高,对人员素质、工作量等也有较高要求,整个测试中前期设计、构造花费大量时间和人力成本。特别在涉及测试用例更改、移置中会出现较多问题,如不同人员的设计经验会对测试用例的理解产生偏差,因此在测试用例的设计、更改、移置上会存在测试用例完备、可用性、可维护性等问题;测试用例代码量大,会造成设计、更改、移置的难度增加,不便于调测;测试用例的设计、更改、移置,也会给问题定位带来影响。
总之,采用该方法进行测试用例的设计、构造,需要人工的方式编写测试数据及测试用例,必然会造成测试数据不能共享、测试代码重复编写、测试效率降低、代码可移置性变差、用例维护管理难的问题,最终导致上述工作的重复性。
另一种软件健壮性测试的现有技术可以参阅CMU(卡内基梅隆大学,CARNEGIE MELLON UNIVERSITY)的一篇名为《HIGH PERFORMANCEROBUST COMPUTER SYSTEMS》的论文。该论文揭示了一种针对软件组件API接口异常输入的健壮性测试工具:Ballista测试工具。
参照图2,该工具提供数据类型描述摸板,将被测函数中的参数进行分类,如文件类、内存类、取值类等,并在每种类中用不同的符号代表其取值,每个符号都是取值方式的一种定义(类似于函数或宏)。
在测试过程中,将测试对象API(write(……)函数)按照数据类型描述摸板转换为参数类型,工具构造测试用例(代码)时,根据用户从数据类型描述摸板取用的符号构造各参数的取值。如图2的实例中箭头所指的三种符号分别是:FD_OPEN_RD、BUFF_NULL、SIZE_16,分别表示:参数1取用一个可读写的打开文件句柄;参数2取用一个空指针;参数3取用数值16。最后的测试用例为write(FD_OPEN_RD、BUFF_NULL、SIZE_16)。也就是说,工具在构造测试用例(代码)时,会根据所选用的符号为被测函数构造出测试环境及取值。
相对于图1所示的传统的黑盒测试方法,该Ballista测试工具用数据类型描述模板、数据类型来定义描述测试对象及数据,进而生成测试用例,一定程度上避免了健壮性测试数据的重复构造,实现了不同函数间测试数据的共享,达到了测试用例的自动生成。具体说,用类的概念来管理数据类型,使数据类型具有可继承性、可扩展性,便于对数据类型的维护管理;用数据类型来管理测试数据,测试用例不依赖被测函数的功能,而是函数使用的不同数据类型在工具中取值的组合;该工具以数据类型及模板构造测试对象及取值,即通过不同标识符,构造测试环境,完成测试取值,从而实现健壮性测试数据共享,达到测试用例的自动生成。
但是该Ballista测试工具仍然脱离不了传统人工参与测试用例设计的复杂过程,需要按工具提供的模板来描述相关的数据类型及取值(如,需要用户用工具提供的数据类型描述模板,来定义说明工具中没有的新类型取值方法或补充已有类型的取值,以便测试用),因此仍旧无法避免传统测试用例设计中遇到的一些问题。并且,带来了一些新的问题:
首先,数据类型及模板描述,限制了用户使用。虽然工具提供一些基本类型,但无法解决大量新的数据结构测试需要。对于这样的数据,用户需要用模板来描述新数据类型的构造方法及取值,工作量大,要求高。
其次,测试数据范围有限。用数据类型来管理测试数据,为工具自动化生成测试用例带来了方便,同时也限制了数据本身的使用范围,使得测试僵化,测试数据不合理等,造成测试的不充分。
再次,测试数据重用性有限。被测对象接口参数,复杂多变,形式多样,用类型模板描述某种类型,往往不能完全表达测试对象的意义,即便被描述了,也会因为使用环境等因素导致其重用性下降。
第四,测试深度不足。数据结构的内部定义的复杂、多样性,使模板对结构内部成员域的描述变的复杂多变,也使工具数据类型模板对测试数据的构造变得不太可能,无法满足复杂结构大量内部成员域的测试。
第五,大量数据类型的情况下,不便于维护。在使用中数据类型及数据会不断增加,而数据类型及数据是通过模板描述出来的(类似于编码),因此会造成后期维护上的问题。
最后,测试数据缺少灵活性。数据类型定义出的测试取值,要在工具模板中给出说明,这样对用户及工具来说就不能随意改动或产生出需要的数据,造成取值上不灵活,增加操作难度。
发明内容
本发明解决的技术问题是提供一种软件产品健壮性的测试方法及装置,可以实现对被测对象测试信息的自动生成和自动提取,避免对测试信息人工描述构造的过程,进而实现测试用例(测试代码)的自动生成。
为此,本发明解决技术问题的技术方案是:提供一种软件产品健壮性的测试方法,包括步骤:
1)解析被测对象,从所述被测对象中提取测试信息;
2)显示所述提取的测试信息,接收用户的测试信息输入;
3)根据前述提取的测试信息和测试信息输入,生成测试用例;
4)结合所述测试用例与被测对象,生成测试目标代码;
5)运行所述测试目标代码,实现软件产品健壮性的测试。
优选地,所述步骤1)中的提取过程具体是通过语法解析器对被测对象进行编译和语法分析,将得到的语法分析结果转换为测试信息;所述测试信息包括数据类型及其层次结构。
优选地,所述步骤1)中,还包括数据类型库提供基类测试信息支持,所述基类测试信息包括基本类型识别和取值。
优选地,所述步骤2)中的显示和接收过程通过图形用户接口实现;所述测试信息输入包括是否测试、测试类型、测试方式和测试数据。
优选地,所述步骤3)的生成测试用例具体包括:
31)对前述提取的测试信息和测试信息输入进行信息预处理,生成测试信息表项和接口,所述测试信息表项包括测试信息转换表和取值表;
32)针对复杂数据类型的测试信息生成构造函数;
33)完成测试信息的取值构造,生成测试代码。
优选地,所述步骤3)中,还包括数据类型库提供基类测试信息、测试数据。
优选地,所述步骤5)的运行过程具体包括:
51)完成测试***的初始化及对外测试控制接口的注册,测试控制任务、测试执行任务的创建启动;
52)按预定要求对已注册的测试用例进行调用,监控测试过程行为,记录测试过程数据;
53)记录控制信息、测试信息和测试数据。
优选地,所述步骤5)的运行过程还包括动态查询测试信息数据。
本发明还提供一种软件产品健壮性的测试装置,包括:
测试信息解析提取单元,用于解析被测对象,从所述被测对象中提取测试信息;
用户测试信息输入单元,用于显示所述提取的测试信息,相应接收用户的测试信息输入;
测试用例产生单元,用于根据前述提取的测试信息和测试信息输入,生成测试用例;
目标代码执行单元,用于结合所述测试用例与被测对象,生成测试目标代码;以及运行所述测试目标代码,实现软件产品健壮性的测试;
数据类型库,用于存储基类测试信息、测试数据,为测试用例的生成和运行提供测试数据支持和基本类型识别信息服务。
优选地,所述测试用例产生单元包括:
测试信息预处理单元,用于结合提取的测试信息以及用户的测试信息输入,形成测试信息数据;
复杂结构生成单元,用于针对复杂数据类型的测试信息生成构造函数;
测试代码生成单元,用于完成测试信息的取值构造,生成测试代码。
优选地,所述数据类型库包括通用类型库、扩展类型库和专用类型库。
优选地,所述目标代码执行单元包括:
测试控制单元,用于完成测试***的初始化及对外测试控制接口的注册,测试控制任务、测试执行任务的创建启动;
测试执行单元,用于按预定要求对已注册的测试用例进行调用,监控测试过程行为,记录测试过程数据;
测试记录单元,用于记录控制信息、测试信息和测试数据。
相对于现有技术,本发明的有益效果是:首先,由于本发明自动分析获取被测API接口的参数信息,将复杂结构、指针等参数分解到基类,不用通过类型模板来描述、定义参数类型,彻底解决了测试信息人工描述构造的过程。并且该技术方案不依赖于测试对象语言类型,对测试对象的要求简单明确,其实现原理先进、合理,有较强的通用性。其次,完全按测试信息、测试数据,全自动地生成测试用例(测试代码)及数据,不需要人为地干预。该技术方案实现测试信息到测试代码的自动转换,不需要人工参与代码的生成,使人工设计代码负荷降至零,用户可随心所欲更改测试设计,而不必担心为此负出的代码设计工作量,极大地提高生产率。再次,由于无需对测试信息人工描述构造,从而提高工具的自化程度,降低人工操作难度,提高了工作效率。
此外,在本发明的优选方案中,由于将测试信息在GUI(图形用户界面)上一目了然显示出来,用户可轻松地根据接口参数信息,按需要分层、分域进行设置、选择,避免了通过操作数据类型模板来描述接口参数及成员取值过程。该工具无论从操作性、可用性、适用性上没有太多要求,对操作人员只要具有基本WINDOWS图形工具操作经验及基本编程知识人员匀可操作。
增加了测试选项、类型、取值(范围)等信息输入,使生成的用例(测试代码)对测试数据及测试调用更灵活性,满足实际测试需要。从工具启动到测试用例(测试代码)输出,全程用户只要按工具要求设置测试对象、录入测试信息,即可完成。在默认情况下无需人员干预即可实现用例的生成。该技术方案的实现为用户提供了灵活多样的测试设置功能,从而间接地也提供了丰富多样的问题定位手段、方法,从而为测试问题的尽快解决提供了良好途径。
可以对测试信息、数据进行保存、调用、修改,提高测试信息、数据的可维护性,辟免了重复生成、设置带来的不便,减少了日后维护量。对测试用例的管理不再需要针对代码或书面文字进行,只需保存用户在视图上设置的信息即可。从而一改过去对大量测试代码或文件的管理,重复使用历史信息变得轻松自如,而不必再担心因为人员更换或长时间放置,而需对设计理解或更改,再花费工作量。该技术方案能灵活实现用例测试调度,问题重现等能力,及良好的过程记录、信息打印机制,确保每一个执行的测试用例,能按用户的意图完成测试。
该技术方案可以根据需要,可进一步扩展实现其它多种测试功能,如单元测试、消息包测试等等,具有较大应用空间;该技术方案实现了用例设计新模式,使烦琐复杂的书面用例设计,改为以视图形式,用户进行选择、组合、输入等手段,使设计、更改、增加更为容易,提高了设计效率。本发明设计原理合理、流程清楚,工作稳定性高;能在较短时间内根据用户设计的信息,产生出测试用例(测试代码),具有较强的响应速度。
附图说明
图1是一种现有技术的软件健壮性测试方法的示意图;
图2是另一种现有技术的软件健壮性测试方法的示意图;
图3是实施本发明健壮性测试方法的***示意图;
图4是本发明软件产品健壮性测试方法的流程图;
图5是本发明中提取的测试信息示意图;
图6是本发明中接收用户的测试信息输入的示意图;
图7是本发明采用的数据类型库功能结构示意图;
图8是本发明中生成测试用例的流程图;
图9是本发明实施例中生成测试代码的示意图;
图10是本发明的软件产品健壮性测试装置的框图;
图11是本发明中目标代码执行部分的框图。
具体实施方式
请参阅图3,为实施本发明健壮性测试方法的***示意图。本发明方法包括测试用例自动生成部分和测试目标代码执行部分。
首先,在计算机910上自动生成测试用例,即自动完成测试用例(测试代码)的自动生成;再通过编译、连接等手段,与被测对象一起生成可执行目标测试代码;随后,由计算机910将此可执行目标测试代码通过网线、串口线等连接线920加载到被测对象运行硬件平台930上,并启动该可执行目标测试代码运行。目标测试代码运行中通过网线、串口线等连接线920与计算机910交换信息,包括:监控信息、运行控制信息,测试数据动态查询、控制等,计算机910则提供信息分析、控制、数据服务等。
本发明中,所述被测对象运行硬件平台930包括但不限于电脑、单板等供软件运行的硬件平台。所述测试数据是指在方法实施过程中生成的测试信息数据表,可根据需要存储在计算机910上或与测试目标代码一起编译连接后加载到硬件平台930上。
请参阅图4,是本发明软件产品健壮性测试方法的流程图。
步骤S1,被测对象API测试信息解析提取。
对于健壮性测试来说,在自动生成测试用例(测试代码)时,需要知道如何构造出被测对象及测试环境。作为健壮性测试工具测试信息的重要来源,本步骤就是对被测对象进行分析,从中提取出相关信息,如:被测函数名称、参数数目、参数类型、参数内成员域的结构层次关系等。
本步骤的具体过程是:输入包含有前述测试信息的被测对象文件,以C语言为例就是*.h、*.obj等。通过语法解析器,对这类文件进行编译,得到语法分析结果,进而从中提取出每个被测API的信息,并转换成可被计算机识别的数据信息,以一定结构方式暂存到内存中,供后续步骤使用。
其中,语法解析器的作用就是语法检测,将被检文件进行语法分析,从而达到分解复杂信息至基本单元(基本数据类型)的目的,以便于提取出这些测试信息。语法解析器可以是代码编译工具(GCC)中的一个模块,在经过语法合法性检查、预处理后生成语法信息树。语法分析就是从生成的语法信息树中提取出本发明需要的信息,如各种数据类型及层次关系等。
下面以C语言为例进行说明,假定被测对象为testfile.h文件,被测对象API函数TestApi_n(……)在testfile.h中的文本格式描述如下:
……
struct b{
    struct c{
          int  c1;
          int  c2;
}
    char  *d;
}
……
TestApi_n(int a,struct b m);
……
将testfile.h作为输入对象进行语法分析,完成信息提取后得到TestApi_n信息。如图5所示,方框内容表示函数、参数、节点域的信息,虚线及箭头表示前后及所属关系,从而完成对被测API函数TestApi_n(int a,struct b m)基本信息的分解与提取。
步骤S2,用户测试信息输入。
作为测试信息的另一个来源,本步骤完成用户对每个域的测试信息输入。也就是说,在对被测对象API测试信息提取的基础上,通过GUI(图形用户接口,graphics user interface)界面显示,将用户输入的被测对象每个域的测试信息进行记录,测试信息包括:是否测试、测试类型、测试方式、测试数据。通过用户对被测对象域的测试信息设置,完成用户测试信息的输入。
如图6所示,对于某一函数、参数或节点成员域,用户通过GUI界面进行操作,设置该域成员用户测试信息,并通过界面实现对节点成员用户测试信息的保存、查询、调用。虚箭头表示该域与其它成员域的前后、上下所属关系。
请参阅图7,为了完成本发明的目的,需要采用数据类型库。
数据类型库维护相关数据类型库中模板信息,并对外提供基本类型识别、测试数据等相关信息及接口,若用户有必要对某一类型库中的数据进行补充,可根据提供的模板描述文件或打开原有定义的相关类型模板描述文件补充测试数据及信息。
数据类型库是对现有技术的模板描述技术的继承和发展,所不同的是其在方案中的地位与作用有所改变,由于本发明引入对测试对象参数信息解析,因此模板描述复杂数据类型取值方式只在特殊情况使用。
数据类型库用于提供基类测试信息(基本类型识别、取值),特别是当用户选择某一域的测试类型是默认方式时,它为最终目标执行代码提供测试数据:因为对一些基本数据类型(如char\int等)在自动生成测试用例时,要进行识别,由数据类型库完成这些信息的识别;数据类型库存放着一些基本通用测试数据,如果用户选用的就是这其中的数据,那么就要提供接口函数,以便测试用例在执行时,可获取这些测试数据。
另外,为便于模板文件的管理,可以将数据类型库进行分类,如通用类型库、扩展类型库、专用类型库等,分别用于存放不同作用、级别的模板描述文件。
通用类型库:用户不能随便改动提供的数据类型取值,只能由专业人员操作,适用于通用测试。
数据类型库存放的是一些独立的数据类型文件,这些类型文件中存放的是以代码的形式给出的该类型各种取值构造过程。如文件:Rchar.TPL/Rint.TPL等,其中描述该类型通用的取值构造及析构过程。
如:char construct_char(int i)
{
……
switct(i)
case 1:
   return 0;
case2:
   return 255;
……
}
扩展类型库:用户可根据需要自行追加需要的数据到相关的数据类型中,作为通用测试数据的补充。
专用类型库:可根据用户对特定数据类型取值方式的描述,生成特殊的取值及环境描述代码,以补充用户在GUI界面上输入的测试信息不足。
也就是说,数据类型库的作用是根据模板提供的信息,为测试数据、测试代码(测试用例)的生成、运行起到支持(提供测试数据)与服务(提供基本类型识别信息)的作用。可以通过一些接口函数,如查询类型信息,基本类型的取值等来实现。
步骤S3,生成测试代码、测试数据。
该步骤用于将被测试API测试信息转换成测试用例即测试数据、测试代码,与被测目标联合编译生成可执行文件后,加载到目标运行设备上,对被测对象实施测试。
由于用户对被测对象每个域设置的随机性、数据、类型、选项等组合的多样性,如何将这些信息及时准确地体现在测试代码运行中,完成用户期望的测试设计,便是本步骤的关键。为更好的理解,将测试用例分成两部分,即测试数据和测试代码进行描述。当然,测试数据与代码在实现中并非一定是分开或合并的,这里只是为描述方便而定义成两块,以便对本发明有更好的表达与理解。
请参阅图8,本步骤可以分为三个子步骤,分别是:测试信息预处理、复杂结构生成、测试代码生成。
步骤S31,进行测试信息预处理。
结合步骤S1对测试对象信息的提取描述以及步骤S2用户测试信息的输入,形成一份完整的测试信息数据结构,用于后续测试用例的生成。每一份这样的信息表结构都可独立实现信息的保存、调用、再处理,从而提高后续使用的可维护性。
具体过程是:将测试信息(提取的API信息、用户输入的信息)进一步分类、整理、加工后,将信息转换成一定数据表项、接口输出,供下一个子步骤或生成的测试用例(测试代码)使用。
所述一定的数据表项包括测试信息转换表及取值表等,而接口输入的接口函数完成用户对测试信息表及取值表的访问。
生成的测试信息数据表中存放的是用户对每一个参数域或成员域的测试信息,如:数据类型、取值方式、测试类型、数据等。对外提供接口函数,可以通过调用接口函数来索引不同参数或成员域的信息、取值,为测试用例的执行提供动态信息服务。相对于现有技术来说,本发明实现的测试用例的取值在未执行前是不可知的,只有测试用例运行到时,才能根据测试用例的索引调用表项接口函数,得到成员取值信息,因此这些数据是动态构造出来的。
步骤S32,实现复杂结构生成。
由前述步骤可知,对于非基本类型数据类,已经通过语法解析将其按一定层次关系分解到基类。对非基本类型数据类用户测试信息的输入,是基于组成该类型数据类基本类型的选择与输入,因此对非基本类型数据类的取值,在测试前一定需要将组成该类型数据类的基本类型,通过解析出的层次关系及信息,用基本数据类型构造函数或取值构造出非基本类型数据类的取值,这个过程的结果就是生成复杂类型数据类取值的构造函数代码。
需要进一步说明的是,复杂结构包括但不限于结构、共同体、枚举、指针、函数等非基本类型。
步骤S33,生成测试代码。
本步骤生成对被测对象调用的测试封装代码。具体是:通过解析的信息,完成对被测函数每个参数的取值构造;这些构造函数或取值来自数据类型库、复杂结构生成过程提供的构造函数、接口或预处理过程产生的信息数据表,通过接口函数提供数据。
请参阅图9,以C语言为例,说明测试用例(测试代码)产生的过程及关系。
对被测函数API_n(struct c a)进行语法分析提取测试信息、并接收用户输入的测试信息后,首先进行信息预处理,生成测试信息表及取值表等,并提供接口函数get_data(),用于完成对测试信息及数据的查询与获取;其次,对复杂类型进行处理,通过表项接口函数及数据类型库接口函数来获取测试信息及数据,产生构造函数test_c_construct(),用于完成复杂结构取值过程的构造;随后,测试代码调用构造函数及数据类型库接口函数,完成测试环境构造,进而调用测试对象,实施测试对象的调用测试。
步骤S4,目标测试代码的执行。
生成的测试代码、数据,必需与被测对象编译、连接生成可执行目标文件,才能最终实现测试。具体就是将本发明生成的测试代码、数据与被测对象一起用编译连接工具(如GCC)生成可执行目标文件(也就是常见的类似于*.EXE文件)。
首先,完成测试***的初始化(如,测试控制与测试执行相关表项、数据、控制信号的创建、初始化)及对外测试控制接口的注册,测试控制任务、测试执行任务等的创建启动。
随后,按用户要求(如测试用例执行次序、调用次数、调用方式等)实现对已注册的测试用例进行调用,并监控测试过程行为,记录测试过程数据。
此外,为确保信息、数据能及时输出或按要求还原再现测试过程,本发明还提供共享空间及管理,用于对用户输入的控制信息及测试过程信息、数据进行记录保存。
请参阅图10,为实现软件产品健壮性测试方法,本发明还提供一种软件产品健壮性测试装置。
所述软件健壮性测试包括测试用例自动生成部分100和目标代码执行部分200。所述测试用例自动生成部分100主要用于将测试信息(包括自动提取的API测试信息及用户输入的测试信息)转换为测试信息数据表及测试代码,实现测试信息到代码的转换,完成测试用例设计;所述目标代码执行部分200用于将测试代码、被测对象API与测试控制单元、测试执行单元和测试记录单元一起编译连接,生成可执行文件,并在硬件平台上运行,由外部模块来对运行状态进行监控,实现测试用例的调用测试及监控。
测试用例自动生成部分100包括测试信息解析提取单元110、用户测试信息输入单元120、数据类型库130和测试用例产生单元140。
测试信息解析提取单元110实现对被测对象API测试信息的解析提取。
作为健壮性测试工具测试信息的重要来源,测试信息解析提取单元110对被测对象进行分析,从中提取出相关信息,如:被测函数名称、参数数目、参数类型、参数内成员域的结构层次关系等。
测试信息解析提取单元110的输入对象是包含有前述测试信息的被测对象文件。通过语法解析器,对这类文件进行编译,得到语法分析结果,进而从中提取出每个被测API的信息,并转换成可被计算机识别的数据信息,以一定结构方式暂存到内存中,供后续单元使用。
作为测试信息的另一个来源,用户测试信息输入单元120完成用户对每个域的测试信息输入。也就是说,在对被测对象API测试信息提取的基础上,通过GUI(图形用户接口,graphics user interface)界面显示,将用户输入的被测对象每个域的测试信息进行记录,测试信息包括:是否测试、测试类型、测试方式、测试数据。通过用户对被测对象域的测试信息设置,完成用户测试信息的输入。
数据类型库130根据模板提供的信息,用于为测试数据、测试代码(测试用例)的生成、运行起到支持(提供测试数据)与服务(提供基本类型识别信息)的作用。可以通过一些接口函数,如查询类型信息,基本类型的取值等来实现。
测试用例产生单元140用于将被测试API测试信息转换成测试用例即测试数据、测试代码。
测试用例产生单元140可以分为三个子单元,分别是:测试信息预处理单元141、复杂结构生成单元142和测试代码生成单元143。
测试信息预处理单元141结合对测试对象信息的提取描述以及用户测试信息的输入,生成测试信息数据表,用于生成的测试用例执行时动态获取相关信息与数据。
生成的测试信息数据表中存放的是用户对每一个参数域或成员域的测试信息,如:数据类型、取值方式、测试类型、数据等。对外提供接口函数,可以通过调用接口函数来索引不同参数或成员域的信息、取值,为测试用例的执行提供动态信息服务。
对非基本类型数据类的取值,在测试前一定需要复杂结构生成单元142将组成该类型数据类的基本类型,通过解析出的层次关系及信息,用基本数据类型构造函数或取值构造出非基本类型数据类的取值,这个过程的结果就是生成复杂类型数据类取值的构造函数代码。
测试代码生成单元143生成对被测对象调用的测试封装代码。具体是:通过解析的信息,完成对被测函数每个参数的取值构造;这些构造函数或取值来自数据类型库、复杂结构生成过程提供的构造函数、接口或预处理过程产生的信息数据表,通过接口函数提供数据。
上述三个单元141、142和143分工产生测试数据、测试代码,由于参数信息的复杂多样性及用户测试信息设置的随意性,对测试数据与测试代码中测试取值的要求是一一对应,以确保每个函数域、每个参数域,每个节点域及每个成员域对应取值的正确性。正因为如此,虽然数据、代码是分在不同单元产生,但在生成数据、与代码之前,这些单元已按照内部定制的规则进行了统一处理,从而确保了数据类型在构造过程,能够取到对应的数据,保证了测试数据、信息的准确。所述按内部定制的规则进行了统一处理是指测试用例执行中为能准确地索引到测试表中对应的测试数据及信息,对被解析出的测试信息进行分类及统一编号,这样就能在动态构造测试数据时,根据索引得所要的测试数据、信息。
以C语言为例,在整个装置的实际操作流程中,用户首先要在图形界面上完成测试对象的选择与输入(即*.h),并将配置信息输入到相关设置中,启动语法分析提取,完成测试对象测试信息的提取,之后会将这些信息以图形方式显示在终端上,供用户查看及设置测试信息。完成上述操作后,即可启动用例生成功能,此时会依次调用测试信息预处理单元141、复杂结构生成单元142、测试代码生成单元143,完成最终测试信息到测试用例(测试代码、数据)的转换。
请一并参阅图11,目标代码执行部分200包括测试控制单元210、测试执行单元220和测试记录单元230。负责目标测试代码的启动、执行、并实时记录测试命令、数据等信息,以便测试执行时进行实时控制,监测测试过程。
生成的测试代码、数据,必需与被测对象编译、连接生成可执行目标文件,才能最终实现测试。因此,将本发明生成的测试代码、数据与被测对象一起用编译连接工具(如GCC)生成可执行目标文件(也就是常见的类似于WIN32下的*.EXE文件或其它操作***下的可执行文件)。
测试控制单元210用于完成测试***的初始化(如,测试控制与测试执行相关表项、数据、控制信号的创建、初始化)及对外测试控制接口的注册,测试控制任务、测试执行任务等的创建启动。通过测试控制任务和接口,实现对外测试控制命令的解析,指导测试执行任务按用户的要求实现对测试用例的调用测试,同时在此基础上实现更高层次的控制,如测试问题的分析、定位、复现操作等功能。
测试执行单元220按用户要求(如测试用例执行次序、调用次数、调用方式等)实现对已注册的测试用例进行调用,并监控测试过程行为,记录测试过程数据。完成与测试控制单元210之间的信息交互,实现用户对测试用例的控制意图。
测试记录单元230提供共享空间及管理,用于对用户输入的控制信息及测试过程信息、数据进行记录保存,确保所述信息、数据能及时输出或按要求还原再现测试过程。
为实现复杂、繁多的测试功能,目标执行部分200分为三个单元,通过接口、信息表、消息等完成相互间的功能及协调;对外接口提供测试过程的动态控制操作及命令,便于用户在进行测试过程中随时改变测试进程。测试记录起到信息及测试数据记录、缓存功能,随时根据需要将测试信息、数据输出到外部。如图11所示,测试控制单元210接收外部的命令需要提供对外接口函数,这些函数就是通知测试控制单元210执行所要功能或命令;信息则是控制单元210与测试执行单元220交互测试信息的一个内存块,动态存储测试用例执行中需要保存或交互的信息,如索引号、等;消息则两个单元为实现与外部功能的交互而传递的数据包。
以上是整个装置用例生成、用例执行方案及各单元功能实现的说明,通过上述单元功能的实现,本发明较好地解决了设计时提出的目标,有效地实现测试用例设计、生成、执行的流程,确保在操作、使用、维护上提高工效,降低了难度。
综上所述,本发明是基于对组件API的健壮性测试而开发设计的一种自动化测试方法及其装置。该方法及装置主要实现了对被测对象测试信息的自动生成和自动提取,并提供用户接口,实现对测试信息加工、完善,进而自动生成被测组件健壮性测试用例(测试代码)。通过控制、执行单元,实现对测试用例的控制、调用,完成测试对象健壮性测试。整个测试用例生成与执行,不需要用户对被测对象有深入了解,按要求输入测试对象及测试信息,即可自动完成上述过程,从而大大提高测试自动化程度,降低人工工作量及难度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种软件产品健壮性的测试方法,其特征在于,包括步骤:
1)解析被测对象,从所述被测对象中提取测试信息;
2)显示所述提取的测试信息,接收用户的测试信息输入;
3)根据前述提取的测试信息和测试信息输入,生成测试用例;
4)结合所述测试用例与被测对象,生成测试目标代码;
5)运行所述测试目标代码,实现软件产品健壮性的测试。
2.根据权利要求1所述的软件产品健壮性的测试方法,其特征在于,所述步骤1)中的提取过程具体是通过语法解析器对被测对象进行编译和语法分析,将得到的语法分析结果转换为测试信息;所述测试信息包括数据类型及其层次结构。
3.根据权利要求2所述的软件产品健壮性的测试方法,其特征在于,所述步骤1)中,还包括数据类型库提供基类测试信息支持,所述基类测试信息包括基本类型识别和取值。
4.根据权利要求1所述的软件产品健壮性的测试方法,其特征在于,所述步骤2)中的显示和接收过程通过图形用户接口实现;所述测试信息输入包括是否测试、测试类型、测试方式和测试数据。
5.根据权利要求1至4任一项所述的软件产品健壮性的测试方法,其特征在于,所述步骤3)的生成测试用例具体包括:
31)对前述提取的测试信息和测试信息输入进行信息预处理,生成测试信息表项和接口,所述测试信息表项包括测试信息转换表和取值表;
32)针对复杂数据类型的测试信息生成构造函数;
33)完成测试信息的取值构造,生成测试代码。
6.根据权利要求5所述的软件产品健壮性的测试方法,其特征在于,所述步骤3)中,还包括数据类型库提供基类测试信息、测试数据。
7.根据权利要求5所述的软件产品健壮性的测试方法,其特征在于,所述步骤5)的运行过程具体包括:
51)完成测试***的初始化及对外测试控制接口的注册,测试控制任务、测试执行任务的创建启动;
52)按预定要求对已注册的测试用例进行调用,监控测试过程行为,记录测试过程数据;
53)记录控制信息、测试信息和测试数据。
8.根据权利要求7所述的软件产品健壮性的测试方法,其特征在于,所述步骤5)的运行过程还包括动态查询测试信息数据。
9.一种软件产品健壮性的测试装置,其特征在于,包括:
测试信息解析提取单元,用于解析被测对象,从所述被测对象中提取测试信息;
用户测试信息输入单元,用于显示所述提取的测试信息,相应接收用户的测试信息输入;
测试用例产生单元,用于根据前述提取的测试信息和测试信息输入,生成测试用例;
目标代码执行单元,用于结合所述测试用例与被测对象,生成测试目标代码;以及运行所述测试目标代码,实现软件产品健壮性的测试;
数据类型库,用于存储基类测试信息、测试数据,为测试用例的生成和运行提供测试数据支持和基本类型识别信息服务。
10.根据权利要求9所述的软件产品健壮性的测试装置,其特征在于,所述测试用例产生单元包括:
测试信息预处理单元,用于结合提取的测试信息以及用户的测试信息输入,形成测试信息数据;
复杂结构生成单元,用于针对复杂数据类型的测试信息生成构造函数;
测试代码生成单元,用于完成测试信息的取值构造,生成测试代码。
11.根据权利要求9所述的软件产品健壮性的测试装置,其特征在于,所述数据类型库包括通用类型库、扩展类型库和专用类型库。
12.根据权利要求9至11任一项所述的软件产品健壮性的测试装置,其特征在于,所述目标代码执行单元包括:
测试控制单元,用于完成测试***的初始化及对外测试控制接口的注册,测试控制任务、测试执行任务的创建启动;
测试执行单元,用于按预定要求对已注册的测试用例进行调用,监控测试过程行为,记录测试过程数据;
测试记录单元,用于记录控制信息、测试信息和测试数据。
CNB2004100886733A 2004-11-15 2004-11-15 一种软件产品健壮性的测试方法及装置 Expired - Fee Related CN100351811C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100886733A CN100351811C (zh) 2004-11-15 2004-11-15 一种软件产品健壮性的测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100886733A CN100351811C (zh) 2004-11-15 2004-11-15 一种软件产品健壮性的测试方法及装置

Publications (2)

Publication Number Publication Date
CN1776643A true CN1776643A (zh) 2006-05-24
CN100351811C CN100351811C (zh) 2007-11-28

Family

ID=36766160

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100886733A Expired - Fee Related CN100351811C (zh) 2004-11-15 2004-11-15 一种软件产品健壮性的测试方法及装置

Country Status (1)

Country Link
CN (1) CN100351811C (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法
CN101894058A (zh) * 2010-05-31 2010-11-24 北京航空航天大学 针对自动测试***的测试覆盖性自动分析方法及其装置
CN101876939B (zh) * 2009-11-20 2011-12-21 北京信息科技大学 ***测试方法及装置
CN102300118A (zh) * 2011-09-06 2011-12-28 博威科技(深圳)有限公司 一种监控***的测试***及测试方法
CN101859276B (zh) * 2010-05-14 2012-02-22 东南大学 一种基于层次切片的回归测试用例选择方法
CN102629227A (zh) * 2012-02-28 2012-08-08 中科开元信息技术(北京)有限公司 一种辅助嵌入式***接口功能验证方法
CN101593145B (zh) * 2008-05-29 2012-08-08 福建升腾资讯有限公司 高效性高覆盖率功能测试用例设计方法
CN101571798B (zh) * 2008-04-29 2013-01-09 环达电脑(上海)有限公司 自动化测试脚本产生及使用方法
CN103777949A (zh) * 2014-01-17 2014-05-07 浪潮电子信息产业股份有限公司 一种自动化测试脚本的设计方法
CN103810171A (zh) * 2012-11-06 2014-05-21 深圳市金蝶中间件有限公司 生成限定范围的随机测试数据的方法及***
CN104035873A (zh) * 2014-06-30 2014-09-10 青岛海信电器股份有限公司 测试代码生成方法及生成装置
CN104407976A (zh) * 2014-11-28 2015-03-11 联动优势电子商务有限公司 一种接口健壮性测试用例生成方法及装置
CN104731698A (zh) * 2013-12-20 2015-06-24 深圳中兴力维技术有限公司 基于自动化测试的异常测试用例自动生成处理方法及装置
CN105446870A (zh) * 2014-08-25 2016-03-30 北京畅游天下网络技术有限公司 对app应用进行自动化测试的方法和装置
CN105630656A (zh) * 2014-11-06 2016-06-01 阿里巴巴集团控股有限公司 基于日志模型的***健壮性分析方法及装置
CN105808420A (zh) * 2014-12-31 2016-07-27 阿里巴巴集团控股有限公司 健壮性测试过程的实现方法和装置
CN106415504A (zh) * 2014-06-30 2017-02-15 日立汽车***株式会社 测试用例生成***及记录测试用例的记录介质
CN106874202A (zh) * 2017-02-14 2017-06-20 网易无尾熊(杭州)科技有限公司 用于单元测试的方法、装置以及可读存储介质
CN107608873A (zh) * 2016-07-11 2018-01-19 珠海优特电力科技股份有限公司 软件测试方法和***及测试平台
CN108228965A (zh) * 2017-12-06 2018-06-29 北京物芯科技有限责任公司 一种存储单元的仿真验证方法、装置和设备
TWI637275B (zh) * 2017-01-10 2018-10-01 廣達電腦股份有限公司 雲端服務系統及處理雲端服務異常之方法
CN109614329A (zh) * 2018-12-06 2019-04-12 中国航空工业集团公司洛阳电光设备研究所 一种基于接口控制文件的软件测试用例辅助设计方法
CN109933521A (zh) * 2019-01-23 2019-06-25 平安科技(深圳)有限公司 基于bdd的自动化测试方法、装置、计算机设备及存储介质
CN110865892A (zh) * 2019-11-18 2020-03-06 北京锐安科技有限公司 一种调用接口的检测方法、装置、存储介质及电子设备
CN111857692A (zh) * 2020-07-30 2020-10-30 中国民航信息网络股份有限公司 一种代码生成方法、装置及电子设备
CN113806211A (zh) * 2020-06-17 2021-12-17 北京同邦卓益科技有限公司 一种用于接口测试的数据处理方法及装置
CN116561014A (zh) * 2023-07-07 2023-08-08 国电南瑞科技股份有限公司 一种电力二次设备测试用例的生成装置及测试方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6269150B1 (en) * 1998-06-11 2001-07-31 Lucent Technologies, Inc. Reliable, unattended, automated testing system and method for complex telecommunication systems
US6301701B1 (en) * 1999-11-10 2001-10-09 Tenfold Corporation Method for computer-assisted testing of software application components
CN1151434C (zh) * 1999-11-27 2004-05-26 深圳市中兴通讯股份有限公司 状态迁移图分解、遍历回路处理和测试用例自动生成方法
DE10137297A1 (de) * 2001-08-01 2003-02-20 Abb Patent Gmbh Verfahren zum Testen von Software-Robustheit

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571798B (zh) * 2008-04-29 2013-01-09 环达电脑(上海)有限公司 自动化测试脚本产生及使用方法
CN101593145B (zh) * 2008-05-29 2012-08-08 福建升腾资讯有限公司 高效性高覆盖率功能测试用例设计方法
CN101876939B (zh) * 2009-11-20 2011-12-21 北京信息科技大学 ***测试方法及装置
CN101859276B (zh) * 2010-05-14 2012-02-22 东南大学 一种基于层次切片的回归测试用例选择方法
CN101894058B (zh) * 2010-05-31 2011-11-16 北京航空航天大学 针对自动测试***的测试覆盖性自动分析方法及其装置
CN101894058A (zh) * 2010-05-31 2010-11-24 北京航空航天大学 针对自动测试***的测试覆盖性自动分析方法及其装置
CN101866317B (zh) * 2010-06-29 2012-07-25 南京大学 一种基于聚类分析的回归测试用例选择方法
CN101866317A (zh) * 2010-06-29 2010-10-20 南京大学 一种基于聚类分析的回归测试用例选择方法
CN102300118B (zh) * 2011-09-06 2015-03-25 博威科技(深圳)有限公司 一种监控***的测试***及测试方法
CN102300118A (zh) * 2011-09-06 2011-12-28 博威科技(深圳)有限公司 一种监控***的测试***及测试方法
CN102629227A (zh) * 2012-02-28 2012-08-08 中科开元信息技术(北京)有限公司 一种辅助嵌入式***接口功能验证方法
CN102629227B (zh) * 2012-02-28 2015-07-22 中科开元信息技术(北京)有限公司 一种辅助嵌入式***接口功能验证方法
CN103810171B (zh) * 2012-11-06 2017-02-08 深圳市金蝶天燕中间件股份有限公司 生成限定范围的随机测试数据的方法及***
CN103810171A (zh) * 2012-11-06 2014-05-21 深圳市金蝶中间件有限公司 生成限定范围的随机测试数据的方法及***
CN104731698A (zh) * 2013-12-20 2015-06-24 深圳中兴力维技术有限公司 基于自动化测试的异常测试用例自动生成处理方法及装置
CN103777949A (zh) * 2014-01-17 2014-05-07 浪潮电子信息产业股份有限公司 一种自动化测试脚本的设计方法
CN106415504A (zh) * 2014-06-30 2017-02-15 日立汽车***株式会社 测试用例生成***及记录测试用例的记录介质
CN106415504B (zh) * 2014-06-30 2019-08-30 日立汽车***株式会社 测试用例生成***及记录测试用例的记录介质
CN104035873A (zh) * 2014-06-30 2014-09-10 青岛海信电器股份有限公司 测试代码生成方法及生成装置
CN105446870A (zh) * 2014-08-25 2016-03-30 北京畅游天下网络技术有限公司 对app应用进行自动化测试的方法和装置
CN105446870B (zh) * 2014-08-25 2019-04-05 北京畅游天下网络技术有限公司 对app应用进行自动化测试的方法和装置
CN105630656A (zh) * 2014-11-06 2016-06-01 阿里巴巴集团控股有限公司 基于日志模型的***健壮性分析方法及装置
CN104407976A (zh) * 2014-11-28 2015-03-11 联动优势电子商务有限公司 一种接口健壮性测试用例生成方法及装置
CN105808420B (zh) * 2014-12-31 2018-12-28 阿里巴巴集团控股有限公司 健壮性测试过程的实现方法和装置
CN105808420A (zh) * 2014-12-31 2016-07-27 阿里巴巴集团控股有限公司 健壮性测试过程的实现方法和装置
CN107608873A (zh) * 2016-07-11 2018-01-19 珠海优特电力科技股份有限公司 软件测试方法和***及测试平台
TWI637275B (zh) * 2017-01-10 2018-10-01 廣達電腦股份有限公司 雲端服務系統及處理雲端服務異常之方法
US10176062B2 (en) 2017-01-10 2019-01-08 Quanta Computer Inc. Cloud servers and methods for handling dysfunctional cloud services
CN106874202A (zh) * 2017-02-14 2017-06-20 网易无尾熊(杭州)科技有限公司 用于单元测试的方法、装置以及可读存储介质
CN108228965B (zh) * 2017-12-06 2022-01-11 北京物芯科技有限责任公司 一种存储单元的仿真验证方法、装置和设备
CN108228965A (zh) * 2017-12-06 2018-06-29 北京物芯科技有限责任公司 一种存储单元的仿真验证方法、装置和设备
CN109614329A (zh) * 2018-12-06 2019-04-12 中国航空工业集团公司洛阳电光设备研究所 一种基于接口控制文件的软件测试用例辅助设计方法
CN109933521A (zh) * 2019-01-23 2019-06-25 平安科技(深圳)有限公司 基于bdd的自动化测试方法、装置、计算机设备及存储介质
CN110865892A (zh) * 2019-11-18 2020-03-06 北京锐安科技有限公司 一种调用接口的检测方法、装置、存储介质及电子设备
CN113806211A (zh) * 2020-06-17 2021-12-17 北京同邦卓益科技有限公司 一种用于接口测试的数据处理方法及装置
CN111857692A (zh) * 2020-07-30 2020-10-30 中国民航信息网络股份有限公司 一种代码生成方法、装置及电子设备
CN116561014A (zh) * 2023-07-07 2023-08-08 国电南瑞科技股份有限公司 一种电力二次设备测试用例的生成装置及测试方法
CN116561014B (zh) * 2023-07-07 2023-09-29 国电南瑞科技股份有限公司 一种电力二次设备测试用例的生成装置及测试方法

Also Published As

Publication number Publication date
CN100351811C (zh) 2007-11-28

Similar Documents

Publication Publication Date Title
CN100351811C (zh) 一种软件产品健壮性的测试方法及装置
CN1928816A (zh) 嵌入式***软件的模型驱动与构件化开发方法
CN111488145B (zh) 一种基于业务域数据模型库的微服务代码生成***及方法
US9098633B2 (en) Application testing
CN110781086B (zh) 一种跨项目缺陷影响分析方法
CN1513145A (zh) 在软件对象与以结构化语言要素为基础的文件之间映射的***及方法
CN101311903A (zh) 对基于组件的软件***中的组件进行重用的方法和装置
CN1949187A (zh) 一种程序调测***及方法
CN1728094A (zh) 智能ui记录和重放结构
CN1368693A (zh) 用于全球化软件的方法和设备
EP3296866B1 (en) Method implemented by a computer that presents software-type applications based on design specifications
CN1842081A (zh) 扩展巴克斯范式字符串模式匹配和解析的方法及装置
CN1664816A (zh) 实现不同平台间信息网站移植的方法
CN1786925A (zh) 基于c++映射的ttcn-3测试***及测试方法
CN111506314B (zh) 项目开发的方法、装置、服务器及介质
Pérez-Castillo et al. Reengineering technologies
CN1908895A (zh) 验证应用程序全球化问题的***和方法及计算机产品
CN1790957A (zh) 设备测试方法
Martinez et al. Recovering sequence diagrams from object-oriented code: An ADM approach
CN1357981A (zh) 可进行多种应用协议测试的方法
CN101047555A (zh) 一种设备质量检查方法
CN1836271A (zh) 用于对话***的语音输入接口
CN101056210A (zh) 一种网络集中管理平台上的事件处理***和方法
CN1835450A (zh) 网格作业管理器
CN101055522A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071128

Termination date: 20161115