CN104965784B - 自动测试方法及装置 - Google Patents
自动测试方法及装置 Download PDFInfo
- Publication number
- CN104965784B CN104965784B CN201510334914.6A CN201510334914A CN104965784B CN 104965784 B CN104965784 B CN 104965784B CN 201510334914 A CN201510334914 A CN 201510334914A CN 104965784 B CN104965784 B CN 104965784B
- Authority
- CN
- China
- Prior art keywords
- parameter
- url request
- test
- value
- data packet
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 199
- 238000013459 approach Methods 0.000 title claims abstract description 19
- 230000004044 response Effects 0.000 claims abstract description 166
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000004458 analytical method Methods 0.000 claims abstract description 15
- 230000009897 systematic effect Effects 0.000 claims description 32
- 239000012634 fragment Substances 0.000 claims description 28
- 241000894007 species Species 0.000 claims description 17
- 238000012549 training Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 10
- 238000011524 similarity measure Methods 0.000 claims description 9
- 241000208340 Araliaceae Species 0.000 claims description 6
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 6
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 6
- 235000008434 ginseng Nutrition 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 238000012216 screening Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 238000000205 computational method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种自动测试方法及装置,属于软件测试领域。该方法包括:从Web服务器的运行日志文件中采集URL请求和响应数据包;通过功能模板从URL请求和响应数据包中筛选出目标URL请求和目标响应数据包;将目标URL请求发送给Web服务,获取反馈的测试响应数据包;计算目标响应数据包和测试响应数据包的相似度,根据相似度输出测试结果。本发明解决了现有技术中的测试方法对测试人员的要求和依赖较高,测试效率较低的问题,达到了不需要构造URL请求和人工分析响应数据包,实现全自动的web服务测试,从而提高测试效率的效果。
Description
技术领域
本发明涉及软件测试领域,特别涉及一种自动测试方法及装置。
背景技术
Web服务是一种通过互联网向用户提供的服务。一种典型的服务方式是:用户通过客户端向Web服务器发送URL请求(Uniform Resource Locator,统一资源定位符),Web服务器根据该URL请求向客户端返回响应数据包。生成响应数据包的过程可以由Web服务器中的CGI(Common Gateway Interface,通用网关接口)程序完成。
在Web服务的开发阶段,需要对Web服务进行测试。现有技术中的一种测试方法为:测试人员构造URL请求,通过客户端将URL请求发送给Web服务,Web服务根据该URL请求生成响应数据包,并将响应数据包反馈给客户端。测试人员分析响应数据包的内容是否符合预期内容;若符合预期内容,则测试通过;若不符合预期内容,则测试不通过。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于URL请求需要测试人员来人工构造,响应数据包也需要由测试人员来人工分析,所以现有技术中的测试方法对测试人员的要求和依赖较高,而且测试效率较低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种自动测试方法及装置。该技术方案如下:
第一方面,提供了一种自动测试方法,该方法包括:
从Web服务器的运行日志文件中采集URL请求和响应数据包,该URL请求和该响应数据包一一对应;
通过预先训练的功能模板从该URL请求和该响应数据包中筛选出目标URL请求和目标响应数据包;
将该目标URL请求发送给本次测试的Web服务,并获取该Web服务反馈的测试响应数据包,该本次测试的Web服务具有的业务功能与该功能模板对应的业务功能属于同一类型;
计算该目标响应数据包和该测试响应数据包的相似度,并根据该相似度输出测试结果。
可选的,该计算该目标响应数据包和该测试响应数据包的相似度,并根据该相似度输出测试结果,包括:
计算n组该目标响应数据包和该测试响应数据包之间的文本序列相似度;
根据n个该文本序列相似度计算相似度分值;
检测该相似度分值是否达到预设阈值;
若达到该预设阈值,则测试通过;
若未达到该预设阈值,则测试未通过。
可选的,该根据n个该文本序列相似度计算相似度分值,包括:
从n个该文本序列相似度中减去最高的文本序列相似度和最低的文本序列相似度,得到n-2个该文本序列相似度,n≥3;
计算n-2个该文本序列相似度的平均值,将该平均值作为该相似度分值。
可选的,该通过预先训练的功能模板从该URL请求和该响应数据包中筛选出目标URL请求和目标响应数据包之前,还包括:
将历史时间段内的m个该URL请求进行相似聚类;
对于属于同一类的该URL请求,分析该URL请求中的用户参数和系统参数,该用户参数是根据用户的不同而改变参数取值的参数,该系统参数是根据功能的不同而改变参数取值的参数;
将删除该用户参数的取值后的该URL请求,按照该系统参数的取值类型生成为至少一个功能模板,每个功能模板对应一套该系统参数的取值。
可选的,该对于属于同一类的该URL请求,分析该URL请求中的用户参数和系统参数,包括:
对于属于同一类的该URL请求,根据分隔符将该URL请求划分为若干个字符片段;
将每个该URL请求中都具有的相同字符片段进行过滤,得到相异字符片段,每个相异字符片段包括:参数名和参数取值;
对于每种参数名,统计该参数名对应的各种参数取值和每种参数取值的出现次数;
对于每种参数名,若该参数名对应的参数取值的种类数大于第一阈值,且每种参数取值的出现次数小于第二阈值,则该参数名为该用户参数;若该参数名对应的参数取值的种类数小于第三阈值,且每个参数取值的出现次数大于第四阈值,则该参数名为该系统参数。
第二方面,提供了一种自动测试装置,该装置包括:
采集模块,用于从Web服务器的运行日志文件中采集URL请求和响应数据包,该URL请求和该响应数据包一一对应;
筛选模块,用于通过预先训练的功能模板从该URL请求和该响应数据包中筛选出目标URL请求和目标响应数据包;
发送模块,用于将该目标URL请求发送给本次测试的Web服务,并获取该Web服务反馈的测试响应数据包,该本次测试的Web服务具有的业务功能与该功能模板对应的业务功能属于同一类型;
计算模块,用于计算该目标响应数据包和该测试响应数据包的相似度,并根据该相似度输出测试结果。
可选的,该计算模块,包括:
相似度计算子模块,用于计算n组该目标响应数据包和该测试响应数据包之间的文本序列相似度;
分值计算子模块,用于根据n个该文本序列相似度计算相似度分值;
阈值检测子模块,用于检测该相似度分值是否达到预设阈值;
第一处理子模块,用于当达到该预设阈值时,测试通过;
第二处理子模块,用于当未达到该预设阈值时,测试未通过。
可选的,该分值计算子模块,包括:
第一计算单元,用于从n个该文本序列相似度中减去最高的文本序列相似度和最低的文本序列相似度,得到n-2个该文本序列相似度,n≥3;
第二计算单元,用于计算n-2个该文本序列相似度的平均值,将该平均值作为该相似度分值。
可选的,该装置,还包括:
聚类模块,用于将历史时间段内的m个该URL请求进行相似聚类;
分析模块,用于对于属于同一类的该URL请求,分析该URL请求中的用户参数和系统参数,该用户参数是根据用户的不同而改变参数取值的参数,该系统参数是根据功能的不同而改变参数取值的参数;
生成模块,用于将删除该用户参数的取值后的该URL请求,按照该系统参数的取值类型生成为至少一个功能模板,每个功能模板对应一套该系统参数的取值。
可选的,该分析模块,包括:
划分子模块,用于对于属于同一类的该URL请求,根据分隔符将该URL请求划分为若干个字符片段;
过滤子模块,用于将每个该URL请求中都具有的相同字符片段进行过滤,得到相异字符片段,每个相异字符片段包括:参数名和参数取值;
统计子模块,用于对于每种参数名,统计该参数名对应的各种参数取值和每种参数取值的出现次数;
命名子模块,被配置对于每种参数名,若该参数名对应的参数取值的种类数大于第一阈值,且每种参数取值的出现次数小于第二阈值,则该参数名为该用户参数;若该参数名对应的参数取值的种类数小于第三阈值,且每个参数取值的出现次数大于第四阈值,则该参数名为该系统参数。
本发明实施例提供的技术方案带来的有益效果是:
通过采集URL请求和响应数据包,并从中筛选出目标URL请求和目标响应数据包,将目标URL请求发送至本次测试的Web服务来获取测试响应数据包,根据目标响应数据包文本与测试响应数据包文本的相似度确定对Web服务的测试是否通过;解决了现有技术中的测试方法对测试人员的要求和依赖较高,测试效率较低的问题;达到了不需要构造URL请求和人工分析响应数据包,实现全自动的web服务测试,从而提高测试效率的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例中提供的自动测试方法所涉及的实施环境的示意图;
图2是本发明一个实施例中提供的自动测试方法的方法流程图;
图3A是本发明另一个实施例中提供的自动测试方法的方法流程图;
图3B是本发明一个实施例中提供的URL请求分析方法的方法流程图;
图3C是本发明一个实施例中提供的参数统计方法的示意图;
图3D是本发明一个实施例中提供的相似度分值计算方法的方法流程图;
图4是本发明一个实施例中提供的自动测试装置的结构方框图。
图5是本发明另一个实施例中提供的自动测试装置的结构方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参见图1所示,其是本发明一个实施例中提供的自动测试方法所涉及的实施环境的示意图。该实施环境可以包括自动测试服务器110、Web服务器120、本次测试的Web服务器130。
自动测试服务器110是运行有自动测试Web服务的测试程序的服务器,用于采集URL请求和响应数据包,或者发送目标URL请求,或者接收测试响应数据包。自动测试服务器110通过有线或者无线的方式与Web服务器120以及Web服务器130进行连接。
Web服务器120可以是在实际生产环境中运行的一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心,Web服务器120在与用户的交互过程中产生海量的URL请求和响应数据包。
本次测试的Web服务器130可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务中心,Web服务器130用于运行本次测试的Web服务,可以接收目标URL请求,并反馈测试响应数据包。
请参见图2,其示出了本发明一个实施例中提供的自动测试方法的方法流程图。本实施例以该自动测试方法应用于自动测试服务器110中来举例说明。该方法包括以下步骤。
在步骤201中,从Web服务器的运行日志文件中采集URL请求和响应数据包,URL请求和响应数据包一一对应。
在步骤202中,通过预先训练的功能模板从URL请求和响应数据包中筛选出目标URL请求和目标响应数据包。
功能模板用于从海量的URL请求和响应数据包中,筛选出与某一种业务功能对应的目标URL请求和目标响应数据包。
在步骤203中,将目标URL请求发送给本次测试的Web服务,并获取Web服务反馈的测试响应数据包,本次测试的Web服务具有的业务功能与功能模板对应的业务功能属于同一类型。
在步骤204中,计算目标响应数据包和测试响应数据包的相似度,并根据该相似度输出测试结果。
综上所述,本发明实施例提供的自动测试方法,通过采集URL请求和响应数据包,并从中筛选出目标URL请求和目标响应数据包,将目标URL请求发送至本次测试的Web服务来获取测试响应数据包,根据目标响应数据包文本与测试响应数据包文本的相似度确定对Web服务的测试是否通过,解决了现有技术中的测试方法对测试人员的要求和依赖较高,测试效率较低的问题;达到了不需要构造URL请求和人工分析响应数据包,实现全自动的web服务测试,从而提高测试效率的效果。
请参见图3A,其示出了本发明另一个实施例中提供的自动测试方法的方法流程图。本实施例以该自动测试方法应用于自动测试服务器110中来举例说明。该方法包括两个阶段:训练功能模板阶段和使用功能模板测试的阶段。
第一,训练功能模板阶段:
在步骤301中,从Web服务器的运行日志文件中采集URL请求和响应数据包,URL请求和响应数据包一一对应。
Web服务器的运行日志文件中存储了各个用户发送的URL请求以及URL请求对应的响应数据包。
比如,用户发送的URL请求是用于请求获取用户的历史订单的请求,则该URL请求对应的响应数据包可以包括用户的历史订单的相关信息。
在步骤302中,将历史时间段内的m个URL请求进行相似聚类。
测试程序在获取URL请求时,还可以获取各个URL请求的发送时间,测试程序可以根据各个URL请求的发送时间,获取历史时间段内的m个URL请求。m为正整数。
比如,URL请求a的发送时间为2011年11月1日12时;
URL请求b的发送时间为2011年11月2日11时;
URL请求c的发送时间为2011年11月2日12时;
URL请求d的发送时间为2011年11月2日13时;
URL请求e的发送时间为2011年11月2日14时;
URL请求f的发送时间为2011年11月2日15时;
URL请求g的发送时间为2011年11月2日16时;
URL请求h的发送时间为2011年11月2日17时;
则测试程序可以获取历史时间段为2011年11月2日的6个URL请求“URL请求b、URL请求c、URL请求d、URL请求e、URL请求f、URL请求g”。(在实际训练过程中,m的数值较大,比如达到万级、十万级、百万级等,本文中仅以6个URL请求来举例说明)
测试程序可以对该6个URL请求进行相似聚类,在一种可能的实现方式中,测试程序根据URL请求的文本相似度对各个URL请求进行分类。
比如,URL请求b为:
“http://test.yy.com/cgi/folder_list?sid=111&foldid=1&func=add&type=2&uin=111”;
URL请求c为:
“http://test.yy.com/cgi/folder_list?sid=222&foldid=2&func=add&type=2&uin=222”;
URL请求d为:
“http://test.yy.com/cgi/folder_list?sid=333&foldid=3&func=del&type=2&uin=333”;
URL请求e为:
“http://test.yy.com/cgi/folder_list?sid=444&foldid=4&func=del&type=2&uin=444”;
URL请求f为:
“http://test.bb.com/cgi/folder_list?sid=444&foldid=4&func=del&type=2&uin=444”;
URL请求g为:
“http://test.bb.com/cgi/folder_list?sid=555&foldid=4&func=del&type=2&uin=444”。
测试程序确定URL请求b中网址数据为“http://test.yy.com”,URL请求c中网址数据为“http://test.yy.com”,URL请求d中网址数据为“http://test.yy.com”,URL请求e中网址数据为“http://test.yy.com”,URL请求f中网址数据为“http://test.bb.com”,URL请求g中网址数据为“http://test.bb.com”。由于URL请求b与URL请求c、URL请求d、URL请求e包括的网址数据相同,URL请f与URL请求g包括的网址数据相同,因此测试程序将URL请求b与URL请求c、URL请求d、URL请求e作为同一类进行相似聚类,将URL请求f与URL请求g作为同一类进行相似聚类。
在步骤303中,对于属于同一类的URL请求,分析URL请求中的用户参数和系统参数。
URL请求中包括了用户参数与系统参数,其中,用户参数是根据用户的不同而改变参数取值的参数,比如,用户ID就是用户参数,每个用户具有各自的用户ID。系统参数是根据功能的不同而改变参数取值的参数。比如,增加订单功能对应的参数取值为add,删除订单功能对应的参数取值为del。
测试程序可以对属于同一类的URL请求进行分析,从而获取URL请求中的用户参数和系统参数。
测试程序可以通过图3B示出的步骤303a至步骤303d对URL请求进行分析。
在步骤303a中,对于属于同一类的URL请求,根据分隔符将URL请求划分为若干个字符片段。
比如,以测试程序对URL请求b进行分析为例进行说明,在URL请求b:“http://test.yy.com/cgi/folder_list?sid=111&foldid=1&func=add&type=2&uin=111”中,分隔符可以是“?”、“&”、“/”,测试程序根据分隔符对URL请求b进行划分后得到的字符片段分别为“http://test.yy.com”、“cgi”、“folder_list”、“sid=111”、“foldid=1”、“func=add”、“type=2”、“uin=111”。
测试程序继续对URL请求c、URL请求d、URL请求e分别进行划分,得到的字符片段为:
URL请求c:“http://test.yy.com”、“cgi”、“folder_list”、“sid=222”、“foldid=2”、“func=add”、“type=2”、“uin=222”;
URL请求d:“http://test.yy.com”、“cgi”、“folder_list”、“sid=333”、“foldid=3”、“func=del”、“type=2”、“uin=333”;
URL请求e:“http://test.yy.com”、“cgi”、“folder_list”、“sid=444”、“foldid=4”、“func=del”、“type=2”、“uin=444”。
在步骤303b中,将每个URL请求中都具有的相同字符片段进行过滤,得到相异字符片段,每个相异字符片段包括:参数名和参数取值。
测试程序获取URL请求b、URL请求c、URL请求d、URL请求e中相同字符片段为:“http://test.yy.com”、“cgi”、“folder_list”、“type=2”。
测试程序获取URL请求b、URL请求c、URL请求d、URL请求e中的相异字符片段为:
URL请求b:“sid=111”、“foldid=1”、“func=add”、“uin=111”;
URL请求c:“sid=222”、“foldid=2”、“func=add”、“uin=222”;
URL请求d:“sid=333”、“foldid=3”、“func=del”、“uin=333”;
URL请求e:“sid=444”、“foldid=4”、“func=del”、“uin=444”。
在步骤303c中,对于每种参数名,统计参数名对应的各种参数取值和每种参数取值的出现次数。
比如,测试程序统计出的各个参数名及对应的参数取值,以及各个参数取值的出现次数可以如图3C所示。
在图3C中,测试程序统计出的参数名sid对应的参数取值111、222、333、444的出现次数各为1次;参数名foldid对应的参数取值1、2、3、4的出现次数各为一次,参数名func对应的参数取值add的出现次数为2次,参数func对应的参数取值del的出现次数为2次,参数名uin对应的参数取值111、222、333、444的出现次数各为一次。
在步骤303d中,对于每种参数名,若参数名对应的参数取值的种类数大于第一阈值,且每种参数取值的出现次数小于第二阈值,则该参数名为用户参数。若参数名对应的参数取值的种类数小于第三阈值,且每个参数取值的出现次数大于第四阈值,则该参数名为系统参数。
也即,用户参数具有的特点是:参数取值有非常多种,但是每一种参数取值的出现次数都很少。
系统参数具有的特点是:参数取值只有有限几种,但是每一种参数取值的出现次数都很多。
以图3C示出的统计结果为例进行说明,参数名sid对应的参数取值种类为4,大于第一阈值3,且每种参数取值的出现次数小于第二阈值2,则测试程序确定参数名sid为用户参数;
参数名foldid对应的参数取值种类为4,大于第一阈值3,且每种参数取值的出现次数小于第二阈值2,因此测试程序确定参数名foldid为用户参数;
参数名func对应的参数取值种类为2,小于第一阈值3,且每种参数取值的出现次数大于于第二阈值1,因此测试程序确定参数名func为系统参数;
参数名del对应的参数取值种类为2,小于第一阈值3,且每种参数取值的出现次数大于于第二阈值1,因此测试程序确定参数名del为系统参数;
参数名uin对应的参数取值种类为4,大于第一阈值3,且参数取值的出现次数小于第二阈值2,因此测试程序确定参数名uin为用户参数。
上述举例中,因为只有6个URL请求的统计结果,所以仅为示意性说明。
在步骤304中,将删除用户参数的取值后的URL请求,按照系统参数的取值类型生成为至少一个功能模板,每个功能模板对应一套系统参数的取值。
比如,测试程序删除各个URL请求中的用户参数“sid”、用户参数“foldid”、用户参数“uin”的取值,并按照系统参数func的取值类型“add”以及“del”生成的功能模版如下。
功能模版a:
“http://test.yy.com/cgi/folder_list?sid=&foldid=&func=add&type=2&uin=”;
功能模版b:
“http://test.yy.com/cgi/folder_list?sid=&foldid=&func=del&type=2&uin=”。
第二阶段:使用功能模板测试的阶段:
在步骤305中,通过预先训练的功能模板从URL请求和响应数据包中筛选出目标URL请求和目标响应数据包。
测试程序可以将各个功能模版与最近获取的各个URL请求进行匹配,从而将各个URL请求按照功能模版进行归类划分。
比如,测试程序检测各个URL请求中是否包括功能模版a:“http://test.yy.com/cgi/folder_list?sid=&foldid=&func=add&type=2&uin=”,若检测出URL请求中包括功能模版a,则将该URL请求确定为与功能模板a的目标URL请求,将该URL请求对应的响应数据包筛选为功能模板a的目标响应数据包。
又比如,测试程序检测各个URL请求中是否包括功能模版b:“http://test.yy.com/cgi/folder_list?sid=&foldid=&func=del&type=2&uin=”,若检测出URL请求中包括功能模版b,则将该URL请求确定为功能模板b的目标URL请求,将该URL请求对应的响应数据包筛选为功能模板b的目标响应数据包。
需要说明的是,由于一个功能模板通常对应多个目标URL,因此,测试程序可以通过上述方式获取多个目标URL对应的多个目标响应数据包。其中,目标URL请求和目标响应数据包是一一对应关系,且这些目标URL请求和目标响应数据包是在实际生产环境中运行得到的有实际意义的数据。
在步骤306中,将目标URL请求发送给本次测试的Web服务,并获取该Web服务反馈的测试响应数据包,本次测试的Web服务具有的业务功能与功能模板对应的业务功能属于同一类型。
在本发明实施例中,测试程序可以将功能模板对应的目标URL请求发送给本次测试的web服务。本次测试的web服务可以通过python下的urllib库进行驱动,或者通过开源的iTtest轻量级自动化测试框架进行驱动,从而产生测试响应数据包。然后,测试程序获取得到本次测试的Web服务反馈的测试响应数据包。
需要说明的是,本次测试的Web服务具有的业务功能与功能模版对应的业务功能属于同一类型。比如,本次测试的Web服务具有的业务功能为增加用户数据,则测试该Web服务所用的功能模板对应的业务功能也应为增加用户数据。本次测试的web服务通常是处于开发阶段的web服务,比如本次测试的web服务是为实际生产环境中的web服务正在开发的升级版本。
在步骤307中,计算n组目标响应数据包和测试响应数据包之间的文本序列相似度。
比如,本次测试的Web服务具有的业务功能与功能模板a对应的业务功能属于同一类型,则测试程序计算n组功能模板a对应的目标响应数据包与测试的Web服务返回的测试响应数据包之间的文本序列相似度。
其中,文本序列相似度的算法可以是simhash算法,也可以是editdistance算法等,本发明实施例并不对文本序列相似度的计算方法作出限定。
比如,测试程序对目标响应数据包a1、目标响应数据包a2、目标响应数据包a3、目标响应数据包a4、目标响应数据包a5使用simhash算法计算得到的文本相似度分别为0.6、0.9、0.8、0.4、0.3。
在步骤308中,根据n个文本序列相似度计算相似度分值。
在一种可能实现的方式中,测试程序将各个文本序列相似度相加,再除以目标响应数据包的数量来得到相似度分值。比如,测试程序将目标响应数据包a1、目标响应数据包a2、目标响应数据包a3、目标响应数据包a4、目标响应数据包a5的文本相似度相加后除以目标响应数据包的数量5得到的相似度分值为(0.6+0.9+0.8+0.4+0.3)/5=0.6。
为了避免由于单个目标响应数据包的文本相似度过高或者过低影响相似度分值的精确性,在另一种可能实现的方式中,测试程序可以通过图3D示出的步骤308a至步骤308b计算相似度分值。
在步骤308a中,从n个文本序列相似度中减去最高的文本序列相似度和最低的文本序列相似度,得到n-2个文本序列相似度,n≥3。
测试程序对获取的各个文本序列相似度进行检测,确定数值最高的文本序列相似度和数值最低的文本序列相似度。
比如,测试程序检测出5个文本序列相似度0.6、0.9、0.8、0.4、0.3中数值最高的文本序列相似度为0.9,数值最低的文本序列相似度为0.3。
测试程序将数值最高的文本序列相似度和数值最低的文本序列相似度从各个文本序列相似度中移除,得到文本序列相似度分别为0.6、0.8、0.4。
在步骤308b中,计算n-2个文本序列相似度的平均值,将平均值作为相似度分值。
比如,测试程序计算剩余的3个文本序列相似度0.6、0.8、0.4的平均值,的到的相似度分值为(0.6+0.8+0.4)/3=0.6。
在步骤309中,检测相似度分值是否达到预设阈值。
预设阈值可以是开发人员根据Web服务的测试经验预设的数值。
测试程序可以检测该相似度分值是否达到预设阈值。比如,预设阈值为0.8,相似度分值为0.6,则测试程序确定相似度分值未达到预设阈值。
在步骤310中,若达到预设阈值,则测试通过。
若根据本次测试的Web服务返回的测试响应数据包与功能模板对应的各个目标响应数据包计算得到的相似度分值达到预设阈值,则测试程序确定该web服务的服务功能与正常的Web服务器相同,本次测试通过。
在步骤311中,若未达到预设阈值,则测试未通过。
若根据本次测试的Web服务返回的测试响应数据包与功能模板对应的各个目标响应数据包计算得到的相似度分值未达到预设阈值,则测试程序确定该web服务的服务功能未达到正常的Web服务器的服务功能,本次测试未通过。
综上所述,本发明实施例提供的自动测试方法,通过采集URL请求和响应数据包,并从中筛选出目标URL请求和目标响应数据包,将目标URL请求发送至本次测试的Web服务来获取测试响应数据包,根据目标响应数据包文本与测试响应数据包文本的相似度确定对Web服务的测试是否通过,解决了现有技术中的测试方法对测试人员的要求和依赖较高,测试效率较低的问题;达到了不需要构造URL请求和人工分析响应数据包,实现全自动的web服务测试,从而提高测试效率的效果。
另外,本发明提供的自动测试方法在获取本次测试的Web服务反馈的测试响应数据包后,只需要通过测试程序自动对测试响应数据包的文本以及目标响应数据包的文本进行相似度的计算来确定Web服务的测试是否通过,不需要真实理解测试响应数据包以及目标响应数据包的架构、参数等具体数据,不需要解析出响应数据包中的实际数据。仅仅需要将目标响应数据包和测试响应数据包进行数据比特流上的相似度计算即可,可以避免受到现有技术对Web服务进行测试时,只能测试已知协议和已知数据格式的Web服务的限制,从而胜任对各种Web服务完全自动且进行高效率的自动测试。
请参见图4,其示出了本发明一个实施例中提供的自动测试装置的结构方框图,该装置包括:
采集模块410,用于从Web服务器的运行日志文件中采集URL请求和响应数据包,该URL请求和该响应数据包一一对应。
筛选模块420,用于通过预先训练的功能模板从该URL请求和该响应数据包中筛选出目标URL请求和目标响应数据包。
发送模块430,用于将该目标URL请求发送给本次测试的Web服务,并获取该Web服务反馈的测试响应数据包,该本次测试的Web服务具有的业务功能与该功能模板对应的业务功能属于同一类型。
计算模块440,用于计算该目标响应数据包和该测试响应数据包的相似度,并根据该相似度输出测试结果。
综上所述,本发明实施例提供的自动测试装置,通过采集URL请求和响应数据包,并从中筛选出目标URL请求和目标响应数据包,将目标URL请求发送至本次测试的Web服务来获取测试响应数据包,根据目标响应数据包文本与测试响应数据包文本的相似度确定对Web服务的测试是否通过,解决了现有技术中的测试方法对测试人员的要求和依赖较高,测试效率较低的问题;达到了不需要构造URL请求和人工分析响应数据包,实现全自动的web服务测试,从而提高测试效率的效果。
请参见图5,其示出了本发明另一个实施例中提供的自动测试装置的结构方框图,该装置包括:
采集模块410,用于从Web服务器的运行日志文件中采集URL请求和响应数据包,该URL请求和该响应数据包一一对应。
筛选模块420,用于通过预先训练的功能模板从该URL请求和该响应数据包中筛选出目标URL请求和目标响应数据包。
发送模块430,用于将该目标URL请求发送给本次测试的Web服务,并获取该Web服务反馈的测试响应数据包,该本次测试的Web服务具有的业务功能与该功能模板对应的业务功能属于同一类型。
计算模块440,用于计算该目标响应数据包和该测试响应数据包的相似度,并根据该相似度输出测试结果。
可选的,该计算模块440,包括:
相似度计算子模块441,用于计算n组该目标响应数据包和该测试响应数据包之间的文本序列相似度。
分值计算子模块442,用于根据n个该文本序列相似度计算相似度分值。
阈值检测子模块443,用于检测该相似度分值是否达到预设阈值。
第一处理子模块444,用于当达到该预设阈值时,测试通过。
第二处理子模块445,用于当未达到该预设阈值时,测试未通过。
可选的,该分值计算子模块442,包括:
第一计算单元442a,用于从n个该文本序列相似度中减去最高的文本序列相似度和最低的文本序列相似度,得到n-2个该文本序列相似度,n≥3。
第二计算单元442b,用于计算n-2个该文本序列相似度的平均值,将该平均值作为该相似度分值。
可选的,该装置,还包括:
聚类模块450,用于将历史时间段内的m个该URL请求进行相似聚类。
分析模块460,用于对于属于同一类的该URL请求,分析该URL请求中的用户参数和系统参数,该用户参数是根据用户的不同而改变参数取值的参数,该系统参数是根据功能的不同而改变参数取值的参数。
生成模块470,用于将删除该用户参数的取值后的该URL请求,按照该系统参数的取值类型生成为至少一个功能模板,每个功能模板对应一套该系统参数的取值。
可选的,该分析模块460,包括:
划分子模块461,用于对于属于同一类的该URL请求,根据分隔符将该URL请求划分为若干个字符片段。
过滤子模块462,用于将每个该URL请求中都具有的相同字符片段进行过滤,得到相异字符片段,每个相异字符片段包括:参数名和参数取值。
统计子模块463,用于对于每种参数名,统计该参数名对应的各种参数取值和每种参数取值的出现次数。
命名子模块464,被配置对于每种参数名,若该参数名对应的参数取值的种类数大于第一阈值,且每种参数取值的出现次数小于第二阈值,则该参数名为该用户参数。若该参数名对应的参数取值的种类数小于第三阈值,且每个参数取值的出现次数大于第四阈值,则该参数名为该系统参数。
综上所述,本发明实施例提供的自动测试装置,通过采集URL请求和响应数据包,并从中筛选出目标URL请求和目标响应数据包,将目标URL请求发送至本次测试的Web服务来获取测试响应数据包,根据目标响应数据包文本与测试响应数据包文本的相似度确定对Web服务的测试是否通过,解决了现有技术中的测试方法对测试人员的要求和依赖较高,测试效率较低的问题;达到了不需要构造URL请求和人工分析响应数据包,实现全自动的web服务测试,从而提高测试效率的效果。
另外,本发明提供的自动测试装置在获取本次测试的Web服务反馈的测试响应数据包后,只需要通过测试程序自动对测试响应数据包的文本以及目标响应数据包的文本进行相似度的计算来确定Web服务的测试是否通过,不需要真实理解测试响应数据包以及目标响应数据包的架构、参数等具体数据,不需要解析出响应数据包中的实际数据。仅仅需要将目标响应数据包和测试响应数据包进行数据比特流上的相似度计算即可,可以避免受到现有技术对Web服务进行测试时,只能测试已知协议和已知数据格式的Web服务的限制,从而胜任对各种Web服务完全自动且进行高效率的自动测试。
需要说明的是:上述实施例提供的自动测试装置在自动测试时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的自动测试装置与自动测试方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种自动测试方法,其特征在于,所述方法包括:
从Web服务器的运行日志文件中采集URL请求和响应数据包,所述URL请求和所述响应数据包一一对应;
通过预先训练的功能模板从所述URL请求和所述响应数据包中筛选出目标URL请求和目标响应数据包;
将所述目标URL请求发送给本次测试的Web服务,并获取所述Web服务反馈的测试响应数据包,所述本次测试的Web服务具有的业务功能与所述功能模板对应的业务功能属于同一类型;
计算所述目标响应数据包和所述测试响应数据包的相似度,并根据所述相似度输出测试结果。
2.根据权利要求1所述的方法,其特征在于,所述计算所述目标响应数据包和所述测试响应数据包的相似度,并根据所述相似度输出测试结果,包括:
计算n组所述目标响应数据包和所述测试响应数据包之间的文本序列相似度;
根据n个所述文本序列相似度计算相似度分值;
检测所述相似度分值是否达到预设阈值;
若达到所述预设阈值,则测试通过;
若未达到所述预设阈值,则测试未通过。
3.根据权利要求2所述的方法,其特征在于,所述根据n个所述文本序列相似度计算相似度分值,包括:
从n个所述文本序列相似度中减去最高的文本序列相似度和最低的文本序列相似度,得到n-2个所述文本序列相似度,n≥3;
计算n-2个所述文本序列相似度的平均值,将所述平均值作为所述相似度分值。
4.根据权利要求1至3任一所述的方法,其特征在于,所述通过预先训练的功能模板从所述URL请求和所述响应数据包中筛选出目标URL请求和目标响应数据包之前,还包括:
将历史时间段内的m个所述URL请求进行相似聚类;
对于属于同一类的所述URL请求,分析所述URL请求中的用户参数和系统参数,所述用户参数是根据用户的不同而改变参数取值的参数,所述系统参数是根据功能的不同而改变参数取值的参数;
将删除所述用户参数的取值后的所述URL请求,按照所述系统参数的取值类型生成为至少一个功能模板,每个功能模板对应一套所述系统参数的取值。
5.根据权利要求4所述的方法,其特征在于,所述对于属于同一类的所述URL请求,分析所述URL请求中的用户参数和系统参数,包括:
对于属于同一类的所述URL请求,根据分隔符将所述URL请求划分为若干个字符片段;
将每个所述URL请求中都具有的相同字符片段进行过滤,得到相异字符片段,每个相异字符片段包括:参数名和参数取值;
对于每种参数名,统计所述参数名对应的各种参数取值和每种参数取值的出现次数;
对于每种参数名,若所述参数名对应的参数取值的种类数大于第一阈值,且每种参数取值的出现次数小于第二阈值,则所述参数名为所述用户参数;若所述参数名对应的参数取值的种类数小于第三阈值,且每个参数取值的出现次数大于第四阈值,则所述参数名为所述系统参数。
6.一种自动测试装置,其特征在于,所述装置包括:
采集模块,用于从Web服务器的运行日志文件中采集URL请求和响应数据包,所述URL请求和所述响应数据包一一对应;
筛选模块,用于通过预先训练的功能模板从所述URL请求和所述响应数据包中筛选出目标URL请求和目标响应数据包;
发送模块,用于将所述目标URL请求发送给本次测试的Web服务,并获取所述Web服务反馈的测试响应数据包,所述本次测试的Web服务具有的业务功能与所述功能模板对应的业务功能属于同一类型;
计算模块,用于计算所述目标响应数据包和所述测试响应数据包的相似度,并根据所述相似度输出测试结果。
7.根据权利要求6所述的装置,其特征在于,所述计算模块,包括:
相似度计算子模块,用于计算n组所述目标响应数据包和所述测试响应数据包之间的文本序列相似度;
分值计算子模块,用于根据n个所述文本序列相似度计算相似度分值;
阈值检测子模块,用于检测所述相似度分值是否达到预设阈值;
第一处理子模块,用于当达到所述预设阈值时,测试通过;
第二处理子模块,用于当未达到所述预设阈值时,测试未通过。
8.根据权利要求7所述的装置,其特征在于,所述分值计算子模块,包括:
第一计算单元,用于从n个所述文本序列相似度中减去最高的文本序列相似度和最低的文本序列相似度,得到n-2个所述文本序列相似度,n≥3;
第二计算单元,用于计算n-2个所述文本序列相似度的平均值,将所述平均值作为所述相似度分值。
9.根据权利要求6至8任一所述的装置,其特征在于,所述装置,还包括:
聚类模块,用于将历史时间段内的m个所述URL请求进行相似聚类;
分析模块,用于对于属于同一类的所述URL请求,分析所述URL请求中的用户参数和系统参数,所述用户参数是根据用户的不同而改变参数取值的参数,所述系统参数是根据功能的不同而改变参数取值的参数;
生成模块,用于将删除所述用户参数的取值后的所述URL请求,按照所述系统参数的取值类型生成为至少一个功能模板,每个功能模板对应一套所述系统参数的取值。
10.根据权利要求9所述的装置,其特征在于,所述分析模块,包括:
划分子模块,用于对于属于同一类的所述URL请求,根据分隔符将所述URL请求划分为若干个字符片段;
过滤子模块,用于将每个所述URL请求中都具有的相同字符片段进行过滤,得到相异字符片段,每个相异字符片段包括:参数名和参数取值;
统计子模块,用于对于每种参数名,统计所述参数名对应的各种参数取值和每种参数取值的出现次数;
命名子模块,用于对于每种参数名,若所述参数名对应的参数取值的种类数大于第一阈值,且每种参数取值的出现次数小于第二阈值,则所述参数名为所述用户参数;若所述参数名对应的参数取值的种类数小于第三阈值,且每个参数取值的出现次数大于第四阈值,则所述参数名为所述系统参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510334914.6A CN104965784B (zh) | 2015-06-16 | 2015-06-16 | 自动测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510334914.6A CN104965784B (zh) | 2015-06-16 | 2015-06-16 | 自动测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104965784A CN104965784A (zh) | 2015-10-07 |
CN104965784B true CN104965784B (zh) | 2017-12-26 |
Family
ID=54219819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510334914.6A Active CN104965784B (zh) | 2015-06-16 | 2015-06-16 | 自动测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104965784B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955889B (zh) * | 2016-05-11 | 2019-02-01 | 南京大学 | 一种图形界面自动化测试方法 |
CN107786383A (zh) * | 2016-08-30 | 2018-03-09 | 北京国双科技有限公司 | 心跳数据包的发送方法及装置 |
US9977729B1 (en) * | 2016-11-23 | 2018-05-22 | Google Llc | Testing applications with a defined input format |
CN106802864A (zh) * | 2016-12-30 | 2017-06-06 | 中国银联股份有限公司 | 一种基于金融系统的测试方法及装置 |
CN107609401A (zh) * | 2017-08-03 | 2018-01-19 | 百度在线网络技术(北京)有限公司 | 自动测试方法及装置 |
CN108363662A (zh) * | 2018-01-29 | 2018-08-03 | 深圳壹账通智能科技有限公司 | 一种应用程序测试方法、存储介质及终端设备 |
CN109657472B (zh) * | 2018-10-11 | 2023-09-22 | 平安科技(深圳)有限公司 | Sql注入漏洞检测方法、装置、设备及可读存储介质 |
CN111382057B (zh) * | 2018-12-29 | 2024-02-02 | 北京字节跳动网络技术有限公司 | 测试用例生成方法,测试方法及装置,服务器及存储介质 |
CN110825636B (zh) * | 2019-11-05 | 2021-03-30 | 腾讯科技(深圳)有限公司 | 一种匹配算法性能测试方法、装置、设备、系统及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902619A (zh) * | 2011-07-29 | 2013-01-30 | 阿里巴巴集团控股有限公司 | Web应用程序的回归测试方法和装置 |
EP2555485A1 (en) * | 2011-07-31 | 2013-02-06 | Verint Systems Limited | Method for main page identification in web decoding |
CN103051605A (zh) * | 2012-11-21 | 2013-04-17 | 国家计算机网络与信息安全管理中心 | 一种数据包处理方法、装置和系统 |
-
2015
- 2015-06-16 CN CN201510334914.6A patent/CN104965784B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902619A (zh) * | 2011-07-29 | 2013-01-30 | 阿里巴巴集团控股有限公司 | Web应用程序的回归测试方法和装置 |
EP2555485A1 (en) * | 2011-07-31 | 2013-02-06 | Verint Systems Limited | Method for main page identification in web decoding |
CN103051605A (zh) * | 2012-11-21 | 2013-04-17 | 国家计算机网络与信息安全管理中心 | 一种数据包处理方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104965784A (zh) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104965784B (zh) | 自动测试方法及装置 | |
WO2018014610A1 (zh) | 基于c4.5决策树算法的特定用户挖掘系统及其方法 | |
US10410128B2 (en) | Method, device, and server for friend recommendation | |
CN102035698B (zh) | 基于决策树分类算法的http隧道检测方法 | |
CN106649831B (zh) | 一种数据过滤方法及装置 | |
CN111740884B (zh) | 一种日志处理方法及电子设备、服务器、存储介质 | |
US20170109636A1 (en) | Crowd-Based Model for Identifying Executions of a Business Process | |
WO2021254027A1 (zh) | 一种可疑社团的识别方法、装置、存储介质和计算机设备 | |
US10044820B2 (en) | Method and system for automated transaction analysis | |
CN111309539A (zh) | 一种异常监测方法、装置和电子设备 | |
CN105893253A (zh) | 应用软件测试方法、测试装置及测试设备 | |
CN105224691B (zh) | 一种信息处理方法及装置 | |
CN103530347A (zh) | 一种基于大数据挖掘的互联网资源质量评估方法及系统 | |
CN104796300B (zh) | 一种数据包特征提取方法及装置 | |
CN106557558A (zh) | 一种数据分析方法及装置 | |
CN115577152B (zh) | 基于数据分析的在线图书借阅管理系统 | |
CN107766234A (zh) | 一种基于移动设备的网页健康度的测评方法、装置及系统 | |
CN105141446A (zh) | 一种基于客观权重确定的网络设备健康度评估方法 | |
US8140444B2 (en) | Method of measuring a large population of web pages for compliance to content standards that require human judgement to evaluate | |
CN110895506A (zh) | 测试数据的构造方法和构造系统 | |
CN106250397B (zh) | 一种用户行为特征的分析方法及装置 | |
CN103902798A (zh) | 数据预处理方法 | |
Kumar et al. | A hybrid data-driven framework for spam detection in online social network | |
CN114971693A (zh) | 一种基于bim的工程造价咨询管理系统 | |
CN110059083A (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 | ||
CB02 | Change of applicant information |
Address after: 511446 Guangzhou City, Guangdong Province, Panyu District, South Village, Huambo Business District Wanda Plaza, block B1, floor 28 Applicant after: Guangzhou Huaduo Network Technology Co., Ltd. Address before: 510655, Guangzhou, Whampoa Avenue, No. 2, creative industrial park, building 3-08, Applicant before: Guangzhou Huaduo Network Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant |