CN107608882A - 一种软件测试用例自动生成方法 - Google Patents
一种软件测试用例自动生成方法 Download PDFInfo
- Publication number
- CN107608882A CN107608882A CN201710803077.6A CN201710803077A CN107608882A CN 107608882 A CN107608882 A CN 107608882A CN 201710803077 A CN201710803077 A CN 201710803077A CN 107608882 A CN107608882 A CN 107608882A
- Authority
- CN
- China
- Prior art keywords
- node
- test case
- node number
- layer
- parameter
- 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
Abstract
本发明涉及一种软件测试用例自动生成方法,属于软件测试技术领域。本发明提出一种软件测试用例自动生成方法,该方法通过对软件接口参数进行组合覆盖测试,用最少的测试用例满足软件测试覆盖性,提高了设计和生成测试用例的效率,从而有效的提升了软件的测试效率和保证软件测试质量。
Description
技术领域
本发明涉及软件测试技术领域,具体涉及一种软件测试用例自动生成方法。
背景技术
软件测试用例的选择与生成技术是软件测试中的一个重要的环节,在软件测试中占很大比重。软件测试用例的生成包含选定被测任务、分析输入数据、确定其取值并分析对应的输出数据。测试用例选取的一个中心原则,就是以用最少的测试用例找到尽可能多的错误。如果该过程能自动实现,则会极大地减少软件开发的周期和费用。
当前测试用例的生成主要靠手工完成,而且要求软件测试人员具有一定的经验和较高的专业水平。因而,测试过程往往带有很大盲目性,致使测试效率低下,软件成本居高不下,软件质量也很难保证。此外,软件测试工具在测试数据自动生成上虽有所涉及,但更多情况还是由人工研究被测应用程序的每个模块,然后赋值合适的测试数据。这样的工作量极大,还存在数据不够完整充足,或者有些测试工具采用随机算法生成大量测试数据,这样的方式会带来冗余数据等问题,仍不能准确高效地对模块进行测试。
为提高软件测试的质量,降低软件测试成本和测试人员的工作量,提高软件测试效率,需要设计一种软件测试用例自动生成方法。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提高设计和生成测试用例的效率。
(二)技术方案
为了解决上述技术问题,本发明提供了一种软件测试用例自动生成方法,假设软件系统的接口参数个数为n,每个参数ci的取值个数为ti,i=1,2,…,n,且t1≥t2≥…≥tn,n为正整数,构造一个网络,该网络的层数表示接口参数的个数,即网络层数为n,网络的其中一层上的节点个数表示其中一个接口参数的取值个数,节点号表示接口参数的取值序号;从其中一层的第一个节点,即网络的起点出发沿着节点间的路径向前探索,直到网络的终点,形成一条路径,路径上的节点号串表示一条测试用例;
测试用例节点序列的生成顺序为:按网络层次从左到右,每一层从上到下的顺序逐个节点执行,测试用例按照如下步骤自动生成:
步骤1:第1层的每个节点沿着路径按下一层节点号递增的次序给下一层每个节点发送自己的节点号;
步骤2:第2层每个节点每接收到一个节点号,就将自己的节点号追加在这个节点号的后面,形成一个节点号串,并按照接收的顺序将其保存;
步骤3:从第2层的每个节点开始按照如下方法向下一层每个节点发送该节点内形成的节点号,把第i层的第j号节点内的第1个组装好的节点号串,按照j,j+1,…,ti+1,1,2,…,j-1的顺序与其它第i层节点内已经收到的每个节点号串进行比较,如果前面i个位置的相同位置上每有一个节点号串相同,则将该节点的计数器加1;然后从第i层第j个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k,将节点k的节点号追加在节点j的节点号后面;i≥2,1≤j≤ti;计数器初始值为0;
将把第i层的第j+1号节点内的第2个组装好的节点号串,按照k+1,k+2,…,ti+1,1,2,…,k的顺序,从第k+1号节点开始,与其它第i层节点内已经收到的每个节点号串进行比较,如果第i个位置上的节点号串相同,则将该节点的计数器加1;然后从第i层第k个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k,将节点k的节点号追加在节点j+1的节点号后面;依次类推,直到第i+1层下所有节点号都分别追加在第i层下所有节点号后面;1≤k≤ti;
步骤4:按照步骤3的方法,在上述网络中的每一行节点构成了一组节点号串,一组节点号串表示一条测试用例。
优选地,在步骤4之后还包括:
步骤5:在基于节点号串生成的测试用例中,检查任意两个接口参数的节点号是否被生成的测试用例所覆盖,如果全部覆盖,则输出所有的节点号串作为最终生成的测试用例表,测试用例生成工作完成;否则,输出所有遗漏的接口参数组合项,形成一张遗漏项表,该表的每一列表示接口参数的任意两种组合,每一行表示遗漏项的编号,执行步骤6;
步骤6:从遗漏项表中找出一个遗漏项,产生一个测试用例,使其在相应的参数位置填上相应参数的节点号,其它参数位置上标记为空缺,并从遗漏项表中去掉该遗漏项;
步骤7:分别以步骤6产生的测试用例确定的参数节点号为中心,查找遗漏表,找出相关遗漏项,将参数的节点号填在相应的空缺位置,并将表中的相应的遗漏项删掉;
步骤8:以新填入的参数节点号为中心,执行步骤7相同的搜索,直到步骤6产生的测试用例的各个参数位置没有空缺标记或者从表中找不到相关遗漏项为止;
步骤9:输出步骤6产生的测试用例,若表中还有遗漏项,则返回步骤6;否则,测试用例全部生成完毕。
优选地,若所述节点号串为1-3-2-4,则表示第1个参数取第1个值,第2个参数取第3个值,第3个参数取第2个值,第4个参数取第4个值。
(三)有益效果
本发明提出一种软件测试用例自动生成方法,该方法通过对软件接口参数进行组合覆盖测试,用最少的测试用例满足软件测试覆盖性,提高了设计和生成测试用例的效率,从而有效的提升了软件的测试效率和保证软件测试质量。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。
为了降低软件测试人员工作量,降低软件测试成本,提高软件测试的质量和效率,本文提出了一种软件测试用例自动生成方法。该方法基于对系统各个接口参数进行两两组合全面覆盖的原则来选择测试用例,以最少的测试用例实现对各个接口参数的各种组合进行最大限度的覆盖。
本发明基于参数个数和参数取值个数设计了一种测试用例自动生成方法。首先进行如下定义:
假设某软件系统的接口参数个数为n,每个参数ci的取值个数为ti,i=1,2,…,n,且t1≥t2≥…≥tn,n为正整数。构造一个网络,该网络的层数表示接口参数的个数,即网络层数为n,网络的某一层上的节点个数表示某个接口参数的取值个数,节点号表示接口参数的取值序号。从某一层的第一个节点(网络的起点)出发沿着节点间的路径向前探索,直到网络的终点,形成一条路径,路径上的节点号串就表示一条测试用例。比如,1-3-2-4,表示第1个参数取第1个值,第2个参数取第3个值,第3个参数取第2个值,第4个参数取第4个值。
本发明的测试用例节点序列的生成顺序为:按网络层次从左到右,每一层从上到下的顺序逐个节点执行。测试用例按照如下步骤自动生成:
步骤1:第1层的每个节点沿着路径按下一层节点号递增的次序给下一层每个节点发送自己的节点号;
步骤2:第2层每个节点每接收到一个节点号,就将自己的节点号追加在这个节点号的后面,形成一个节点号串,并按照接收的顺序将其保存;
步骤3:从第2层的每个节点开始按照如下方法向下一层每个节点发送该节点内形成的节点号。把第i层(i≥2)的第j号节点(1≤j≤ti)内的第1个组装好的节点号串,按照j,j+1,…,ti+1,1,2,…,j-1的顺序与其它第i层节点内已经收到的每个节点号串进行比较,如果前面i个位置的相同位置上每有一个节点号串相同,则将该节点的计数器加1(计数器每次初始值为0)。然后从第i层第j个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k(1≤k≤ti),将节点k的节点号追加在节点j的节点号后面;
将把第i层(i≥2)的第j+1号节点(1≤j≤ti)内的第2个组装好的节点号串,按照k+1,k+2,…,ti+1,1,2,…,k的顺序,从第k+1号节点开始,与其它第i层节点内已经收到的每个节点号串进行比较,如果第i个位置上的节点号串相同,则将该节点的计数器加1(计数器每次初始值为0)。然后从第i层第k个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k(1≤k≤ti),将节点k的节点号追加在节点j+1的节点号后面;依次类推,直到第i+1层下所有节点号都分别追加在第i层下所有节点号后面;
步骤4:按照步骤3的方法,在上述网络中的每一行节点构成了一组节点号串,一组节点号串表示一条测试用例。至此,初步生成了基于接口参数个数和参数取值个数的多个测试用例;
步骤5:在上述基于节点号串生成的测试用例中,检查任意两个接口参数的节点号是否被生成的测试用例所覆盖,如果全部覆盖,则输出所有的节点号串作为最终生成的测试用例表,测试用例生成工作完成;否则,输出所有遗漏的接口参数组合项,形成一张遗漏项表,该表的每一列表示接口参数的任意两种组合,每一行表示遗漏项的编号,执行步骤6;
步骤6:从遗漏项表中找出一个遗漏项,产生一个测试用例,使其在相应的参数位置填上相应参数的节点号,其它参数位置上标记为空缺,并从遗漏项表中去掉该遗漏项;
步骤7:分别以步骤6产生的测试用例确定的参数节点号为中心,查找遗漏表,找出相关遗漏项,将参数的节点号填在相应的空缺位置,并将表中的相应的遗漏项删掉;
步骤8:以新填入的参数节点号为中心,执行步骤7相同的搜索,直到步骤6产生的测试用例的各个参数位置没有空缺标记或者从表中找不到相关遗漏项为止;
步骤9:输出步骤6产生的测试用例,若表中还有遗漏项,则返回步骤6;否则,测试用例全部生成完毕。
可以看出,本发明提出的一种基于对系统各个接口参数进行两两组合全面覆盖的原则来选择测试用例的方法,充分考虑了被测软件所有接口参数的各种取值和各种取值组合可能对系统产生的影响,以最少的测试用例实现对各个接口参数的各种组合进行最大限度的覆盖。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (3)
1.一种软件测试用例自动生成方法,其特征在于,假设软件系统的接口参数个数为n,每个参数ci的取值个数为ti,i=1,2,…,n,且t1≥t2≥…≥tn,n为正整数,构造一个网络,该网络的层数表示接口参数的个数,即网络层数为n,网络的其中一层上的节点个数表示其中一个接口参数的取值个数,节点号表示接口参数的取值序号;从其中一层的第一个节点,即网络的起点出发沿着节点间的路径向前探索,直到网络的终点,形成一条路径,路径上的节点号串表示一条测试用例;
测试用例节点序列的生成顺序为:按网络层次从左到右,每一层从上到下的顺序逐个节点执行,测试用例按照如下步骤自动生成:
步骤1:第1层的每个节点沿着路径按下一层节点号递增的次序给下一层每个节点发送自己的节点号;
步骤2:第2层每个节点每接收到一个节点号,就将自己的节点号追加在这个节点号的后面,形成一个节点号串,并按照接收的顺序将其保存;
步骤3:从第2层的每个节点开始按照如下方法向下一层每个节点发送该节点内形成的节点号,把第i层的第j号节点内的第1个组装好的节点号串,按照j,j+1,…,ti+1,1,2,…,j-1的顺序与其它第i层节点内已经收到的每个节点号串进行比较,如果前面i个位置的相同位置上每有一个节点号串相同,则将该节点的计数器加1;然后从第i层第j个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k,将节点k的节点号追加在节点j的节点号后面;i≥2,1≤j≤ti;计数器初始值为0;
将把第i层的第j+1号节点内的第2个组装好的节点号串,按照k+1,k+2,…,ti+1,1,2,…,k的顺序,从第k+1号节点开始,与其它第i层节点内已经收到的每个节点号串进行比较,如果第i个位置上的节点号串相同,则将该节点的计数器加1;然后从第i层第k个节点开始遍历,找到该层第一个遇到的节点计数器值最小的节点号k,将节点k的节点号追加在节点j+1的节点号后面;依次类推,直到第i+1层下所有节点号都分别追加在第i层下所有节点号后面;1≤k≤ti;
步骤4:按照步骤3的方法,在上述网络中的每一行节点构成了一组节点号串,一组节点号串表示一条测试用例。
2.如权利要求1所述的方法,其特征在于,在步骤4之后还包括:
步骤5:在基于节点号串生成的测试用例中,检查任意两个接口参数的节点号是否被生成的测试用例所覆盖,如果全部覆盖,则输出所有的节点号串作为最终生成的测试用例表,测试用例生成工作完成;否则,输出所有遗漏的接口参数组合项,形成一张遗漏项表,该表的每一列表示接口参数的任意两种组合,每一行表示遗漏项的编号,执行步骤6;
步骤6:从遗漏项表中找出一个遗漏项,产生一个测试用例,使其在相应的参数位置填上相应参数的节点号,其它参数位置上标记为空缺,并从遗漏项表中去掉该遗漏项;
步骤7:分别以步骤6产生的测试用例确定的参数节点号为中心,查找遗漏表,找出相关遗漏项,将参数的节点号填在相应的空缺位置,并将表中的相应的遗漏项删掉;
步骤8:以新填入的参数节点号为中心,执行步骤7相同的搜索,直到步骤6产生的测试用例的各个参数位置没有空缺标记或者从表中找不到相关遗漏项为止;
步骤9:输出步骤6产生的测试用例,若表中还有遗漏项,则返回步骤6;否则,测试用例全部生成完毕。
3.如权利要求1或2所述的方法,其特征在于,若所述节点号串为1-3-2-4,则表示第1个参数取第1个值,第2个参数取第3个值,第3个参数取第2个值,第4个参数取第4个值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710803077.6A CN107608882A (zh) | 2017-09-08 | 2017-09-08 | 一种软件测试用例自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710803077.6A CN107608882A (zh) | 2017-09-08 | 2017-09-08 | 一种软件测试用例自动生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107608882A true CN107608882A (zh) | 2018-01-19 |
Family
ID=61063110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710803077.6A Pending CN107608882A (zh) | 2017-09-08 | 2017-09-08 | 一种软件测试用例自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107608882A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073519A (zh) * | 2018-01-31 | 2018-05-25 | 百度在线网络技术(北京)有限公司 | 测试用例生成方法和装置 |
CN109857667A (zh) * | 2019-02-03 | 2019-06-07 | 苏州市龙测智能科技有限公司 | 接口自动化测试方法、测试装置、测试设备及存储介质 |
CN111949505A (zh) * | 2019-05-14 | 2020-11-17 | 阿里巴巴集团控股有限公司 | 一种测试方法、装置及设备 |
CN112100071A (zh) * | 2020-09-16 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 测试用例生成方法、装置、计算机设备和存储介质 |
CN111949505B (zh) * | 2019-05-14 | 2024-05-14 | 阿里云计算有限公司 | 一种测试方法、装置及设备 |
-
2017
- 2017-09-08 CN CN201710803077.6A patent/CN107608882A/zh active Pending
Non-Patent Citations (1)
Title |
---|
聂长海等: "基于接口参数的黑箱测试用例自动生成算法", 《计算机学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073519A (zh) * | 2018-01-31 | 2018-05-25 | 百度在线网络技术(北京)有限公司 | 测试用例生成方法和装置 |
CN109857667A (zh) * | 2019-02-03 | 2019-06-07 | 苏州市龙测智能科技有限公司 | 接口自动化测试方法、测试装置、测试设备及存储介质 |
CN109857667B (zh) * | 2019-02-03 | 2021-10-08 | 苏州市龙测智能科技有限公司 | 接口自动化测试方法、测试装置、测试设备及存储介质 |
CN111949505A (zh) * | 2019-05-14 | 2020-11-17 | 阿里巴巴集团控股有限公司 | 一种测试方法、装置及设备 |
CN111949505B (zh) * | 2019-05-14 | 2024-05-14 | 阿里云计算有限公司 | 一种测试方法、装置及设备 |
CN112100071A (zh) * | 2020-09-16 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 测试用例生成方法、装置、计算机设备和存储介质 |
CN112100071B (zh) * | 2020-09-16 | 2022-03-18 | 腾讯科技(深圳)有限公司 | 测试用例生成方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608882A (zh) | 一种软件测试用例自动生成方法 | |
CN104794057B (zh) | 一种交叉事件自动化测试方法和装置 | |
CN103870381B (zh) | 一种测试数据生成方法及装置 | |
CN105868106B (zh) | 超声设备可靠性的测试方法及测试系统 | |
CN105373478B (zh) | 自动化测试方法和系统 | |
CN103488562B (zh) | 自动化测试方法和装置 | |
Khan et al. | Review of requirements management issues in software development | |
CN109765447A (zh) | 一种智能变电站继电保护自动测试方法 | |
CN106951368A (zh) | 基于uml时序图的测试用例自动生成方法 | |
CN105629156A (zh) | 基于遗传规划的模拟电路故障测试最优序贯搜索方法 | |
CN105045574A (zh) | 一种基于复杂网络故障传播的软件关键函数辨识方法 | |
CN109739759A (zh) | 一种验证黑盒测试用例设计完整性的方法 | |
CN106452825A (zh) | 一种基于改进决策树的配用电通信网告警关联分析方法 | |
CN110362562A (zh) | 大数据抽取样本数据的方法及系统 | |
CN106250631A (zh) | 一种基于故障‑测试相关矩阵的故障诊断方法 | |
CN101197734B (zh) | 命令行接口的测试方法及装置 | |
CN111709244A (zh) | 一种用于矛盾纠纷事件因果关系识别的深度学习方法 | |
CN106339366A (zh) | 基于人工智能的需求识别的方法和装置 | |
CN103617119B (zh) | 基于语句交互覆盖的回归测试用例选择方法 | |
CN101471826A (zh) | 命令行接口的测试方法及装置 | |
CN110007662A (zh) | 自主保障技术验证系统全飞行器健康评估与管理地面推理平台 | |
CN108334452A (zh) | 规则数据移交测试方法、装置、计算机设备和存储介质 | |
Guo | Towards automated software testing with generative adversarial networks | |
CN103729297A (zh) | 一种基于分层遗传算法的测试用例生成方法 | |
Kinfack et al. | Trade linkages and business cycle co-movement: An empirical analysis of Africa and its main trading partners using Global VAR |
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: 20180119 |