CN104035873A - 测试代码生成方法及生成装置 - Google Patents
测试代码生成方法及生成装置 Download PDFInfo
- Publication number
- CN104035873A CN104035873A CN201410304374.2A CN201410304374A CN104035873A CN 104035873 A CN104035873 A CN 104035873A CN 201410304374 A CN201410304374 A CN 201410304374A CN 104035873 A CN104035873 A CN 104035873A
- Authority
- CN
- China
- Prior art keywords
- code
- test
- test code
- template
- original
- 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
本发明公开了一种测试代码生成方法及生成装置,所述方法包括:解析被测软件的测试脚本,提取所述测试脚本中包含的变量信息;以及根据被测软件的测试类别和原始测试代码的编程语言将所述原始测试代码进行分类,提取并标记每一类所述原始测试代码中的差异代码部,并与所述原始测试代码中的通用代码部形成该类原始测试代码的代码模板;加载所述测试脚本的所述变量信息及相对应的所述代码模板,根据设定规则将所述代码模板中标记的差异代码部用所述变量信息替换,生成测试代码。利用本发明提供的方法和装置,可以解决现有技术无法同时具备既有编程语言的灵活性又有自动化测试框架的易用性的问题。
Description
技术领域
本发明涉及软件测试技术领域,具体地说,是涉及软件测试用测试代码技术,更具体地说,是涉及测试代码的生成方法及生成装置。
背景技术
随着软件系统的快速发展,具有软件系统的软件产品的功能越来越丰富,软件系统中的软件数量越来越多,对软件测试的挑战也越来越大,越来越多的研发团队在考虑对软件产品进行自动化测试,以提高测试效率。
目前,软件产品的软件自动化测试主要有下述两种应用形态:
其一,直接利用软件系统提供的测试工具编写自动化测试代码来执行自动化测试。例如,利用Android提供的测试工具MonkeyRunner或UIAutomator等编写自动化测试代码。这种方法需要手工编写测试代码,如果测试人员的编码水平有限,则很难跨越自动化测试的门槛,自动化测试项目就很难进行。即使是有代码编写经验的测试工程师,写出的测试代码也有很强烈的个人风格,可读性不强,维护起来成本高昂。
其二,在测试工具的基础上进行封装,二次开发出基于XML(Extensive Makeup Language,可扩展标示语言)测试脚本的自动化测试框架。封装后的测试框架上手比较容易,开发效率也较高,降低了自动化测试的门槛,提高了自动化测试的效率。但是,由于封装工具的固化,部分测试接口无法封装,不能充分利用现有的全部测试接口。而且,由于测试框架的固化,适用性受到局限,例如在面对复杂自动化测试场景时,基于XML的测试脚本不支持某个功能的测试,因此无法使用该测试框架进行测试,不如直接编写测试代码灵活。
综上所述,现有技术下的软件自动化测试方法无法同时具备既有编程语言的灵活性又有自动化测试框架的易用性,利用现有测试技术无法让测试人员高效、快速地完成比较复杂的测试任务。
发明内容
本发明的目的是提供一种测试代码生成方法及生成装置,解决现有技术无法同时具备既有编程语言的灵活性又有自动化测试框架的易用性的问题。
为实现上述发明目的,本发明提供的测试代码生成方法采用下述技术方案予以实现:
一种测试代码生成方法,所述方法包括:
解析被测软件的测试脚本,提取所述测试脚本中包含的变量信息;以及根据被测软件的测试类别和原始测试代码的编程语言将所述原始测试代码进行分类,提取并标记每一类所述原始测试代码中的差异代码部,并与所述原始测试代码中的通用代码部形成该类原始测试代码的代码模板;
加载所述测试脚本的所述变量信息及相对应的所述代码模板,根据设定规则将所述代码模板中标记的差异代码部用所述变量信息替换,生成测试代码。
为实现前述发明目的,本发明提供的测试装置采用下述技术方案来实现:
一种测试代码生成装置,所述装置包括:
测试脚本解析及变量信息提取单元,用于解析被测软件的所述测试脚本,并提取所述测试脚本中包含的变量信息;
代码模板创建单元,用于根据被测软件的测试类别和测试代码的编程语言将测试代码进行分类,提取并标记每一类所述原始测试代码中的差异代码部,并与所述原始测试代码中的通用代码部形成该类原始测试代码的代码模板;
测试代码生成单元,用于加载所述测试脚本的所述变量信息及相对应的所述代码模板,并根据设定规则将所述代码模板中标记的差异代码部用所述变量信息替换,生成测试代码。
与现有技术相比,本发明的优点和积极效果是:本发明在生成测试代码时,先创建代码模板,然后将代码模板与测试脚本中的变量信息融合而生成测试代码。因此,所生成的测试代码基于测试脚本及通用的代码模板,具有自动化测试框架的易用性;而又由于代码模板是通过采用java等编程语言编写的原始测试代码而生成的,具有编程语言的灵活性,当在面对复杂场景时,可对测试代码进行修改,以更好地适应场景。
结合附图阅读本发明的具体实施方式后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明测试代码生成方法第一个实施例的流程图;
图2是本发明测试代码生成方法第二个实施例的流程图;
图3是本发明测试代码生成方法第三个实施例的流程图;
图4是本发明测试代码生成装置第一个实施例的结构框图;
图5是本发明测试代码生成装置第二个实施例的结构框图;
图6是本发明测试代码生成装置第三个实施例的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下将结合附图和实施例,对本发明作进一步详细说明。
首先,简要说明本发明生成测试代码的技术思路:
本发明的发明人考虑到,在编写被测软件的原始测试代码的时候,每个测试步骤对应的测试代码是一个最小的基本单元,它应该执行单一的测试操作步骤,验证步骤是否执行成功并输出步骤执行信息等。具体来说,一个测试步骤一般会包括:
定位对象部分:用于定位界面的控件视图等。
执行动作部分:用于对定位到的对象执行的动作操作。执行动作还包含数据,比如对于输入操作需要包含要输入的信息数据。
步骤验证点部分:用于在步骤执行完毕对步骤的期望结果进行验证。比如,界面上是否出现了新的元素。此部分属于可选部分,对于比较稳定的某些步骤,可以不加该步骤验证点部分。
步骤结果统计部分:用于在步骤执行完毕把步骤的执行成败信息记录下来。
原始测试代码的测试步骤方法的示例代码片段如下所示,它包含上述的几个组成部分:
· // Step1 this is comment 1
·private void Step1_ ClickAppsByDesc () {
· UiObject uiObject = null;
· try {
· //~~~~~~~~~~~~~~~~~~~定位对象部分~~~~~~~~~~~~~~~~~~~
· uiObject = uiOper.getUiObjectByDescription("Apps");
·//~~~~~~~~~~~~~~~~~~~执行动作部分~~~~~~~~~~~~~~~~~~~
· if (uiObject != null) {
· uiObject.clickAndWaitForNewWindow();
· } else {
· error("NoObjectFound_Step1_ ClickAppsByDesc ");
· }
·//~~~~~~~~~~~~~~~~~~~步骤验证点部分~~~~~~~~~~~~~~~~~~~
· assertFalseCustom("This object shouldn't be scrollable",uiObject.isScrollable());
· } catch (UiObjectNotFoundException e) {
· error("Step1_ClickAllAppsFromHome");
· e.printStackTrace();
· }
·//步骤的结果统计部分
CollectResult();
·}
通过观察上述原始测试代码,可以看出,原始测试代码具有通用代码部和差异代码部,其中差异代码部是指设置不同的参数值就可使该测试步骤执行不同的操作,得到不同的结果。比如对于定位对象部分,示例代码中使用的Description("Apps")属于差异代码部,而定位对象部分的其余程序语句属于通用代码部。由此,本发明的发明人考虑到可以基于原始测试代码维护一套代码模板,在该代码模板中,原始测试代码的通用代码部保存不变,而把差异代码部进行标记。通过利用测试脚本的测试框架维护测试脚本,并通过解析测试脚本,可以得到测试脚本包含的变量信息,进一步把得到的变量信息与代码模板进行融合,用变量信息替换代码模板中的标记的差异代码部,即可以得到期望的测试代码。不同的测试脚本由于配置信息不一样,这样就可以得到不同的测试代码。如此一来,测试代码基于代码模板及测试脚本生成,因此可读性强,具有自动化测试框架的简单易用特性;且代码模板又基于原始测试代码生成,能够根据需要进行修改,具有编程语言的灵活性,进而可以利用生成的测试代码高效、灵活地对软件执行自动化测试。
请参见图1,该图示出了本发明测试代码生成方法第一个实施例的流程图。
具体来说,如图1所示,该实施例采用下述步骤生成测试代码:
步骤101:解析被测软件的测试脚本,提取其中的变量信息,并创建代码模板。
该实施例的测试代码生成方法基于被测软件的测试脚本,这样,可以充分利用成熟的测试脚本测试框架,方便软件测试人员编写测试程序,提高测试效率。测试脚本可以是现有软件测试领域能够应用的所有测试脚本,优选采用XML格式的测试脚本。以XML格式的测试脚本为例,测试人员通过人机交互界面输入测试步骤的执行信息,实现对测试信息的配置。测试步骤的步骤执行信息可以包括:步骤编号(index)、步骤名称(name)、步骤注释(comment),步骤定位部分,步骤执行动作部分和验证点部分等等。各测试步骤的相关信息能够按预定格式生成测试脚本。配置信息不同,会产生不同的XML测试脚本。
获得测试脚本后,通过解析测试脚本,可以提取出其中的变量信息。此处的变量信息,包括测试用例、测试步骤信息等,这些信息均可通过对测试脚本进行解析而提取出来。除此之外,如果在生成测试脚本的过程中设置了指定代码模板信息,解析测试脚本后也会获得该指定代码模板信息。
此外,还需要创建代码模板。具体而言,结合前述本发明的技术思路,代码模板可以采用下述方法来创建:
代码模板基于原始测试代码,其中,原始测试代码是指由软件开发人员采用特定的编程语言所编写的最初的测试代码。由于需要提取原始测试代码中的通用代码部和差异代码部,考虑到不同编程语言对应的测试代码的差异性较大,而不同测试类别的测试代码差异也很大,为提高代码模板的通用性和概括性,首先根据被测软件的测试类别和测试代码的编程语言将测试代码进行分类。然后,提取每一类测试代码中所包含的原始测试代码的差异代码部,并对该差异代码部进行标记,并与原始测试代码中的通用代码部生成该类原始测试代码的代码模板。每类原始测试代码对应一个代码模板,多类原始测试代码将获得多个代码模板。
代码模板不同,不同的测试脚本变量信息对应着不同的代码模板,在生成测试代码时,需要根据测试脚本变量信息提取相应的代码模板。由于代码模板是基于编程语言和测试类别来区分的,在测试脚本生成的过程中可以方便地获取到所用的编程语言及测试脚本对应的测试类别。因此,不难从多个代码模板中获得测试脚本信息所对应的代码模板。
为进一步简化获取对应代码模板的过程,提高测试效率,还可以在配置测试步骤信息时直接配置指定代码模板信息。这样在解析测试脚本后,将获得该指定代码模板信息,根据该信息直接调取对应的代码模板即可。
需要说明的是,代码模板一般是预先创建好并已经存储的,在每次生成测试代码时,解析测试脚本的过程均需要重新执行,而代码模板创建过程不必每次都执行,而仅需要从创建好的代码模板中直接调取使用即可。
步骤102:加载变量信息及相对应的代码模板,生成测试代码。
加载提取出的测试脚本的变量信息及其相对应的代码模板,然后,根据设定规则,将代码模板中标记的差异代码部用变量信息中的对应信息替换,从而,生成所需的测试代码。比如,将测试脚本变量信息中的属性信息和代码模板中标记的属性差异代码部进行关联,并用变量信息中的属性信息替换代码模板中的属性差异代码部。在能够替换的信息替换完成后,将与通用代码部共同生成新的测试代码。
生成的测试代码可以用来执行软件测试。软件测试的具体测试过程、测试结果收集、测试报表生成等过程与现有技术类似,在此不作具体阐述。
在该实施例中,测试代码基于代码模板及测试脚本生成,因此可读性强,具有自动化测试框架的简单易用特性;且代码模板又基于原始测试代码生成,能够根据需要进行修改,具有编程语言的灵活性,进而可以利用生成的测试代码高效、灵活地对软件执行自动化测试。
请参见图2,该图所示为本发明测试代码生成方法第二个实施例的流程图。
如图2所示,该实施例生成测试代码的具体过程如下:
步骤201:解析被测软件的测试脚本,提取其中的变量信息,并创建代码模板。
该步骤的具体实现过程可参考图1步骤101的描述。而且,与图1第一个实施例类似的,该第二个实施例的测试方法也基于被测软件的测试脚本,优选采用XML格式的测试脚本。此外,与图1第一个实施例不同的是,在创建代码模板时,差异代码部用设定格式替换,实现对差异代码部的标记。具体来说,设定格式中包括有变量名,可以用变量名对差异代码部进行标记。
所述变量信息包括变量名和变量值,下面给出了一个具体的XML格式的测试脚本片段示例:
<STEP index="1" name="ClickAppsByDesc" comment="this is comment 1">
<LocationSettings type="Description">
<ARGUMENT value="Apps"/>
</LocationSettings>
<ActionSettings method="clickAndWaitForNewWindow">
</ActionSettings>
<VerifyPointSettings>
<VERIFY type="assertFalse" message="This object shouldn't be scrollable">
<METHOD>isScrollable</METHOD>
</VERIFY>
</VerifyPointSettings>
</STEP>
上述的脚本示例中,index(变量名)="1"(变量值)表示步骤编号为1,name(变量名)="ClickAppsByDesc"(变量值),表示步骤的对应方法名称为ClickAppsByDesc,comment(变量名)="this is comment 1"(变量值)为提升步骤可读性的注释内容。LocationSettings部分为步骤的定位对象部分,用于定位界面的控件视图等;ActionSettings 部分为步骤的执行动作部分,示例中它表示执行的动作为对定位到的对象执行点击并等待的操作; VerifyPointSettings 部分为步骤验证点部分,示例中它用来断言定位到的对象是不可以滑动的。
步骤202:为变量信息建立变量名和对应的变量值的映射关系。
在该实施例中,获得变量信息后,为变量信息建立一个变量名与变量值的映射关系。
对于步骤201中生成的XML测试脚本,映射关系示意图如下:
(root)
|
+- step
| | |
| | +- index = "1"
| | |
| | +- name = " ClickAppsByDesc"
| | |
| | +- comment = " this is comment 1"
| | |
| | +-location
| | | |
| | | +- type=“ Description "
| | | +- argument =" Apps"
| | +-action
| | | |
| | | +- method="clickAndWaitForNewWindow"
| | +-VerifyPoint
| | | |
| | | +- vpType ="assertFalse"
| | | +- vpMethod ="isScrollable"
| | | +- vpMsg ="This object shouldn't be scrollable"
步骤203:加载映射关系及相对应的代码模板,生成测试代码。
具体来说,由于差异代码部是用具有变量名的设定格式代替,因此,可以根据映射关系将设定格式中的变量名替换成映射关系中相同变量名所对应的变量值。如果映射关系中缺少某个变量名或变量名的变量值为空,则设定格式中的变量名为默认值来代替。其中,默认值为预设值。从而,形成新的、所需的测试代码。
举例来说,对应如下的一个演示用的代码模板片段:
<#assign errorName = "Step${step.index}_${step.name}">
UiObject uiObject = null;
try {
//~~~~~~~#1. 定位对象部分~~~~~~~~~
uiObject=uiOper.getUiObjectBy${step.location.type}("${step.location.argument}");
//~~~~~~~#2. 执行动作部分~~~~~~~~~
if (null != uiObject) {
<#if (step.action.method)??>
uiObject.${step.action.method?substring(0,step.action.method?index_of("("))}(<#if (step.arguValueList)??><#list step.arguValueList as arguValue>${arguValue}</#list></#if>);
<#else>
uiObject.clickAndWaitForNewWindow();
</#if>
} else {
error("NoObjectFound_${errorName}");
}
<#if (step.vpSettings)??>
//~~~~~~~#3. 步骤验证点部分~~~~~~~~~
<#list step.VerifyPoint as vpList>
${vpList.vpType}Custom(<#if(vpList.vpMsg)??>"${vpList.vpMsg}",</#if>uiObject<#if (vpList.vpMethod)??>.${vpList.vpMethod}()</#if>);
</#list>
</#if>
} catch (UiObjectNotFoundException e) {
error("${errorName}");
e.printStackTrace();
}
比如,在上述的代码模板中具有变量${step.location.argument},与映射关系中的root.step.localtion.argument相对应。因此,可以用对应关系中root.step.localtion.argument的变量值“Apps”替换代码模板中的变量${step.location.argument}。
同样的,生成的测试代码可以用来执行软件测试。软件测试的具体测试过程、测试结果收集、测试报表生成等过程与现有技术类似,在此不作具体阐述。
在该第二个实施例中,测试代码基于代码模板及测试脚本生成,因此可读性强,具有自动化测试框架的简单易用特性;且代码模板又基于原始测试代码生成,能够根据需要进行修改,具有编程语言的灵活性,进而可以利用生成的测试代码高效、灵活地对软件执行自动化测试。而且,先将测试脚本中的变量信息与变量名建立映射关系,代码模板可以根据映射关系直接获取到相应的变量值来替换模板中的变量名,使用更为方便,进一步提高了生成测试代码的效率。
请参见图3,该图所示为本发明测试代码生成方法第三个实施例的流程图。
如图3所示,该实施例生成测试代码的具体过程如下:
步骤301:解析被测软件的测试脚本,提取其中的变量信息,并创建代码模板。
步骤302:为变量信息建立变量名和对应的变量值的映射关系。
步骤303:加载映射关系及相对应的代码模板,生成测试代码。
上述三个步骤的具体实现方法与图2实施例的对应步骤类似,可以参考图2相应步骤的描述。
步骤304:将测试代码存储于外部存储器中。
在该实施例中,为支持复杂业务场景的自动化测试,在生成测试代码之后,先将其存储于外部存储器中。测试人员可以访问外部存储器,并根据需要对测试代码进行修改,以实现测试代码的定制优化。
步骤305:判断是否存在在先修改的测试代码。若是,执行步骤306;否则,转至步骤309。
在将测试代码存储于外部存储器中后,先判断是否存在在先修改的测试代码。具体来说,可以在修改测试代码后设置一个标识,通过该标识判断是否存在修改的测试代码。
步骤306:如果存在在先修改的测试代码,判断是否允许覆盖在先修改的测试代码。若是,执行步骤308;否则,执行步骤307。
为避免重复优化测试代码,在修改了测试代码后,为其设置覆盖属性,利用属性值对测试代码进行保护,防止被在后新生成的测试代码覆盖。在后续测试过程中生成新测试代码后,读取该覆盖属性,根据属性值判断是否允许覆盖在先修改的测试代码,并根据判断结果执行不同的处理。
步骤307:如果不允许覆盖在先修改的测试代码,则丢弃在后新生成的测试代码。
步骤308:如果允许覆盖在先修改的测试代码,则用在后新生成的测试代码覆盖在先的测试代码。
步骤309:如果步骤305判定不存在在先修改的测试代码,则判断是否要修改测试代码。如果需要修改,执行步骤311;否则,执行步骤310。
步骤310:如果不需要修改测试代码,则直接保留生成的测试代码。
步骤311:如果不存在在先修改的测试代码、且需要修改测试代码,则对测试代码进行修改,形成优化的测试代码。同时,设置覆盖属性,并根据需要设置属性值,以决定是否需要对修改后的测试代码进行保护。
在该实施例中,可以根据需求对生成的测试代码进行修改,实现对测试代码的定制优化,使得测试代码能够满足复杂业务场景的要求,进一步提高了测试的简便性和灵活性。
请参见图4至图6,该三附图示出了本发明测试代码生成装置的三个不同实施例的结构框图。
请参见图4,该图所示为本发明测试代码生成装置第一个实施例的结构框图。具体来说,该实施例的装置包括有测试脚本解析及变量信息提取单元401、代码模板创建单元402及测试代码生成单元403。其中,测试脚本解析及变量信息提取单元401用来解析被测软件的测试脚本,并提取测试脚本中包含的变量信息;代码模板创建单元402用于根据被测软件的测试类别和原始测试代码的编程语言将所述原始测试代码进行分类,提取并标记每一类原始测试代码中的差异代码部,并与原始测试代码中的通用代码部形成该类原始测试代码的代码模板;测试代码生成单元403用于加载测试脚本的变量信息及相对应的代码模板,并根据设定规则将代码模板中标记的差异代码部用变量信息替换,生成测试代码。
该实施例的装置中的各单元通过运行相应的软件,将按照图1实施例的流程生成所需的测试代码。
请参见图5,该图所示为本发明测试代码生成装置第二个实施例的结构框图。具体来说,该实施例的装置包括有测试脚本解析及变量信息提取单元501、代码模板创建单元502、映射单元503及测试代码生成单元504。测试脚本解析及变量信息提取单元501、代码模板创建单元502及测试代码生成单元504的功能与图4第一个实施例中的对应单元类似。而映射单元503用于为测试脚本中提取的变量信息建立变量名和对应的变量值的映射关系。相应的,测试代码生成单元504将根据该映射关系将代码模板中设定格式的变量名替换为对应的变量值。
该实施例的装置中的各单元通过运行相应的软件,将按照图2实施例的流程生成所需的测试代码。
请参见图6,该图示出了本发明测试代码生成装置第三个实施例的结构框图。具体来说,该实施例的装置除包括有测试脚本解析及变量信息提取单元601、代码模板创建单元602、映射单元603及测试代码生成单元604之外,还包括有测试代码存储单元605、测试代码修正单元606及覆盖设定及判断单元607。其中,测试代码存储单元605为外部存储单元,用来存储测试代码生成单元604所生成的测试代码;测试代码修正单元606用来根据测试需求对测试代码存储单元605存储的测试代码进行修改;而覆盖设定及判断单元607用于为测试代码修正单元606修改后的测试代码设置覆盖属性,并根据覆盖属性的值判断是否用后续生成的新测试代码覆盖在先的测试代码。该第三个实施例中其他单元的功能与图5实施例中的对应单元类似。
该实施例的装置中的各单元通过运行相应的软件,将按照图3实施例的流程生成所需的测试代码。
以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管参照前述实施例对本发明进行了详细的说明,对于本领域的普通技术人员来说,依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明所要求保护的技术方案的精神和范围。
Claims (10)
1.一种测试代码生成方法,其特征在于,所述方法包括:
解析被测软件的测试脚本,提取所述测试脚本中包含的变量信息;以及根据被测软件的测试类别和原始测试代码的编程语言将所述原始测试代码进行分类,提取并标记每一类所述原始测试代码中的差异代码部,并与所述原始测试代码中的通用代码部形成该类原始测试代码的代码模板;
加载所述测试脚本的所述变量信息及相对应的所述代码模板,根据设定规则将所述代码模板中标记的差异代码部用所述变量信息替换,生成测试代码。
2.根据权利要求1所述的方法,其特征在于,在创建代码模板时,提取出每一类所述原始测试代码中的差异代码部,采用设定格式替换所述差异代码部,实现对所述差异代码部的标记。
3.根据权利要求2所述的方法,其特征在于,所述变量信息包括变量名和变量值,所述提取所述测试脚本中包含的变量信息,建立所述变量名和对应的变量值的映射关系;所述设定格式包括所述变量名,根据所述映射关系将所述设定格式中的变量名替换为对应的变量值。
4.根据权利要求1所述的方法,其特征在于,所述测试脚本包含指定代码模板信息,在生成测试代码时,根据所述指定代码模板信息加载该测试脚本相对应的代码模板。
5.根据权利要求1所述的方法,其特征在于,在生成所述测试代码后,先将其存储于外部存储器,然后,根据测试需求修改该测试代码。
6.根据权利要求5所述的方法,其特征在于,为修改后的测试代码设置覆盖属性,在后续生成新测试代码后,根据所述覆盖属性的值判断是否用所述新测试代码覆盖所述修改后的测试代码。
7.一种测试代码生成装置,其特征在于,所述装置包括:
测试脚本解析及变量信息提取单元,用于解析被测软件的测试脚本,并提取所述测试脚本中包含的变量信息;
代码模板创建单元,用于根据被测软件的测试类别和原始测试代码的编程语言将所述原始测试代码进行分类,提取并标记每一类所述原始测试代码中的差异代码部,并与所述原始测试代码中的通用代码部形成该类原始测试代码的代码模板;
测试代码生成单元,用于加载所述测试脚本的所述变量信息及相对应的所述代码模板,并根据设定规则将所述代码模板中标记的差异代码部用所述变量信息替换,生成测试代码。
8.根据权利要求7所述的装置,其特征在于,所述测试代码生成单元在提取出每一类所述原始测试代码中的差异代码部后,采用设定格式替换所述差异代码部,实现对所述差异代码部的标记。
9.根据权利要求8所述的装置,其特征在于,所述变量信息包括变量名和变量值,所述装置还包括映射单元,用于为所述变量信息建立所述变量名和对应的变量值的映射关系; 所述设定格式包括所述变量名;所述测试代码生成单元根据所述变量名和变量值的映射关系将设定格式中的变量名替换为对应的变量值。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
测试代码存储单元,用于存储所述测试代码生成单元所生成的测试代码;
测试代码修正单元,用于根据测试需求对所述测试代码存储单元存储的测试代码进行修改;以及
覆盖设定及判断单元,用于为所述测试代码修正单元修改后的测试代码设置覆盖属性,并根据所述覆盖属性的值判断是否用后续生成的新测试代码覆盖所述修改后的测试代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410304374.2A CN104035873A (zh) | 2014-06-30 | 2014-06-30 | 测试代码生成方法及生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410304374.2A CN104035873A (zh) | 2014-06-30 | 2014-06-30 | 测试代码生成方法及生成装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104035873A true CN104035873A (zh) | 2014-09-10 |
Family
ID=51466646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410304374.2A Pending CN104035873A (zh) | 2014-06-30 | 2014-06-30 | 测试代码生成方法及生成装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104035873A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363324A (zh) * | 2014-11-20 | 2015-02-18 | 惠州Tcl移动通信有限公司 | 一种对手机主板进行自动测试的测试方法及测试系统 |
CN104461565A (zh) * | 2014-12-25 | 2015-03-25 | 索尔思光电(成都)有限公司 | 一种光模块测试参数配置方法及系统 |
CN105373476A (zh) * | 2015-11-17 | 2016-03-02 | 北京新能源汽车股份有限公司 | 汽车控制器中自动测试用例的生成方法和系统 |
CN106021118A (zh) * | 2016-06-20 | 2016-10-12 | 深圳充电网科技有限公司 | 测试代码生成方法及装置、测试框架代码执行方法及装置 |
CN106095657A (zh) * | 2016-06-02 | 2016-11-09 | 浪潮电子信息产业股份有限公司 | 一种快速确认性能测试脚本中变量的方法 |
CN106528165A (zh) * | 2016-11-11 | 2017-03-22 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成系统 |
CN107203466A (zh) * | 2016-03-17 | 2017-09-26 | 美的集团股份有限公司 | Api测试方法和装置 |
CN107526679A (zh) * | 2017-07-13 | 2017-12-29 | 深圳市小牛在线互联网信息咨询有限公司 | 自动化测试框架、基于其上的自动化测试方法、存储介质和计算机设备 |
CN107861881A (zh) * | 2017-11-30 | 2018-03-30 | 五八有限公司 | 压力测试方法及装置 |
CN108153531A (zh) * | 2017-12-28 | 2018-06-12 | 深圳市索菱实业股份有限公司 | 一种基于Android UiAutomator工具的自动编译快速运行的方法 |
CN108304326A (zh) * | 2018-01-30 | 2018-07-20 | 广东天波信息技术股份有限公司 | 安卓智能终端自动化测试系统和方法 |
CN108491331A (zh) * | 2018-04-13 | 2018-09-04 | 平安普惠企业管理有限公司 | 软件测试方法、装置、设备和计算机存储介质 |
CN108536587A (zh) * | 2018-03-21 | 2018-09-14 | 轻客智能科技(江苏)有限公司 | 一种基于Appium的自动化测试方法及系统 |
CN109241746A (zh) * | 2018-08-29 | 2019-01-18 | 腾讯科技(深圳)有限公司 | 代码处理方法、装置、计算设备以及存储介质 |
CN113742249A (zh) * | 2021-11-05 | 2021-12-03 | 麒麟软件有限公司 | 一种基于桌面操作系统的测试脚本颗粒化方法及系统 |
CN117217163A (zh) * | 2023-09-19 | 2023-12-12 | 上海灵动微电子股份有限公司 | 一种基于脚本的soc芯片的测试方法 |
WO2024139849A1 (zh) * | 2022-12-28 | 2024-07-04 | 华为云计算技术有限公司 | 一种用于生成漏洞挖掘模型的平台及相关方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060005169A1 (en) * | 2004-06-30 | 2006-01-05 | International Business Machines Corporation | Software development system and method |
CN1776643A (zh) * | 2004-11-15 | 2006-05-24 | 华为技术有限公司 | 一种软件产品健壮性的测试方法及装置 |
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
CN101446971A (zh) * | 2008-12-17 | 2009-06-03 | 腾讯科技(深圳)有限公司 | 构建内容管理系统的方法及装置 |
CN101706753A (zh) * | 2009-12-11 | 2010-05-12 | 武汉虹信通信技术有限责任公司 | 一种基于Perl的单元测试框架及方法 |
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
-
2014
- 2014-06-30 CN CN201410304374.2A patent/CN104035873A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060005169A1 (en) * | 2004-06-30 | 2006-01-05 | International Business Machines Corporation | Software development system and method |
CN1776643A (zh) * | 2004-11-15 | 2006-05-24 | 华为技术有限公司 | 一种软件产品健壮性的测试方法及装置 |
CN1983209A (zh) * | 2005-12-14 | 2007-06-20 | 中兴通讯股份有限公司 | 一种软件单元测试自动化系统及其方法 |
CN101446971A (zh) * | 2008-12-17 | 2009-06-03 | 腾讯科技(深圳)有限公司 | 构建内容管理系统的方法及装置 |
CN101706753A (zh) * | 2009-12-11 | 2010-05-12 | 武汉虹信通信技术有限责任公司 | 一种基于Perl的单元测试框架及方法 |
CN103135976A (zh) * | 2011-11-30 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 代码自动生成方法及装置 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363324A (zh) * | 2014-11-20 | 2015-02-18 | 惠州Tcl移动通信有限公司 | 一种对手机主板进行自动测试的测试方法及测试系统 |
CN104461565A (zh) * | 2014-12-25 | 2015-03-25 | 索尔思光电(成都)有限公司 | 一种光模块测试参数配置方法及系统 |
CN104461565B (zh) * | 2014-12-25 | 2018-02-13 | 索尔思光电(成都)有限公司 | 一种光模块测试参数配置方法及系统 |
CN105373476A (zh) * | 2015-11-17 | 2016-03-02 | 北京新能源汽车股份有限公司 | 汽车控制器中自动测试用例的生成方法和系统 |
WO2017084462A1 (zh) * | 2015-11-17 | 2017-05-26 | 北京新能源汽车股份有限公司 | 汽车控制器中自动测试用例的生成方法和系统 |
CN105373476B (zh) * | 2015-11-17 | 2018-01-19 | 北京新能源汽车股份有限公司 | 汽车控制器中自动测试用例的生成方法和系统 |
CN107203466B (zh) * | 2016-03-17 | 2020-12-04 | 美的集团股份有限公司 | Api测试方法和装置 |
CN107203466A (zh) * | 2016-03-17 | 2017-09-26 | 美的集团股份有限公司 | Api测试方法和装置 |
CN106095657A (zh) * | 2016-06-02 | 2016-11-09 | 浪潮电子信息产业股份有限公司 | 一种快速确认性能测试脚本中变量的方法 |
CN106021118B (zh) * | 2016-06-20 | 2018-09-25 | 深圳充电网科技有限公司 | 测试代码生成方法及装置、测试框架代码执行方法及装置 |
CN106021118A (zh) * | 2016-06-20 | 2016-10-12 | 深圳充电网科技有限公司 | 测试代码生成方法及装置、测试框架代码执行方法及装置 |
CN106528165B (zh) * | 2016-11-11 | 2019-10-08 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成系统 |
CN106528165A (zh) * | 2016-11-11 | 2017-03-22 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成系统 |
CN107526679A (zh) * | 2017-07-13 | 2017-12-29 | 深圳市小牛在线互联网信息咨询有限公司 | 自动化测试框架、基于其上的自动化测试方法、存储介质和计算机设备 |
CN107861881A (zh) * | 2017-11-30 | 2018-03-30 | 五八有限公司 | 压力测试方法及装置 |
CN108153531A (zh) * | 2017-12-28 | 2018-06-12 | 深圳市索菱实业股份有限公司 | 一种基于Android UiAutomator工具的自动编译快速运行的方法 |
CN108304326A (zh) * | 2018-01-30 | 2018-07-20 | 广东天波信息技术股份有限公司 | 安卓智能终端自动化测试系统和方法 |
CN108304326B (zh) * | 2018-01-30 | 2021-11-19 | 广东天波信息技术股份有限公司 | 安卓智能终端自动化测试系统和方法 |
CN108536587A (zh) * | 2018-03-21 | 2018-09-14 | 轻客智能科技(江苏)有限公司 | 一种基于Appium的自动化测试方法及系统 |
CN108491331A (zh) * | 2018-04-13 | 2018-09-04 | 平安普惠企业管理有限公司 | 软件测试方法、装置、设备和计算机存储介质 |
CN109241746A (zh) * | 2018-08-29 | 2019-01-18 | 腾讯科技(深圳)有限公司 | 代码处理方法、装置、计算设备以及存储介质 |
CN109241746B (zh) * | 2018-08-29 | 2022-01-28 | 腾讯科技(深圳)有限公司 | 代码处理方法、装置、计算设备以及存储介质 |
CN113742249A (zh) * | 2021-11-05 | 2021-12-03 | 麒麟软件有限公司 | 一种基于桌面操作系统的测试脚本颗粒化方法及系统 |
WO2024139849A1 (zh) * | 2022-12-28 | 2024-07-04 | 华为云计算技术有限公司 | 一种用于生成漏洞挖掘模型的平台及相关方法 |
CN117217163A (zh) * | 2023-09-19 | 2023-12-12 | 上海灵动微电子股份有限公司 | 一种基于脚本的soc芯片的测试方法 |
CN117217163B (zh) * | 2023-09-19 | 2024-05-28 | 上海灵动微电子股份有限公司 | 一种基于脚本的soc芯片的测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104035873A (zh) | 测试代码生成方法及生成装置 | |
CN104407980B (zh) | 移动应用自动化测试装置和方法 | |
CN107644286B (zh) | 工作流处理方法及装置 | |
CN109740122B (zh) | 思维导图用例文件的转换方法及装置 | |
CN103970659B (zh) | 基于插桩技术的安卓应用软件自动化测试方法 | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
CN108388515A (zh) | 测试数据生成方法、装置、设备以及计算机可读存储介质 | |
CN103914379B (zh) | 故障自动注入与故障检测的方法及其系统 | |
CN102567201A (zh) | 跨模型的图形用户界面测试脚本自动修复方法 | |
JP6440895B2 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
CN113626326B (zh) | 一种基于图像识别的拖拽式的零代码前端自动化测试系统 | |
US9477582B2 (en) | Executable software specification generation | |
JP6568017B2 (ja) | テスト支援装置、および、テスト支援方法 | |
CN111260336A (zh) | 基于规则引擎的业务核对方法、装置及设备 | |
CN105955755A (zh) | 一种基于状态图的代码化验证方法 | |
CN111667231B (zh) | 自动化报税方法、装置、系统、计算机设备和存储介质 | |
CN113672520A (zh) | 测试案例的生成方法、装置、电子设备及存储介质 | |
CN107622017B (zh) | 一种通用自动化软件测试的解析方法 | |
CN106484389A (zh) | 动作流分段管理 | |
KR20140002815A (ko) | 안드로이드 애플리케이션 지유아이 테스트 자동화 방법 | |
CN104536880A (zh) | 基于符号执行的gui程序测试用例扩增方法 | |
CN111459802A (zh) | 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 | |
CN109815127A (zh) | 自动化脚本转换方法、装置、计算机设备和存储介质 | |
CN113672509A (zh) | 自动化测试方法、装置、测试平台及存储介质 | |
Kumar et al. | An empirical study of bad smell in code on maintenance effort |
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 |
Application publication date: 20140910 |
|
RJ01 | Rejection of invention patent application after publication |