CN104657261A - 测试用例生成方法和装置 - Google Patents
测试用例生成方法和装置 Download PDFInfo
- Publication number
- CN104657261A CN104657261A CN201510012704.5A CN201510012704A CN104657261A CN 104657261 A CN104657261 A CN 104657261A CN 201510012704 A CN201510012704 A CN 201510012704A CN 104657261 A CN104657261 A CN 104657261A
- Authority
- CN
- China
- Prior art keywords
- edpn
- test
- state
- test case
- sequence
- 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
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种测试用例生成方法和装置。涉及计算机应用领域;解决了测试用例自动生成技术无法满足当前软件测试的实际需要的问题。该方法包括:分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列;将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例;将所述测试用例的UML状态图转换为EDPN图;运行所述EDPN图,生成最终测试用例。本发明提供的技术方案适用于面向对象软件测试,实现了测试用例的自动生成。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种测试用例生成方法和装置。
背景技术
随着计算机技术的发展,软件也成为人们日常工作不可或缺的资源。但随着软件开发技术的发展,软件***规模的日益扩大,软件的复杂程度越来越高,由于软件故障造成的危害也逐渐得以显现。软件质量成为制约计算机发展的瓶颈之一。
面向对象程序设计作为一种具有结构良好和更规范的编程风格,极大地优化了数据使用的安全性,提高了代码的重用率,但另一方面也影响了软件测试的方法和内容,例如:封装性对测试的影响、类的封装机制给软件测试带来困难等。由于面向对象的软件***在运行时由一组协调工作的对象组成,对象具有一定的状态。所以对面向对象的程序测试来说,对象的状态是必须考虑的因素,测试应涉及对象的初态、输入参数、输出参数、对象的终态。在工作过程中对象的状态可能被修改,产生新的状态。
面向对象软件测试的基本工作就是创建对象(包括初始化),向对象发送一系列消息然后检查结果对象的状态,看其是否处于正确的状态。但是对象的状态往往是隐蔽的,若类中未提供足够的存取函数来表明对象的实现方式和内部状态,则测试者必须增添这样的函数。软件测试是软件质量保证的重要环节之一,在软件开发中有着不可替代的重要地位。因此,软件测试的工作量很大。据统计,测试时间会占到总开发时间的40%,一些可靠性要求非常高的软件,测试时间甚至占到开发周期的60%。由于测试的许多操作和过程是重复性的,因此在整个软件过程中软件测试工作可以应用自动化方法实现。测试自动化是通过开发和使用一些测试工具自动测试软件***,特别适合于测试中重复而繁琐的活动,它可以使某些测试任务比手工测试执行的效率高,并可以运行更多更频繁的测试。
对程序的新版本可以自动运行已有的测试,特别是在频繁的修改过程中,一系列回归测试的开销应是最小的。可以执行一些手工测试困难或手工无法实现的测试,例如对于***的并发测试,用手工进行并发操作几乎是不可能的,但自动测试工具可以模拟大量并发输入。测试具有一致性和可重复性。对于自动重复的测试可以重复多次相同的测试,如不同的硬件配置、使用不同的操作***或数据库等,从而获得测试的一致性,这在手工测试中是很难保证的。一旦一系列测试已经被自动化,则可以更快地重复执行,从而缩短了测试周期,使软件更快地推向市场。
近些年来,虽然软件测试自动化技术与方法有了很大的发展,但还远没有成熟,现有的测试用例自动生成技术还无法满足当前软件测试的实际需要,大量的软件测试工程师还沦陷在缺乏理论指导和实用测试工具的测试泥潭中。
发明内容
本发明提供了一种测试用例生成方法和装置,解决了测试用例自动生成技术无法满足当前软件测试的实际需要的问题。
一种测试用例生成方法,包括:
分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列;
将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例;
将所述测试用例的UML状态图转换为EDPN图;
运行所述EDPN图,生成最终测试用例。
优选的,分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列具体为:
使用UIO序列方法分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列。
优选的,将所述测试用例的UML状态图转换为EDPN图包括:
将所述UML状态图的团点转换为EDPN图的数据地点;
将所述UML状态图的状态转换为EDPN图的EDPN转移;
将所述UML状态图中与状态转移关联的输出转换为EDPN图的端口输入事件地点;
对照测试的类,设计所述EDPN图的样本场景标记。
优选的,运行所述EDPN图,生成最终测试用例包括:
当触发一个转移时,从该转移的每个输入地点分别删除一个标记,且在该转移的每个输出地点增加一个标记。
优选的,被触发的转移的所有输入地点包含一个以上的标记。
本发明还提供了一种测试用例生成装置,包括:
预测消息序列确定模块,用于分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列;
第一测试用例生成模块,用于将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例;
转换模块,用于将所述测试用例的UML状态图转换为EDPN图;
第二测试用例生成模块,用于运行所述EDPN图,生成最终测试用例。
优选的,所述转换模块包括:
第一转换单元,用于将所述UML状态图的团点转换为EDPN图的数据地点;
第二转换单元,用于将所述UML状态图的状态转换为EDPN图的EDPN转移;
第三转换单元,用于将所述UML状态图中与状态转移关联的输出转换为EDPN图的端口输入事件地点;
第四转换单元,用于对照测试的类,设计所述EDPN图的样本场景标记。
本发明提供了一种测试用例生成方法和装置,分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列,将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例,将所述测试用例的UML状态图转换为EDPN图,运行所述EDPN图,生成最终测试用例。实现了测试用例的自动生成,解决了测试用例自动生成技术无法满足当前软件测试的实际需要的问题。
附图说明
图1为样本场景的标记示意图;
图2为本发明的实施例二提供的一种测试用例生成装置的结构示意图;
图3为图2中转换模块203的结构示意图。
具体实施方式
下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明的实施例提供了一种测试用例生成方法和装置,其实现原理如下:
在运用EDPN模型生成测试用例的过程中,对EDPN做标记,EDPN(P,D,S,In,Out)的一个标记M,是一个p元组的序列M=<m1,m2,…mp>,其中:p=k+n,k和n是端口事件集合P和数据地点集合D中的元素个数,p元组中的个体项表示事件或数据地点中的标记个数,个体项的排列约定为:数据地点放在开头,随后是输入地点和输出地点。一个EDPN可以有任意数量的标记,每个标记对应附图中EDPN(网络)图的一个执行。EDPN中当一个事件被允许发生、一个转移被触发时,不应该存在相同的输出地点(不同元素的输出地点不同),否则难以保证基于规约的预期结果,只要EDPN中一个转移的每个输入地点至少有一个标记,该转移才允许发生和被触发,EDPN的每一个标记都是确定的,使得EDPN在执行时存在转移允许发生和触发或者处于事件静止状态。
拟将事件驱动的EDPN模型的较好的耦合性以及与UML状态图类似的支持并发状态的特点运用到面向对象软件的类测试技术中,研究解决以上问题的新的面向对象的类测试模型及测试用例自动生成算法。根据这种算法,我们可以根据需要使用不同的编程语言来实现测试用例的自动化生成。基于EDPN的状态覆盖率是类测试充分性的标准之一,能提高测试人员对测试质量的信任度。利用UIO法唯一输入输出序列(Unique Input Output Sequence,UIOS)能唯一的识别一种状态,即对象处在该状态时接收了对应的UIOS中的输入时,所产生的输出不同于该状态集中的任何其它状态在接收此输入时所产生的输出,从无限的测试用例中选出有限的能达到覆盖要求的测试用例。
首先结合附图,对本发明的实施例一进行说明。
本发明实施例提供了一种测试用例生成方法。
首先,使用UIO法为各种输入输出状态集合的状态集中的每一个不同于初始状态的状态(以下称为非初始状态)找到一个唯一输入输出序列作为预测消息序列,然后,为每一个非初始状态找到一条从初始状态到该状态的测试消息序列,将每一个非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例。
然后,将UML状态图转换成EDPN图,转换时需要将状态图的“团点”变成数据地点,用圆圈表示;状态转移变成EDPN转移,用小矩形表示;引起状态转移的事件成为端口输入事件地点,用三角形表示;与状态转移关联的输出变成端口输出事件地点,也用三角形表示。对照测试的类,列表描述EDPN中的元素,如基于事件驱动的转移、事件静止状态、端口输入输出的事件等设计样本场景标记。样本场景的标记如图1所示。然后描述样本场景标记,就可以生成一个测试用例。
最后,运行EDPN,自动生成测试用例。如附图1,运行EDPN必须遵循:只有当一个转移的所有输入地点中至少有一个标记(上表中用“1”表示),该转移才允许发生;当触发一个转移时,要从该转移的每个输入地点分别删除一个标记,且在其每个输出地点增加一个标记。执行时,d1被初始化(步骤m0),网络处于事件静止状态,如果事件t1发生(步骤m1),s1允许发生,s1被触发,状态被转移到地点d31和d41,如果有输出端口事件地点,则产生相应的输出。此时,d31和d41均增加一个标记,同时d1的标记被删除。由于在UML状态图中,2是两个并发状态3和4,因而3.1和4.1同时被激活。这样继续执行,最后再回到初始状态d1
下面参照附图,以自动咖啡出售机的工作过程为例,对UML状态图到EDPN图的转换、测试用例自动算法的具体实现进行说明。
基于EDPN模型的类测试模型,设计了从UML图到EDPN图的转换,设计了相应的算法及测试用例自动算法用伪代码描述,提出了基于EDPN有标记的唯一输入输出测试用例的生成方法。
面向对象测试用例自动化生成设计包括:EDPN模型的类测试模型,从UML图到EDPN图的转换,相应的算法及测试用例自动算法用伪代码描述,其中基于EDPN的状态覆盖率是类测试充分性的标准之一,应用EDPN对类进行状态测试,就必须将UML状态图转换成EDPN图,对照测试的类,列表描述EDPN中的元素,如基于事件驱动的转移、事件静止状态、端口输入输出的事件根据相应的算法及测试用例自动算法思想,完成自动化测试用例的生成。
测试用例自动算法用伪代码描述如下:
Generation_Testing_Case(DataSite curDataSite){
//转移集合S’初始化为空集,存放被触发过的转移序列
if S’=S then all s∈S are triggered and retu rn;
//数据地点集合D中每个子集di的满足ti和di输入时循环
for each di∈D{
//ti与di相关的端口输入事件
if(di=curDataSite)then
if(ti∈P is not marked)then
add a mark to ti;
S’=S’∪{si};
//与di相关的转移si被触发
TC=TC∪{(di,ti,si)};
//TC在函数***初始化为空
make di’as an output destination DataSite of si;
delete the marks of di and ti;
}
for each destination DataSite di’
Generation_Testing_Case(di’);
}
P是端口事件的集合,可以理解为发送的消息调用和行为的输入输出;D是数据地点的集合,可以理解为EFSM模型中的状态;S是转移的集合,可以解释为行为;In是(P∪D)×S的有序对偶集合,Out是S×(P∪D)的有序对偶集合,In和Out定义的S中的转移输入输出到端口事件地点P和数据地点D。S中的若干转移构成转移序列,在测试过程中,总能够通过转移的输入和输出,构造输入和输出测试序列为每个数据地点设计一个输入元素di∈D,di≠d(0d0为初始标记),作为一个唯一输入输出MUIOSi的消息预测序列,执行时,d1被初始化,如果事件t1发生,s1允许发生,s1被触发,状态被转移到地点di对应地点,如果有输出端口事件地点,则产生相应的输出。
下面结合附图,对本发明的实施例二进行说明。
本发明实施例提供了一种测试用例生成装置,该装置的结构如图2所示,包括:
预测消息序列确定模块201,用于分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列;
第一测试用例生成模块202,用于将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例;
转换模块203,用于将所述测试用例的UML状态图转换为EDPN图;
第二测试用例生成模块204,用于运行所述EDPN图,生成最终测试用例。
优选的,所述转换模块203的结构如图3所示,包括:
第一转换单元2031,用于将所述UML状态图的团点转换为EDPN图的数据地点;
第二转换单元2032,用于将所述UML状态图的状态转换为EDPN图的EDPN转移;
第三转换单元2033,用于将所述UML状态图中与状态转移关联的输出转换为EDPN图的端口输入事件地点;
第四转换单元2034,用于对照测试的类,设计所述EDPN图的样本场景标记。
本发明的实施例提供的测试用例生成装置,能够与本发明的实施例所提供的测试用例生成方法相结合,分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列,将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例,将所述测试用例的UML状态图转换为EDPN图,运行所述EDPN图,生成最终测试用例。实现了测试用例的自动生成,解决了测试用例自动生成技术无法满足当前软件测试的实际需要的问题。
本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如***、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。
上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。
任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
Claims (7)
1.一种测试用例生成方法,其特征在于,包括:
分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列;
将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例;
将所述测试用例的UML状态图转换为EDPN图;
运行所述EDPN图,生成最终测试用例。
2.根据权利要求1所述的测试用例生成方法,其特征在于,分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列具体为:
使用UIO序列方法分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列。
3.根据权利要求1所述的测试用例生成方法,其特征在于,将所述测试用例的UML状态图转换为EDPN图包括:
将所述UML状态图的团点转换为EDPN图的数据地点;
将所述UML状态图的状态转换为EDPN图的EDPN转移;
将所述UML状态图中与状态转移关联的输出转换为EDPN图的端口输入事件地点;
对照测试的类,设计所述EDPN图的样本场景标记。
4.根据权利要求1所述的测试用例生成方法,其特征在于,运行所述EDPN图,生成最终测试用例包括:
当触发一个转移时,从该转移的每个输入地点分别删除一个标记,且在该转移的每个输出地点增加一个标记。
5.根据权利要求4所述的测试用例生成方法,其特征在于,被触发的转移的所有输入地点包含一个以上的标记。
6.一种测试用例生成装置,其特征在于,包括:
预测消息序列确定模块,用于分别确定状态集中各个不同于初始状态的非初始状态的唯一输入输出序列,以所述唯一输入输出序列作为对应的非初始状态的预测消息序列;
第一测试用例生成模块,用于将每一个所述非初始状态的预测消息序列置后,测试消息序列置前,组成的新的序列作为测试用例;
转换模块,用于将所述测试用例的UML状态图转换为EDPN图;
第二测试用例生成模块,用于运行所述EDPN图,生成最终测试用例。
7.根据权利要求6所述的测试用例生成装置,其特征在于,所述转换模块包括:
第一转换单元,用于将所述UML状态图的团点转换为EDPN图的数据地点;
第二转换单元,用于将所述UML状态图的状态转换为EDPN图的EDPN转移;
第三转换单元,用于将所述UML状态图中与状态转移关联的输出转换为EDPN图的端口输入事件地点;
第四转换单元,用于对照测试的类,设计所述EDPN图的样本场景标记。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510012704.5A CN104657261A (zh) | 2015-01-09 | 2015-01-09 | 测试用例生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510012704.5A CN104657261A (zh) | 2015-01-09 | 2015-01-09 | 测试用例生成方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104657261A true CN104657261A (zh) | 2015-05-27 |
Family
ID=53248428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510012704.5A Pending CN104657261A (zh) | 2015-01-09 | 2015-01-09 | 测试用例生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657261A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346128A (zh) * | 2016-05-04 | 2017-11-14 | 深圳市祈飞科技有限公司 | 用于锁控板的自动化测试方法和*** |
CN108427632A (zh) * | 2017-02-14 | 2018-08-21 | 腾讯科技(深圳)有限公司 | 自动测试方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464797A (zh) * | 2008-12-09 | 2009-06-24 | 北京星网锐捷网络技术有限公司 | 基于统一建模语言活动图自动生成测试用例的方法及*** |
US20120198280A1 (en) * | 2011-01-28 | 2012-08-02 | International Business Machines Corporation | Test cases generation for different test types |
-
2015
- 2015-01-09 CN CN201510012704.5A patent/CN104657261A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464797A (zh) * | 2008-12-09 | 2009-06-24 | 北京星网锐捷网络技术有限公司 | 基于统一建模语言活动图自动生成测试用例的方法及*** |
US20120198280A1 (en) * | 2011-01-28 | 2012-08-02 | International Business Machines Corporation | Test cases generation for different test types |
Non-Patent Citations (1)
Title |
---|
龚红仿等: "基于EDPN的类测试框架及测试用例生成技术的研究", 《计算机科学》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346128A (zh) * | 2016-05-04 | 2017-11-14 | 深圳市祈飞科技有限公司 | 用于锁控板的自动化测试方法和*** |
CN108427632A (zh) * | 2017-02-14 | 2018-08-21 | 腾讯科技(深圳)有限公司 | 自动测试方法及装置 |
CN108427632B (zh) * | 2017-02-14 | 2021-12-31 | 腾讯科技(深圳)有限公司 | 自动测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100468356C (zh) | 通过属性控制的测试实例继承 | |
WO2016197768A1 (zh) | 芯片验证方法、装置及*** | |
CN100544292C (zh) | 一种宽带接入服务器自动化测试的方法 | |
CN103092751B (zh) | 一种云环境下基于用户行为模型的web应用性能测试*** | |
CN101019102A (zh) | 使用一个或多个自动机的***验证 | |
CN103501308A (zh) | 分布式云应用部署***和/或相关的方法 | |
CN106844213A (zh) | 一种前端自动化测试方法及装置 | |
CN104298512B (zh) | 一种基于OSGi标准的功能组件式集成开发*** | |
CN103186466A (zh) | 基于关联测试用例自动生成的信息交互测试装置及方法 | |
CN114327861B (zh) | 执行eda任务的方法、装置、***和存储介质 | |
EP3185027A1 (en) | Information processing method and device and computer storage medium | |
CN105302717A (zh) | 一种大数据平台的检测方法及装置 | |
CN110489086A (zh) | 流程执行控制方法、装置、计算机设备及存储介质 | |
CN108121657A (zh) | 基于***模型的可编程逻辑器件软件仿真验证*** | |
CN105589928A (zh) | 用于分布式数据处理***的模拟测试方法 | |
CN103049374B (zh) | 一种自动化测试的方法及装置 | |
Barbierato et al. | Exploiting multiformalism models for testing and performance evaluation in SIMTHESys | |
CN103135989B (zh) | 一种回调函数代码生成方法及装置 | |
CN104657261A (zh) | 测试用例生成方法和装置 | |
CN101986282A (zh) | 拓扑适配方法及装置 | |
CN102004660A (zh) | 一种业务流程的实现方法及装置 | |
CN103927244A (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN104142833A (zh) | 封装测试生产线的设备动态管理方法 | |
CN102298112A (zh) | 一种可编程逻辑器件的测试方法及*** | |
CN102928689A (zh) | 配电管理***iec61970cis接口测试方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150527 |