一种基于用户会话和层次聚类算法的测试用例选择方法与流程

文档序号:15143996发布日期:2018-08-10 20:13阅读:212来源:国知局

本发明涉及web应用自动化测试技术领域,特别涉及一种基于用户会话和层次聚类算法的测试用例选择方法。



背景技术:

近年来,网络应用成为全球信息基础设施在互联网上运行的重要组成部分。web应用的功能越来越复杂,并可以同时支持数百万用户同时在线。因此,web应用程序的功能和性能成为其成功的关键因素。许多工具被广泛用于自动功能和性能测试。大部分这些自动化测试工具都使用录制/回放技术。这些工具记录了测试工程师的行为,然后在压力下对系统执行这些操作,以获得网络吞吐量、最大并发量、和响应时间等性能指标。但是测试工程师通常会花费大量的时间来录制和编写脚本,并手动生成测试数据。而且,它只代表了测试工程师的操作,不能代表所有的实际用户,这意味着测试脚本产生的操作路径和负载可能不符合实际用户的情况,因此测试结果的充分性和有效性无法保证。

为了解决上述问题,使用服务器日志中记录的用户会话来生成功能和性能测试用例是可行的,它能实现自动创建测试用例,并减少人为工作量。此外,基于用户会话的方法产生的测试用例可以反映真实用户的行为,这对web应用测试具有重要意义。但是,未经处理的用户会话生成的测试用例数量通常非常庞大,不具备操作可能性。另外,相当多的测试用例是冗余的,即冗余测试用例执行相同的行为并输出相似的测试结果。另外,执行所有测试用例也很耗时。



技术实现要素:

本发明的目的在于克服现有技术中的缺点与不足,提供一种基于用户会话和层次聚类算法的测试用例选择方法,通过从服务器日志中的用户会话来生成测试用例,采用定义页面和url序列相似度,使用序列对齐、动态规划法和自下而上层次聚类算法来选择和优化测试用例。关键技术是在确保url顺序性的前提下计算每个用户会话之间的分歧距离。该方法可快速从大量服务器访问日志中挖掘出具有代表性的用户操作序列作为测试用例,实现测试用例生成的自动化和测试用例选择的优化,有利于后续开展服务器的自动化功能测试、性能测试以及用户行为分析等工作。

为实现以上目的,本发明采取如下技术方案:

一种基于用户会话和层次聚类算法的测试用例选择方法,包括以下步骤:

s1、提取扫描服务器的访问日志记录,在原始会话中提取出每一个有效的用户访问url记录并按时间进行排序,然后获得url访问集合uv={url1,url2,…,urln},其中urln表示第n个用户访问url记录;

s2、对url访问集合uv进行预处理,所述预处理指过滤掉无效访问信息,然后通过源ip进行聚类,最后通过时间排序以及时间阈值t,形成用户会话序列集合ci,ci={us1,us2,us3...usn},usk={urlk1,urlik2,…,urlkm},其中1≤k≤n,usk表示第k个用户会话序列,urlkm表示第k个用户会话序列中的第m个用户访问url记录;

s3、从集合ci中的第一个用户会话序列开始扫描并计算与集合ci中其他用户会话序列的相似距离;通过使用改进的用户会话序列比对算法来获取所述的相似度,进而获得两个用户会话序列的相似距离;所述改进的用户会话序列比对算法,包含两个步骤:第一步,定义两个网页之间的相似度,每个用户会话序列包含多个网页;第二步是使用网页相似度作为内部函数来定义用户会话序列相似度;

s4、基于步骤s3得到的用户会话序列的相似距离,采用改进的凝集层次聚类算法对用户会话序列进行聚类;

s5、通过重复遍历测试用例集合来删除冗余测试用例,优化测试用例的选择。

作为优选的技术方案,步骤s1中,所述服务器访问日志记录包含以下信息:访问对象、访问源ip、以及访问时间。

作为优选的技术方案,步骤s2中,所述无效访问信息,包括图片、js资源文件、以及404页面;然后通过源ip进行聚类;所述时间阈值t设定为2小时。

作为优选的技术方案,在步骤s3中具体包括下述步骤:

s31、网页相似度计算分为以下两个步骤来完成:

s311、web应用程序的每个url都被转换为令牌字符串,从开始逐一比较两个令牌字符串中的每个对应的令牌,并且该过程在不同的第一对令牌上停止,然后记录与相同的令牌的数量为n;

s312、假设最长的令牌字符串中令牌的数量为m,首先确定两个网页中最长的令牌字符串的长度,计算出两个网页的相似度;然后给每一级令牌赋予权重:最长的令牌字符串的最后一级赋予权重为1,倒数第二级赋予权重为2,依次类推;接下来,将两个令牌字符串之间的相似度定义为匹配令牌的权重之和除以总权重之和;公式如下:

其中,i表示两令牌字符串中相同令牌对的第i个令牌的权重;j表示最长的令牌字符串中第j个令牌的权重;

s32、在定义了两个url之间相似度的计算方法之后,在此基础上测量用户会话序列的相似度,并使用动态规划法找到两个用户会话序列之间的最佳匹配;使用评分系统来帮助找到两个用户会话序列之间的最佳匹配;最佳匹配是最高得分;然后使用最佳匹配的分数来计算两个用户会话之间的相似度;

测量用户会话序列相似度的评分系统算法如下:

(1)对齐两个长短不一的会话序列,可在较短序列的头部、中部或尾部插入间隙“-”以对齐两个会话序列的长度;

(2)依次对比两个会话序列中的每对url,每个相同的网页匹配,即具有相似度为1.0的一对页面,被给予正分数20;每个不匹配,即具有相似度0.0的一对页面或与具有“-”的页面匹配,被赋予罚分-10;对于一对相似度为α的页面,其中0.0≤α≤1.0,匹配得分在之间,匹配得分与最长令牌字符串的长度对应;

具体计算公式为:

其中sim(usi,usj)表示usi和usj两个会话序列的相似度;score表示两个用户会话序列当前匹配获得的分数;maxlength(us1,us2)表示usi和usj两个会话序列中较长会话序列的长度;

此时,两个用户会话序列的相似距离表示如下式:

d(usi,usj)=|1-sim(usi,usj)|。

作为优选的技术方案,步骤s32中,所述测量用户会话序列的相似度过程中,不同的匹配方式将获得不同的匹配分数score,寻找最佳匹配的问题使用动态规划方法来解决;假设有两个用户会话,建立一个会话匹配矩阵:一个用户会话序列沿着矩阵的顶部放置,另一个用户会话序列沿着矩阵的左侧放置;每个用户会话序列的开头都为一个空格,表示匹配的起始点;寻找两个用户会话序列之间最佳匹配的过程实际上是从矩阵的左上角到右下角寻找最佳路径;任何路径上的任何一步只能向右,向下或对角线;每个对角线移动对应于匹配两个网页;向右移动对应于垂直序列中的间隙的插入,并且将水平序列中的网页与垂直序列中的间隙进行匹配;向下移动对应于在水平顺序中插入间隙,并且在纵向顺序中与网页匹配,并且在水平顺序中具有间隙;

所述动态规划法将分数从匹配起点即左上角传播到矩阵的目标点即右下角,然后通过从目标点向起点传播的最佳路径;通过反向传播发现的最佳路径通过箭头连接,结束于右下角的分数是最佳序列比对分数;在找到最佳匹配的最终得分之后,通过考虑最终的最佳匹配得分和两个会话的长度来计算两个会话之间的最终相似度。

作为优选的技术方案,步骤s4中具体包括下述步骤:

s41、第一循环聚类:最初,每个用户会话序列都被视为一个单独的测试用例,利用循环聚类粗略得到一个测试用例集合c,具体过程如下:

从第一个用户会话序列开始判断与集合c中剩余所有用户会话序列的相似距离是否小于预定义的用户会话序列相似距离的最小值,若第i个与第j个用户会话序列的相似距离小于预定义的用户会话序列相似距离的最小值d(usi,usj)=|1-sim(usi,usj)|≤dmin(i,j),则这两个用户会话序列具有相似的访问路径,将其合并到同一个用户会话序列集合cs中;将此判断进行i++循环遍历,直到测试用例集合c中任意两个用户会话序列的相似距离都大于预定义的用户会话序列相似距离的最小值,则循环停止,并将用户会话序列集合cs保存到测试用例集合c中,c={c1,c2,c3...cs};所述用户会话序列相似距离的最小值预定义为dmin(i,j)=0.6;

s42、第二循环聚类:在经过第一循环聚类后得到的测试用例集合c中,从第一个用户会话序列集合开始判断与集合c中其他用户会话序列集合的平均相似距离是否小于预定义的用户会话序列集合相似距离的最小值,若第i个与第j个用户会话序列集合的相似距离小于预定义的用户会话序列相似距离的最小值davg(ci,cj)≤dmin(i,j),则这两个用户会话集合具有相似性,将其合并到同一个用户会话序列集合cu;循环遍历完所有用户会话序列集合,直到测试用例集合c中任意两个用户会话集合的平均相似距离都大于预定义的用户会话序列相似距离的最小值davg(ci,cj)≥dmin(i,j),则循环中止,并将用户会话序列集合cu保存到测试用例集合c′中,c′={c1′,c2′,c3′...cu′},作为优化测试用例的输入;

所述用户会话序列集合之间的平均相似距离通过以下公式进行计算:

其中ci表示第i个用户会话序列集合,cj表示第j个用户会话序列集合;ni和nj表示用户会话序列集合的大小。

作为优选的技术方案,步骤s5中,通过删除冗余测试用例优化测试用例的选择,具体包括下述步骤:

s51、在经过步骤s42聚类得到的测试用例集合c′中,依次从用户会话序列集合ci′中选择一个测试用例usp;

s52、判断测试用例usp中每个url是否完全包含在测试用例集合ci′中的其他元素中,如果是,则ci′=ci′-{usp},否则,ci′保持不变;

s53、对步骤s51和s52执行循环遍历,直到遍历完整个测试用例集合c′,此时的c′为优化过的测试用例集合;最后将c′输出获得最终优化的测试用例集合r。

本发明相对于现有技术具有如下的优点和效果:

1、本发明的方法拟借助web服务器的访问日志来自动生成测试用例,无需人工编写测试脚本,提升了测试用例生成效率。

2、本发明的方法基于用户会话的方法产生的测试用例可以反映真实用户的行为,提升了效率的同时可以保持用户会话中的url顺序,有效避免了人工模拟带来的不准确的影响。

3、本发明的方法与传统方法相比,本发明所采用方案新定义了网页相似度模型和url序列相似度模型,能较好的衡量不同用户会话序列是否具有相似的特质。

4、本发明的方法一定程度上解决了传统方法因访问日志过于庞大而生成的测试用例数量过多的弊端。

5、本发明的方法依赖的输入数据较少,且属于绝大多数web应用通常具备的常用数据,应用的普适性较强。

6、本发明的方法采用自下而上的层次聚类算法来聚合相似测试用例,在保证序列性的前提下计算每个用户会话之间的距离,能代表同一集合内的测试用例执行了类似的应用程序功能,覆盖相似的程序代码,方便后续在集合内进行进一步的冗余处理。

附图说明

图1为本发明的基于用户会话和层次聚类算法的测试用例选择方法的工作原理图。

图2为本发明的基于用户会话和层次聚类算法的测试用例选择方法的工作流程图。

图3为本实施例的一个网站的树形结构图。

图4为本实施例用于描述动态规划算法的矩阵图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步详细描述。

实施例

如图1和图2所示,一种基于用户会话和层次聚类算法的测试用例选择方法,包括下述步骤:

s1、提取扫描服务器的访问日志记录,在原始会话中提取出每一个有效的用户访问url记录并按时间进行排序,然后获得url访问集合uv={url1,url2,…,urln},其中urln表示第n个用户访问url记录;

所述服务器访问日志记录包含以下信息:访问对象、访问源ip、以及访问时间。

s2、对url访问集合uv进行预处理,所述预处理指过滤掉无效访问信息,然后通过源ip进行聚类,最后通过时间排序以及时间阈值t,形成用户会话序列集合ci,ci={us1,us2,us3...usn},其中usk={urlk1,urlik2,…,urlkm},(1≤k≤n),usk表示第k个用户会话序列,urlkm表示第k个用户会话序列中的第m个用户访问url记录;

在本实施例中,所述无效访问信息,包括各类图片、js资源文件、以及404页面;然后通过源ip进行聚类;

所述时间阈值t设定为2小时。

s3、从集合ci中的第一个用户会话序列开始扫描并计算与集合ci中其他用户会话序列的相似距离;通过使用改进的用户会话序列比对算法来获取所述的相似度,进而获得两个用户会话序列的相似距离;所述改进的用户会话序列比对算法,包含两个步骤:第一步,定义两个网页之间的相似度,每个用户会话序列包含多个网页;第二步是使用网页相似度作为内部函数来定义用户会话序列相似度;具体包括下述步骤:

s31、由于web应用程序使用目录树组织网页,因此利用url的分层特性来衡量每个url之间的差异;为测量两个网页之间的相似度,url的每个级别都由一个令牌来呈现,url的完整路径的标记字符串是每个级别的所有代表性令牌的串联,对应于标记一个网站的树形结构,如图3所示,因此web应用程序的每个url都被转换为令牌字符串;

网页相似度计算分为以下两个步骤来完成:

s311、从开始逐一比较两个令牌字符串中的每个对应的令牌,并且该过程在不同的第一对令牌上停止,然后记录与相同的令牌的数量为n;

s312、假设最长的令牌字符串中令牌的数量为m,首先确定两个网页中最长的令牌字符串的长度,计算出两个网页的相似度;然后给每一级令牌赋予权重:最长的令牌字符串的最后一级赋予权重为1,倒数第二级赋予权重为2,依次类推;接下来,将两个令牌字符串之间的相似度定义为匹配令牌的权重之和除以总权重之和;公式如下:

其中,i表示两令牌字符串中相同令牌对的第i个令牌的权重;j表示最长的令牌字符串中第j个令牌的权重;

例如,令牌串“010”和“011”之间的相似度是0.833;如果两个网页完全不同,即它们没有相同的相应令牌,则它们的相似度为0.0;如果两个网页完全一样,它们的相似度就是1.0。

s32、在定义了两个url之间相似度的计算方法之后,在此基础上测量用户会话序列的相似度,并使用动态规划法找到两个用户会话序列之间的最佳匹配;使用评分系统来帮助找到两个用户会话序列之间的最佳匹配;最佳匹配是最高得分;然后使用最佳匹配的分数来计算两个用户会话之间的相似度;

测量用户会话序列相似度的评分系统算法如下:

(1)对齐两个长短不一的会话序列,可在较短序列的头部、中部或尾部插入间隙“-”以对齐两个会话序列的长度;

(2)依次对比两个会话序列中的每对url,每个相同的网页匹配,即具有相似度为1.0的一对页面,被给予正分数20;每个不匹配,即具有相似度0.0的一对页面或与具有“-”的页面匹配,被赋予罚分-10;对于一对相似度为α的页面,其中0.0≤α≤1.0,匹配得分在之间,匹配得分与最长令牌字符串的长度对应;

具体计算公式为:

其中sim(usi,usj)表示usi和usj两个会话序列的相似度;score表示两个用户会话序列当前匹配获得的分数;maxlength(us1,us2)表示usi和usj两个会话序列中较长会话序列的长度;

此时,两个用户会话序列的相似距离表示如下:

d(usi,usj)=|1-sim(usi,usj)|

如图4所示,所述测量用户会话序列的相似度过程中,不同的匹配方式将获得不同的匹配分数score,寻找最佳匹配的问题通常可以使用动态规划方法来解决;假设有两个用户会话,建立一个会话匹配矩阵:一个用户会话序列沿着矩阵的顶部放置,另一个用户会话序列沿着矩阵的左侧放置;每个用户会话序列的开头都有一个空格,表示匹配的起始点;寻找两个用户会话序列之间最佳匹配的过程实际上是从矩阵的左上角到右下角寻找最佳路径;任何路径上的任何一步只能向右,向下或对角线;每个对角线移动对应于匹配两个网页;向右移动对应于垂直序列中的间隙的插入,并且将水平序列中的网页与垂直序列中的间隙进行匹配;向下移动对应于在水平顺序中插入间隙,并且在纵向顺序中与网页匹配,并且在水平顺序中具有间隙;

为了解决最优匹配问题,动态规划法将分数从匹配起点即左上角传播到矩阵的目标点即右下角,然后通过从目标点向起点传播的最佳路径;通过反向传播发现的最佳路径通过箭头连接,结束于右下角的分数是最佳序列比对分数;在找到最佳匹配的最终得分之后,通过考虑最终的最佳匹配得分和两个会话的长度来计算两个会话之间的最终相似度。

s4、基于步骤s3得到的用户会话序列的相似距离,采用改进的凝集层次聚类算法对用户会话序列进行聚类;具体包括下述步骤:

s41、第一循环聚类:最初,每个用户会话序列都被视为一个单独的测试用例,利用循环聚类粗略得到一个测试用例集合c,具体过程如下:

从第一个用户会话序列开始判断与集合c中剩余所有用户会话序列的相似距离是否小于预定义的用户会话序列相似距离的最小值,若第i个与第j个用户会话序列的相似距离小于预定义的用户会话序列相似距离的最小值d(usi,usj)=|1-sim(usi,usj)|≤dmin(i,j),则这两个用户会话序列具有相似的访问路径,将其合并到同一个用户会话序列集合cs中;将此判断进行i++循环遍历,直到测试用例集合c中任意两个用户会话序列的相似距离都大于预定义的用户会话序列相似距离的最小值,则循环停止,并将用户会话序列集合cs保存到测试用例集合c中,c={c1,c2,c3...cs};所述用户会话序列相似距离的最小值预定义为dmin(i,j)=0.6;

s42、第二循环聚类:在经过第一循环聚类后得到的测试用例集合c中,从第一个用户会话序列集合开始判断与集合c中其他用户会话序列集合的平均相似距离是否小于预定义的用户会话序列集合相似距离的最小值,若第i个与第j个用户会话序列集合的相似距离小于预定义的用户会话序列相似距离的最小值davg(ci,cj)≤dmin(i,j),则这两个用户会话集合具有相似性,将其合并到同一个用户会话序列集合cu;循环遍历完所有用户会话序列集合,直到测试用例集合c中任意两个用户会话集合的平均相似距离都大于预定义的用户会话序列相似距离的最小值davg(ci,cj)≥dmin(i,j),则循环中止,并将用户会话序列集合cu保存到测试用例集合c′中,c′={c1′,c2′,c3′...cu′},作为优化测试用例的输入;

所述用户会话序列集合之间的平均相似距离通过以下公式进行计算:

其中ci表示第i个用户会话序列集合,cj表示第j个用户会话序列集合;ni和nj表示用户会话序列集合的大小;davg(ci,cj)表示两个用户会话序列集合之间的平均相似距离。

s5、通过重复遍历测试用例集合来删除冗余测试用例,优化测试用例的选择。

s51、在经过步骤s42聚类得到的测试用例集合c′中,依次从用户会话序列集合ci′中选择一个测试用例usp;

s52、判断测试用例usp中每个url是否完全包含在测试用例集合ci′中的其他元素中,如果是,则ci′=ci′-{usp},否则,ci′保持不变;

s53、对步骤s51和s52执行循环遍历,直到遍历完整个测试用例集合c′,此时的c′为优化过的测试用例集合;最后将c′输出获得最终优化的测试用例集合r;

在本实施例中,最终生成的测试用例集合r有效减少了测试用例的数量并保留了用户url访问顺序,是一种更高效冗余性更低的测试用例选择方法。

在本实施例中,用户序列相似度匹配算法总结如下:

最后应说明的是:以上所述仅为本发明的优选实施例,并不用于限制本发明。尽管参照前述实施例对本发明进行了详细说明,但对于本领域的技术人员而言,其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则内所作的任何修改、等同替换及改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1