CN109101413A - 一种通用的黑盒测试用例自动生成方法 - Google Patents

一种通用的黑盒测试用例自动生成方法 Download PDF

Info

Publication number
CN109101413A
CN109101413A CN201710513317.9A CN201710513317A CN109101413A CN 109101413 A CN109101413 A CN 109101413A CN 201710513317 A CN201710513317 A CN 201710513317A CN 109101413 A CN109101413 A CN 109101413A
Authority
CN
China
Prior art keywords
dynamic memory
memory
byte
address
value
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.)
Pending
Application number
CN201710513317.9A
Other languages
English (en)
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.)
Qingdao Campus of Naval Aviation University of PLA
Original Assignee
Qingdao Campus of Naval Aviation University of PLA
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 Qingdao Campus of Naval Aviation University of PLA filed Critical Qingdao Campus of Naval Aviation University of PLA
Priority to CN201710513317.9A priority Critical patent/CN109101413A/zh
Publication of CN109101413A publication Critical patent/CN109101413A/zh
Pending legal-status Critical Current

Links

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

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

本发明提供一种通用的黑盒测试用例自动生成方法,涉及软件测试技术领域。本发明针对待测软件模块输入接口多样化所带来的测试用例自动生成困难的技术问题,首先将待测软件模块输入接口抽象为模块输入参数所占用的字节数CB,并在计算机中申请CB字节的动态内存,接着在所述动态内存中生成二进制序列BSD,最后通过待测软件模块输入接口蕴含的类型信息将所述二进制序列BSD解析为待测软件模块的输入数据,并可利用筛选条件对输入数据进行筛选,与用户给出的测试期望组成测试用例。二进制序列BSD可采用内存递增或随机抽样的方法生成。该方法便于编程实现测试用例的自动生成,提高了测试用例的生成效率。

Description

一种通用的黑盒测试用例自动生成方法
技术领域
本发明涉及软件测试领域,尤其涉及一种通用的黑盒测试用例自动生成方法。
背景技术
软件测试是保证软件质量的重要手段,自动化测试可以提高测试效率,降低成本。测试用例的自动获取是自动化测试的关键和难点。
黑盒测试方法是将待测对象看作一个不能打开的黑盒子,在完全不考虑程序内部结构和特性的情况下,从输入数据和输出数据的对应关系出发进行测试。一般认为,对输入数据穷举进行测试是无法完成的任务,为此,常用的黑盒测试方法(包括等价划分法、边界值分析法、因果图分析法、错误猜测法等)一般根据待测模块的输入接口选取有代表性输入样本作为测试用例。然而,由于待测模块的输入接口类型是千变万化的,基于上述方法编程实现黑盒测试用例的自动获取是比较困难的,或是实现的自动获取测试用例的方法不具备通用性。
发明内容
本发明为了解决待测软件模块输入接口多样化所带来的测试用例自动生成困难的技术问题,基于动态内存提出了一种通用的黑盒测试用例自动生成方法。
本发明解决黑盒测试用例自动生成通用性问题的理论依据如下:
虽然待测模块的输入接口是多样化的,但从待测模块M的输入接口参数集合IS都能抽象出一个同样的特征,即输入接口参数所占用的字节数CB。例如待测模块M1的输入接口参数集合IS为{int p1,int p2},则CB为8;待测模块M2的输入接口参数集合IS为{doublep3},则CB也为8。
根据待测模块M的输入接口参数集合IS的字节数CB,在计算机中申请相应大小的动态内存DM,并独立于输入接口参数集合IS在DM中生成二进制序列BSD。再利用输入接口参数集合IS所蕴含的类型信息对二进制序列BSD进行解析从而获取测试样本。
我们知道,在计算机内存中数据都是用0、1序列来表达的,针对不同的应用背景同样的数据可以解析为不同的含义。例如对于8字节的2进制序列0x43AE044534EE0443(用16进制表示),若解析为{int p1,int p2},其值为{888013891,1135477829};若解析为{double p3},其值为1.0814649073392767e18。因此,针对生成的二进制序列BSD,放在对应待测模块的输入接口参数集合背景下即可解析为待测模块的输入样本。
由于生成的二进制序列BSD是独立于待测模块的输入接口的,可利用用户给出的筛选条件FC进行筛选得到可用的测试用例,筛选条件FC是可选的。
基于以上依据,本发明解决其技术问题所采用的技术方案是:
一种通用的黑盒测试用例自动生成方法,包括以下步骤:
a)、由用户给出待测软件模块M的输入接口参数集合IS;
b)、根据所述输入接口参数集合IS得到其字节数大小CB,申请大小为CB字节的动态内存DM,并获取所述动态内存DM的首地址DMA;
c)、根据所述首地址DMA寻址到所述动态内存DM,并生成二进制序列BSD;
d)、利用所述输入接口参数集合IS解析二进制序列BSD,得到实例化的测试样本数据ITD;
e)、由用户给出筛选条件FC,判断所述测试样本数据ITD是否符合所述筛选条件FC,如果符合则进入步骤f),否则转向步骤c);
f)、由用户给出测试期望ER,由所述测试数据ITD与所述测试期望ER组成一组测试用例TS。
具体的,所述步骤c)中二进制序列BSD可采用动态内存递增的方法生成,该方法包括以下步骤:
c00)、将所述动态内存DM划分成连续子动态内存空间DM(i),DM(i)表示地址在DMA+i,长度为1字节的内存所存储的值,其中i表示子内存空间相对于首地址的以字节为单位的偏移量,为无符号整数,取值从0到CB-1;
c01)、由用户给出递增步长IV,获取所述动态内存DM首地址DMA,设置当前递增步长CIV为IV,设置当前偏移量i为0,所述递增步长IV是无符号整数,其值不小于1且不大于255。
c02)、根据内存地址偏移量i得出当前动态内存地址CDMA=DMA+i,并通过CDMA寻址获取该字节上存放的值CV并存放在寄存器TV中;
c03)、将所述CIV值与所述CV值相加后赋值给CV;
c04)、判断是否满足以下条件:所述CV小于所述CIV并且所述内存地址偏移量i小于(CB-1),如果满足则进入步骤c05),如果不满足则表示结束并退出;
c05)、设置所述递增步长CIV=(CIV+TV)/256,所述内存地址偏移量i=i+1,并转向步骤c02)。
所述c02)到c05)是一个递归过程,其编程实现的伪代码如下:
函数名:Increase
输入:内存偏移量i,递增步长IV,动态内存DM
Begin
TV=DM(i);
DM(i)=DM(i)+IV;
IF DM(i)<IV并且i<CB-1
THEN调用自身且输入:i1=i+1,IV1=(IV+TV)/256,DM1=DM
End
输出:动态内存DM
在c01)步骤中调用Increase函数,并设置输入i=0,则可实现对动态内存DM递加IV的要求。
可选的,所述步骤c01)中递增步长IV设置为1。此时可实现对所述动态内存DM从0到2^(8*CB)-1的遍历。
具体的,所述步骤c)中二进制序列BSD也可采用随机抽样方法生成,该方法包括以下步骤:
c10)、以字节为单位将所述动态内存DM划分成连续的子动态内存DM(i),DM(i)表示地址在DMA+i,长度为1字节的内存所存储的值,其中i表示子内存空间相对于首地址的以字节为单位的偏移量,为无符号整数,取值从0到CB-1;
c11)、生成随机数种子;
c12)、定义计数器CNT,并初始化为0;
c13)、判断所述计数器CNT是否小于CB-1,如果满足则转向c15),否则转向c14);
c14)、利用计算机生产随机数,并将随机数拷贝到所述的子动态内存DM(CNT),并将计数器递加,跳转到c13);
c15)、输出动态内存DM上的二进制序列BSD,程序结束。
进一步的,利用指针变量将所述步骤d)中将二进制序列BSD解析为待测模块M的输入接口参数集合IS,具体包括以下步骤:
d0)、定义所述自定义结构体ISD的指针变量ISDP,所述指针变量ISDP中存储存放自定义结构体ISD数据的内存地址;
d1)、将所述首地址DMA赋给所述指针变量ISDP;
d2)、调用所述指针变量ISDP解析所述动态内存获取实例化的测试数据IID。
更进一步的,所述步骤e)所述筛选条件Fc根据所述自定义结构体ISD成员变量的取值范围给出。
可选的,所述步骤e)所述筛选条件Fc可以为空。
本发明的一种通用的黑盒测试用例自动生成方法,与现有技术相比所产生的有益效果是:
本发明将多样化的待测模块输入接口参数集合抽象为其占用的字节数,因而只需给出字节数大小即可生成相关的测试用例,给出了一种通用的黑盒测试用例自动生成方法,有利于编程实现测试用例的自动生成,从而提高测试用例的生成效率。
附图说明
图1为本发明实施例的通用的黑盒测试用例自动生成方法的流程示意图;
图2为本发明实施例的动态内存递增生成二进制序列的流程示意图;
图3为本发明实施例的随机抽样生成二进制序列的流程示意图;
图4为本发明实施例的循环调用基于动态内存递增方法生成的黑盒测试用例样本(1000次);
图5为本发明实施例的循环调用基于随机抽样生成的黑盒测试用例样本(1000次)。
具体实施方式
下面结合附图1-5对本发明的一种通用的黑盒测试用例自动生成方法作以下详细说明。
为更清晰说明本发明提出的方法,以求出两个整数较小值的待测软件模块M1为实施例,该待测软件模块的定义如下:
int Min(int a,int b)
其功能是从a、b两个整数中找出较小的一个。需要指出的是,该实例仅用于说明本发明的实施方式,对本发明的保护范围不作任何限定。
按照附图1所述的步骤自动生成所述软件模块M1的测试用例:
a)、给出待测软件模块M的输入接口参数集合IS为{int a,int b};
b)、根据输入接口参数集合IS得到其字节数大小CB为8,进而申请大小为8字节的动态内存DM,并获取所述动态内存DM的首地址DMA;
c)、根据所述首地址DMA寻址到所述动态内存DM,利用动态内存递增的方法或者随机抽样方法或者其他任意方法在动态内存DM中生成二进制序列BSD;
d)、将步骤c)中生成的二进制序列BSD解析为输入接口参数集合IS,进而得到实例化的测试数据ITD为{ai,bi};
e)、用户给出任意筛选条件FC,本实例中给出筛选条件为FC:{a<b},进而判断生成的测试数据ITD是否满足ai<bi,如果不满足则转向步骤c),否则转向步骤f),易知,所述筛选条件FC可根据需求任意给出;
f)、用户给出测试期望ER,本实例中给出测试期望ER:{ai},则该测试期望ER与测试数据ITD组成测试用例TS,易知,所述测试期望ER可根据需求任意给出。
按照附图2所述的步骤给出动态内存递增生成二进制序列BSD的实施方式:
c00)、将CB=8字节的动态内存DM分为8个子动态内存空间DM(i),所述偏移量i的取值范围是0到7,并假设动态内存上当前值为0x43AE044534EE0443,解析为输入接口参数集合IS为{888013891,1135477829};
c01)、假设用户给出递增步长IV=253,则设置当前递增步长CIV=IV,并设置偏移量i=0,则当前内存地址CDMA=DMA,进入步骤c02(0));
c02(0))、根据所述当前动态内存地址CDMA寻址获取该内存空间上存放的值CV=67,并存放在寄存器TV上,即TV=67,进入步骤c03(0));
c03(0))、将所述CIV值与所述CV值相加后赋值给CV,即CV=67+253=320,由于CV值占有一个字节,存放的数值不能超过255,由于320>255,则由计算机进行截断后CV=320-255=65,进入步骤c04(0));
c04(0))、由于满足条件:CV<CIV且i<7,因此进入步骤c05(0));
c05(0))、设置所述递增步长CIV=(CIV+TV)/256=(255+67)/256=1,设置所述内存地址偏移量i=i+1=1,并转向步骤c02(1));
c02(1))、根据内存地址偏移量得出当前动态内存地址CDMA=DMA+1,通过CDMA寻址获取该字节上存放的值CV=4,并存放在寄存器TV上,即TV=4,并进入步骤c03(1));
c03(1))、将所述CIV值与所述CV值相加后赋值给CV,即CV=4+1=5,进入步骤c04(1));
c04(1))、由于CV>CIV,不满足条件,则跳出,程序结束。
经过上述过程后,动态内存DM值递增为0x43AE044534EE0540,解析为输入接口参数集合IS为{888014144,1135477829}。
上述过程是针对待测模块M1在给出具体初始值情况下的基于动态内存递增自动生成黑盒测试用例方法的一个实施方式。很明显,针对任意待测软件模块以及任意初始条件均可按照上述步骤生成测试用例。
循环调用上述过程,每次循环步骤c00)中动态内存上当前值为前一过程生成的值,则循环1000次,可得到如附图3所示的测试用例样本。附图3中坐标系中X轴表示待测软件模块M1输入参数b,Y轴表示待测软件模块M1的输入参数a,图中每一个点表示一个测试样本。
由附图3可看出,基于内存递增生成测试用例样本是集中于某个区域的,适用于测试接口敏感界限已知的情况。在不了解的前提下,优先考虑采用随机抽样方式生成测试用例,仍以待测软件模块M1为实施例对附图4给出的步骤说明如下:
c10)、将CB=8字节的动态内存DM分为8个子动态内存空间DM(i),所述偏移量i的取值范围是0到7;
c11)、利用C++语言的srand()函数生成随机数种子,保证每次生成的伪随机数不同;
c12)、初始化计数器CNT=0;
循环进行c13)和c14)步骤,直到CNT==8进入到c15)步骤,得到DM上二进制序列BSD变化过程如表1所示:
表1 动态内存上二进制序列BSD值
计数器CNT 生成的随机数 动态内存上二进制序列BSD值
0 8 0x0800000000000000
1 226 0x08e2000000000000
2 40 0x08e2280000000000
3 74 0x08e2284a00000000
4 185 0x08e2284ab9000000
5 220 0x08e2284ab9dc0000
6 80 0x08e2284ab9dc5000
7 204 0x08e2284ab9dc50cc
c15)、输出动态内存DM上的二进制序列BSD值为0x08e2284ab9dc50cc。
按照步骤d)结合待测软件模块M1的接口信息{int a,int b}解析二进制序列BSD为{149039178,3118223564},接着可按照步骤e)和f)生成测试用例,在此不再赘述。循环上述过程1000次,可得到如附图5所示的通过随机抽样生成的测试用例样本。

Claims (6)

1.一种通用的黑盒测试用例自动生成方法,其特征在于,包括以下步骤:
a)、由用户给出待测软件模块M的输入接口参数集合IS;
b)、根据所述输入接口参数集合IS得到其字节数大小CB,申请大小为CB字节的动态内存DM,并获取所述动态内存DM的首地址DMA;
c)、根据所述首地址DMA寻址到所述动态内存DM,并生成二进制序列BSD;
d)、利用所述输入接口参数集合IS解析二进制序列BSD,得到实例化的测试样本数据ITD;
e)、由用户给出筛选条件FC,判断所述测试样本数据ITD是否符合所述筛选条件FC,如果符合则进入步骤f),否则转向步骤c);
f)、由用户给出测试期望ER,由所述测试数据ITD与所述测试期望ER组成一组测试用例TS。
2.根据权利要求1所述的通用的黑盒测试用例自动生成方法,其特征在于,所述步骤c)利用动态内存递增方法生成所述数据块BSD,包括以下步骤:
c00)、将所述动态内存DM划分成连续子动态内存空间DM(i),DM(i)表示地址在DMA+i,长度为1字节的内存所存储的值,其中i表示子内存空间相对于首地址的以字节为单位的偏移量,为无符号整数,取值从0到CB-1;
c01)、由用户给出递增步长IV,获取所述动态内存DM首地址DMA,设置当前递增步长CIV为IV,设置当前偏移量i为0,所述递增步长IV是无符号整数,其值不小于1且不大于255;
c02)、根据内存地址偏移量i得出当前动态内存地址CDMA=DMA+i,并通过CDMA寻址获取该字节上存放的值CV并存放在寄存器TV中;
c03)、将所述CIV值与所述CV值相加后赋值给CV;
c04)、判断是否满足以下条件:所述CV小于所述CIV并且所述内存地址偏移量i小于(CB-1),如果满足则进入步骤c05),如果不满足则表示结束并退出;
c05)、设置所述递增步长CIV=(CIV+TV)/256,所述内存地址偏移量i=i+1,并转向步骤c02)。
3.根据权利要求2所述的通用的黑盒测试用例自动生成方法,其特征在于,所述步骤c01)中递增步长IV设置为1。
4.根据权利要求1所述的通用的黑盒测试用例自动生成方法,其特征在于,所述步骤c)采用随机抽样方法生成二进制数据块BSD,包括以下步骤:
c10)、以字节为单位将所述动态内存DM划分成连续的子动态内存DM(i),所述DM(i)表示首地址在DMA+i长度为1字节的内存区域,其中i是无符号整数,取值从0到CB;
c10)、以字节为单位将所述动态内存DM划分成连续的子动态内存DM(i),DM(i)表示地址在DMA+i,长度为1字节的内存所存储的值,其中i表示子内存空间相对于首地址的以字节为单位的偏移量,为无符号整数,取值从0到CB-1;
c11)、生成随机数种子;
c12)、定义计数器CNT,并初始化为0;
c13)、判断所述计数器CNT是否小于CB-1,如果满足则转向c15),否则转向c14);
c14)、利用计算机生产随机数,并将随机数拷贝到所述的子动态内存DM(CNT),并将计数器递加,跳转到c13);
c15)、输出动态内存DM上的二进制序列BSD,程序结束。
5.根据权利要求1、2、3或4所述的基于动态内存的黑盒测试用例自动生成方法,其特征在于,所述步骤d)包括:
d0)、定义所述自定义结构体ISD的指针变量ISDP,所述指针变量ISDP中存储存放自定义结构体ISD数据的内存地址;
d1)、将所述首地址DMA赋给所述指针变量ISDP;
d2)、调用所述指针变量ISDP解析所述动态内存获取实例化的测试数据IID。
6.根据权利要求1、2、3、4或5所述的通用的黑盒测试用例自动生成方法,其特征在于,所述步骤e)所述筛选条件Fc为空。
CN201710513317.9A 2017-06-21 2017-06-21 一种通用的黑盒测试用例自动生成方法 Pending CN109101413A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710513317.9A CN109101413A (zh) 2017-06-21 2017-06-21 一种通用的黑盒测试用例自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710513317.9A CN109101413A (zh) 2017-06-21 2017-06-21 一种通用的黑盒测试用例自动生成方法

Publications (1)

Publication Number Publication Date
CN109101413A true CN109101413A (zh) 2018-12-28

Family

ID=64796481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710513317.9A Pending CN109101413A (zh) 2017-06-21 2017-06-21 一种通用的黑盒测试用例自动生成方法

Country Status (1)

Country Link
CN (1) CN109101413A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012221312A (ja) * 2011-04-11 2012-11-12 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成装置及び方法
CN102999426A (zh) * 2012-11-30 2013-03-27 北京邮电大学 基于抽象内存模型的非数值型数据的计算方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012221312A (ja) * 2011-04-11 2012-11-12 Nippon Telegr & Teleph Corp <Ntt> テストデータ生成装置及び方法
CN102999426A (zh) * 2012-11-30 2013-03-27 北京邮电大学 基于抽象内存模型的非数值型数据的计算方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
S. VISVANATHAN,N. GUPTA: "Generating test data for functions with pointer inputs", 《PROCEEDINGS 17TH IEEE INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING》 *
唐容: "支持非数值型测试用例自动生成的抽象内存建模技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
赵瑞莲: "基于搜索的面向路径字符串测试数据自动生成方法", 《计算机辅助设计与图形学学报》 *

Similar Documents

Publication Publication Date Title
CN109902002B (zh) 组合测试用例的生成方法及装置、存储介质、计算机设备
CN109302522A (zh) 测试方法、装置以及计算机系统和介质
CN104363324B (zh) 一种对手机主板进行自动测试的测试方法及测试系统
CN106021102B (zh) 自动化测试文件的生成方法及装置
CN104899046B (zh) 一种多功能脚本运行方法和系统
CN101477140B (zh) 频域屏蔽的自动产生
CN112181749B (zh) 硬件测试方法、装置、电子设备和存储介质
CN107396199A (zh) 弹幕数据展示方法及装置、计算机可读存储介质
CN109062788A (zh) 测试用例生成方法、装置、计算机设备和存储介质
US10241895B2 (en) Memory stack trace management tool
CN111694754B (zh) 应用程序的测试方法、装置、电子设备及计算机介质
CN103716211B (zh) 网络终端的数据流量测量方法
CN118363569A (zh) 一种基于SpringBoot、mybatis框架实现数据库国产化改造的方法、系统、设备及存储介质
CN109101413A (zh) 一种通用的黑盒测试用例自动生成方法
CN116956801B (zh) 芯片验证方法、装置、计算机设备和存储介质
CN109857626A (zh) 压力测试方法及装置
CN109257348A (zh) 一种基于工业控制系统的集群漏洞挖掘方法和装置
CN109144853B (zh) 一种软件定义无线电SoC芯片调试系统
CN111953352A (zh) 一种基于fpga系统的数据压缩显示方法、设备及存储介质
CN115794245B (zh) 数据加载方法及装置、电子设备、存储介质
CN110515834A (zh) 接口测试方法、装置、移动终端及存储介质
CN106954264B (zh) 一种下行物理共享信道pdsch的资源映射方法及系统
US11496918B2 (en) Automating 5G core network testing
CN104461549B (zh) 图形界面的排列显示方法及装置
CN107800384A (zh) 一种用于光伏组件iv特性对比测试的并发控制方法

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181228