CN109614335B - 模块灰盒行为规格说明和灰盒测试用例设计方法 - Google Patents

模块灰盒行为规格说明和灰盒测试用例设计方法 Download PDF

Info

Publication number
CN109614335B
CN109614335B CN201811501135.0A CN201811501135A CN109614335B CN 109614335 B CN109614335 B CN 109614335B CN 201811501135 A CN201811501135 A CN 201811501135A CN 109614335 B CN109614335 B CN 109614335B
Authority
CN
China
Prior art keywords
module
tested
test case
input
box
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
Application number
CN201811501135.0A
Other languages
English (en)
Other versions
CN109614335A (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.)
Ai RuikeLi
Original Assignee
Ai RuikeLi
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 Ai RuikeLi filed Critical Ai RuikeLi
Priority to CN201811501135.0A priority Critical patent/CN109614335B/zh
Publication of CN109614335A publication Critical patent/CN109614335A/zh
Application granted granted Critical
Publication of CN109614335B publication Critical patent/CN109614335B/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

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

本发明涉及一种模块灰盒行为规格说明和灰盒测试用例设计方法,属于计算机软件工程技术领域。其解决了现有黑盒测试测试用例过多、测试效率低下的问题。本发明包括:引入灰盒行为规格说明:被测模块内部成员变量是成员函数作的输入输出,依此输入输出关系划分变量值的等价类,用其合理组合确定被测模块的等价状态集合;将被测模块接口函数输入输出等价类划分好,二者共同作为接口函数调用的条件结果;引入灰盒测试用例设计:被测模块初始化,直接依照模块灰盒行为规格说明设定模块状态变量值,在模块接口调用接口函数,查看模块状态变量值。本发明具有剔除冗余黑盒测试用例,提高测试效率等优点,可广泛运用于计算机软件开发和检验检测场合。

Description

模块灰盒行为规格说明和灰盒测试用例设计方法
技术领域
本发明涉及一种模块灰盒行为规格说明和灰盒测试用例设计方法,属于计算机软件工程技术领域。
背景技术
软件行为规格说明是软件开发重要设计记录文档,软件测试是软件开发必不可少的环节。而软件测试过程的主要技术内容就是根据软件行为规格说明书定义的行为写软件测试用例,然后按照测试用例来操作被测程序,评估软件质量并发现软件缺陷。
目前软件行业将软件测试划分为黑盒测试,白盒测试,和灰盒测试。黑盒测试在规定的软件使用环境下,提供输入并调用被测模块对外接口函数,然后验证输出是否正确。黑盒测试把被测模块当作一个黑盒,只考察输入输出。白盒测试在规定的软件使用环境下,提供输入并调用被测模块对外接口函数,然后验证输出是否正确,并查看函数内部实现。白盒测试查看被测模块一切:黑盒测试考察的输入输出,模块数据结构,和所有成员函数实现。
但目前行业将灰盒测试定义为介于黑盒和白盒之间的测试形式,允许从白到黑之间的任何灰度,这个定义的随意性影响了其在实际工作中的价值。
黑盒测试使用测试步骤确定被测软件状态,由于不看内部实现,两个测试用例即便效果一样,也只能当作两个测试用例。另外,黑盒测试应当有多少测试步骤也是是缺乏理论依据的。黑盒测试的模块可靠性模型需要执行大量测试用例以达到某个预设的可靠性值。所述大量测试用例包括了很多冗余测试用例和测试步骤。因此,黑盒行为分析更适合被测对象内部机制一无所知或者难以理解的场合。而白盒测试由于工作量大,对于小模块很必要也实用;当软件被测对象变大,白盒分析方法会变得沉重。
发明内容
针对现有技术存在的上述缺陷,本发明提出了一种模块灰盒行为规格说明和灰盒测试用例设计方法,其解决了现有黑盒测试测试用例过多、测试效率低下的问题。
本发明所述的模块灰盒行为规格说明和灰盒测试用例设计方法,包括如下步骤:
步骤一:引入灰盒行为规格说明:被测模块内部成员变量是成员函数的输入输出,依此输入输出关系划分变量值的等价类,用其合理组合确定被测模块的等价状态集合;依照黑盒行为规格说明要求,将被测模块接口函数输入输出等价类划分好,二者共同作为接口函数调用的条件结果,具体包括如下小步:
第一步:确定被测模块;
第二步:确定被测模块的成员变量;
第三步:确定被测模块的成员函数;
第四步:确定组成被测模块的外接接口的模块成员函数;
第五步:确定组成被测模块的外接接口的模块成员函数输入输出的等价类划分;
第六步:确定被测模块中影响成员变量的成员函数;
第七步:根据被测模块中影响成员变量的成员函数设计,确定被测模块的成员变量的等价类划分;
第八步:使用上述步骤的结果,描述模块接口函数行为;
步骤二:引入灰盒测试用例设计:被测模块初始化,直接依照模块灰盒行为规格说明设定模块状态变量值,在模块接口调用接口函数,查看模块状态变量值,具体包括如下小步:
第一步:每个测试用例的第一步是模块初始化;
第二步:每个灰盒测试用例第二步是设定模块内部每个变量的变量值,设定模块状态;每个灰盒测试用例第二步还包括:依照模块接口函数的输入输出等价类,以及包括环境等其它需要的条件,设定其它函数调用条件;
第三步:每个灰盒测试用例定义调用接口函数和预期结果,包括下面二者全部或者只是第一个:1)模块黑盒测试输入输出;2)模块内部状态结果;
步骤三:按照上述测试用例设计步骤,形成测试用例集合。
优选地,所述步骤一的第一步中,被测模块包括Java类。
优选地,所述步骤一的第二步中,成员变量选为运用java的反射机制设置对象,或者对象的每个成员变量值设置Getter和Setter。
优选地,所述步骤一的第七步中,将被测模块内部变量表述的状态,按照成员变量是成员函数的输入输出,确定模块的成员变量的等价类划分。
优选地,所述步骤一的第八步中,模块内部变量表述的状态划入模块接口方法调用的函数行为描述的条件和预期结果中。
优选地,所述步骤二的第二步中,使用Java反射机制实现类的变量值设定,或者对每个成员变量在测试模式下做一对函数,一个Getter,一个Setter,目的是直接读取和设置变量值。
优选地,所述步骤二的第二步中,依照模块接口函数的输入输出等价类,以及包括环境等其它需要的条件,设定其它函数调用条件。
优选地,所述步骤二的第二步中,灰盒测试用例包含测试步骤来直接设定模块内部每个变量的变量值,使得模块直接达到特定状态,缩减测试用例步骤。
优选地,所述步骤二的第二步中,利用模块函数没有记忆的特点,缩减测试用例步骤。
优选地,所述步骤二的第三步中,定义调用预期结果包括线面二者全部或者只是第一个:1)模块黑盒测试输入输出;2)模块内部状态结果。
需要说明的是:模块成员函数多数是不包含静态变量的,比如java和C#都不允许。在这个条件下,函数本身没有记忆。函数的第N次调用并不知道本次调用是第N次,所有的记忆均由模块的成员变量承担。所以,只要将模块等价状态类确定,在每个等价状态之下,根据函数调用条件(环境和输入),调用函数一次,验证预期结果即可。
另外,如果函数有静态变量,可以将静态变量划到模块的成员变量之列。
本发明总结如下:
一、模块灰盒行为规格说明部分:被测模块内部成员变量(member variable)是成员函数(member function)作的输入输出,依此输入输出关系划分变量值的等价类,用其合理组合确定被测模块的等价状态集合;依照黑盒行为规格说明要求,将被测模块接口函数输入输出等价类划分好。二者共同作为接口函数调用的条件结果。
二、灰盒测试用例设计部分:被测模块初始化;直接依照模块灰盒行为规格说明设定模块状态变量值;在模块接口调用接口函数;查看模块状态变量值。
本发明的有益效果是:
(1)本发明严格明确定义模块行为规格说明和灰盒测试,将模块内部状态变量划入考察对象,缩短了测试用例步骤数量。
(2)本发明严格明确定义模块行为规格说明和灰盒测试,将模块内部状态变量划入考察对象,达到剔除冗余测试用例,减少测试用例数量俺不降低测试质量的目的。
(3)本发明严格明确定义模块行为规格说明和灰盒测试,对于软件行为分析和软件测试时间和可靠性建模都将具有很好的指导意义;目前灰盒测试定义模糊,实际指导意义不强,难以建立软件灰盒可靠性模型。
(4)本发明具有剔除冗余黑盒测试用例,提高测试效率等优点,在软件测试领域严格精确定义了灰盒测试,可指导模块可靠性模型,可广泛运用于计算机软件开发和检验检测场合。
附图说明
图1是本发明的流程结构框图。
具体实施方式
为了使本发明目的、技术方案更加清楚明白,下面结合实施例,对本发明作进一步详细说明。
实施例1:
本发明提出一个严格精确定义的灰盒模块行为规格说明和灰盒测试方法作为解决上述黑盒问题的途径之一。灰盒测试比白盒测试简单,比黑盒测试效率高。
软件由模块组成。模块由更小的模块组成。最小的模块可以是个类,最大的模块即被开发软件本身。模块可以看成由一个数据结构和一个函数集合组成。数据结构由成员变量实现。依照是否被模块外界调用,成员函数可以分成:一类组成模块和外界交互的接口,一类是内部使用。成员函数又可以以是否影响模块成员变量值划分成两类。黑盒测试关注组成模块和外界交互接口的函数的行为。灰盒测试关注模块状态,故灰盒测试关注成员变量。成员变量是模块方法的输入输出,故灰盒测试关注影响模块成员变量值的成员函数行为。
模块灰盒行为规格说明:依照被测模块内部成员变量(member variable)被成员函数(member function)作为输入输出改变的情况,划分变量值的等价类,用其合理组合确定被测模块的等价状态集合;依照黑盒行为规格说明要求,将被测模块接口函数输入输出等价类划分好。二者共同作为接口函数调用的条件结果。
模块灰盒测试在规定的软件使用环境下,依照模块灰盒行为规格说明设定模块成员变量值,从而设定模块状态,提供输入并调用被测模块对外接口函数,然后验证输出是否正确,验证模块数据结构是否正确,但不查看函数内部实现。
本发明是采用以下的技术方案实现的,相关步骤采用表格形式直观展示,如下表1所示。
表1:实施例1的测试用例集合步骤表
Figure GDA0003157664120000041
Figure GDA0003157664120000051
模块成员函数多数是不包含静态变量的,比如java和C#都不允许。在这个条件下,函数本身没有记忆。函数的第N次调用并不知道本次调用是第N次。所有的记忆均由模块的成员变量承担。所以,只要将模块等价状态类确定,在每个等价状态之下,根据函数调用条件(环境和输入),调用函数一次,验证预期结果即可。
如果函数有静态变量,可以将静态变量划到模块的成员变量之列。
实施例2:
本实施例2中,通过对对象的每个成员变量值设置Getter和Setter,从而确定对象状态,相关步骤采用表格形式直观展示,如下表2所示。
表2:实施例2的测试用例集合步骤表
Figure GDA0003157664120000052
Figure GDA0003157664120000061
实施例3:
本实施例给出一个简单的C#类程序。采用本实施例3,给出的方法,可以减少测试用例数量和测试用例步骤数量。
SimpleClass是一个很简单的C#类
Figure GDA0003157664120000062
这个类只有三个函数:SimpleClass(),Get(),和Set(int a)。如果使用黑盒测试理论,下面都是不同的测试用例:
1.SimpleClass(),Set(5),Get()
2.SimpleClass(),Set(5),Set(5),Get()
3.SimpleClass(),Set(5)Set(5),Set(5),……,Set(5),Get()
按照任何黑盒测试软件可靠性模型,会有很多测试用例。
然而,如果使用灰盒测试模型,类的变量x的等价类是216<=SimpleClass.x<=216。如果对这个等价类选一个典型测试数据,测试用例可以是三个:
1.SimpleClass();AssertState(SimpleClass.x=0);
2.SimpleClass();AssertState(SimpleClass.x=0);SimpleClass.Get();
AssertState(SimpleClass.x=0).
3.SimpleClass();AssertState(SimpleClass.x=0);SimpleClass.Set(5);
AssertState(SimpleClass.x=5)。
本发明严格明确定义模块行为规格说明和灰盒测试,将模块内部状态变量划入考察对象,缩短了测试用例步骤数量。本发明严格明确定义模块行为规格说明和灰盒测试,将模块内部状态变量划入考察对象,达到剔除冗余测试用例,减少测试用例数量俺不降低测试质量的目的。本发明严格明确定义模块行为规格说明和灰盒测试,对于软件行为分析和软件测试时间和可靠性建模都将具有很好的指导意义。目前灰盒测试定义模糊,实际指导意义不强,难以建立软件灰盒可靠性模型。本发明具有剔除冗余黑盒测试用例,提高测试效率等优点。在软件测试领域严格精确定义了灰盒测试,可指导模块可靠性模型,可广泛运用于计算机软件开发和检验检测场合。
当然,上述内容仅为本发明的较佳实施例,不能被认为用于限定对本发明的实施例范围。本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的均等变化与改进等,均应归属于本发明的专利涵盖范围内。

Claims (8)

1.一种模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,包括如下步骤:
步骤一:引入灰盒行为规格说明:被测模块内部成员变量是成员函数的输入输出,依此输入输出关系划分变量值的等价类,用其合理组合确定被测模块的等价状态集合;依照黑盒行为规格说明要求,将被测模块接口函数输入输出等价类划分好,二者共同作为接口函数调用的条件结果,具体包括如下小步:
第一步:确定被测模块;
第二步:确定被测模块的成员变量;
第三步:确定被测模块的成员函数;
第四步:确定组成被测模块的外接接口的模块成员函数;
第五步:确定组成被测模块的外接接口的模块成员函数输入输出的等价类划分;
第六步:确定被测模块中影响成员变量的成员函数;
第七步:根据被测模块中影响成员变量的成员函数设计,确定被测模块的成员变量的等价类划分;
第八步:使用上述步骤的结果,描述模块接口函数行为;模块内部变量状态会出现在函数行为描述的条件和预期结果中;
步骤二:引入灰盒测试用例设计:被测模块初始化,直接依照模块灰盒行为规格说明设定模块状态变量值,在模块接口调用接口函数,查看模块状态变量值,具体包括如下小步:
第一步:每个测试用例的第一步是模块初始化;
第二步:每个灰盒测试用例第二步是设定模块内部每个变量的变量值,设定模块状态;每个灰盒测试用例第二步还包括:依照模块接口函数的输入输出等价类,以及包括环境条件,设定输入函数调用条件;
第三步:每个灰盒测试用例定义调用接口函数和预期结果,包括下面二者全部或者只是第一个:1)模块黑盒测试输入输出;2)模块内部状态结果;
步骤三:按照上述测试用例设计步骤,形成测试用例集合。
2.根据权利要求1所述的模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,所述步骤一的第一步中,被测模块包括Java类。
3.根据权利要求2所述的模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,所述步骤一的第二步中,成员变量选为运用java的反射机制设置对象,或者对象的每个成员变量值设置Getter和Setter。
4.根据权利要求1或3所述的模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,所述步骤一的第七步中,将被测模块内部变量表述的状态,按照成员变量是成员函数的输入输出,确定模块的成员变量的等价类划分。
5.根据权利要求4所述的模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,所述步骤一的第八步中,模块内部变量表述的状态划入模块接口方法调用的函数行为描述的条件和预期结果中。
6.根据权利要求1或5所述的模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,所述步骤二的第二步中,使用Java反射机制实现类的变量值设定,或者对每个成员变量在测试模式下做一对函数,一个Getter,一个Setter,目的是直接读取和设置变量值。
7.根据权利要求6所述的模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,所述步骤二的第二步中,灰盒测试用例包含测试步骤来直接设定模块内部每个变量的变量值,使得模块直接达到特定状态,缩减测试用例步骤。
8.根据权利要求7所述的模块灰盒行为规格说明和灰盒测试用例设计方法,其特征在于,所述步骤二的第二步中,利用模块函数没有记忆的特点,缩减测试用例步骤。
CN201811501135.0A 2018-12-10 2018-12-10 模块灰盒行为规格说明和灰盒测试用例设计方法 Active CN109614335B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811501135.0A CN109614335B (zh) 2018-12-10 2018-12-10 模块灰盒行为规格说明和灰盒测试用例设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811501135.0A CN109614335B (zh) 2018-12-10 2018-12-10 模块灰盒行为规格说明和灰盒测试用例设计方法

Publications (2)

Publication Number Publication Date
CN109614335A CN109614335A (zh) 2019-04-12
CN109614335B true CN109614335B (zh) 2021-10-15

Family

ID=66008053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811501135.0A Active CN109614335B (zh) 2018-12-10 2018-12-10 模块灰盒行为规格说明和灰盒测试用例设计方法

Country Status (1)

Country Link
CN (1) CN109614335B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103539A (zh) * 2011-03-11 2011-06-22 天津大学 基于z规格的测试用例生成方法
CN104461875A (zh) * 2014-11-23 2015-03-25 国云科技股份有限公司 一种依据等价类设计软件测试用例的方法
US10025696B2 (en) * 2016-02-09 2018-07-17 General Electric Company System and method for equivalence class analysis-based automated requirements-based test case generation
CN108415830A (zh) * 2018-02-05 2018-08-17 广东睿江云计算股份有限公司 一种软件测试用例的生成方法及装置
CN108427632A (zh) * 2017-02-14 2018-08-21 腾讯科技(深圳)有限公司 自动测试方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10204034B2 (en) * 2017-04-06 2019-02-12 At&T Intellectual Property I, L.P. System and method for testing software applications in a software defined network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102103539A (zh) * 2011-03-11 2011-06-22 天津大学 基于z规格的测试用例生成方法
CN104461875A (zh) * 2014-11-23 2015-03-25 国云科技股份有限公司 一种依据等价类设计软件测试用例的方法
US10025696B2 (en) * 2016-02-09 2018-07-17 General Electric Company System and method for equivalence class analysis-based automated requirements-based test case generation
CN108427632A (zh) * 2017-02-14 2018-08-21 腾讯科技(深圳)有限公司 自动测试方法及装置
CN108415830A (zh) * 2018-02-05 2018-08-17 广东睿江云计算股份有限公司 一种软件测试用例的生成方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
UML模型驱动的划分测试用例生成方法研究;王瑞雪 等;《计算机应用研究》;20120930;第29卷(第9期);全文 *

Also Published As

Publication number Publication date
CN109614335A (zh) 2019-04-12

Similar Documents

Publication Publication Date Title
US9940222B2 (en) System and method for safety-critical software automated requirements-based test case generation
US10089218B2 (en) Methods circuits apparatuses systems and associated computer executable code for generating a software unit test
Medhat et al. A framework for mining hybrid automata from input/output traces
Frechette et al. Strategy for testing conformance to geometric dimensioning & tolerancing standards
US9396097B2 (en) Methods, circuits, devices, systems and associated computer executable code for testing software code
CN111679977B (zh) 一种基于Jest的React项目单元测试方法、设备及存储介质
Jee et al. FBDVerifier: Interactive and visual analysis of counter-example in formal verification of function block diagram
US10324829B2 (en) Application testing
CN109614335B (zh) 模块灰盒行为规格说明和灰盒测试用例设计方法
CN113934631A (zh) 一种基于蜕变关系匹配的组合测试方法
CN111580409B (zh) 面向实时嵌入式***的故障仿真测试方法
CN111722863A (zh) 风控模型更新方法及装置
CN111552641A (zh) 一种判断软件产品质量的方法、装置、设备及存储介质
Chen et al. Property-based testing: Climbing the stairway to verification
Wallace The control and transformation metric: toward the measurement of simulation model complexity
CN113033132B (zh) 一种确定端口时序约束的方法及相关装置
US8412668B2 (en) Offline formal verification of executable models
Erkkinen Embedded control system implementation and modeling issues
KR20120072133A (ko) 소프트웨어 정적 테스팅 장치 및 방법
US8453119B2 (en) Online formal verification of executable models
Schöpp et al. Requirements-based code model checking
KR102610914B1 (ko) 히스테리시스 곡선으로부터 테스트 시나리오 자동 생성 방법
US20180129486A1 (en) System and method for estimating programming capability
Oetsch et al. cc {\rm T}: A Tool for Checking Advanced Correspondence Problems in Answer-Set Programming
CN116991706B (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