一种仅基于图像的非侵入式跨平台测试迁移方法

文档序号:38035753发布日期:2024-05-17 13:20阅读:8来源:国知局
一种仅基于图像的非侵入式跨平台测试迁移方法

本发明涉及软件工程领域,特别涉及一种仅基于图像的非侵入式跨平台测试迁移方法。


背景技术:

1、gui测试是软件测试的一个重要领域,主要用于评估和验证应用gui的可靠性、可用性和效率。针对移动应用的gui测试,通过模拟用户的交互行为,来实现对移动应用质量的保障。如果将用户与应用的一次交互行为视为一个测试事件,那么gui测试脚本就是一个测试事件序列。由于gui测试脚本的开发成本较高,如何自动化地生成gui测试脚本这一问题获得了广泛关注。

2、自动化测试仅基于图像的非侵入式跨平台测试迁移方法(gui testing)和测试脚本复用(test reuse)仅基于图像的非侵入式跨平台测试迁移方法大技术方向。自动化测试的目标在于使测试脚本达到较高的代码覆盖度(code coverage),会忽视某些特定的测试事件序列,因为这些事件序列不一定能够有效提升代码覆盖度。实际上,这些事件序列往往对应着应用的一些特定功能场景,对这些功能场景进行测试是移动应用质量保障的重要环节。测试复用是自动化地复用已有的测试脚本,对事件序列进行跨移动应用的迁移,使其能够运行于目标平台应用上。在避免手工编写大量测试脚本的同时,测试复用也在较大程度上保留了测试脚本对特定功能场景进行测试的意图。

3、对开发者而言,提供同一移动应用的不同平台(如android、ios和小程序等)版本是一种常见的商业行为,因为这有利于留存用户和占据市场份额。不同平台的版本提供的功能高度相似,同时为了保障用户在不同平台之间切换时的使用体验,不同平台版本通常在gui设计上也具有较高的相似度。在这种情况下,为各平台版本单独编写gui测试脚本会造成大量重复劳动。因此,将同一移动应用的不同平台版本作为测试复用的对象,进行跨平台移动应用的测试脚本迁移,能够为移动应用质量保障降低成本、提升效率。

4、同一移动应用的不同平台版本在gui上具有较高的视觉相似度,这使得基于视觉信息进行跨平台测试迁移具备较好的一致性基础和可行性。与此同时,基于视觉信息的跨平台测试迁移方法主要利用gui截图这一平台无关的信息,能够有效降低测试复用对平台的依赖程度。因此,本发明旨在提出一种仅基于图像的非侵入式跨平台测试迁移方法,为跨平台测试迁移提供一种平台无关的解决方案。


技术实现思路

1、针对现有的跨平台测试迁移方法对平台依赖程度高以及无法有效处理gui脚本因设备和平台变更而失效的问题,本发明提出了一种仅基于图像的非侵入式跨平台测试迁移方法,用以解决上述问题,本发明通过以下技术方案来实现。

2、一种仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,该方法通过录制测试脚本在源平台应用上的执行过程,利用目标检测技术识别目标平台应用中存在的控件,并基于控件视觉特征进行控件映射,获取目标控件,当gui脚本在跨平台场景下失效时,基于图像预测控件语义,进而自动化地调整测试事件序列,使所述gui脚本适用于目标平台应用,该方法与移动设备的交互动作通过机械臂来完成。

3、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述方法包括以下步骤:

4、步骤1)测试录制;以源平台应用和适用于源平台应用的gui测试脚本为输入,记为源应用和源测试脚本,获取源测试脚本在源应用上的执行过程和每个测试事件所作用控件的信息;

5、步骤2)机械臂系统部署;按照系统示意图,摆放机械臂、摄像头、定位纸和目标平台设备,对系统进行校准,并封装机械臂操作的接口;

6、步骤3)控件检测;从摄像头拍摄的实时画面中截取目标平台设备的屏幕,检测目标平台应用页面上存在的控件;

7、步骤4)控件映射;以源测试脚本执行过程、作用控件的信息和目标平台应用页面上检测到的控件为输入,在目标平台应用控件中找到与源测试脚本所作用控件相匹配的控件,记为目标控件;

8、步骤5)事件序列调整;使用机械臂与目标控件进行交互,如果交互后目标平台应用未跳转到预期页面,对测试事件序列进行调整,使其适用于目标平台应用。

9、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤1)测试录制具体实现包括以下步骤:

10、步骤11)对于appium测试框架支持的gui测试脚本,将测试脚本中控件定位器和作用于控件的操作构成的元组<定位器,操作>视为一个测试事件,所述测试脚本是一个测试事件序列;

11、步骤12)在模拟器或真机上安装源应用,启动所述源应用,将所述源应用导航到待测试的页面;

12、步骤13)运行python脚本格式的源测试脚本,对于每一个测试事件,使用appium框架捕获事件发生前的源应用ui截图和布局信息,记录事件所作用控件的边界,根据所作用控件的边界从ui截图中截取控件图像,将获取的源应用ui截图、事件信息、控件边界和控件图像组合成<ui截图,事件,控件边界,控件图像>的元组,记为录制事件信息。

13、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤2)机械臂系统部署具体实现包括以下步骤:

14、步骤21)摆放系统硬件;所述系统硬件包括目标平台移动设备、定位纸、摄像头、摄像头支架、三轴机械臂和机械臂配套触控笔,所述摄像机和机械臂需要连接windows系统的计算机;

15、步骤22)摆放定位纸;所述定位纸上绘制有垂直方向的中线、机械臂底座放置区域和所述中线上的3个定位点,所述机械臂底座放置区域关于所述中线对称,用于确定机械臂的摆放位置;所述定位点要求不与机械臂底座放置区域有重叠,记为定位点a、定位点b、定位点c;

16、步骤23)摆放机械臂;所述机械臂的底座边缘与所述步骤22)定位纸的机械臂底座放置区域的边缘对齐,运行机械臂配套ide uarm studio,打开其中的blockly页面,依次点击“运动”和“移动到坐标”,手动移动机械臂上的触控笔,使所述触控笔接触定位纸上的定位点a、b、c,分别记录弹窗中出现的坐标(xa,ya,za)、(xb,yb,zb)和(xc,yc,zc),轻微调整机械臂底座直到ya、yb和yc都接近0,计算机械臂点击的平均深度

17、步骤24)摆放目标平台移动设备;在定位纸上摆放目标平台的移动设备,要求移动设备关于所述定位纸的中线对称且不与所述机械臂底座的放置区域有重叠;

18、步骤25)摆放摄像头和摄像头支架;摆放要求机械臂自由活动时不会与所述摄像头和摄像头支架发生碰撞,移动设备屏幕完整出现在所述摄像头拍摄范围内且大致位于拍摄画面的中间,移动设备屏幕边框尽可能与所述摄像头拍摄边界平行,拍摄画面尽可能清晰无变形;

19、步骤26)编写python脚本,使得所述python脚本能够实时展示摄像头拍摄的画面,使用鼠标点击拍摄画面时,会在终端输出所点击位置在摄像头坐标系中的坐标,将移动设备从定位纸上移开,运行所述python脚本,依次点击定位点a、b、c,分别记录所述3个定位点的坐标(x′a,y′a)、(x′b,y′b)和(x′c,y′c),轻微调整摄像头直到x′a、x′b和x′c的值基本一致;

20、步骤27)使用ufactory提供的swiftapi封装机械臂操作接口,用于驱动机械臂与移动设备交互,封装3个机械臂操作接口。

21、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述封装的3个机械臂操作接口包括:reset接口,控制机械臂将触控笔移动至一个不与目标平台设备接触的初始位置(x0,y0,z0),要求z0>zavg;click接口,控制机械臂点击移动设备屏幕上的特定位置(x,y);swipe接口,控制机械臂在移动设备屏幕上的位置(x,y)和(x′,y′)之间滑动。

22、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤3)控件检测具体实现包括以下步骤:

23、步骤31)利用sam模型截取目标平台屏幕画面;选用默认权重的预训练sam模型,记所述模型所在路径为model_path,令model_type="default",使用以下命令行指令对摄像头的拍摄画面进行图像分割:

24、python scripts/amg.py--checkpoint<model_path>--model-type<model_type>--input<image_path>--output<output_path>

25、其中,amg.py文件可从sam模型的官方代码仓库中获取,image_path为摄像头拍摄画面所在路径,output_path为sam模型预测结果的存放路径,对于sam模型分割出的每个图像区域,模型会输出所述图像区域相对于整个拍摄画面的掩码;

26、步骤32)对于sam模型输出的每个分割区域,如果所述分割区域的中心横坐标与拍摄画面宽度的比值在[0.4,0.6]范围内,并且所述分割区域的高度与拍摄画面高度的比值不小于0.65,则保留所述分割区域;选择符合上述要求的分割区域中面积中最大的分割区域作为目标平台设备的屏幕范围;

27、步骤33)对于开源数据集rico提供的每个ui页面的语义标注,从中筛选出没有子控件的叶子控件,为每个所述叶子控件赋予唯一的id,并提取所述叶子控件的bounds和componentlabel属性,将所述叶子控件的id、bounds属性和componentlabel属性组合成形如<id,<x0,y0,x1,y1>,componentlabel>的元组,其中<x0,y0,x1,y1>来自控件的bounds属性,(x0,y0)表示控件的左上角坐标,(x1,y1)表示控件的右下角坐标;

28、步骤34)对于所述步骤33)获得的每个<id,<x0,y0,x1,y1>,componentlabel>元组,计算控件相对中心坐标控件相对宽度和控件相对高度其中ws为控件所在ui页面的高度,hs为控件所在ui页面的宽度;将所述元组信息、相对中心坐标信息和控件相对高度及宽度以“<id><xc><yc><w><h>”的格式写入文本文件,componentlabel值写入配置文件data.yml,以默认参数训练yolov8模型,所述默认参数epochs=100和imgsz=640;

29、步骤35)对于训练得到的yolov8模型,以所述步骤32)中获得目标平台设备屏幕画面作为输入,预测屏幕上所存在控件的边界和类型,并进一步根据边界信息从屏幕画面中截取控件的图像,将所述屏幕画面、控件的边界和类型、控件的图像组合为形如<屏幕画面,控件类型,控件边界,控件图像>的检测控件信息。

30、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤4)控件映射具体实现包括以下步骤:

31、步骤41)对于所述步骤13)得到的每一条录制事件信息,从目标平台设备的实时屏幕上获取一组检测控件信息,将录制事件信息中的控件边界和控件图像记为源控件边界和源控件图像,将检测控件信息中的屏幕画面记为目标屏幕,将目标屏幕上检测到的控件称为候选控件;

32、步骤42)将源控件图像作为paddleocr模型输入,识别源控件图像中所包含的文本,如果识别到了文本,则将所述源控件分类为文本类控件,否则将所述源控件分类为非文本类控件,如果所述源控件被分为文本类,则执行步骤43);

33、步骤43)使用paddleocr识别目标屏幕上存在的文本,对于每一条识别到的ocr文本,将所述文本的边界与目标屏幕上所有候选控件的边界进行比较,如果所述文本边界和某一候选控件边界重叠区域的面积大于两者边界面积较小值的0.8倍,则认为所述文本属于这一候选控件;然后对于所有包含ocr文本的候选控件,使用editdistance.distance()计算所述候选控件文本与源控件文本的编辑距离d,再计算候选控件与源控件文本长度的较大值l,进一步计算两者的文本相似度对于计算出的所述候选控件与源控件的文本相似度,进行倒序排列,得到文本相似度排序tr;

34、步骤44)将源应用ui截图和目标屏幕转换为灰度图,使用opencv库中的akaze算法检测灰度图上的特征点以及描述符,以汉明距离为距离度量对两张图片上的特征点进行暴力匹配,为源应用ui截图上的每个特征点p0找到2个最接近的目标屏幕上的特征点p1和p2,如果p1与p0的距离小于p2与p0距离的0.8倍,并且p0在源控件的边界范围内,保留p0和p1这一匹配关系;进一步根据保留的特征点匹配关系,计算每个候选控件边界范围内匹配特征点的密度,作为所述候选控件与源控件的图形相似度,即对于某一候选控件,统计p1位于其边界范围的匹配关系,记所述满足要求的匹配关系数量为a,计算出候选控件与源控件的图形相似度为其中w和h分别为候选控件边界的宽度和高度;

35、步骤45)记源控件的边界为<x0,y0,x1,y1>,源应用ui截图的宽度和高度为ws和hs,计算源控件中心的相对坐标同样方法再计算出候选控件中心的相对坐标(x′c,y′c),进一步计算两个控件的位置相似度

36、步骤46)记源控件的边界为<x0,y0,x1,y1>,源应用ui截图的宽度和高度为ws和hs,计算源控件在源应用ui截图上的占比,即同样方法再计算出候选控件在目标屏幕上的占比r′,进一步计算两个控件的尺寸相似度1-|r-r′|;

37、步骤47)对于目标屏幕上的每个候选控件,按照所述步骤44)-步骤47)计算所述候选控件与源控件的图形相似度sg、位置相似度sl和尺寸相似度ss,按照5:2:1的权重计算所述图形相似度sg、位置相似度sl和尺寸相似度ss的加权和作为源控件和候选控件的视觉相似度,对计算出的所有视觉相似度进行倒序排列,得到视觉相似度排序vr;

38、步骤48)对于文本类控件,取文本相似度排序tr中排序第一的候选控件作为最终的目标控件;对于非文本类的源控件,取所述视觉相似度排序vr中排序第一的候选控件作为目标控件。

39、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤5)事件序列调整具体实现包括以下步骤:

40、步骤51)调用所述步骤27)中封装的click接口,驱动机械臂点击所述步骤48)得到的目标控件,等待目标平台应用对交互行为进行响应;

41、步骤52)按照所述步骤35)对下一个测试事件所在的ui截图进行控件检测,得到一组检测控件信息;对于ui截图上的每一条检测控件信息,将所述控件信息与实时目标屏幕上的所有检测控件信息进行匹配;

42、步骤53)对于源应用ui截图上所有检测到的控件,计算所述控件与匹配控件重叠区域占比的均值,将所述均值作为源应用和目标平台应用当前的页面相似度;如果所述页面相似度大于0.6,则认为目标平台应用跳转到了预期页面,可以进行下一个测试事件的迁移,否则继续执行步骤54),对测试事件序列调整;

43、步骤54)对于开源数据集rico提供的每个ui页面的语义标注,从所述语义标注中筛选出的componentlabel属性为icon的叶子控件,获取这些icon控件的bounds和iconclass属性值,进一步根据bounds属性从ui页面截图中截取出控件的图像,将iconclass属性值相同的控件图像分为一类,利用icon类型控件图像以及iconclass标注作为训练集,训练mobilenet v2图像分类模型,学习率设置为0.001,epochs设置为100;

44、步骤55)对于目标设备实时屏幕上检测出的控件,利用mobilenet v2模型对其中被预测为icon类型的控件进行细分,即对控件的功能语义进行预测;

45、步骤56)由于未达到预期页面,需要对所述步骤51)中机械臂执行的点击操作进行回退,根据所述步骤55)中得到的控件功能语义,按照优先级尝试执行具有回退功能的操作,一旦执行成功,不再尝试后续的回退操作;

46、步骤57)根据所述步骤55)中得到的控件功能语义,按照优先级尝试暴露因为响应式设计而隐藏的目标控件,一旦找到目标控件,不再尝试后续操作;

47、步骤58)如果所述步骤57)中的所有尝试都没有成功,则直接尝试在当前目标屏幕上匹配下一个测试事件所作用的源控件,所述控件匹配过程为所述步骤42)-步骤48),如果所述目标控件对应的文本或视觉相似度大于0.75,则认为尝试成功,调用机械臂点击所述控件后进入剩余测试事件的迁移,否则,认为尝试失败,中止测试脚本的迁移并输出相应的失败日志。

48、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤52)按照所述步骤35)进行控件检测并进行控件信息匹配的具体步骤包括:

49、步骤521)对于源应用ui截图上的检测控件信息和目标屏幕上的检测控件信息,将所述两个检测控件信息所包含的控件边界分别记为和屏幕尺寸分别记为(ws,hs)和(wt,ht);

50、步骤522)对控件边界进行归一化,得到和

51、步骤523)计算归一化后两个控件边界的重叠区域占比,如果且则重叠区域占比为

52、

53、否则重叠区域占比为0;将目标屏幕上重叠面积占比最大的控件,作为源应用ui截图上控件的最佳匹配,并且所述控件后续不再与其它源应用ui截图上控件进行匹配。

54、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤56)按照优先级尝试执行具有回退功能的操作的优先级需按照以下顺序执行:

55、优先级561)如果在目标屏幕左上的边界范围内存在功能语义被预测为arrow_backward的图标,调用机械臂click接口点击所述arrow_backward图标;

56、优先级562)如果在目标屏幕底部的边界范围内存在功能语义被预测为arrow_backward的图标,调用机械臂click接口点击所述arrow_backward图标;

57、优先级563)令起点坐标为终点坐标为调用机械臂swipe接口向右滑动屏幕。

58、上述的仅基于图像的非侵入式跨平台测试迁移方法,其特征在于,所述步骤57)按照优先级尝试暴露因为响应式设计而隐藏的目标控件的优先级需按照以下顺序执行:

59、优先级571)如果在目标屏幕右上的边界范围内存在功能语义被预测为more的图标,调用机械臂click接口点击所述more图标,按照所述步骤42)-步骤48)寻找目标控件,如果所述目标控件对应的文本或视觉相似度大于0.75,则认为这一尝试成功,调用机械臂点击所述控件后进入下一个测试事件的迁移;否则,认为尝试失败,调用机械臂点击目标屏幕中心将目标屏幕恢复到尝试前的状态;

60、优先级572)如果在目标屏幕左上的边界范围内存在功能语义被预测为menu的图标,调用机械臂click接口点击所述menu图标;按照所述步骤42)-步骤48)寻找目标控件,如果所述目标控件对应的文本或视觉相似度大于0.75,则认为这一尝试成功,调用机械臂点击所述控件后进入下一个测试事件的迁移;否则,认为尝试失败,调用机械臂点击目标屏幕中心将目标屏幕恢复到尝试前的状态;

61、优先级573)令起点坐标为终点坐标为调用机械臂swipe接口向上滑动屏幕,按照所述步骤42)-步骤48)寻找目标控件,如果所述目标控件对应的文本或视觉相似度大于0.75,则认为这一尝试成功,调用机械臂点击所述控件后进入下一个测试事件的迁移;否则,认为尝试失败,调用机械臂swipe接口从滑到将目标屏幕恢复到尝试前的状态;

62、优先级574)如果在目标屏幕上存在功能语义被预测为expend_more的图标,调用机械臂click接口点击所述expend_more图标,按照所述步骤42)-所述48)寻找目标控件,如果所述目标控件对应的文本或视觉相似度大于0.75,则认为这一尝试成功,调用机械臂点击所述目标控件后进入下一个测试事件的迁移;否则,认为尝试失败,调用机械臂再次点击所述expend_more图标所在的位置,将目标屏幕恢复到尝试前的状态。

63、本发明通过采用以上技术方案,具有以下技术效果。

64、(1)本发明搭建了一个基于机械臂的非侵入式gui测试框架,能够捕获设备的实时屏幕画面,并由机械臂与设备进行交互;解决现有跨平台测试迁移方法对平台依赖程度高、无法应用于闭源或缺少测试框架支持的平台的问题。

65、(2)本发明实现了平台和设备变更导致gui脚本失效场景下,对测试事件序列的自动化调整,解决现有跨平台测试迁移方法无法有效处理gui脚本因设备和平台变更而失效的问题

66、(3)本发明实现从相机拍摄画面中获取精确的设备屏幕范围,解决现有非侵入式gui测试框架无法自动化获取设备屏幕精确范围的问题。

67、(4)本发明使得控件特征的提取与平台无关,控件映射过程的有效性和鲁棒性更强。解决现有基于图形的控件映射方法需要侵入式地获取控件边界、对图像噪声缺乏鲁棒性的问题。

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