怎么写关于手机和游戏的报告的报字怎么写10000字?

游戏兼容性测试由于场景多变腳本编写和维护难度都很大,大部分游戏的兼容性测试还是靠人工完成如何提升游戏兼容性测试的效率?

本文中腾讯高级测开工程师賴勇辉将为你分享基于智能探索的游戏兼容性测试实现原理。(文章干货较多建议收藏后再看~)

目前安卓手机的机型可能有几百上千种,目前游戏兼容性测试的实现方案很多但是真正做到完全自动化测试的游戏可能还不到一半,大部分还是通过人工实现游戏兼容性测試有哪些特性呢?

人工测试的特点是简单、可控但是它可能效率低,人力成本比较高

脚本自动化测试的优点是提升了效率,但是脚本嘚编写和维护成本都很高有较高的门槛。

不像传统的软件有一个确定性的逻辑但是游戏场景逻辑复杂,脚本代码编写难度上升执行過程容易出错且调试困难,代码维护性也会变差

智能探索方案应用了对人工测试概念的理解,理想情况下用户不需要编写任何代码,實现过程非常简洁方案中的工具主要实现三个功能,首先是定义和标记场景比如说欢乐斗地主开启页面,根据场景标记应该进行点擊登陆按纽的场景操作;其次是回放调试,把前面定义和标记的场景跑起来最后生成一个报告的报字怎么写。

场景定义和标记如何实现以欢乐斗地主登陆的首页为例,可以根据右上角的logo标记这个场景为首页登陆的场景,在这个场景下需要进行点击微信登录,实现整個微信登录的过程我们把它称为是场景操作。

在标记完场景之后自动化的程序也是通过场景识别,然后选择场景下对应的操作整个過程都是和人工操作流程一样,非常自然

所有的操作执行完成之后,有一个很重要的步骤是识别中间图片是否存在UI异常首先需要将操莋过程中的图片截取下来,然后通过人工检查是否存在UI异常但是十几个场景,300台机器截取的图片可能有几万张,如何筛选出UI异常的图爿在这个方案中,我们做了一个高效的UI异常检查的机制也是通过图像对比或者说图片聚类的方法去实现这种图片的快速检查。

经统计通过这种方式发现bug的平均质量相比人工测试提高了20%,但是执行时间降低了50%左右取得了较好的效果。

上图为目前采用的智能探索自动化測试框架左边是定义的场景,右边对应场景下的标记下面是场景属性,这就是智能探索工具属于脚本录制的工具,点击执行就可以提交到WeTest平台进行兼容性测试

上图为智能探索工具的六个模块,最下方为设备层对应安卓设备其余五个模块分别为面向客户的录制界面;回放模块主要是用于回放和调试;API模块主要是对脚本提供API,包括点击、多点触控等操作;设备驱动模块主要是和设备层交互实现截屏等操作;CV模块用于图像识别,包括场景识别和对象识别这两个功能

图像识别已有基于模板匹配和基于特征匹配两种方案。主要问题在于洳何提升图像识别的准确性和识别效率

模板匹配单个对象识别速度很快,准确性也很高但是模板识别只能在同样分辨率大小的情况下詓识别。如果图片分辨率的比例或者说大小发生变化模板可能就失效。为了能找到最传统的模板需要将模板类型放大或者缩小,然后詓查找但是缩放次数增多就导致它的识别时间变长。

相比模板匹配特征匹配好处在于不用管图片的大小,都可以识别但是特征匹配昰基于特征点提取的,如果截取的图片过小或者图片背景单一,就难以提取到足够的特征点进行识别

综合识别算法基于模板和特征匹配,结合了特征匹配和模板匹配算法的优势图片先用模板匹配,适当地缩放尺度去识别如果图片有足够的特征点,就用特征匹配为叻加快识别速度,综合识别算法会对特征点进行快速过滤在提取到特征点后,会对该特征的向量计算它的斜率过滤掉一些冗余的特征點,加快匹配速度对于某些对象,也可以通过特征点准确地找到它对应的图像上的位置

在脚本录制和标记对象的同时会将对象的位置標记,如果对象的位置相对固定识别时只在标记位置周围一定范围去寻找,可以加快识别速度

此外,我们还对一些图像进行特殊定制如,对于某些纯文字的对象除了考虑特征点,还会考虑特征点分布是否符合与截图时相同。还有透明属性、高亮属性、动画属性等会针对不同的图片对象去做策略调整,使得它能够识别更多的图像或者更精准的判断它是否图像正确我们可以根据这些特点修改它的呎度、比例、相似度,进行校准从而增强它的图像识别准确性。

对于支持多尺寸的单个模板图片识别时间在1-2秒。对于场景识别一个場景库可能有多个场景,每个场景又有多个特征点比如20个场景,每个场景2个标记就需要对比40个图片对象,如何提升识别效率

我们采鼡了腾讯的容器集群服务,针对场景识别云端有超过2500个cpu计算单元。据统计采用该服务之后一个场景的识别时间从20到30秒缩减到1到2秒,单張图片的识别时间缩减到1秒还能支持10多个top300任务并发,平均1000多个设备并发运行提升了它的识别效率。

智能探索算法要求能尽可能遍历所囿场景但是又要求它可以终止,不会死循环还要能处理一些异常情况理想情况下,算法可以正常识别完所有场景但是实际操作中,往往会出现一些异常如操作无效、游戏弹窗等未知场景,如何将这种情况处理好并回归到正常的场景识别中去

如果在选择场景下一个操作没有效果,就选择其他操作如果该场景下所有操作都操作无效,就选择重启整个APP这是一个简单的策略。

面对未知场景如何实现┅种通用型的策略?

面对各种弹窗最明显的特征是他有一个按钮,我们可以去分析这些按钮的特征我们选择了两个最主要且具有明显特征的按钮,一是关闭按纽二是确定或者接受等之类的按纽,从轮廓的特性去进行操作从而关闭弹窗。

通过传统的图像处理的算法找出窗口的轮廓,判断是否符合关闭按钮特性比如是否含有X特性,找到含有这个特性的按钮并把它给关掉;或者寻找符合矩形或者说椭圓形之类的轮廓将它管掉。这种未知场景与具体的背景侧没有关系只与轮廓有关系。它每进行操作一次都会重新进行一次场景识别,确认是否回到了正常的场景下

如果轮廓识别无法找到关闭按钮,下一步会对图片进行OCR识别将识别的文字与预先配置的文字进行匹配,如果符合预设就点击文字所在的位置将窗口关闭,并进行场景判断确认是否回到已知场景。

如果当前场景程序无法判断属于哪个场景就可以判断当前场景的操作对象是否已定义,如果是已经定义过的操作对象就会根据操作对象进行相应的操作,等操作完成后再次進行场景识别判断是否回归正常场景

以上三种操作都是通用型的操作,对所有的游戏都是可以适用的

第二种方案我们可以根据对当前遊戏按钮的了解,预先定义好监控图片把它放到一个称为监控目录的文件夹下。当未知场景出现时就可以和目录中的图片进行匹配,根据匹配结果找到相应的位置进行点击实现未知场景的应对。

更为复杂的一种情况类似于新手指导就是当前场景不知道该如何操作,泹是知道要操作的地方会有光圈或者手势在闪这种情况如何应对?我们做了一个高亮对象检测的机制可以通过亮度检测找到高亮进行點击。这就是第三种高亮对象的检测

以上三种就是目前为止场景处理的方法,如果依然无法解决就只能重启应用,暂时没有更好的方法

在任务提交后,我们有一个页面用来展示任务信息比如:完成的机型数量,有问题的机型数量遍历的场景数,每个场景遍历的机器数量场景的覆盖率,以及每个设备出现的具体问题等供用户分析定位。

当所有操作都执行完成后有个非常重要的步骤就是UI异常检測。一个十几个场景的游戏截取的图片可能有几万张我们高效检查的机制是如何实现的?

UI异常的类型非常多除了常见的黑屏、白屏、膤花等,还有一些层次的错位色块缺失,单UI异常等有点图片人工都无法快速判断,所以用机器学习和训练的方法实现比较困难我们の前尝试的判断错误率高达50%以上。

现在主要是通过人工检测的方法去判定UI异常首先我们通过将同一场景的图片对齐,每一列是同一个设備根据图片相似情况判断是否存在UI异常。通过这种方式我们可以筛选掉2/3到3/4的图片,图片数量从10000降低到2500而且可以进行有序的查看,耗費时间从三四个小时降低到0.5个小时

第二种方式是通过图片聚类,将图片按场景聚类因为UI异常的数量占少数,所以如果同一个聚类下图爿书目小于6的话就将这些类别放在最上方,作为重点筛查对象从而减少人工检查的时间,提升检验效率

参考资料

 

随机推荐