CN106407124A - 一种程序自动化测试方法及系统 - Google Patents
一种程序自动化测试方法及系统 Download PDFInfo
- Publication number
- CN106407124A CN106407124A CN201610987892.8A CN201610987892A CN106407124A CN 106407124 A CN106407124 A CN 106407124A CN 201610987892 A CN201610987892 A CN 201610987892A CN 106407124 A CN106407124 A CN 106407124A
- Authority
- CN
- China
- Prior art keywords
- function items
- code
- modification
- program
- test
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test 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
本发明提供一种程序自动化测试方法及系统,该程序自动化测试方法包括:将修改后代码与原始代码进行差异比对,根据修改后代码与原始代码的差异位置生成代码差异文本;根据预设的关键字及差异位置,查找修改后代码中包含关键字、且距离差异位置最近的程序修改功能项;根据程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行测试脚本对测试数据进行测试。通过本发明,有效利用主机资源有针对性地进行测试,节省主机资源,并提高了测试效率。
Description
技术领域
本发明是关于计算机软件测试技术,具体地,是关于一种程序自动化测试方法及系统。
背景技术
目前,在程序开发过程中或者后期的程序维护中,当对程序进行修改后,往往需要将整个程序重新进行测试,将全部测试案例重新运行,这涉及到需要重新准备大量测试数据,运行大量的测试案例,消耗大量的系统资源,浪费主机资源,造成系统运行效率、测试效率低。
如果能够自动分析出程序修改点,并将该程序修改点涉及的测试数据、测试案例分析与筛选出来,在进行程序测试时,只需要重新准备与修改点相关的测试数据,只运行修改点相关的测试案例,则将大大提高测试系统运行效率,提高测试效率。因此,如何实现上述过程是目前程序测试中需要研究解决的问题。
发明内容
本发明实施例的主要目的在于提供一种程序自动化测试方法及系统,以实现更加方便、快捷且占用资源较少的软件测试过程。
为了实现上述目的,本发明实施例提供一种程序自动化测试方法,所述的程序自动化测试方法包括:将修改后代码与原始代码进行差异比对,根据所述修改后代码与原始代码的差异位置生成代码差异文本;根据预设的关键字及所述差异位置,查找所述修改后代码中包含所述关键字、且距离所述差异位置最近的程序修改功能项;根据所述程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行所述测试脚本对所述测试数据进行测试。
在一实施例中,上述的根据所述程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,具体包括:根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项,其中,所述关键字定义表中记录有所述案例功能项与所述程序修改功能项的对应关系;根据所述案例功能项检索预设的脚本功能存储表,确定所述案例功能项对应的测试脚本及测试数据。
在一实施例中,上述的代码差异文本中记录的所述差异位置为所述修改后代码与原始代码相比的代码修改点在所述修改后代码中的修改点行数。
在一实施例中,上述的根据预设的关键字及所述差异位置,查找所述修改后代码中包含所述关键字、且距离所述差异位置最近的程序修改功能项,具体包括:从所述修改点行数开始,向上查找所述修改后代码中包含所述关键字的至少一备选程序修改功能项;查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,并确定为所述的程序修改功能项。
在一实施例中,上述的查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,具体包括:步骤1:从所述修改后代码的第t行开始,根据第m行对应的关键字值向上查找;步骤2:若找到所述关键字值,则判断a是否为0;若a为0,则直接将找到的关键字值所处行数赋给a;若a不为0,则判断找到的关键字值所处行数是否大于a;步骤3:若找到的关键字值所处行数大于a,则将找到的关键字值所处行数赋给a,否则保留a的取值;步骤4:判断m是否为所述关键字定义表的最后一行;若m不为所述关键字定义表的最后一行,则将m更新为m+1,返回执行所述步骤1至步骤3;若m为所述关键字定义表的最后一行,将a的取值对应的备选程序修改功能项确定为所述距离所述修改点行数最近的备选程序修改功能项;其中,m初始值为1,表示当前关键字定义表行数;a为临时变量,初始值为0;t为所述代码差异文本中记录的所述修改点行数。
在一实施例中,在所述步骤4之后,查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,还包括:步骤5:判断n是否为所述代码差异文本的最后一行;若n不为所述代码差异文本的最后一行,则将n更新为n+1,返回执行所述步骤1至步骤4;若n为所述代码差异文本的最后一行,则执行根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项的步骤;其中,n初始值为1,表示所述代码差异文本行数。
在一实施例中,上述的执行所述测试脚本对所述测试数据进行测试,具体包括:通过所述测试脚本调用所述案例功能项所对应的程序代码作为测试程序代码;在单独搭建的测试环境中运行所述测试程序代码,对所述测试数据进行测试。
本发明实施例还提供一种程序自动化测试系统,所述的程序自动化测试系统包括:代码差异文本生成单元,用于将修改后代码与原始代码进行差异比对,根据所述修改后代码与原始代码的差异位置生成代码差异文本;程序修改功能项查找单元,用于根据预设的关键字及所述差异位置,查找所述修改后代码中包含所述关键字、且距离所述差异位置最近的程序修改功能项;测试脚本确定单元,用于根据所述程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行所述测试脚本对所述测试数据进行测试。
在一实施例中,上述的测试脚本确定单元包括:案例功能项查找模块,用于根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项,其中,所述关键字定义表中记录有所述案例功能项与所述程序修改功能项的对应关系;测试脚本确定模块,用于根据所述案例功能项检索预设的脚本功能存储表,确定所述案例功能项对应的测试脚本及测试数据。
在一实施例中,上述的代码差异文本中记录的所述差异位置为所述修改后代码与原始代码相比的代码修改点在所述修改后代码中的修改点行数。
在一实施例中,上述的程序修改功能项查找单元具体包括:备选程序修改功能项查找模块,用于从所述修改点行数开始,向上查找所述修改后代码中包含所述关键字的至少一备选程序修改功能项;程序修改功能项确定模块,用于查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,并确定为所述的程序修改功能项。
在一实施例中,上述的程序修改功能项确定模块具体用于执行以下步骤:步骤1:从所述修改后代码的第t行开始,根据第m行对应的关键字值向上查找;步骤2:若找到所述关键字值,则判断a是否为0;若a为0,则直接将找到的关键字值所处行数赋给a;若a不为0,则判断找到的关键字值所处行数是否大于a;步骤3:若找到的关键字值所处行数大于a,则将找到的关键字值所处行数赋给a,否则保留a的取值;步骤4:判断m是否为所述关键字定义表的最后一行;若m不为所述关键字定义表的最后一行,则将m更新为m+1,返回执行所述步骤1至步骤3;若m为所述关键字定义表的最后一行,将a的取值对应的备选程序修改功能项确定为所述距离所述修改点行数最近的备选程序修改功能项;其中,m初始值为1,表示当前关键字定义表行数;a为临时变量,初始值为0;t为所述代码差异文本中记录的所述修改点行数。
在一实施例中,上述的程序修改功能项确定模块还用于:步骤5:判断n是否为所述代码差异文本的最后一行;若n不为所述代码差异文本的最后一行,则将n更新为n+1,返回执行所述步骤1至步骤4;若n为所述代码差异文本的最后一行,则触发所述案例功能项查找单元,根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项;其中,n初始值为1,表示所述代码差异文本行数。
在一实施例中,上述的测试脚本确定单元执行所述测试脚本对所述测试数据进行测试的步骤,具体包括:通过所述测试脚本调用所述案例功能项所对应的程序代码作为测试程序代码;在单独搭建的测试环境中运行所述测试程序代码,对所述测试数据进行测试。
本发明实施例的有益效果在于,能够有效利用主机资源有针对性地进行测试,节省主机资源,并提高了测试效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的程序自动化测试方法的流程图;
图2A及图2B为根据本发明实施例的程序修改功能项的查找过程的流程示意图;
图3为根据本发明实施例的程序自动化测试系统的结构示意图;
图4为根据本发明实施例的程序修改功能项查找单元2的结构示意图;
图5为根据本发明实施例的测试脚本确定单元3的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种程序自动化测试方法和系统。以下结合附图对本发明进行详细说明。
如图1所示,本发明实施例的程序自动化测试方法主要包括以下步骤:
步骤S101:将修改后代码与原始代码进行差异比对,根据修改后代码与原始代码的差异位置生成代码差异文本;
步骤S102:根据预设的关键字及差异位置,查找修改后代码中包含关键字、且距离差异位置最近的程序修改功能项;
步骤S103:根据程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行测试脚本对所述测试数据进行测试。
通过上述步骤S101至步骤S103,将新旧版本的代码进行差异比较,找到差异点,根据该差异点来查找相应的程序修改功能项,从而有针对性地进行脚本测试,能够有效利用主机资源进行测试,节省主机资源,并提高了测试效率。
以下结合具体实施例,对本发明实施例的程序自动化测试方法做进一步说明。
上述的步骤S101,将修改后代码与原始代码进行差异比对,根据修改后代码与原始代码的差异位置生成代码差异文本。
具体地,可以是将当前版本代码(修改后代码)及上一版本代码(原始代码)分别放在2个txt文本中,然后对两个文本做逐行对比,比较差异点结果。具体实施时,该差异点可分为3种情况:第1种是当前版本代码新增了代码段;第2种是当前版本代码修改了代码段;第3种是当前版本代码删除了代码段。将这3种情况的代码的行数记录在一个新的代码差异文本(可以例如是txt格式)中。该代码差异文本中记录的内容例如是如下表1所示。
表1
程序修改行号 |
5 |
28 |
659 |
... |
需要说明的是,在此实施例中所提及的txt文本,以及可能出现的差异点的情况均是举例说明,而非用以限制本发明。
上述步骤S102,根据预设的关键字及差异位置,查找修改后代码中包含关键字、且距离差异位置最近的程序修改功能项。
在通过上述步骤S101生成了代码差异文本后,可依据该代码差异文本中所记录的程序修改点的行数,在修改后代码中进行查找。在进行查找时,可依据一预先定义好的关键字定义表,按照其中所记录的关键字进行查找。该关键字定义表如下表2所示。
表2
程序关键字 | 案例功能项 | 程序类型 |
type BasicProgram | 数据定义 | 0 |
ASP_CHECK | 数据检查 | 0 |
ASP_SER | 查询操作 | 0 |
ASP_ADD | 新增操作 | 0 |
ASP_UPD | 修改操作 | 0 |
ASP_DEL | 删除操作 | 0 |
ASP_WRT_CJNL | 日志登记 | 0 |
... | ... | ... |
当查找到相应的关键字后,记录至如下表3所示的记录表中。
表3
程序名 | 程序修改功能项1 | 程序修改功能项2 | 程序修改功能项3 | ... |
4202 | ASP_CHECK | ASP_DEL | ASP_WRT_CJNL | |
3103 | ASP_SER | ASP_UPD | ASP_DEL | |
6598 | type BasicProgram | ASP_UPD |
在该记录表中,程序名即是指在实际应用中,要进行测试的程序的名称。在一具体实施例中,该程序名可对应于需要进行测试的某个交易所使用的程序。
根据表2中记录的一个或多个关键字向上查找时,可能会找到多个相对应的程序修改功能项,此时,需要确定在这些程序修改功能项中,离代码修改点最近的程序修改功能项,并记录至上述的表3中。
在一较佳实施例中,上述的查找过程可通过如图2A所示的过程表示,其具体流程如下:
首先,设定该过程的变量n,m,i,a。其中,n初始值为1,表示修改后代码文本行数;m初始值为1,表示当前关键字定义表行数;i初始值为空,表示离当前查找的代码修改点最近的程序修改功能项名;a为临时变量,初始值为0,用以赋值距离代码修改点最近的程序修改功能项的行数。
步骤S1:从修改后代码的第t行开始,根据第m行对应的关键字值向上查找;
步骤S2:若找到关键字值,则判断a是否为0;若a为0,则直接将找到的关键字值所处行数赋给a;若a不为0,则判断找到的关键字值所处行数是否大于a;
步骤S3:若找到的关键字值所处行数大于a,则将找到的关键字值所处行数赋给a,否则保留a的取值;
步骤S4:判断m是否为关键字定义表的最后一行;若m不为关键字定义表的最后一行,则将m更新为m+1,返回执行上述步骤S1至步骤S3;若m为关键字定义表的最后一行,将a的取值对应的备选程序修改功能项确定为距离修改点行数最近的备选程序修改功能项。
以上过程主要描述的是针对修改差异文本中一行数据(例如第n行所记录的行数)向上查找的过程。如图2B所示,当要针对修改差异文本中其他行数据进行查找时(例如第n+1行、第n+2行等等),则在上述的步骤执行完毕后,还需执行如下步骤:
步骤S5:判断n是否为代码差异文本的最后一行;若n不为代码差异文本的最后一行,则将n更新为n+1,返回执行步骤S1至步骤S4;若n为代码差异文本的最后一行,则执行根据程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据的步骤,即继续上述的步骤S103)。
上述步骤S103,根据程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行测试脚本对测试数据进行测试。
在通过步骤S102,查找到该修改后代码中离代码修改点最近的程序修改功能项之后,即可通过步骤S103,根据程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行测试脚本对测试数据进行测试。
具体地,首先是在上述表2中对应查找与该程序修改功能项相对应的案例功能项。例如,从表3中程序名4202查找到的三个程序修改功能项“ASP_CHECK、ASP_DEL、ASP_WRT_CJNL”,在表2中分别对应案例功能项“数据检查、删除操作、日志登记”,由此,生成查询结果如下表4所示。
表4
程序名 | 案例功能项获取结果1 | 案例功能项获取结果2 | 案例功能项获取结果3 | ... |
4202 | 数据检查 | 删除操作 | 日志登记 | |
3103 | 查询操作 | 修改操作 | 删除操作 | |
6598 | 数据定义 | 修改操作 |
由此,即找到了修改后代码中离代码修改点最近的案例功能项。
然后,根据案例功能项检索预设的脚本功能存储表,确定案例功能项对应的测试脚本及测试数据,并执行测试脚本对所述测试数据进行测试。
在本发明实施例中,预先存储有案例功能项与脚本功能相对应的存储表,即上述的脚本功能存储表。在步骤S103中,在获取到相应的案例功能项后,即可通过该脚本功能存储表,查询并获取其相对应的测试脚本及测试数据,将确定的测试脚本提交测试环境运行,从而对测试数据进行测试。具体地,是通过测试脚本调用上述的案例功能项所对应的程序代码作为测试程序代码;在单独搭建的测试环境中运行该测试程序代码,对测试数据进行测试。例如,如以上表4中,需对程序名“4202”的程序,测试其“删除操作”的功能,则需提交4202程序对应的案例名为“删除操作”的脚本;在此脚本中,字段“操作标志”的测试数据送的值为:3删除,则4202程序在读取测试数据并运行时,判断此字段的值为3后,会自动去执行删除操作的代码,从而测试删除操作的功能。
本发明实施例的程序自动化测试方法,主要具有以下优点:
1)对程序修改点智能化自动生成对应的案例及脚本,不必运行所有程序分支,提高了测试效率。
2)有效利用主机资源运行程序,节省主机资源。
以下结合一具体应用实例对本发明实施例的程序自动化测试方法的过程做具体说明。
在此实施例中,是针对表3及表4中的程序名4202所进行的自动测试过程。
步骤S1001:比对程序4202的新旧两个版本,生成代码差异文本,该文本中所记录的内容以上述表1内容为例。
步骤S1002:针对表1中第m行的内容,m的初始值为1。即第一处代码差异点位于新版代码的第5行,按照表2中所记录的关键字依次进行查找。
即,从第5行开始,先向上查找关键字“type BasicProgram”,查找到该关键字“type BasicProgram”的位置位于新版代码的第3行,然后查找关键字“ASP_CHECK”,其位于新版代码的第4行,然后查找关键字“ASP_SER”,其位于新版代码的第2行,依次类推,依次查找表2中所记载的程序关键字。然后,比对各个关键字所在位置与代码差异点的距离,确定离代码差异点最近的关键字为“ASP_CHECK”。因此,基于第一处代码差异点查找到的程序修改功能项即为“ASP_CHECK”,将其记录在上述表3中。
步骤S1003:针对表1中第m+1行的内容,即第二处代码差异点位于新版代码的第28行,按照表2中所记录的关键字依次进行查找。
即,从第28行开始,先向上查找关键字“type BasicProgram”,查找到该关键字“type BasicProgram”的位置位于新版代码的第20行,然后查找关键字“ASP_CHECK”,其位于新版代码的第15行,然后查找关键字“ASP_SER”,其位于新版代码的第21行,依次类推,依次查找表2中所记载的程序关键字。然后,比对各个关键字所在位置与代码差异点的距离,确定离代码差异点最近的关键字为“ASP_DEL”。因此,基于第一处代码差异点查找到的程序修改功能项即为“ASP_DEL”,将其记录在上述表3中。
步骤S1004:针对表1中第m+2行的内容,即第三处代码差异点位于新版代码的第659行,按照表2中所记录的关键字依次进行查找。
即,从第28行开始,先向上查找关键字“type BasicProgram”,查找到该关键字“type BasicProgram”的位置位于新版代码的第600行,然后查找关键字“ASP_CHECK”,其位于新版代码的第615行,然后查找关键字“ASP_SER”,其位于新版代码的第621行,依次类推,依次查找表2中所记载的程序关键字。然后,比对各个关键字所在位置与代码差异点的距离,确定离代码差异点最近的关键字为“ASP_WRT_CJNL。因此,基于第一处代码差异点查找到的程序修改功能项即为“ASP_WRT_CJNL,将其记录在上述表3中。
步骤S1005:根据上述表3中记录的程序4202对应的三个程序修改功能项,在关键字定义表(上述表2)中查找其对应的案例功能项。即,ASP_CHECK对应于“数据检查”、ASP_DEL对应于“删除操作”、ASP_WRT_CJNL对应于“日志登记”。
因此,将查找到的相应的案例功能项对应进行记录,从而生成表4。
步骤S1006:根据表4中记录的程序名4202中对对应的案例功能项,在预设的脚本功能存储表中获取相对应的测试脚本及测试数据,通过测试脚本调用上述的案例功能项所对应的程序代码作为测试程序代码;在单独搭建的测试环境中运行该测试程序代码,对测试数据进行测试。
本发明实施例还提供一种程序自动化测试系统,如图3所示,该程序自动化测试系统主要包括:代码差异文本生成单元1、程序修改功能项查找单元2及测试脚本确定单元3等。
其中,上述的代码差异文本生成单元1,用于将修改后代码与原始代码进行差异比对,根据修改后代码与原始代码的差异位置生成代码差异文本;程序修改功能项查找单元2用于根据预设的关键字及差异位置,查找修改后代码中包含关键字、且距离差异位置最近的程序修改功能项;测试脚本确定单元3用于根据程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行测试脚本对所述测试数据进行测试。
通过上述的各个组成部分,本发明实施例的程序自动化测试系统,将新旧版本的代码进行差异比较,找到差异点,根据该差异点来查找相应的程序修改功能项,从而有针对性地进行脚本测试,能够有效利用主机资源进行测试,节省主机资源,并提高了测试效率。
以下结合具体实施例,对本发明实施例的程序自动化测试系统做进一步说明。
上述的代码差异文本生成单元1,用于将修改后代码与原始代码进行差异比对,根据修改后代码与原始代码的差异位置生成代码差异文本。
具体地,可以是将当前版本代码(修改后代码)及上一版本代码(原始代码)分别放在2个txt文本中,然后对两个文本做逐行对比,比较差异点结果。具体实施时,该差异点可分为3种情况:第1种是当前版本代码新增了代码段;第2种是当前版本代码修改了代码段;第3种是当前版本代码删除了代码段。将这3种情况的代码的行数记录在一个新的代码差异文本(可以例如是txt格式)中。该代码差异文本中记录的内容例如是如表1所示。
需要说明的是,在此实施例中所提及的txt文本,以及可能出现的差异点的情况均是举例说明,而非用以限制本发明。
上述的程序修改功能项查找单元2,用于根据预设的关键字及差异位置,查找修改后代码中包含关键字、且距离差异位置最近的程序修改功能项。
具体地,如图4所示,该程序修改功能项查找单元2主要包括:备选程序修改功能项查找模块21及程序修改功能项确定模块22。
其中,备选程序修改功能项查找模块21用于从修改点行数开始,向上查找修改后代码中包含关键字的至少一备选程序修改功能项;程序修改功能项确定模块22用于查找备选程序修改功能项中,距离修改点行数最近的一备选程序修改功能项,并确定为程序修改功能项。
在通过上述的代码差异文本生成单元1生成了代码差异文本后,可通过备选程序修改功能项查找模块21依据该代码差异文本中所记录的程序修改点的行数,在修改后代码中进行查找。在进行查找时,可依据一预先定义好的关键字定义表,按照其中所记录的关键字进行查找。该关键字定义表如表2所示。
当查找到相应的关键字后,记录至如表3所示的记录表中。
在该记录表中,程序名即是指在实际应用中,要进行测试的程序的名称。在一具体实施例中,该程序名可对应于需要进行测试的某个交易所使用的程序。
根据表2中记录的一个或多个关键字向上查找时,可能会找到多个相对应的程序修改功能项作为备选程序修改功能项,此时,则需通过程序修改功能项确定模块22确定在这些程序修改功能项中,离代码修改点最近的程序修改功能项,并记录至上述的表3中。
在一较佳实施例中,上述程序修改功能项查找单元2的查找过程可通过如图2A所示的过程表示,其具体流程如下:
首先,设定该过程的变量n,m,i,a。其中,n初始值为1,表示修改后代码文本行数;m初始值为1,表示当前关键字定义表行数;i初始值为空,表示离当前查找的代码修改点最近的程序修改功能项名;a为临时变量,初始值为0,用以赋值距离代码修改点最近的程序修改功能项的行数。
步骤S1:从修改后代码的第t行开始,根据第m行对应的关键字值向上查找;
步骤S2:若找到关键字值,则判断a是否为0;若a为0,则直接将找到的关键字值所处行数赋给a;若a不为0,则判断找到的关键字值所处行数是否大于a;
步骤S3:若找到的关键字值所处行数大于a,则将找到的关键字值所处行数赋给a,否则保留a的取值;
步骤S4:判断m是否为关键字定义表的最后一行;若m不为关键字定义表的最后一行,则将m更新为m+1,返回执行上述步骤S1至步骤S3;若m为关键字定义表的最后一行,将a的取值对应的备选程序修改功能项确定为距离修改点行数最近的备选程序修改功能项。
以上过程主要描述的是针对修改差异文本中一行数据(例如第n行所记录的行数)向上查找的过程。当要针对修改差异文本中其他行数据进行查找时(例如第n+1行、第n+2行等等),则在上述的步骤执行完毕后,还需执行如下步骤:
步骤S5:判断n是否为代码差异文本的最后一行;若n不为代码差异文本的最后一行,则将n更新为n+1,返回执行步骤S1至步骤S4;若n为代码差异文本的最后一行,则触发测试脚本确定单元3,根据预设的对照表及程序修改功能项查找对应的测试脚本并进行测试)。
上述的测试脚本确定单元3,用于根据程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行测试脚本对测试数据进行测试。
具体地,如图5所示,该测试脚本确定单元3主要包括:案例功能项查找模块31及测试脚本确定模块32。
其中,案例功能项查找模块31用于根据预设的关键字定义表及程序修改功能项查找对应的案例功能项,其中,关键字定义表中记录有案例功能项与程序修改功能项的对应关系;测试脚本确定模块32用于根据案例功能项检索预设的脚本功能存储表,确定案例功能项对应的测试脚本及测试数据。
在通过程序修改功能项查找单元2查找到该修改后代码中离代码修改点最近的程序修改功能项之后,即可通过案例功能项查找模块31,在上述表2中对应查找与该程序修改功能项相对应的案例功能项。例如,从表3中程序名4202查找到的三个程序修改功能项“ASP_CHECK、ASP_DEL、ASP_WRT_CJNL”,在表2中分别对应案例功能项“数据检查、删除操作、日志登记”,由此,生成查询结果如表4所示。
由此,即找到了修改后代码中离代码修改点最近的案例功能项。
然后通过上述的测试脚本确定模块32,根据案例功能项检索预设的脚本功能存储表,确定案例功能项对应的测试脚本及测试数据,并执行测试脚本对所述测试数据进行测试。
在本发明实施例中,预先存储有案例功能项与脚本功能相对应的存储表,即上述的脚本功能存储表。在通过案例功能项查找模块31获取到相应的案例功能项后,即可通过该脚本功能存储表,查询并获取其相对应的测试脚本及测试数据,将确定的测试脚本提交测试环境运行,从而对测试数据进行测试。具体地,是通过测试脚本调用上述的案例功能项所对应的程序代码作为测试程序代码;在单独搭建的测试环境中运行该测试程序代码,对测试数据进行测试。例如,如以上表4中,需对程序名“4202”的程序,测试其“删除操作”的功能,则需提交4202程序对应的案例名为“删除操作”的脚本;在此脚本中,字段“操作标志”的测试数据送的值为:3删除,则4202程序在读取测试数据并运行时,判断此字段的值为3后,会自动去执行删除操作的代码,从而测试删除操作的功能。
本发明实施例的程序自动化测试系统,主要具有以下优点:
1)对程序修改点智能化自动生成对应的案例及脚本,不必运行所有程序分支,提高了测试效率。
2)有效利用主机资源运行程序,节省主机资源。
以下结合一具体应用实例对本发明实施例的程序自动化测试系统所执行的过程做具体说明。
在此实施例中,是针对表3及表4中的程序名4202所进行的自动测试过程。
步骤S1001:比对程序4202的新旧两个版本,生成代码差异文本,该文本中所记录的内容以上述表1内容为例。
步骤S1002:针对表1中第m行的内容,m的初始值为1。即第一处代码差异点位于新版代码的第5行,按照表2中所记录的关键字依次进行查找。
即,从第5行开始,先向上查找关键字“type BasicProgram”,查找到该关键字“type BasicProgram”的位置位于新版代码的第3行,然后查找关键字“ASP_CHECK”,其位于新版代码的第4行,然后查找关键字“ASP_SER”,其位于新版代码的第2行,依次类推,依次查找表2中所记载的程序关键字。然后,比对各个关键字所在位置与代码差异点的距离,确定离代码差异点最近的关键字为“ASP_CHECK”。因此,基于第一处代码差异点查找到的程序修改功能项即为“ASP_CHECK”,将其记录在上述表3中。
步骤S1003:针对表1中第m+1行的内容,即第二处代码差异点位于新版代码的第28行,按照表2中所记录的关键字依次进行查找。
即,从第28行开始,先向上查找关键字“type BasicProgram”,查找到该关键字“type BasicProgram”的位置位于新版代码的第20行,然后查找关键字“ASP_CHECK”,其位于新版代码的第15行,然后查找关键字“ASP_SER”,其位于新版代码的第21行,依次类推,依次查找表2中所记载的程序关键字。然后,比对各个关键字所在位置与代码差异点的距离,确定离代码差异点最近的关键字为“ASP_DEL”。因此,基于第一处代码差异点查找到的程序修改功能项即为“ASP_DEL”,将其记录在上述表3中。
步骤S1004:针对表1中第m+2行的内容,即第三处代码差异点位于新版代码的第659行,按照表2中所记录的关键字依次进行查找。
即,从第28行开始,先向上查找关键字“type BasicProgram”,查找到该关键字“type BasicProgram”的位置位于新版代码的第600行,然后查找关键字“ASP_CHECK”,其位于新版代码的第615行,然后查找关键字“ASP_SER”,其位于新版代码的第621行,依次类推,依次查找表2中所记载的程序关键字。然后,比对各个关键字所在位置与代码差异点的距离,确定离代码差异点最近的关键字为“ASP_WRT_CJNL。因此,基于第一处代码差异点查找到的程序修改功能项即为“ASP_WRT_CJNL,将其记录在上述表3中。
步骤S1005:根据上述表3中记录的程序4202对应的三个程序修改功能项,在关键字定义表(上述表2)中查找其对应的案例功能项。即,ASP_CHECK对应于“数据检查”、ASP_DEL对应于“删除操作”、ASP_WRT_CJNL对应于“日志登记”。
因此,将查找到的相应的案例功能项对应进行记录,从而生成表4。
步骤S1006:根据表4中记录的程序名4202中对对应的案例功能项,在预设的脚本功能存储表中获取相对应的测试脚本及测试数据,通过测试脚本调用上述的案例功能项所对应的程序代码作为测试程序代码;在单独搭建的测试环境中运行该测试程序代码,对测试数据进行测试。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如ROM/RAM、磁碟、光盘等。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种程序自动化测试方法,其特征在于,所述的程序自动化测试方法包括:
将修改后代码与原始代码进行差异比对,根据所述修改后代码与原始代码的差异位置生成代码差异文本;
根据预设的关键字及所述差异位置,查找所述修改后代码中包含所述关键字、且距离所述差异位置最近的程序修改功能项;
根据所述程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行所述测试脚本对所述测试数据进行测试。
2.根据权利要求1所述的程序自动化测试方法,其特征在于,根据所述程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,具体包括:
根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项,其中,所述关键字定义表中记录有所述案例功能项与所述程序修改功能项的对应关系;
根据所述案例功能项检索预设的脚本功能存储表,确定所述案例功能项对应的测试脚本及测试数据。
3.根据权利要求2所述的程序自动化测试方法,其特征在于,所述代码差异文本中记录的所述差异位置为所述修改后代码与原始代码相比的代码修改点在所述修改后代码中的修改点行数。
4.根据权利要求3所述的程序自动化测试方法,其特征在于,根据预设的关键字及所述差异位置,查找所述修改后代码中包含所述关键字、且距离所述差异位置最近的程序修改功能项,具体包括:
从所述修改点行数开始,向上查找所述修改后代码中包含所述关键字的至少一备选程序修改功能项;
查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,并确定为所述的程序修改功能项。
5.根据权利要求4所述的程序自动化测试方法,其特征在于,查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,具体包括:
步骤1:从所述修改后代码的第t行开始,根据第m行对应的关键字值向上查找;
步骤2:若找到所述关键字值,则判断a是否为0;若a为0,则直接将找到的关键字值所处行数赋给a;若a不为0,则判断找到的关键字值所处行数是否大于a;
步骤3:若找到的关键字值所处行数大于a,则将找到的关键字值所处行数赋给a,否则保留a的取值;
步骤4:判断m是否为所述关键字定义表的最后一行;若m不为所述关键字定义表的最后一行,则将m更新为m+1,返回执行所述步骤1至步骤3;若m为所述关键字定义表的最后一行,将a的取值对应的备选程序修改功能项确定为所述距离所述修改点行数最近的备选程序修改功能项;
其中,m初始值为1,表示当前关键字定义表行数;a为临时变量,初始值为0;t为所述代码差异文本中记录的所述修改点行数。
6.根据权利要求5所述的程序自动化测试方法,其特征在于,在所述步骤4之后,查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,还包括:
步骤5:判断n是否为所述代码差异文本的最后一行;若n不为所述代码差异文本的最后一行,则将n更新为n+1,返回执行所述步骤1至步骤4;若n为所述代码差异文本的最后一行,则执行根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项的步骤;
其中,n初始值为1,表示所述代码差异文本行数。
7.根据权利要求1至6中任一权利要求所述的程序自动化测试方法,其特征在于,执行所述测试脚本对所述测试数据进行测试,具体包括:
通过所述测试脚本调用所述案例功能项所对应的程序代码作为测试程序代码;
在单独搭建的测试环境中运行所述测试程序代码,对所述测试数据进行测试。
8.一种程序自动化测试系统,其特征在于,所述的程序自动化测试系统包括:
代码差异文本生成单元,用于将修改后代码与原始代码进行差异比对,根据所述修改后代码与原始代码的差异位置生成代码差异文本;
程序修改功能项查找单元,用于根据预设的关键字及所述差异位置,查找所述修改后代码中包含所述关键字、且距离所述差异位置最近的程序修改功能项;
测试脚本确定单元,用于根据所述程序修改功能项在预设的对照表中查找相应的测试脚本及测试数据,并执行所述测试脚本对所述测试数据进行测试。
9.根据权利要求8所述的程序自动化测试系统,其特征在于,所述测试脚本确定单元包括:
案例功能项查找模块,用于根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项,其中,所述关键字定义表中记录有所述案例功能项与所述程序修改功能项的对应关系;
测试脚本确定模块,用于根据所述案例功能项检索预设的脚本功能存储表,确定所述案例功能项对应的测试脚本及测试数据。
10.根据权利要求9所述的程序自动化测试系统,其特征在于,所述代码差异文本中记录的所述差异位置为所述修改后代码与原始代码相比的代码修改点在所述修改后代码中的修改点行数。
11.根据权利要求10所述的程序自动化测试系统,其特征在于,所述的程序修改功能项查找单元具体包括:
备选程序修改功能项查找模块,用于从所述修改点行数开始,向上查找所述修改后代码中包含所述关键字的至少一备选程序修改功能项;
程序修改功能项确定模块,用于查找所述备选程序修改功能项中,距离所述修改点行数最近的一备选程序修改功能项,并确定为所述的程序修改功能项。
12.根据权利要求10所述的程序自动化测试系统,其特征在于,所述的程序修改功能项确定模块具体用于执行以下步骤:
步骤1:从所述修改后代码的第t行开始,根据第m行对应的关键字值向上查找;
步骤2:若找到所述关键字值,则判断a是否为0;若a为0,则直接将找到的关键字值所处行数赋给a;若a不为0,则判断找到的关键字值所处行数是否大于a;
步骤3:若找到的关键字值所处行数大于a,则将找到的关键字值所处行数赋给a,否则保留a的取值;
步骤4:判断m是否为所述关键字定义表的最后一行;若m不为所述关键字定义表的最后一行,则将m更新为m+1,返回执行所述步骤1至步骤3;若m为所述关键字定义表的最后一行,将a的取值对应的备选程序修改功能项确定为所述距离所述修改点行数最近的备选程序修改功能项;
其中,m初始值为1,表示当前关键字定义表行数;a为临时变量,初始值为0;t为所述代码差异文本中记录的所述修改点行数。
13.根据权利要求12所述的程序自动化测试系统,其特征在于,所述的程序修改功能项确定模块还用于:
步骤5:判断n是否为所述代码差异文本的最后一行;若n不为所述代码差异文本的最后一行,则将n更新为n+1,返回执行所述步骤1至步骤4;若n为所述代码差异文本的最后一行,则触发所述案例功能项查找单元,根据预设的关键字定义表及所述程序修改功能项查找对应的案例功能项;
其中,n初始值为1,表示所述代码差异文本行数。
14.根据权利要求8至13中任一权利要求所述的程序自动化测试系统,其特征在于,所述测试脚本确定单元执行所述测试脚本对所述测试数据进行测试的步骤,具体包括:
通过所述测试脚本调用所述案例功能项所对应的程序代码作为测试程序代码;
在单独搭建的测试环境中运行所述测试程序代码,对所述测试数据进行测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610987892.8A CN106407124B (zh) | 2016-11-10 | 2016-11-10 | 一种程序自动化测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610987892.8A CN106407124B (zh) | 2016-11-10 | 2016-11-10 | 一种程序自动化测试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106407124A true CN106407124A (zh) | 2017-02-15 |
CN106407124B CN106407124B (zh) | 2019-03-12 |
Family
ID=59230241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610987892.8A Active CN106407124B (zh) | 2016-11-10 | 2016-11-10 | 一种程序自动化测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106407124B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193747A (zh) * | 2017-05-27 | 2017-09-22 | 北京金山安全软件有限公司 | 代码测试方法、装置和计算机设备 |
CN107368313A (zh) * | 2017-07-18 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 代码检测方法、装置及电子设备 |
CN107766236A (zh) * | 2017-09-21 | 2018-03-06 | 平安科技(深圳)有限公司 | 测试任务自动化管理方法、装置、设备及存储介质 |
CN107885095A (zh) * | 2017-09-26 | 2018-04-06 | 浙江浙大列车智能化工程技术研究中心有限公司 | Cbtc系统自动化测试装置及其测试方法 |
CN107957953A (zh) * | 2017-12-19 | 2018-04-24 | 广东睿江云计算股份有限公司 | 一种回归测试的方法 |
CN108958073A (zh) * | 2018-06-19 | 2018-12-07 | 珠海格力电器股份有限公司 | 一种利用实验大数据验证产品功能点逻辑的方法及电器 |
CN109388555A (zh) * | 2017-08-10 | 2019-02-26 | 博彦科技股份有限公司 | 测试脚本的处理方法和装置 |
CN110443321A (zh) * | 2019-08-14 | 2019-11-12 | 北京百度网讯科技有限公司 | 模型结构调整方法及装置 |
CN111459817A (zh) * | 2020-03-31 | 2020-07-28 | 中国银行股份有限公司 | 一种程序执行码的检验方法及装置 |
CN112860544A (zh) * | 2021-01-21 | 2021-05-28 | 南威软件股份有限公司 | 一种代码检测方法、装置、设备和计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120167055A1 (en) * | 2010-11-09 | 2012-06-28 | International Business Machines Corporation | Efficiently developing software using test cases to check the conformity of the software to the requirements |
CN104765692A (zh) * | 2015-04-29 | 2015-07-08 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
CN105302710A (zh) * | 2014-07-03 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 一种确定需要回归测试的测试用例的方法和装置 |
CN106095657A (zh) * | 2016-06-02 | 2016-11-09 | 浪潮电子信息产业股份有限公司 | 一种快速确认性能测试脚本中变量的方法 |
-
2016
- 2016-11-10 CN CN201610987892.8A patent/CN106407124B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120167055A1 (en) * | 2010-11-09 | 2012-06-28 | International Business Machines Corporation | Efficiently developing software using test cases to check the conformity of the software to the requirements |
CN105302710A (zh) * | 2014-07-03 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 一种确定需要回归测试的测试用例的方法和装置 |
CN104765692A (zh) * | 2015-04-29 | 2015-07-08 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
CN106095657A (zh) * | 2016-06-02 | 2016-11-09 | 浪潮电子信息产业股份有限公司 | 一种快速确认性能测试脚本中变量的方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107193747B (zh) * | 2017-05-27 | 2022-01-11 | 北京金山安全软件有限公司 | 代码测试方法、装置和计算机设备 |
CN107193747A (zh) * | 2017-05-27 | 2017-09-22 | 北京金山安全软件有限公司 | 代码测试方法、装置和计算机设备 |
CN107368313A (zh) * | 2017-07-18 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 代码检测方法、装置及电子设备 |
CN107368313B (zh) * | 2017-07-18 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 代码检测方法、装置及电子设备 |
CN109388555A (zh) * | 2017-08-10 | 2019-02-26 | 博彦科技股份有限公司 | 测试脚本的处理方法和装置 |
CN107766236A (zh) * | 2017-09-21 | 2018-03-06 | 平安科技(深圳)有限公司 | 测试任务自动化管理方法、装置、设备及存储介质 |
CN107885095A (zh) * | 2017-09-26 | 2018-04-06 | 浙江浙大列车智能化工程技术研究中心有限公司 | Cbtc系统自动化测试装置及其测试方法 |
CN107957953A (zh) * | 2017-12-19 | 2018-04-24 | 广东睿江云计算股份有限公司 | 一种回归测试的方法 |
CN108958073A (zh) * | 2018-06-19 | 2018-12-07 | 珠海格力电器股份有限公司 | 一种利用实验大数据验证产品功能点逻辑的方法及电器 |
CN108958073B (zh) * | 2018-06-19 | 2020-10-20 | 珠海格力电器股份有限公司 | 一种利用实验大数据验证产品功能点逻辑的方法及电器 |
CN110443321A (zh) * | 2019-08-14 | 2019-11-12 | 北京百度网讯科技有限公司 | 模型结构调整方法及装置 |
CN111459817A (zh) * | 2020-03-31 | 2020-07-28 | 中国银行股份有限公司 | 一种程序执行码的检验方法及装置 |
CN111459817B (zh) * | 2020-03-31 | 2024-02-02 | 中国银行股份有限公司 | 一种程序执行码的检验方法及装置 |
CN112860544A (zh) * | 2021-01-21 | 2021-05-28 | 南威软件股份有限公司 | 一种代码检测方法、装置、设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106407124B (zh) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106407124A (zh) | 一种程序自动化测试方法及系统 | |
CN101364239B (zh) | 一种分类目录自动构建方法及相关系统 | |
CN104375992B (zh) | 一种地址匹配的方法和装置 | |
CN101630314B (zh) | 一种基于领域知识的语义查询扩展方法 | |
CN103473171A (zh) | 一种基于函数调用路径的覆盖率动态跟踪方法及装置 | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN104331446A (zh) | 一种基于内存映射的海量数据预处理方法 | |
CN104462429A (zh) | 数据库查询语句的生成方法及装置 | |
KR101230929B1 (ko) | Bim 서버의 데이터 제공 방법 | |
CN105279089A (zh) | 一种获取页面元素的方法及装置 | |
US8463799B2 (en) | System and method for consolidating search engine results | |
CN111984673B (zh) | 一种电网电能量计量系统树形结构模糊检索方法和装置 | |
CN103258051B (zh) | 一种基于搜索的题库系统及其建立方法和应用方法 | |
CN104714956A (zh) | 一种异构记录集对比方法及装置 | |
CN105159931A (zh) | 用于生成同义词的方法和装置 | |
Liu et al. | Test reuse based on adaptive semantic matching across android mobile applications | |
CN111460012A (zh) | 基于Spark的气象历史台站沿革数据可视化方法及系统 | |
Ramsey et al. | Introduction to postgis | |
CN102436453B (zh) | 一种父子维的处理方法及装置 | |
CN110347980A (zh) | 一种基于Unity3D的树形结构自动生成方法、插件、电子设备及计算机可读存储介质 | |
Zolghadr-Asli | Discussion of “Multiscale assessment of the impacts of climate change on water resources in Tanzania” by Umesh Adhikari, A. Pouyan Nejadhashemi, Matthew R. Herman, and Joseph P. Messina | |
CN110472125B (zh) | 一种基于网络爬虫的多级页面的级联爬取方法和设备 | |
CN104391945A (zh) | 数据库文件数据索引的处理方法和装置 | |
Nalini et al. | A comparative study analysis of materialized view for selection cost | |
CN104239314A (zh) | 一种扩展检索词的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |