CN109032946B - 一种测试方法和装置、计算机可读存储介质 - Google Patents

一种测试方法和装置、计算机可读存储介质 Download PDF

Info

Publication number
CN109032946B
CN109032946B CN201810842423.6A CN201810842423A CN109032946B CN 109032946 B CN109032946 B CN 109032946B CN 201810842423 A CN201810842423 A CN 201810842423A CN 109032946 B CN109032946 B CN 109032946B
Authority
CN
China
Prior art keywords
function
tested
interface
main function
main
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.)
Active
Application number
CN201810842423.6A
Other languages
English (en)
Other versions
CN109032946A (zh
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.)
Xiamen Jiwei Technology Co ltd
Original Assignee
Xiamen Jiwei Technology Co ltd
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 Xiamen Jiwei Technology Co ltd filed Critical Xiamen Jiwei Technology Co ltd
Priority to CN201810842423.6A priority Critical patent/CN109032946B/zh
Publication of CN109032946A publication Critical patent/CN109032946A/zh
Application granted granted Critical
Publication of CN109032946B publication Critical patent/CN109032946B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种测试方法和装置、计算机可读存储介质,所述方法包括:确定待测项目中的主要待测功能;获取所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度;根据获取的关联度大小,选择除所述主要待测功能之外的N个功能作为相关待测功能,其中,N为大于或等于0的整数。本申请通过根据各功能与主要待测功能之间的关联度,选择相关待测功能,使得测试人员在一个功能被更改或新增的情况下,不用测试所有其它的功能,缩短了测试周期,同时,与只测试被更改或新增的功能相比,本发明提高了测试质量,因此,本发明在保证一定的测试质量的前提下提高了测试效率。

Description

一种测试方法和装置、计算机可读存储介质
技术领域
本发明涉及测试技术领域,尤其涉及一种测试方法和装置、计算机可读存储介质。
背景技术
开发人员在修改BUG的过程中,常常出现修改了A模块的BUG,却造成了原来测试没有问题的B模块出现了新的问题的情况;或者出现增加新的C模块,却造成了原来测试没有问题的D模块出现了新的问题的情况。
但是,有时候产品迭代周期短且频繁,在短期测试时间内测试人员通常会优先处理新修改的模块或新增加的模块,而花费相对较少的时间重新验证旧模块,这样就比较容易存在隐患。但如果增加对旧模块的测试时间,不仅会加长测试周期,影响产品的推进和发布,并且会降低测试效率,影响产品质量。
发明内容
为了解决上述技术问题,本发明提供了一种测试方法和装置、计算机可读存储介质,能够在保证一定的测试质量的前提下提高测试效率。
为了达到本发明目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种测试方法,包括:
确定待测项目中的主要待测功能;
获取所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度;
根据获取的关联度大小,选择除所述主要待测功能之外的N个功能作为相关待测功能,其中,N为大于或等于0的整数。
进一步地,所述方法还包括:
根据所述各功能与所述主要待测功能的接口函数和/或页面元素之间的相似度,计算所述各功能与所述主要待测功能之间的关联度。
进一步地,所述根据所述各功能与所述主要待测功能的接口函数之间的相似度,计算所述各功能与所述主要待测功能之间的关联度,包括:
通过余弦公式计算所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度,相似度越大,所述计算出的关联度越大;或者,
比较所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数,包含的相同的函数参数的个数越多,所述计算出的关联度越大;或者,
通过所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度计算第一关联度,通过所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数计算第二关联度,根据预定义的权值计算第一关联度和第二关联度的加权平均值,将所述加权平均值作为所述计算出的关联度。
进一步地,所述页面元素包括表单、按钮、导航、选项卡、进度条、面板、表格。
进一步地,所述方法还包括:
获取所述主要待测功能和所述相关待测功能的测试流程,所述测试流程预先用自然语言描述;
将获取的测试流程通过自然语言处理,编译成可执行代码;
执行可执行代码并返回执行结果。
进一步地,所述将获取的测试流程通过自然语言处理,编译成可执行代码,包括:
扫描所述测试流程,识别所述测试流程中预定义的记号,生成记号流;
根据生成的记号流构造语法树;
对语法树进行语义检查并优化,生成可执行代码。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如以上任一项所述的测试方法的步骤。
本发明实施例还提供了一种测试装置,包括处理器及存储器,其中:
所述处理器用于执行存储器中存储的测试程序,以实现如以上任一项所述的测试方法的步骤。
本发明实施例还提供了一种测试装置,包括确定模块和选择模块,其中:
确定模块,用于确定待测项目中的主要待测功能;
选择模块,用于获取所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度,并根据获取的关联度大小,选择除所述主要待测功能之外的N个功能作为相关待测功能,其中,N为大于或等于0的整数。
进一步地,所述测试装置还包括计算模块,其中:
所述计算模块,用于根据所述各功能与所述主要待测功能的接口函数和/或页面元素之间的相似度,计算所述各功能与所述主要待测功能之间的关联度。
本发明实施例的技术方案,具有如下有益效果:
本发明实施例提供的测试方法和装置、计算机可读存储介质,通过根据除主要待测功能之外的各功能与主要待测功能之间的关联度,选择除主要待测功能之外的N个功能作为相关待测功能,使得测试人员在一个功能被更改或新增的情况下,不用测试所有其它的功能,缩短了测试周期,同时,与只测试被更改或新增的功能相比,本发明提高了测试质量,因此本发明在保证一定的测试质量的前提下提高了测试效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例的一种测试方法的结构示意图;
图2为本发明实施例的一种语法树的结构示意图;
图3为本发明实施例的一种优化的语法树的结构示意图;
图4为本发明实施例的一种测试装置的结构示意图;
图5为本发明实施例的另一种测试装置的结构示意图;
图6为本发明实施例的又一种测试装置的结构示意图;
图7为本发明实施例的一种Web测试系统的测试流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
如图1所示,本发明实施例提供了一种测试方法,包括如下步骤:
步骤101:确定待测项目中的主要待测功能;
本实施例中,所述主要待测功能可以是所述待测项目中增加的新功能,或者是所述待测项目中被修改的原有功能。
本实施例中,可以通过程序进行自动化检测是否有功能的代码被修改或新增,确定所述待测项目中的主要待测功能,或者,也可以通过测试人员手动指定所述待测项目中的主要待测功能。
步骤102:获取所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度;
在本实施例的一示例中,所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度通过预先进行设置。
在本实施例的另一示例中,所述方法还包括:
根据所述各功能与所述主要待测功能的接口函数和/或页面元素之间的相似度,计算所述各功能与所述主要待测功能之间的关联度。
需要说明的是,如果待测项目为前后端分离的Web系统或其它的待测产品项目,则可根据接口函数得出各个功能的关联度;如果项目是前后端不分离的Web系统,则通过抓取页面元素得出各个功能的关联度。
在该示例中,所述根据所述各功能与所述主要待测功能的接口函数之间的相似度,计算所述各功能与所述主要待测功能之间的关联度,包括:
通过余弦公式计算所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度,相似度越大,所述计算出的关联度越大;或者,
比较所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数,包含的相同的函数参数的个数越多,所述计算出的关联度越大;或者,
通过所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度计算第一关联度,通过所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数计算第二关联度,根据预定义的权值计算第一关联度和第二关联度的加权平均值,将所述加权平均值作为所述计算出的关联度。
例如,假设接口A的函数名称为/user/delete.do,接口B的函数名称为/user/add.do,通过余弦公式计算接口A的函数名称与接口B的函数名称之间的相似度的方法为:
1)分别对所述接口函数的函数名称进行语句拆分;
接口A的函数名称拆分为:userdelete;
接口B的函数名称拆分为:useradd;
2)将拆分后的函数名称进行组合,并进行去重处理;
得到:userdaedldete;
3)计算所述接口函数的函数名称在组合的名称中的字频,即统计接口A的函数名称和接口B的函数名称在组合的名称中出现的频率:
接口A的函数名称在组合的名称中出现的频率:
u[1]s[1]e[1]r[1]d[1]a[0]e[1]d[0]l[1]d[0]e[1]t[1]e[1],即接口A的函数名称的字频向量为:(1,1,1,1,1,0,1,0,1,0,1,1,1);
接口B的函数名称在组合的名称中出现的频率:
u[1]s[1]e[1]r[1]d[0]a[1]e[0]d[1]l[0]d[1]e[0]t[0]e[0],即接口A的函数名称的字频向量为:(1,1,1,1,0,1,0,1,0,1,0,0,0);
4)利用余弦公式,计算所述接口函数的函数名称之间的相似性:
Figure BDA0001745889390000061
其中,xi为接口A的函数名称的字频向量,yi为接口B的函数名称的字频向量,cos(θ)为计算出的余弦值。计算出的余弦值越接近1,就表明夹角越接近0度,也就是两个字频向量越相似,余弦值等于1,即夹角等于0表示两个向量相等,余弦值等于0,即夹角为90°表示两个向量完全不同,这就叫"余弦相似性"。
在本示例中,计算出的接口A的函数名称和接口B的函数名称之间的相似度为:
Figure BDA0001745889390000062
在该示例中,所述页面元素包括表单、按钮、导航、选项卡、进度条、面板、表格等。
需要说明的是,页面元素就是指网页中使用到的一切用于组织结构和表达内容的对象。组织结构的页面元素包括:表格(布局),层,导航条,链接等等;表达内容的页面元素包括:文字,图像,Flash等等。通过JavaScript或者Selenium抓取页面元素。JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。Selenium是一套完整的web应用程序测试系统,包含了测试的录制、编写及运行和测试的并行处理,Selenium可以模拟真实浏览器,进行自动化测试,并支持多种浏览器。
所述各功能与所述主要待测功能的页面元素之间的相似度大小也可以通过余弦公式进行计算,计算方法与上述接口函数的函数名称之间的相似度的计算方法类似,此处不再赘述。
在本实施例的一示例中,可以将计算出的所述各功能与所述主要待测功能的接口函数之间的相似度,直接作为所述各功能与所述主要待测功能之间的关联度,或者根据计算出的所述各功能与所述主要待测功能的接口函数之间的相似度与预设的比例系数,计算所述各功能与所述主要待测功能之间的关联度,只要相似度越大,计算出的关联度越大即可。
在本实施例的另一示例中,也可以将计算出的所述各功能与所述主要待测功能的页面元素之间的相似度,直接作为所述各功能与所述主要待测功能之间的关联度,或者根据计算出的所述各功能与所述主要待测功能的页面元素之间的相似度与预设的比例系数,计算所述各功能与所述主要待测功能之间的关联度,只要相似度越大,计算出的关联度越大即可。
在本实施例的又一示例中,假设第一关联度(即根据各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度计算出的关联度)为s1,第二关联度(即通过所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数计算出的关联度)为s2,则最终计算出的关联度为s=a*s1+b*s2,其中,a、b为预先定义的第一关联度和第二关联度的权值。
步骤103:根据获取的关联度大小,选择除所述主要待测功能之外的N个功能作为相关待测功能,其中,N为大于或等于0的整数。
本实施例中,所述方法还包括:根据获取的关联度大小,预测所述待测项目中除所述主要待测功能之外的各功能被破坏比例,根据预测的各功能被破坏比例,选择除所述主要待测功能之外的N个功能作为相关待测功能。
在本实施例的一示例中,关联度s与被破坏比例d的关联关系如表1所示:
Figure BDA0001745889390000071
Figure BDA0001745889390000081
表1
其中,被破坏比例d可以与关联度s相等,也可以为以关联度s为自变量的函数值。通过设置被破坏比例d,可以使得测试人员更直观地了解主要待测功能对除主要待测功能之外的各功能的影响大小。
本实施例中,所述方法还包括:
获取所述主要待测功能和所述相关待测功能的测试流程,所述测试流程预先用自然语言描述;
将获取的测试流程通过自然语言处理,编译成可执行代码;
执行可执行代码并返回执行结果。
例如,以待测功能为“新增用户”为例,其测试流程如下:
Figure BDA0001745889390000082
通过用自然语言描述测试流程,结构清晰,可读性高,并保存测试流程以便下一次迭代使用。
本实施例中,所述将获取的测试流程通过自然语言处理,编译成可执行代码,包括:
扫描所述测试流程,识别所述测试流程中预定义的记号,生成记号流;
根据生成的记号流构造语法树;
对语法树进行语义检查并优化,生成可执行代码。
本实施例中,所述预定义的记号包括:关键字、标识符(变量名、数据名)、字面量、运算符、注释行和特殊符号(续行、语句结束、数组)。通过词法分析器识别所述测试流程中预定义的记号,词法分析器的本质是查看连续的字符然后把它们识别为“单词”。
本实施例中,通过语法分析程序根据语法规则识别出记号流中的结构,构造语法树。
在本实施例的一示例中,使用词法单元的第一个分量来创建树形的中间表示,也就是根据抽象符号(标识符、运算符…)来构建语法结构。语法树是一个常用的表示方法,一个简单的语法树结构如图2所示,树中的每个内部结点表示一个运算,该结点子结点表示运算的分量。
本实施例中,通过语义分析程序对语法树进行语义检查并优化。
在本实施例的一示例中,使用语法树和符号表中的信息来检查是否和语言定义的语义一致,并将类型信息存放在语法树或符号表中。例如,如果检查到数组下标是浮点数就会报错;或者检查到一个二元运算符应用于一个浮点数和一个整数,则会把整数转换为一个浮点数,也就是自动类型转换,如图3所示。
本实施例中,可以通过机器无关的代码优化步骤改进中间代码来生成更好的目标代码(“更好”意味着更快,更短,能耗更低的目标代码);也可以通过使用一个简单的中间代码生成算法,然后再进行代码优化步骤,生成优质目标代码。
本实施例中,执行结果最终以表格的形式展示,包括主要待测功能和相关待测功能的各个测试项以及测试结果,如果显示为红色表示测试不通过,并输出原因。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如以上任一项所述的测试方法的步骤。
本发明实施例还提供了一种测试装置,包括处理器及存储器,其中:
所述处理器用于执行存储器中存储的测试程序,以实现如以上任一项所述的测试方法的步骤。
如图4所示,本发明实施例还提供了一种测试装置,包括确定模块401和选择模块402,其中:
确定模块401,用于确定待测项目中的主要待测功能;
选择模块402,用于获取所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度,并根据获取的关联度大小,选择除所述主要待测功能之外的N个功能作为相关待测功能,其中,N为大于或等于0的整数。
本实施例中,所述主要待测功能可以是所述待测项目中增加的新功能,或者是所述待测项目中被修改的原有功能。
在本实施例的一示例中,所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度通过预先进行设置。
在本实施例的另一示例中,如图5所示,所述测试装置还包括计算模块403,其中:
所述计算模块403,用于根据所述各功能与所述主要待测功能的接口函数和/或页面元素之间的相似度,计算所述各功能与所述主要待测功能之间的关联度。
需要说明的是,如果待测项目为前后端分离的Web系统或其它的待测产品项目,则可根据接口函数得出各个功能的关联度;如果项目是前后端不分离的Web系统,则通过抓取页面元素得出各个功能的关联度。
在该示例中,所述计算模块403的根据所述各功能与所述主要待测功能的接口函数之间的相似度,计算所述各功能与所述主要待测功能之间的关联度,包括:
通过余弦公式计算所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度,相似度越大,所述计算出的关联度越大;或者,
比较所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数,包含的相同的函数参数的个数越多,所述计算出的关联度越大;或者,
通过所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度计算第一关联度,通过所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数计算第二关联度,根据预定义的权值计算第一关联度和第二关联度的加权平均值,将所述加权平均值作为所述计算出的关联度。
例如,假设接口A的函数名称为/user/delete.do,接口B的函数名称为/user/add.do,计算模块403的通过余弦公式计算接口A的函数名称与接口B的函数名称之间的相似度的方法为:
1)分别对所述接口函数的函数名称进行语句拆分;
接口A的函数名称拆分为:userdelete;
接口B的函数名称拆分为:useradd;
2)将拆分后的函数名称进行组合,并进行去重处理;
得到:userdaedldete;
3)计算所述接口函数的函数名称在组合的名称中的字频,即统计接口A的函数名称和接口B的函数名称在组合的名称中出现的频率:
接口A的函数名称在组合的名称中出现的频率:
u[1]s[1]e[1]r[1]d[1]a[0]e[1]d[0]l[1]d[0]e[1]t[1]e[1],即接口A的函数名称的字频向量为:(1,1,1,1,1,0,1,0,1,0,1,1,1);
接口B的函数名称在组合的名称中出现的频率:
u[1]s[1]e[1]r[1]d[0]a[1]e[0]d[1]l[0]d[1]e[0]t[0]e[0],即接口A的函数名称的字频向量为:(1,1,1,1,0,1,0,1,0,1,0,0,0);
4)利用余弦公式,计算所述接口函数的函数名称之间的相似性:
Figure BDA0001745889390000121
其中,xi为接口A的函数名称的字频向量,yi为接口B的函数名称的字频向量,cos(θ)为计算出的余弦值。计算出的余弦值越接近1,就表明夹角越接近0度,也就是两个字频向量越相似,余弦值等于1,即夹角等于0表示两个向量相等,余弦值等于0,即夹角为90°表示两个向量完全不同,这就叫"余弦相似性"。
在本示例中,计算模块403计算出的接口A的函数名称和接口B的函数名称之间的相似度为:
Figure BDA0001745889390000122
在该示例中,所述页面元素包括表单、按钮、导航、选项卡、进度条、面板、表格等。
需要说明的是,所述计算模块403也可以通过余弦公式计算所述各功能与所述主要待测功能的页面元素之间的相似度大小,计算方法与上述接口函数的函数名称之间的相似度的计算方法类似,此处不再赘述。
在本实施例的一示例中,计算模块403可以将计算出的所述各功能与所述主要待测功能的接口函数之间的相似度,直接作为所述各功能与所述主要待测功能之间的关联度,或者根据计算出的所述各功能与所述主要待测功能的接口函数之间的相似度与预设的比例系数,计算所述各功能与所述主要待测功能之间的关联度,只要相似度越大,计算出的关联度越大即可。
在本实施例的另一示例中,计算模块403也可以将计算出的所述各功能与所述主要待测功能的页面元素之间的相似度,直接作为所述各功能与所述主要待测功能之间的关联度,或者根据计算出的所述各功能与所述主要待测功能的页面元素之间的相似度与预设的比例系数,计算所述各功能与所述主要待测功能之间的关联度,只要相似度越大,计算出的关联度越大即可。
在本实施例的又一示例中,假设第一关联度(即根据各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度计算出的关联度)为s1,第二关联度(即通过所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数计算出的关联度)为s2,则计算模块403最终计算出的关联度为s=a*s1+b*s2,其中,a、b为预先定义的第一关联度和第二关联度的权值。
本实施例中,所述选择模块402还用于,根据获取的关联度大小,预测所述待测项目中除所述主要待测功能之外的各功能被破坏比例,根据预测的各功能被破坏比例,选择除所述主要待测功能之外的N个功能作为相关待测功能。
其中,被破坏比例d可以与关联度s相等,也可以为以关联度s为自变量的函数值。通过设置被破坏比例d,可以使得测试人员更直观地了解主要待测功能对除主要待测功能之外的各功能的影响大小。
本实施例中,如图6所示,所述测试装置还包括测试模块404,其中,
所述测试模块404,用于获取所述主要待测功能和所述相关待测功能的测试流程,所述测试流程预先用自然语言描述;将获取的测试流程通过自然语言处理,编译成可执行代码;执行可执行代码并返回执行结果。
例如,以待测功能为“新增用户”为例,其测试流程如下:
Figure BDA0001745889390000131
通过用自然语言描述测试流程,结构清晰,可读性高,并保存测试流程以便下一次迭代使用。
本实施例中,所述测试模块404的将获取的测试流程通过自然语言处理,编译成可执行代码,包括:
扫描所述测试流程,识别所述测试流程中预定义的记号,生成记号流;
根据生成的记号流构造语法树;
对语法树进行语义检查并优化,生成可执行代码。
本实施例中,所述预定义的记号包括:关键字、标识符(变量名、数据名)、字面量、运算符、注释行和特殊符号(续行、语句结束、数组)。通过词法分析器识别所述测试流程中预定义的记号,词法分析器的本质是查看连续的字符然后把它们识别为“单词”。
本实施例中,所述测试模块404通过语法分析程序根据语法规则识别出记号流中的结构,构造语法树。
在本实施例的一示例中,所述测试模块404使用词法单元的第一个分量来创建树形的中间表示,也就是根据抽象符号(标识符、运算符…)来构建语法结构。语法树是一个常用的表示方法,一个简单的语法树结构如图2所示,树中的每个内部结点表示一个运算,该结点子结点表示运算的分量。
本实施例中,所述测试模块404通过语义分析程序对语法树进行语义检查并优化。
在本实施例的一示例中,所述测试模块404使用语法树和符号表中的信息来检查是否和语言定义的语义一致,并将类型信息存放在语法树或符号表中。例如,所述测试模块404检查到数组下标是浮点数就会报错;或者检查到一个二元运算符应用于一个浮点数和一个整数,则会把整数转换为一个浮点数,也就是自动类型转换,如图3所示。
本实施例中,所述测试模块404可以通过机器无关的代码优化步骤改进中间代码来生成更好的目标代码(“更好”意味着更快,更短,能耗更低的目标代码);也可以通过使用一个简单的中间代码生成算法,然后再进行代码优化步骤,生成优质目标代码。
本实施例中,执行结果最终以表格的形式展示,包括主要待测功能和相关待测功能的各个测试项以及测试结果,如果显示为红色表示测试不通过,并输出原因。
如图7所示,根据本发明实施例的一种WEB测试系统的测试流程,所述WEB测试系统包括确定模块、选择模块以及测试模块,确定模块用于扫描待测项目的所有功能并确定主要待测功能;选择模块,用于获取除主要待测功能之外的各功能与主要待测功能之间的关联度,并根据获取的关联度大小,选择除主要待测功能之外的N个功能作为相关待测功能。如果项目前后端分离,选择模块可根据接口以及参数得出各个功能的关联度;如果项目不是前后端分离,选择模块通过抓取页面元素得出各个功能的关联度。测试模块,用于获取所述主要待测功能和所述相关待测功能的测试流程,所述测试流程预先用自然语言描述;将获取的测试流程通过自然语言处理,编译成可执行代码;执行可执行代码并返回执行结果。
举个例子,比如待测项目的主要待测功能为A,在WEB测试系统输入待测项目的访问地址,确定模块会扫描该项目所有功能并确定主要待测功能,选择模块列出各功能与主要待测功能之间的关联度,将关联度大于预设的关联度阈值的各功能设为相关待测功能,主要待测功能和相关待测功能的测试流程均用自然语言描述。测试模块将主要待测功能和相关待测功能的测试流程编译成可执行代码,执行测试并返回测试结果。测试模块主要由一系列的程序组成,主要包括扫描程序、语法分析程序、语义分析程序、优化代码程序、目标代码生成程序、执行程序以及输出结果程序。测试模块会先用扫描程序扫描测试流程,再根据词法规则识别出测试流程中的各个记号,每个记号代表一类单词;语法分析程序根据语法规则识别出记号流中的结构,并构造一棵语法树;语义分析程序则是根据语义规则对语法树进行语义检查;优化代码程序优化语法树,由目标代码生成程序生成最终可执行代码;执行代码模拟点击行为,输出结果程序输出最终的测试结果。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种测试方法,其特征在于,包括:
确定待测项目中的主要待测功能;
获取所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度;
根据所述各功能与所述主要待测功能的接口函数和/或页面元素之间的相似度,计算所述各功能与所述主要待测功能之间的关联度;
根据获取的关联度大小,选择除所述主要待测功能之外的N个功能作为相关待测功能,其中,N为大于或等于0的整数。
2.根据权利要求1所述的测试方法,其特征在于,所述根据所述各功能与所述主要待测功能的接口函数之间的相似度,计算所述各功能与所述主要待测功能之间的关联度,包括:
通过余弦公式计算所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度,相似度越大,所述计算出的关联度越大;或者,
比较所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数,包含的相同的函数参数的个数越多,所述计算出的关联度越大;或者,
通过所述各功能的接口函数的函数名称与所述主要待测功能的接口函数的函数名称之间的相似度计算第一关联度,通过所述各功能的接口函数与所述主要待测功能的接口函数中包含的相同的函数参数的个数计算第二关联度,根据预定义的权值计算第一关联度和第二关联度的加权平均值,将所述加权平均值作为所述计算出的关联度。
3.根据权利要求1所述的测试方法,其特征在于,所述页面元素包括表单、按钮、导航、选项卡、进度条、面板、表格。
4.根据权利要求1所述的测试方法,其特征在于,所述方法还包括:
获取所述主要待测功能和所述相关待测功能的测试流程,所述测试流程预先用自然语言描述;
将获取的测试流程通过自然语言处理,编译成可执行代码;
执行可执行代码并返回执行结果。
5.根据权利要求4所述的测试方法,其特征在于,所述将获取的测试流程通过自然语言处理,编译成可执行代码,包括:
扫描所述测试流程,识别所述测试流程中预定义的记号,生成记号流;
根据生成的记号流构造语法树;
对语法树进行语义检查并优化,生成可执行代码。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1至5中任一项所述的测试方法的步骤。
7.一种测试装置,其特征在于,包括处理器及存储器,其中:
所述处理器用于执行存储器中存储的测试程序,以实现如权利要求1至5中任一项所述的测试方法的步骤。
8.一种测试装置,其特征在于,包括确定模块和选择模块,其中:
确定模块,用于确定待测项目中的主要待测功能;
计算模块,用于根据所述各功能与所述主要待测功能的接口函数和/或页面元素之间的相似度,计算所述各功能与所述主要待测功能之间的关联度;
选择模块,用于获取所述待测项目中除所述主要待测功能之外的各功能与所述主要待测功能之间的关联度,并根据获取的关联度大小,选择除所述主要待测功能之外的N个功能作为相关待测功能,其中,N为大于或等于0的整数。
CN201810842423.6A 2018-07-27 2018-07-27 一种测试方法和装置、计算机可读存储介质 Active CN109032946B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810842423.6A CN109032946B (zh) 2018-07-27 2018-07-27 一种测试方法和装置、计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810842423.6A CN109032946B (zh) 2018-07-27 2018-07-27 一种测试方法和装置、计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109032946A CN109032946A (zh) 2018-12-18
CN109032946B true CN109032946B (zh) 2022-03-18

Family

ID=64645976

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810842423.6A Active CN109032946B (zh) 2018-07-27 2018-07-27 一种测试方法和装置、计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109032946B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162467B (zh) * 2019-04-23 2023-12-19 平安科技(深圳)有限公司 软件测试方法、装置、计算机设备和可读存储介质
CN111581109A (zh) * 2020-05-15 2020-08-25 杭州安恒信息技术股份有限公司 一种接口返回数据校验的方法、系统及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101546289A (zh) * 2008-03-28 2009-09-30 国际商业机器公司 应用程序调试方法和装置
CN103412819A (zh) * 2013-08-28 2013-11-27 北京信息科技大学 一种基于关联度分析的文档转换器测试方法及装置
CN103942137A (zh) * 2013-01-23 2014-07-23 腾讯科技(深圳)有限公司 浏览器兼容性测试方法及装置
CN105701006A (zh) * 2014-11-28 2016-06-22 国际商业机器公司 用于程序调试中的变量跟踪的方法和系统
CN108255653A (zh) * 2018-01-02 2018-07-06 深圳壹账通智能科技有限公司 一种产品的测试方法及其终端

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789020B2 (en) * 2011-09-01 2014-07-22 International Business Machines Corporation Interactive debugging environments and methods of providing the same

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101546289A (zh) * 2008-03-28 2009-09-30 国际商业机器公司 应用程序调试方法和装置
CN103942137A (zh) * 2013-01-23 2014-07-23 腾讯科技(深圳)有限公司 浏览器兼容性测试方法及装置
CN103412819A (zh) * 2013-08-28 2013-11-27 北京信息科技大学 一种基于关联度分析的文档转换器测试方法及装置
CN105701006A (zh) * 2014-11-28 2016-06-22 国际商业机器公司 用于程序调试中的变量跟踪的方法和系统
CN108255653A (zh) * 2018-01-02 2018-07-06 深圳壹账通智能科技有限公司 一种产品的测试方法及其终端

Also Published As

Publication number Publication date
CN109032946A (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
CN109144882B (zh) 一种基于程序不变量的软件故障定位方法及装置
US9983984B2 (en) Automated modularization of graphical user interface test cases
KR101051600B1 (ko) 아밥 소스코드의 코드 검사를 수행하는 코드검사 수행시스템
CN111459799B (zh) 一种基于Github的软件缺陷检测模型建立、检测方法及系统
US20060143596A1 (en) Program analyzing apparatus and testing apparatus, and analyzing method and program therefor
CN109857641B (zh) 对程序源文件进行缺陷检测的方法及装置
US9122540B2 (en) Transformation of computer programs and eliminating errors
CN110059006B (zh) 代码审计方法及装置
US20060247930A1 (en) Method and apparatus for improving efficiency of constraint solving
US8732676B1 (en) System and method for generating unit test based on recorded execution paths
US11809436B2 (en) Source code search engine
US20100185669A1 (en) Efficient incremental parsing of context sensitive programming languages
CN112131120B (zh) 一种源代码缺陷检测方法及装置
CN110750297B (zh) 一种基于程序分析和文本分析的Python代码参考信息生成方法
US11734159B2 (en) Ranking test cases specific to changes in software code
Fry et al. Clustering static analysis defect reports to reduce maintenance costs
CN108563561B (zh) 一种程序隐性约束提取方法及系统
Störrle Effective and efficient model clone detection
CN114911711A (zh) 一种代码缺陷分析方法、装置、电子设备及存储介质
CN109032946B (zh) 一种测试方法和装置、计算机可读存储介质
Solanki et al. Comparative study of software clone detection techniques
US11526429B1 (en) Identifying critical methods and critical paths in software code
CN114706769B (zh) 基于日志的面向回归测试的黑盒测试用例排序方法
CN111966578A (zh) 一种安卓兼容性缺陷修复效果的自动化评估方法
CN110580170A (zh) 软件性能风险的识别方法及装置

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
GR01 Patent grant
GR01 Patent grant