• 0
  • 0
分享
  • 基于Jaccard等算法的版本验证案例辅助筛选工具研究——软件测试圈
  • 恬恬圈 2023-03-30 16:46:12 字数 2086 阅读 986 收藏 0

  课题背景

  版本验证是部署软件之前的最后一个测试操作,在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。该验证要求开发人员首先将程序部署在生产环境上,由测试人员通过筛选关键案例进行验证,确保程序主体正常运行。作为投产前的最后一步,版本验证对于整个产品质量的保证至关重要。随着数字化转型的深入,各类项目越来越复杂,测试人员需要执行的测试案例也越来越多,而版本验证通常需要在短时间内完成,既要确保关键案例都被执行,又要节省时间,避免重复验证,在保证测试质量地情况下提升测试效率。以往通过人工的方法进行版本验证案例筛选占用大量的工作时间,效率低,容易出错。基于此,本课题研究了如何通过相似度算法剔除相似度高的测试案例,筛选版本验证关键案例。

  算法介绍

  Jaccard相似系数用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。两个集合A和B交集元素的个数在A、B并集中所占的比例,称为这两个集合的杰卡德系数,用符号 J(A,B) 表示。当集合A,B都为空时,J(A,B)定义为1。杰卡德相似系数是衡量两个集合相似度的一种指标,值越大说明相似度越高。

1-1.png

图1:Jaccard相似度计算公式

  余弦相似度是通过衡量两个向量间的夹角大小,通过夹角的余弦值表示结果,余弦相似度的取值为[-1,1],值越大表示越相似。计算余弦值的公式如下:

1-2.png

图2:单维度余弦相似度计算公式

  如果假设空间是多维的,那么余弦相似度公式可扩展如下图:

1-3.png

图3:多维度余弦相似度计算公式

  Jaccard算法和余弦算法作为自然语言处理中常见的距离相似度算法,拥有简洁高效的特点,每检测万条案例文本的平均耗时大概在 300ms 左右,能够极大的满足测试要求。在准确性上,两种算法也均有不错的表现。

  课题实现

1-4.png

图4:案例筛选工具工作流程图

  本课题基于JAVA和VBA语言编写,VBA用于案例文件处理,JAVA用于工具系统及算法实现。测试案例文档往往包含大量冗余信息,直接进行相似度比对会导致结果不够精准,需要提取关键信息(案例描述和预期结果)。VBA语言可以直接对excel文档进行批量处理,将有用信息以.txt形式输出,便于后续导入案例筛选工具进行数据比对。

  JAVA语言编写程序,包含可视化工具界面和算法,可以满足零编程基础人员一键导入案例,一键导出案例比对结果到excel。工具比对结果中包含了所有案例的两两相似度对比结果及系统推荐的版本验证案例。具体的功能包含:智能分词(采用常用的IK分词器进行分词并去掉句子中的噪点),线程模式(开启后可切换多线程处理模式,极大提高比对速度,适合大量案例场景,但会提高CPU占用率,一般适用案例数在10万以上的场景),阈值设置(可自由设置版本验证案例相似度门槛,由0到1,系统会根据门槛推荐版本验证案例)。测试人员只需将VBA处理后的数据导入该工具,打开智能分词,选择线程模式,即可开始比对,该工具会将所有案例两两比对,采用Jaccard及余弦算法,并将两种算法的结果取平均值作为最终结果。比对过程会展示在工具界面的比对框,最终结果汇总至比对结果文档输出至当前路径。输出结果中每条案例均会被贴上是否满足版本验证条件的标签,并给出Jaccard、余弦算法及加权相似度结果值。

1-5.png

图5:版本验证工具(比对前)

1-6.png

图6:版本验证工具(比对后)

1-7.png

图7:输出结果

  拓展研究

  在采用传统相似度算法的同时,本课题也研究了机器学习和深度学习在本场景下的使用,包括无监督学习,采用bert预训练模型,对任务领域内的无标签测试数据进行预训练,获取每个词的语义表示,用于相似度计算;以及监督学习孪生网络等。在训练测试案例数据的过程中,发现由于待测系统众多,测试领域繁多,案例种类复杂,以及每个测试人员编写案例组织语言的习惯不同,产生了训练难度大,成本高的问题。与此同时,可用训练样本数也不够充沛,导致训练结果不够理想,所有训练模型均未取得较好效果,准确率甚至低于百分之50。即便在一个系统案例中可行,放到另个领域进行预测,之前积累的词袋模型也无法使用,需要重新进行训练,耗费大量时间。

  课题总结

  通过该版本验证案例筛选工具,可以在较短的时间内帮助测试人员计算出两两测试案例的相似度,通过不同的相似度,定义案例执行的优先级,辅助版本验证案例的选择,从而减轻测试人员在筛选版本验证案例中花费的精力,使其能以更大的精力投入到测试活动中。同时该工具操作简单,支持一键导入和一键输出,方便非技术人员进行使用,门槛低,便于推广。但该工具也存在一些缺陷,以相似度作为筛选版本验证案例的标准可能会导致漏掉一些关键案例,在一些复杂场景下,相似度高也不一定意味着重要性低。因此此工具应作为辅助版本验证案例筛选的工具,筛选结果是否符合版本验证案例标准还应由测试人员根据实际情况进行判断。



作者:何泊宁    

来源:http://www.51testing.com/html/89/n-7794889.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?首先,将问题提交到缺陷管理库里面进行备案。然后,要获取判断的依据和标准:根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;根据用户的一般使用习惯,来确认是否是缺陷;与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的...
            4 5 3060
            分享
          • 当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看...”(未完)这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。委婉地说出“你已拿到一份11K的offer”这样的话,是为了拉回谈判的话语权,平衡掉HR说你只值7K的贬值语境。(ps: 这里的说辞可灵活变通,关键是备好一个让自己保值的理由)这种“绵里藏针”的谈判方式...
            1 5 4190
            分享
          • IT之家 9 月 14 日消息,随着美国年底购物旺季的到来,各家科技公司也在广告业务上更加上心,苹果也准备在 App Store 内增加新的广告位以让开发者购买,也就是说年底前大家可能就会在应用商店中看到更多的广告。当地时间周二,苹果向开发者发送消息,邀请他们参加线上会议,鼓励他们购买广告。邀请函显示,iOS App Store 中的新“广告位置”将在“这个假日季”及时出现。此外,Mobile Dev Memo 的开发者和创始人 Eric Seufert 在他的 Twitter 上向大家展示了这份邀请函。IT之家也因此得以知悉,苹果的网络研讨会定于 9 月 21 日星期三举行,关于结果如何,届...
            0 0 876
            分享
          • 读者提问:测试报告怎么写?阿常回答:测试报告通常包含这四要素:1、项目背景;2、参考资料;3、计划执行列表;4、测试结果。一、项目背景项目背景主要包含以下 4 点:1、测试产品名称(XX平台);2、测试周期(5.1~5.5);3、主要测试项目及具体内容(测试XX平台的功能是否正常实现、易用性是否满足用户需求);4、测试人员(测试员XX)。二、参考资料参考资料主要包含以下 4 点:1、测试计划(文档链接);2、需求规格说明书(文档链接);3、测试用例(文档链接);4、缺陷记录(jira链接)。三、计划执行列表计划执行列表主要包含以下 3 点:1、计划内容(功能测试、界面测试、易用性测试);2、执...
            0 0 1948
            分享
          • 入行测开,马上就要4年了。创业公司待过,大公司也待过,工作这一路走来,一些心得,转变,职场体会,早就想写出来分享一下。这个历程包含了技术的提升,工程师的素养和对这个行业的点滴感悟。自动化测试vs测试开发记得刚入行那会,我的title是自动化测试工程师。那时对这两者的区别还没那么明显,面试时候两者的问题也都比较类似。当时招聘“会写代码的测试人员”比较偏向称之为“自动化测试工程师”;不过现在很多企业的招聘都变为“测试开发工程师”了。究其概念,其实自动化测试工程师更偏向于业务方向的效率提升;而测试开发则更偏向于基础架构方向的效率提升。打个简单的比方,测试开发工程师产出的框架可以认为是父类,自动化测试...
            0 4 1855
            分享
      • 51testing软件测试圈微信