CN118057313A - 交互设备的测试方法、装置、设备及可读存储介质 - Google Patents
交互设备的测试方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN118057313A CN118057313A CN202211473174.0A CN202211473174A CN118057313A CN 118057313 A CN118057313 A CN 118057313A CN 202211473174 A CN202211473174 A CN 202211473174A CN 118057313 A CN118057313 A CN 118057313A
- Authority
- CN
- China
- Prior art keywords
- operation state
- data
- state machine
- test
- states
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 339
- 230000002452 interceptive effect Effects 0.000 title claims abstract description 164
- 238000012795 verification Methods 0.000 claims abstract description 164
- 230000003993 interaction Effects 0.000 claims abstract description 67
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000008859 change Effects 0.000 claims description 34
- 238000003825 pressing Methods 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 19
- 230000015654 memory Effects 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 12
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 238000010998 test method Methods 0.000 claims description 5
- 230000003190 augmentative effect Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 15
- 238000007726 management method Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 7
- 230000033001 locomotion Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004091 panning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种交互设备的测试方法、装置、设备及可读存储介质,属于扩展现实技术领域。方法包括:对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,操作状态机是配置有多种操作状态的虚拟设备,任一种操作状态反应针对交互设备所执行的操作的状态;获取各个操作状态机的验证模板;对于任一个操作状态机,基于任一个操作状态机的验证模板对任一个操作状态机的测试数据进行验证,得到任一个操作状态机的验证结果;基于至少一个操作状态机的验证结果,生成交互设备的测试报告。通过对交互设备进行自动化测试,降低测试所需的时间,提高了测试结果的准确性,测试效率更高。
Description
技术领域
本申请实施例涉及扩展现实技术领域,特别涉及一种交互设备的测试方法、装置、设备及可读存储介质。
背景技术
在扩展现实(Extended Reality,XR)技术领域中,交互设备指的是与视觉显示设备进行交互的设备。对象通过对交互设备进行操作来控制视觉显示设备显示对应的内容。一般情况下,需要对交互设备进行测试,以保证交互设备的功能齐全。
相关技术中,交互设备的测试是手工进行的,也就是说,测试对象在使用交互设备的过程中,自行感知交互设备的基本功能是否可用,从而得到交互设备的测试结果。这种测试方式依赖于测试对象的主观感受,准确度较低。
发明内容
本申请提供了一种交互设备的测试方法、装置、设备及可读存储介质,可用于解决相关技术中的问题,所述技术方案包括如下内容。
一方面,提供了一种交互设备的测试方法,所述方法包括:
对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,所述操作状态机是配置有多种操作状态的虚拟设备,任一种操作状态反应针对交互设备所执行的操作的状态;
获取所述各个操作状态机的验证模板;
对于任一个操作状态机,基于所述任一个操作状态机的验证模板对所述任一个操作状态机的测试数据进行验证,得到所述任一个操作状态机的验证结果;
基于所述至少一个操作状态机的验证结果,生成所述交互设备的测试报告。
另一方面,提供了一种交互设备的测试装置,所述装置包括:
测试模块,用于对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,所述操作状态机是配置有多种操作状态的虚拟设备,任一种操作状态反应针对交互设备所执行的操作的状态;
获取模块,用于获取所述各个操作状态机的验证模板;
验证模块,用于对于任一个操作状态机,基于所述任一个操作状态机的验证模板对所述任一个操作状态机的测试数据进行验证,得到所述任一个操作状态机的验证结果;
生成模块,用于基于所述至少一个操作状态机的验证结果,生成所述交互设备的测试报告。
在一种可能的实现方式中,所述测试模块,用于对于所述交互设备支持的任一个操作状态机,响应于针对所述交互设备进行操作,确定所述任一个操作状态机的操作状态为与所述操作相关的相关操作状态;获取所述相关操作状态的测试数据;将所述相关操作状态的测试数据,确定为所述任一个操作状态机的测试数据。
在一种可能的实现方式中,所述任一个操作状态机对应的多个操作状态包括初始化操作状态、结束操作状态和至少一个目标操作状态,任一个目标操作状态是除所述初始化操作状态和所述结束操作状态之外的操作状态;
当所述相关操作状态为初始化操作状态,所述相关操作状态的测试数据为初始化数据;
当所述相关操作状态为结束操作状态,所述相关操作状态的测试数据为结束数据;
当所述相关操作状态为任一个目标操作状态,所述相关操作状态的测试数据为目标数据。
在一种可能的实现方式中,所述交互设备支持至少一种操作类型,任一个操作状态机与所述交互设备支持的任一种操作类型相关,所述任一种操作类型包括按键类型、摇杆类型、抓握类型、触摸类型和位姿类型中的任一项;
若所述任一个操作状态机与所述按键类型、所述位姿类型、所述抓握类型和所述触摸类型中的任一项相关,则所述任一个目标操作状态为摁下按键的状态,所述目标数据为摁下按键的数据,或者,所述任一个目标操作状态为放开按键的状态,所述目标数据为放开按键的数据;
若所述任一个操作状态机与所述摇杆类型、所述位姿类型和所述触摸类型中的任一项相关,则所述任一个目标操作状态为移动至目标方向的状态,所述目标数据为移动至所述目标方向的数据,所述目标方向包括前方、后方、左方和右方的任一项;
若所述任一个操作状态机与所述抓握类型相关,则所述任一个目标操作状态为力度改变的状态,所述目标数据为所述力度改变的数据,所述力度改变包括增大力度和减少力度中的任一项。
在一种可能的实现方式中,所述任一个操作状态机的测试数据包括多个操作状态的测试数据;
所述验证模块,用于对于任一个操作状态的测试数据,从所述任一个操作状态机的验证模板中提取所述任一个操作状态的验证通过条件;基于所述任一个操作状态的测试数据和所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果;基于所述多个操作状态的验证结果,确定所述任一个操作状态机的验证结果。
在一种可能的实现方式中,所述任一个操作状态的测试数据包括第一日志数据和第二日志数据,所述第一日志数据是所述任一个操作状态机的操作状态改变为所述任一个操作状态之前的日志数据,所述第二日志数据是所述任一个操作状态机的操作状态改变为所述任一个操作状态之后的日志数据;
所述验证模块,用于对比所述第一日志数据包括的各个数据项和所述第二日志数据包括的各个数据项,从所述各个数据项中确定第一数据项,所述第一数据包括的第一数据项和所述第二数据包括的第一数据项的值不同;响应于所述第一数据项满足所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果为成功。
在一种可能的实现方式中,所述任一个操作状态的测试数据包括第三日志数据和第四日志数据,所述第三日志数据和所述第四日志数据是所述任一个操作状态机的操作状态改变为所述任一个操作状态之后的不同日志数据;
所述验证模块,用于对比所述第三日志数据包括的各个数据项和所述第四日志数据包括的各个数据项,从所述各个数据项中确定第二数据项和第三数据项,所述第三日志数据包括的第二数据项和所述第四日志数据包括的第二数据项的值不同,所述第三日志数据包括的第三数据项和所述第四日志数据包括的第三数据项的值相同;响应于所述第二数据项和所述第三数据项满足所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果为成功。
在一种可能的实现方式中,所述装置还包括:
配置模块,用于配置测试环境,所述测试环境是适合测试程序运行的环境;
所述测试模块,用于通过所述测试程序在所述测试环境中对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据。
在一种可能的实现方式中,所述配置模块,用于配置初始化环境,所述初始化环境是操作系统和所述测试程序交互的环境,所述操作系统是用于运行所述测试程序的系统;创建测试线程,所述测试线程用于对所述任一个操作状态机进行测试;创建针对所述交互设备进行的操作与所述操作状态机对应的操作状态之间的映射关系。
另一方面,提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以使所述电子设备实现上述任一所述的交互设备的测试方法。
另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以使电子设备实现上述任一所述的交互设备的测试方法。
另一方面,还提供了一种计算机程序或计算机程序产品,所述计算机程序或计算机程序产品中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以使电子设备实现上述任一种交互设备的测试方法。
本申请提供的技术方案至少带来如下有益效果:
本申请提供的技术方案通过对交互设备支持的至少一个操作状态机进行测试、对各个操作状态机的测试数据验证,并基于各个操作状态机的验证结果,生成交互设备的测试报告,实现了对交互设备进行自动化测试。与依赖测试对象的主观感受相比,对交互设备进行自动化测试所需的时间较少,测试结果的准确性较高,测试效率更高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种交互设备的测试方法的实施环境示意图;
图2是本申请实施例提供的一种交互设备的测试方法的流程图;
图3是本申请实施例提供的一种交互设备的测试系统的框架图;
图4是本申请实施例提供的一种交互设备的测试流程图;
图5是本申请实施例提供的一种交互设备的测试装置的结构示意图;
图6是本申请实施例提供的一种终端设备的结构示意图;
图7是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面先对本申请实施例涉及的技术用语进行解释和说明。
本申请实施例提供的技术方案适用于扩展现实(Extended Reality,XR)、增强现实(Augmented Reality,AR)、虚拟现实(Virtual Reality,VR)、混合现实(Mixed Reality,MR)等任一个技术领域。
XR是指通过计算机将真实与虚拟相结合,打造一个可人机交互的虚拟环境。XR包括AR、VR、MR现实等多种技术。通过将多种技术融合,为体验者带来虚拟世界与现实世界之间无缝转换的“沉浸感”。
AR是一种将虚拟信息与真实世界巧妙融合的技术,通过运用多媒体、三维建模、智能交互、传感等多种技术手段,将计算机生成的文字、图像、三维模型、音乐、视频等虚拟信息模拟仿真后,应用到真实世界中,实现虚拟信息和真实世界的信息互补,从而实现对真实世界的“增强”。
VR是以计算机技术为主,利用并综合三维图形技术、多媒体技术、仿真技术、显示技术、伺服技术等多种高科技发展成果,借助计算机等设备产生一个逼真的三维视觉、触觉、嗅觉等多种感官体验的虚拟世界,从而使处于虚拟世界中的对象产生一种身临其境的感觉。
MR是VR技术的进一步发展,通过在现实场景呈现虚拟场景信息,在现实世界、虚拟世界和对象之间搭起一个交互反馈的信息回路,以增强对象体验的真实感。
通常情况下,对象可以佩戴眼镜、眼罩、头盔等头戴式显示设备,通过对手柄、手环、指环等交互设备进行操作,实现控制头戴式显示设备显示与操作相关的内容,从而实现XR、AR、VR、MR等不同效果。通过头戴式显示设备和交互设备可以提高对象在观影、游戏等多个场景的体验。
以游戏场景为例。对象佩戴头戴式显示设备在客厅玩游戏时,通过头戴式显示设备在客厅的基础上融入与游戏场景相关的虚拟元素,例如,在客厅的基础上融入虚拟怪物、虚拟道具等虚拟元素,形成游戏地图。对象通过对交互设备进行操作,可以实现控制头戴式显示设备显示对象操纵虚拟道具淘汰虚拟怪物的内容,给对象提供一种在现实世界淘汰虚拟怪物的感受,从而提高了游戏体验。
下面将结合附图对本申请实施方式作进一步地详细描述。图1是本申请实施例提供的一种交互设备的测试方法的实施环境示意图,如图1所示,该实施环境包括终端设备101和服务器102。其中,本申请实施例中的交互设备的测试方法可以由终端设备101执行,也可以由服务器102执行,或者由终端设备101和服务器102共同执行。
终端设备101可以是智能手机、游戏主机、台式计算机、平板电脑、膝上型便携计算机、智能电视、智能车载设备、智能语音交互设备、智能家电等,终端设备101还可以是XR、AR、VR、MR等领域的交互设备、头戴式显示设备等。服务器102可以为一台服务器,或者为多台服务器组成的服务器集群,或者为云计算平台和虚拟化中心中的任意一种,本申请实施例对此不加以限定。服务器102可以与终端设备101通过有线网络或无线网络进行通信连接。服务器102可以具有数据处理、数据存储以及数据收发等功能,在本申请实施例中不加以限定。终端设备101和服务器102的数量不受限制,可以是一个或多个。
在扩展现实技术领域中,对象可以通过对交互设备进行操作来控制与交互设备进行交互的视觉显示设备显示对应的内容。一般情况下,需要对交互设备进行测试,以保证交互设备的功能齐全。
相关技术中,交互设备的测试是手工进行的。测试对象在使用交互设备的过程中,自行感知交互设备的基本功能是否可用,从而得到交互设备的测试结果。这种测试方式依赖于测试对象的主观感受,准确度较低。
本申请实施例提供了一种交互设备的测试方法,该方法可应用于上述实施环境中,可以提高交互设备测试结果的准确性。以图2所示的本申请实施例提供的一种交互设备的测试方法的流程图为例,为便于描述,将执行本申请实施例中的交互设备的测试方法的终端设备101或者服务器102称为电子设备,该方法可以由电子设备来执行。如图2所示,该方法包括如下步骤。
步骤201,对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据。
其中,操作状态机是一种配置有多种操作状态的虚拟设备,任一种操作状态可以反应对象针对操作状态机所执行的操作的状态。在本申请实施例中,配置了多个操作状态机,操作状态机的数量是有限的。
本申请实施例将待测试的交互设备虚拟成至少一个操作状态机,该待测试的交互设备支持至少一个操作状态机,也即,交互设备可以虚拟成至少一个操作状态机,因此,针对操作状态机所执行的操作,也就是针对交互设备所执行的操作。对于待测试的交互设备支持的任一个操作状态机,可以对该操作状态机进行测试,得到该操作状态机的测试数据。
在实现方式A1中,步骤201之前还包括:配置测试环境,测试环境是适合测试程序运行的环境。
这种情况下,步骤201包括:通过测试程序在测试环境中对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据。
测试程序是一种用于测试操作状态机的程序,本申请实施例不对测试程序做限定。电子设备需要配置适合测试程序运行的环境,该环境称为测试环境。通过配置测试环境,使得电子设备可以在测试环境中运行测试程序,并基于测试程序对交互设备支持的各个操作状态机进行测试。
可选地,电子设备可以获取承载测试程序的应用程序包,该应用程序包是任意的操作系统的应用程序包,例如,该应用程序包是安卓操作系统的应用程序包、微软视图操作系统的应用程序包等中的任一种,其中,安卓操作系统的应用程序包可以简称为安卓应用程序包(Android Application Package,APK)。
接着,电子设备基于应用程序包配置测试环境,以在测试环境中运行测试程序。
可选地,配置测试环境,包括:配置初始化环境,初始化环境是操作系统和测试程序交互的环境,操作系统是用于运行测试程序的系统;创建测试线程,测试线程用于对任一个操作状态机进行测试;创建针对交互设备进行的操作与操作状态机对应的操作状态之间的映射关系。
本申请实施例中,初始化环境是操作系统和测试程序交互的环境。在配置初始化环境时,可以获取初始化函数的指针,通过该指针获取测试程序的上下文,该上下文即为初始化环境,可以将该上下文传递到初始化函数中,完成初始化环境的配置。
可选地,本申请实施例中的初始化函数为xrInitializeLoaderKHR函数,该函数的指针可以获取vm对象、clazz对象等对象,vm对象用于提供有关虚拟机的信息,clazz对象用于提供操作系统的信息。vm对象、clazz对象等对象主要用于提供测试程序的上下文,通过将vm对象、clazz对象等对象传递到xrInitializeLoaderKHR函数,完成初始化环境的配置。
运行测试程序相当于开启事件循环。事件循环开启后,电子设备需要创建测试线程,测试线程用于对交互设备支持的各个操作状态机进行测试、对各个操作状态机的测试数据进行验证、以及生成交互设备的测试报告。也就是说,测试线程参与对交互设备进行测试的整个测试过程。可选地,测试线程为与测试框架相关的线程,该测试框架可以为Catch2。通过测试线程,可以控制测试用例的生命周期。
其中,一个测试用例是用于对一个操作状态机进行测试的用例。可以为每一个测试用例配置该测试用力对应的操作状态机的验证模板,以基于该操作状态机的验证模板对该操作状态机的测试数据进行验证,得到该操作状态机的验证结果。
此外,一个测试用例对应一个标签。测试用例的标签用于标明该测试用例所对应的操作状态机。可以通过形参来选择测试用例的标签,并控制测试用例的执行。
电子设备可以获取交互配置文件,交互配置文件记载了操作集和操作映射关系。操作集包括对交互设备进行的各个操作,操作映射关系包括任一个操作和操作状态机对应的操作状态之间的映射关系。通过创建针对交互设备进行的操作与操作状态机对应的操作状态之间的映射关系,电子设备可以将针对交互设备进行的触摸(Touch)、点击(Click)等操作映射为运行时刻(Runtime)内部的动作(Action),也就是将操作映射为操作状态机内部的操作状态,以便于后续获取。
可以理解的是,除了配置初始化环境、创建测试线程以及创建针对交互设备进行的操作与操作状态机对应的操作状态之间的映射关系之外,配置测试环境还包括创建实例、开启扩展、创建会话、开启帧循环机制等。
其中,创建实例是根据环境变量来获取操作系统的环境,基于操作系统的环境创建实例(Instance),该实例用于和操作系统进行交互。可选地,可以通过图形应用程序接口(例如,OpengGLES)引擎来根据环境变量获取操作系统的环境。该操作系统可以为安卓操作系统。
在运行测试程序时,测试程序可能会调用其他方法,此时,需要开启扩展。例如,测试程序可能会调用OpenXR的标准方法,OpenXR是一种XR的标准,可以基于OpenXR开发系统,得到OpenXR Runtime。
创建会话主要是基于实例来创建会话(Session)。开启帧循环机制相当于不断地刷新针对交互设备进行操作的操作值,是扩展现实领域的一个必备技术。通过帧循环机制,不断的刷新操作值,使得视觉显示设备可以实时更新所显示的图像。
当配置完测试环境时,可以在测试环境中运行测试程序,并查看测试程序运动时的日志信息,可选地,运行测试程序时,可以每隔设定时长生成一条日志。例如,在未激活交互设备的前提下,在测试环境中运行测试程序时,生成的一条日志如下所示:
2022-09-16 15:11:08.458 5019-5055/com.khronos.openxr.cts V/OpenXR_Conformance:currentState:0; changedSinceLastSync:0;lastChangeTime:0;isActive:0
其中,“2022-09-16 15:11:08.458”表征日志的生成时间,“com.khronos.openxr.cts”表征承载测试程序的应用程序包的包名,“OpenXR_Conformance”表征测试程序的名称,“currentState”表征操作状态机对应的操作状态,“changedSinceLastSync”表征与上一条日志相比,操作状态机对应的操作状态是否发生改变,“Last Change Time”表征最近一次操作状态机对应的操作状态发生改变时的时间,“isActive”表征操作状态机是否被激活。
“isActive:0”表征操作状态机未被激活,也就是交互设备未被激活。由于日志可以每隔设定时长生成,因此,当未激活交互设备且在测试环境中运行测试程序时,生成的各个日志仅存在日志的生成时间上的区别。
在实现方式A2中,步骤201包括步骤2011至步骤2013。
步骤2011,对于交互设备支持的任一个操作状态机,响应于针对交互设备进行操作,确定任一个操作状态机的操作状态为任一个操作状态机对应的多个操作状态中与操作相关的相关操作状态。
本申请实施例中,任一个操作状态机对应多个操作状态,任一个操作状态可以反应对象针对交互设备所执行的操作。当对象针对交互设备进行操作时,电子设备可以从任一个操作状态机对应的多个操作状态中选择与该操作相关的操作状态,将该操作状态确定为相关操作状态。
本申请实施例不对操作的方式做限定。示例性地,对象针对交互设备进行的操作包括但不限于拿起交互设备、摁下交互设备的开机键、将交互设备上的摇杆摇向任意方向等。每针对交互设备进行一个操作,电子设备上的测试程序可以基于针对交互设备进行的操作与操作状态机对应的操作状态之间的映射关系,确定出该操作对应的相关操作状态。
步骤2012,获取相关操作状态的测试数据。
在测试程序运行的过程中,每隔设定时长,生成一条日志,该日志记录了测试程序的相关信息。其中,测试程序的相关信息包括该日志的生成时间、应用程序包的包名、测试程序的名称、操作状态机对应的操作状态(Current State)、与上一条日志相比,操作状态机对应的操作状态是否发生改变(Changed Since Last Sync)、最近一次操作状态机对应的操作状态发生改变时的时间(Last Change Time)、操作状态机是否被激活(Is Active)等数据项。
可选地,任一个操作状态机对应的多个操作状态包括初始化操作状态、结束操作状态和至少一个目标操作状态,任一个目标操作状态是除初始化操作状态和结束操作状态之外的操作状态。实现方式B1至B3分别对这三种操作状态进行了说明。
实现方式B1,当相关操作状态为初始化操作状态,相关操作状态的测试数据为初始化数据。
当检测到对交互设备进行初始化操作,从任一个操作状态机对应的多个操作状态中确定与初始化操作相关的相关操作状态为初始化操作状态,从日志中获取初始化操作状态的测试数据,也就是获取初始化数据。
本申请实施例不对初始化操作做限定,示例性地,初始化操作为拿起交互设备的操作,或者,初始化操作为摁下交互设备的开机键。任两个操作状态机对应的初始化操作可以相同,也可以不同。
可选地,初始化数据包括至少一条日志,此时,初始化数据包括初始化数据的生成时间、测试程序的名称、操作状态机对应的操作状态(Current State)、与上一条日志相比,操作状态机对应的操作状态是否发生改变(Changed Since Last Sync)、最近一次操作状态机对应的操作状态发生改变时的时间(Last Change Time)、操作状态机是否被激活(IsActive)等数据项。例如,初始化数据如下所示:
2022-09-16 15:13:54.728 6018-6143/com.khronos.openxr.cts V/OpenXR_Conformance:currentState:0; changedSinceLastSync:0;lastChangeTime:402798252553;isActive:1
其中,“isActive:1”表征激活交互设备,也就是说,交互设备支持的操作状态机被激活。由于日志可以每隔设定时长生成,因此,当激活交互设备且交互设备支持的操作状态机对应的操作状态未发生改变时,在测试环境中运行测试程序的过程中,生成的各个日志仅存在日志的生成时间、“lastChangeTime”上的区别。
可选地,初始化数据也可以包括从日志中提取的信息,例如,初始化数据包括Current State、Changed Since Last Sync、Last Change Time和Is Active等数据项。
可选地,初始化数据如下表1所示。
表1
实现方式B2,当相关操作状态为结束操作状态,相关操作状态的测试数据为结束数据。
当检测到对交互设备进行结束操作,从任一个操作状态机对应的多个操作状态中确定与结束操作相关的相关操作状态为结束操作状态,从日志中获取结束操作状态的测试数据,也就是获取结束数据。
本申请实施例不对结束操作做限定,示例性地,结束操作为放下交互设备的操作,或者,结束操作为在设定时间内未对交互设备进行任何操作。任两个操作状态机对应的结束操作可以相同,也可以不同。
结束数据可以包括至少一条日志,此时,结束数据包括结束数据的生成时间、应用程序包的包名、测试程序的名称、Current State、Changed Since Last Sync、Last ChangeTime、Is Active等数据项。结束数据也可以包括从日志中提取的信息,例如,结束数据包括Current State、Changed Since Last Sync、Last Change Time和Is Active等数据项。
可选地,结束数据如下表2所示。
表2
实现方式B3,当相关操作状态为任一个目标操作状态,相关操作状态的测试数据为目标数据。
当检测到对交互设备进行除初始化操作和结束操作之外的目标操作时,从任一个操作状态机对应的多个操作状态中确定与目标操作相关的相关操作状态为目标操作状态,从日志中获取目标操作状态的测试数据,也就是获取目标数据。目标数据可以包括至少一条日志,也可以包括从日志中提取的信息。
可选地,交互设备支持至少一种操作类型,任一个操作状态机与交互设备支持的任一种操作类型相关,任一种操作类型包括按键类型、摇杆类型、抓握类型、触摸类型和位姿类型中的任一项。
当交互设备支持的操作类型包括按键类型时,与按键类型相关的操作状态机可以记为布尔(Bool)类操作状态机。Bool类操作状态机的操作值用于描述操作状态,操作值包括第一数值和第二数值中的任一项。当Bool类操作状态机的操作值为第一数值时,说明交互设备的按键为摁下按键的状态;当Bool类操作状态机的操作值为第二数值时,说明交互设备的按键为放开按键的状态。本申请实施例不对第一数值和第二数值做限定,示例性地,第一数值为1,第二数值为0。
当交互设备支持的操作类型包括摇杆类型时,与摇杆类型相关的操作状态机可以记为数组(Vector)类操作状态机。可选地,Vector类操作状态机的操作值为一个数组,该数组包括两个数据,其中一个数据表征横轴,另一个数据表征纵轴,这两个数据均可以为浮点(Float)数,这种情况下,Vector类操作状态机可以称为Vector 2F类操作状态机。
当交互设备支持的操作类型包括抓握类型时,与抓握类型相关的操作状态机可以记为浮点(Float)类操作状态机。可选地,Float类操作状态机的操作值为浮点数,该浮点数用于表征抓握交互设备的力度。
当交互设备支持的操作类型包括位姿类型时,与位姿类型相关的操作状态机可以记为位姿(Pose)类操作状态机。可选地,Pose类操作状态机可以将任意的位姿映射为对应的操作值,该操作值也叫位姿数据。不同的位姿对应不同的数据。例如,手持交互设备并伸直胳膊对应的位姿数据和手持交互设备弯曲胳膊对应的位姿数据不同。
当交互设备支持的操作类型包括触摸类型时,与触摸类型相关的操作状态机可以记为光学手指导航(Optical Finger Navigation,OFN)类操作状态机。可选地,OFN类操作状态机的操作值包括第一触摸数据和第二触摸数据。当第一触摸数据为第一数值时,说明OFN类操作状态机的操作状态为摁下按键的状态;当第一触摸数据为第二数值时,说明OFN类操作状态机的操作状态为放开按键的状态,因此,第一触摸数据表征OFN类操作状态机的操作状态为摁下按键的状态或者放开按键的状态。第二触摸数据包括表征横轴的数据和表征纵轴的数据,通过第二触摸数据可以确定对象在交互设备上的触摸位置。
在实现方式B31中,若任一个操作状态机与按键类型、位姿类型、抓握类型和触摸类型中的任一项相关,则任一个目标操作状态为摁下按键的状态,目标数据为摁下按键的数据,或者,任一个目标操作状态为放开按键的状态,目标数据为放开按键的数据。
当操作状态机与按键类型相关时,操作状态机为Bool类操作状态机。当操作状态机与位姿类型相关时,操作状态机为Pose类操作状态机。当操作状态机与抓握类型相关时,操作状态机为Float类操作状态机。当操作状态机与触摸类型相关时,操作状态机为OFN类操作状态机。Bool类操作状态机、Pose类操作状态机、Float类操作状态机、OFN类操作状态机,这四类操作状态机的操作状态均包括摁下按键的状态和放开按键的状态。
当确定目标操作状态为摁下按键的状态时,操作值为第一数值,此时,目标数据为摁下按键的数据。本申请实施例不对第一数值做限定,示例性地,第一数值为1。其中,摁下按键的数据包括操作值。
可选地,摁下按键的数据还包括至少一条日志,此时,摁下按键的数据包括摁下按键的数据的生成时间、测试程序的名称、操作状态机对应的操作状态(Current State)、与上一条日志相比,操作状态机对应的操作状态是否发生改变(Changed Since Last Sync)、最近一次操作状态机对应的操作状态发生改变时的时间(Last Change Time)、操作状态机是否被激活(Is Active)等数据项例如,摁下按键的数据如下所示:
2022-09-16 15:15:39.821 6018-6143/com.khronos.openxr.cts V/OpenXR_Conformance:currentState:1 ; changedSinceLastSync:0;lastChangeTime:507890339388;isActive:1
其中,“isActive:1”表征激活交互设备,也就是说,交互设备支持的操作状态机被激活。由于日志可以每隔设定时长生成,因此,当激活交互设备且交互设备支持的操作状态机对应的操作状态处于摁下按键的状态时,在测试环境中运行测试程序的过程中,生成的各个日志仅存在日志的生成时间、“lastChangeTime”上的区别。
可选地,摁下按键的数据也可以包括从日志中提取的信息,例如,摁下按键的数据包括Current State、Changed Since Last Sync、Last Change Time和Is Active等数据项。
可选地,摁下按键的数据如下表3所示。
表3
当确定目标操作状态为放开按键的状态时,操作值为第二数值,此时,目标数据为放开按键的数据。本申请实施例不对第二数值做限定,示例性地,第二数值为0。其中,放开按键的数据包括操作值。可选地,放开按键的数据还包括至少一条日志,或者包括从日志中提取的信息。
可选地,放开按键的数据如下表4所示。
表4
在实现方式B32中,若任一个操作状态机与摇杆类型、位姿类型和触摸类型中的任一项相关,则任一个目标操作状态为移动至目标方向的状态,目标数据为移动至目标方向的数据,目标方向包括前方、后方、左方和右方的任一项。
当操作状态机与摇杆类型相关时,操作状态机为Vector类操作状态机(比如,操作状态机为Vector 2F类操作状态机)。Vector类操作状态机的操作状态包括移动至目标方向的状态。由于交互设备支持的操作类型为摇杆类型,因此,此处的移动至目标方向指的是将摇杆移动至目标方向。
可选地,将摇杆的中心点作为二维直角坐标系的原点。二维直角坐标系包括横轴(即x轴)和纵轴(即y轴)。横轴正方向为左方,横轴负方向为右向,纵轴正向方为前方,纵轴负向方为后方。可以将摇杆移动至前方、后方、左方、右方中的任一个方向,因此,目标方向包括前方、后方、左方和右方的任一项。
当确定目标操作状态为移动至目标方向的状态时,操作值包括表征横轴的数据和表征纵轴的数据。此时,目标数据为移动至目标方向的数据。可选地,移动至目标方向的数据包括操作值、Current State、Changed Since Last Sync、Last Change Time和IsActive。
当操作状态机与位姿类型相关时,操作状态机为Pose类操作状态机。Pose类操作状态机的操作状态也包括移动至目标方向的状态。由于交互设备支持的操作类型为位姿类型,因此,此处的移动至目标方向指的是将交互设备移动至目标方向。
可选地,将交互设备当前的空间位置作为二维直角坐标系的原点。二维直角坐标系包括横轴(即x轴)和纵轴(即y轴)。横轴正方向为左方,横轴负方向为右向,纵轴正向方为前方,纵轴负向方为后方。可以将交互设备移动至前方、后方、左方、右方中的任一个方向,因此,目标方向包括前方、后方、左方和右方的任一项。
当确定目标操作状态为移动至目标方向的状态时,操作值包括位姿数据。可选地,移动至目标方向的数据包括操作值(也就是位姿数据)、Current State、Changed SinceLast Sync、Last Change Time和Is Active。
当操作状态机与触摸类型相关时,操作状态机为OFN类操作状态机。OFN类操作状态机的操作状态也包括移动至目标方向的状态。由于交互设备支持的操作类型为触摸类型,因此,此处的移动至目标方向指的是将触摸交互设备的物体(例如,手指、触控笔等)移动至目标方向。
可选地,交互设备包括触摸设备,该触摸设备可以为触摸屏、触摸板等任意支持触摸操作的设备。触摸设备对应一个二维直角坐标系,该二维直角坐标系包括横轴(即x轴)和纵轴(即y轴)。横轴正方向为左方,横轴负方向为右向,纵轴正向方为前方,纵轴负向方为后方。可以将触摸交互设备的物体移动至前方、后方、左方、右方中的任一个方向,因此,目标方向包括前方、后方、左方和右方的任一项。
当确定目标操作状态为移动至目标方向的状态时,操作值包括第一触摸数据和第二触摸数据。可选地,移动至目标方向的数据包括操作值(也就是第一触摸数据和第二触摸数据)、Current State、Changed Since Last Sync、Last Change Time和Is Active。
可以理解的是,目标方向可以为任意的方向,包括但不限于前方、后方、左方和右方的任一项。例如,目标方向还可以为左前方、右后方等。
在实现方式B33中,若任一个操作状态机与抓握类型相关,则任一个目标操作状态为力度改变的状态,目标数据为力度改变的数据,力度改变包括增大力度和减少力度中的任一项。
当操作状态机与抓握类型相关时,操作状态机为Float类操作状态机。Float类操作状态机的操作状态包括力度改变的状态。其中,当抓握交互设备的力度逐渐增大时,Float类操作状态机的操作状态为增大力度的状态;当抓握交互设备的力度逐渐减小时,Float类操作状态机的操作状态为减小力度的状态。
当确定目标操作状态为力度改变的状态时,操作值包括力度数据,力度数据用于表征抓握交互设备的力度。可选地,力度改变的数据包括操作值(也就是力度数据)、Current State、Changed Since Last Sync、Last Change Time和Is Active。
综合步骤2011至步骤2012,至少可以得出如下信息:
Bool类操作状态机对应四个操作状态,分别为初始化操作状态、摁下按键的状态、放开按键的状态和结束操作状态,可选地,初始化操作状态、摁下按键的状态、放开按键的状态为有效状态。对Bool类操作状态机进行测试时,可以对交互设备依次执行初始化操作、放开按键的操作、摁下按键的操作、摁下按键的操作、放开按键的操作、结束操作,以使Bool类操作状态机对应的测试用例可以执行一个轮回。
Vector类操作状态机对应六个操作状态,分别为初始化操作状态、移动至前方的状态、移动至后方的状态、移动至左方的状态、移动至右方的状态和结束操作状态。对Vector类操作状态机进行测试时,可以从交互设备的摇杆位于中心时开始,对交互设备依次执行初始化操作、移动至左方的操作、移动至前方的操作、移动至右方的操作、移动至后方的操作、移动至中心的操作(对应于结束操作),以使Vector类操作状态机对应的测试用例可以执行一个轮回。
Float类操作状态机对应六个操作状态,分别为初始化操作状态、摁下按键的状态、放开按键的状态、增大力度的状态、减少力度的状态和结束操作状态。对Float类操作状态机进行测试时,可以对交互设备依次执行初始化操作、减少力度的操作、放开按键的操作、增大力度的操作、摁下按键的操作、摁下按键的操作、放开按键的操作、结束操作,以使Float类操作状态机对应的测试用例可以执行一个轮回。
Pose类操作状态机和OFN类操作状态机均对应八个操作状态,分别为初始化操作状态、摁下按键的状态、放开按键的状态、移动至前方的状态、移动至后方的状态、移动至左方的状态、移动至右方的状态和结束操作状态。对Pose类操作状态机或者OFN类操作状态机进行测试时,可以对交互设备依次执行初始化操作、放开按键的操作、移动至前方的操作、移动至右方的操作、移动至后方的操作、移动至左方的操作、放开按键的操作、结束操作,以使Pose类操作状态机或者OFN类操作状态机对应的测试用例可以执行一个轮回。
可选地,测试程序包括触发器和记录器。触发器用于响应于针对交互设备进行操作,确定任一个操作状态机的操作状态为与操作相关的相关操作状态。记录器用于获取相关操作状态的测试数据,并将相关操作状态的测试数据存储在内存中。
步骤2013,将相关操作状态的测试数据,确定为任一个操作状态机的测试数据。
相关操作状态的测试数据为任一个操作状态机对应的一个操作状态的测试数据。其中,任一个操作状态的测试数据包括至少一个日志数据,例如,操作状态的测试数据包括下文提及的第一日志数据、第二日志数据、第三日志数据和第四日志数据,各日志数据在下文有对应描述,在此暂不赘述。任一个日志数据可以是一条日志,也可以是从日志中提取的信息。可以理解的是,按照步骤2011至步骤2013的方式,可以获取任一个操作状态机对应的各个操作状态的测试数据,将任一个操作状态机对应的各个操作状态的测试数据确定为任一个操作状态机的测试数据。
步骤202,获取各个操作状态机的验证模板。
基于有限操作状态机的设计,可以提前初始化任一个操作状态机的验证内容,得到该操作状态机的验证模板。可选地,任一个操作状态机的验证模板包括该操作状态机对应的各个操作状态的验证通过条件。
步骤203,对于任一个操作状态机,基于任一个操作状态机的验证模板对任一个操作状态机的测试数据进行验证,得到任一个操作状态机的验证结果。
每一个操作状态机对应一个验证模板。当完成对任一个操作状态机的测试并得到该操作状态机的测试数据时,可以将该操作状态机的测试数据和该操作状态机的验证模板输入验证器中,由验证器验证该操作状态机的测试数据是否符合该操作状态机的验证模板,从而得到该操作状态机的验证结果。其中,当操作状态机的测试数据符合该操作状态机的验证模板时,该操作状态机的验证结果为成功;当操作状态机的测试数据不符合该操作状态机的验证模板时,该操作状态机的验证结果为不成功。
在一种可能的实现方式中,任一个操作状态机的测试数据包括多个操作状态的测试数据。
上文已提及,任一个操作状态机支持多个操作状态,在对任一个操作状态机进行测试时,需要获取该操作状态机支持的各个操作状态的测试数据,得到该操作状态机的测试数据。
例如,Bool类操作状态机支持初始化操作状态、摁下按键的状态、放开按键的状态和结束操作状态。在对Bool类操作状态机进行测试的过程中,可以获取初始化数据、摁下按键的数据、放开按键的数据和结束数据。
本申请实施例中,步骤203包括步骤2031至步骤2033。
步骤2031,对于任一个操作状态的测试数据,从任一个操作状态机的验证模板中提取任一个操作状态的验证通过条件。
任一个操作状态机的验证模板中包括该操作状态机支持的各个操作状态的验证通过条件。当需要对操作状态机支持的任一个操作状态的测试数据进行验证时,需要从该操作状态机的验证模板中提取该操作状态的验证通过条件。
例如,对Bool类操作状态机的初始化数据进行验证时,需要从Bool类操作状态机的验证模板中提取初始化状态的验证通过条件;对Bool类操作状态机的摁下按键的数据进行验证时,需要从Bool类操作状态机的验证模板中提取摁下按键的状态的验证通过条件,以此类推。
步骤2032,基于任一个操作状态的测试数据和任一个操作状态的验证通过条件,确定任一个操作状态的验证结果。
通过验证器,可以验证任一个操作状态的测试数据是否符合该操作状态的验证通过条件,从而得到该操作状态的验证结果。其中,当操作状态的测试数据符合该操作状态的验证通过条件时,该操作状态的验证结果为成功;当操作状态的测试数据不符合该操作状态的验证通过条件时,该操作状态的验证结果为不成功。
在实现方式C1中,任一个操作状态的测试数据包括第一日志数据和第二日志数据,第一日志数据是任一个操作状态机的操作状态改变为任一个操作状态之前的日志数据,第二日志数据是任一个操作状态机的操作状态改变为任一个操作状态之后的日志数据。
以操作状态机的操作状态改变为任一个操作状态的瞬间为基准时间,获取该基准时间之前的日志数据,得到第一日志数据。其中,对于位于基准时间之前的所有日志,可以计算各个日志的生成时间与基准时间之间的时间差值,若任一个日志对应的时间差值小于或者等于第一阈值,则该日志可以作为第一日志数据。本申请实施例不对第一阈值做限定,示例性地,第一阈值为设定数值,或者第一阈值是将各个日志对应的时间差值进行排序后得到的第设定数量个时间差值。
比如,按照时间差值从小到大的顺序对位于基准时间之前的各个日志对应的时间差值进行排序,将排序后第一个时间差值作为第一阈值,此时,最小的时间差值对应的日志为第一日志数据,即第一日志数据是任一个操作状态机的操作状态改变为任一个操作状态之前的第一条日志数据。
获取该基准时间之后的日志数据,得到第二日志数据。其中,对于位于基准时间之后的所有日志,可以计算各个日志的生成时间与基准时间之间的时间差值,若任一个日志对应的时间差值小于或者等于第二阈值,则该日志可以作为第二日志数据。本申请实施例不对第二阈值做限定,示例性地,第二阈值为设定数值,或者第二阈值是将各个日志对应的时间差值进行排序后得到的第设定数量个时间差值。
比如,按照时间差值从小到大的顺序对位于基准时间之后的各个日志对应的时间差值进行排序,将排序后第一个时间差值作为第二阈值,此时,最小的时间差值对应的日志为第二日志数据,即第二日志数据是任一个操作状态机的操作状态改变为任一个操作状态之后的第一条日志数据。
这种情况下,步骤2032包括步骤D1至步骤D2。
步骤D1,对比第一日志数据包括的各个数据项和第二日志数据包括的各个数据项,从各个数据项中确定第一数据项,第一数据包括的第一数据项和第二数据包括的第一数据项的值不同。
上文已提及,日志数据包括日志的生成时间、测试程序的名称、操作状态机对应的操作状态(Current State)、与上一条日志相比,操作状态机对应的操作状态是否发生改变(Changed Since Last Sync)、最近一次操作状态机对应的操作状态发生改变时的时间(Last Change Time)、操作状态机是否被激活(Is Active)等数据项。因此,第一日志数据和第二日志数据包括上述各个数据项。
将第一日志数据包括的各个数据项和第二日志数据包括的各个数据项进行比对。当第一日志数据包括的某一个数据项的值和第二日志数据包括的某一个数据项的值不同时,将该数据项确定为第一数据项。
比如,Bool类操作状态机的操作状态由初始化操作状态改变为放开按键的状态时,第一日志数据是改变为放开按键的状态之前的日志数据,也就是说,第一日志数据是初始化数据,此时,第一日志数据如上表1所示。第二日志数据是改变为放开按键的状态之后的日志数据,也就是说,第二日志数据是放开按键的数据,此时,第二日志数据如上表4的前两行所示。由于第一日志数据包括的数据项Current State的值和第二日志数据包括的数据项Current State的值不同,则第一数据项包括Current State。同样地,第一数据项还包括Changed Since Last Sync和Last Change Time。其中,Last Change Time是实时刷新的数据,因此,每两条日志的Last Change Time的值不同。
步骤D2,响应于第一数据项满足任一个操作状态的验证通过条件,确定任一个操作状态的验证结果为成功。
本申请实施例中,任一个操作状态的验证通过条件包括设置的第一日志数据和第二日志数据中值不同的各个数据项,为便于描述,这些数据项称为第一参考数据项。若各个第一数据项和各个第一参考数据项相同,则确定任一个操作状态的验证结果为成功,若存在第一数据项和第一参考数据项不同,则确定任一个操作状态的验证结果为失败。
在实现方式C2中,任一个操作状态的测试数据包括第三日志数据和第四日志数据,第三日志数据和第四日志数据是任一个操作状态机的操作状态改变为任一个操作状态之后的不同日志数据。
以操作状态机的操作状态改变为任一个操作状态的瞬间为基准时间,获取该基准时间之后的日志数据,得到第三日志数据和第四日志数据。其中,对于位于基准时间之后的所有日志,可以计算各个日志的生成时间与基准时间之间的时间差值。若任一个日志对应的时间差值小于或者等于第三阈值,则该日志可以作为第三日志数据。若任一个日志对应的时间差值大于第三阈值且小于或者等于第四阈值,则该日志可以作为第四日志数据。
本申请实施例不对第三阈值做限定,示例性地,第二阈值和第三阈值相同,即第三阈值是将各个日志对应的时间差值进行排序后得到的第设定数量个时间差值。本申请实施例也不对第四阈值做限定,其中,第四阈值相同大于第三阈值,即第四阈值是将各个日志对应的时间差值进行排序后得到的大于第设定数量个时间差值。
比如,按照时间差值从小到大的顺序对位于基准时间之后的各个日志对应的时间差值进行排序,将排序后第一个时间差值作为第三阈值,此时,最小的时间差值对应的日志为第三日志数据,即第三日志数据是任一个操作状态机的操作状态改变为任一个操作状态之后的第一条日志数据。将排序后第二个时间差值作为第四阈值,此时,次小的时间差值对应的日志为第四日志数据,即第四日志数据是任一个操作状态机的操作状态改变为任一个操作状态之后的第二条日志数据。
这种情况下,步骤2032包括步骤E1至步骤E2。
步骤E1,对比第三日志数据包括的各个数据项和第四日志数据包括的各个数据项,从各个数据项中确定第二数据项和第三数据项,第三日志数据包括的第二数据项和第四日志数据包括的第二数据项的值不同,第三日志数据包括的第三数据项和第四日志数据包括的第三数据项的值相同。
第三日志数据和第四日志数据均包括日志的生成时间、测试程序的名称、操作状态机对应的操作状态(Current State)、与上一条日志相比,操作状态机对应的操作状态是否发生改变(Changed Since Last Sync)、最近一次操作状态机对应的操作状态发生改变时的时间(Last Change Time)、操作状态机是否被激活(Is Active)等数据项。
将第三日志数据包括的各个数据项和第四日志数据包括的各个数据项进行比对。当第三日志数据包括的某一个数据项的值和第四日志数据包括的某一个数据项的值不同时,将该数据项确定为第三数据项。当第三日志数据包括的某一个数据项的值和第四日志数据包括的某一个数据项的值相同时,将该数据项确定为第四数据项。
比如,Bool类操作状态机的操作状态由初始化操作状态改变为放开按键的状态时,第三日志数据是改变为放开按键的状态之后的第一条日志数据,第四日志数据是改变为放开按键的状态之后的第二条日志数据,此时,第三日志数据和第四日志数据如上表4的前三行所示。由于第三日志数据包括的数据项Current State的值和第四日志数据包括的数据项Current State的值相同,则第三数据项包括Current State。同样地,第三数据项还包括Is Active。由于第三日志数据包括的数据项Changed Since Last Sync的值和第四日志数据包括的数据项Changed Since Last Sync的值不同,则第四数据项包括ChangedSince Last Sync。同样地,第四数据项还包括Last Change Time。
第三日志数据也可以是改变为放开按键的状态之后的第二条日志数据,第四日志数据是改变为放开按键的状态之后的第三条日志数据,此时,第三日志数据和第四日志数据如上表4的后两行所示。此时,第三数据项包括Is Active、Current State和ChangedSince Last Sync,第四数据项包括Last Change Time。
步骤E2,响应于第二数据项和第三数据项满足任一个操作状态的验证通过条件,确定任一个操作状态的验证结果为成功。
本申请实施例中,任一个操作状态的验证通过条件包括设置的第三日志数据和第四日志数据中值不同的各个数据项,为便于描述,这些数据项称为第二参考数据项。任一个操作状态的验证通过条件还包括设置的第三日志数据和第四日志数据中值相同的各个数据项,为便于描述,这些数据项称为第三参考数据项。若各个第二数据项和各个第二参考数据项相同,且各个第三数据项和各个第三参考数据项相同,则确定任一个操作状态的验证结果为成功;若存在第二数据项和第二参考数据项不同,和/或,存在第三数据项和第三参考数据项不同,则确定任一个操作状态的验证结果为失败。
在实现方式C3中,任一个操作状态的测试数据包括第一日志数据、第二日志数据、第三日志数据和第四日志数据。其中,第二日志数据和第三日志数据可以是同一个日志数据,也可以是不同的日志数据。
这种情况下,步骤2032包括步骤F1至步骤F3。
步骤F1,对比第一日志数据包括的各个数据项和第二日志数据包括的各个数据项,从各个数据项中确定第一数据项。有关F1的步骤可以见步骤D1的描述,在此不再赘述。
步骤F2,对比第三日志数据包括的各个数据项和第四日志数据包括的各个数据项,从各个数据项中确定第二数据项和第三数据项。有关F2的步骤可以见步骤E1的描述,在此不再赘述。
步骤F3,响应于第一数据项、第二数据项和第三数据项满足任一个操作状态的验证通过条件,确定任一个操作状态的验证结果为成功。有关步骤F3的描述,可以见步骤D2和步骤E2的描述,在此不再赘述。
可以理解的是,不同类型的操作状态机对应不同的操作状态,不同的操作状态对应不同的测试数据,可选地,任一操作状态的测试数据还包括该操作状态的操作值。因此,针对不同的操作状态,在验证第一数据项、第二数据项和第三数据项中的至少一项是否满足该操作状态的验证通过条件之外,还可以对该操作状态的操作值进行验证。
例如,针对Vector类操作状态机,横轴正方向为左方,横轴负方向为右向,纵轴正向方为前方,纵轴负向方为后方,且横轴的数值范围为-1至1之间,纵轴的数值范围为-1至1之间。当操作状态为移动至目标方向的状态时,验证移动至目标方向的数据中的操作值是否满足该操作状态的验证通过条件,当满足时,确定该操作状态的验证结果为成功。例如,当操作状态为移动至前方的状态时,该操作状态的验证通过条件包括表征横轴的数据为0,表征纵轴的数据大于0且小于等于1,当移动至前方的数据中的操作值包括表征横轴的数据0和表征纵轴的数据1时,该操作状态的验证结果为成功。
针对Float类操作状态机,当操作状态为力度改变的状态时,需要对比力度改变的数据包括的各个日志数据中操作值是否满足该操作状态的验证通过条件,当满足时,确定该操作状态的验证结果为成功。例如,当操作状态为增大力度的状态时,该操作状态的验证通过条件包括操作值逐渐增大。当增大力度的数据包括的各个日志数据中,按照日志的生成时间的先后顺序,操作值逐渐增大时,该操作状态的验证结果为成功,否则,验证结果为失败。
针对Pose类操作状态机,可以调用指针(例如xrLocateSpace指针)来获取位姿数据,操作状态的测试数据中包括位姿数据。若该位姿数据满足该操作状态机的验证通过条件,则该操作状态的验证结果为成功,否则,验证结果为失败。
针对OFN类操作状态机,操作状态的测试数据中包括操作值,也就是第一触摸数据和第二触摸数据。若第一触摸数据和第二触摸数据均满足该操作状态机的验证通过条件,则该操作状态的验证结果为成功,否则,验证结果为失败。
可以理解的是,对于任一个操作状态,可以在该操作状态的测试数据包括的第一数据项、第二数据项、第三数据项和操作值均满足该操作状态的验证通过条件时,确定该操作状态的验证结果为成功。当存在第一数据项、第二数据项、第三数据项和操作值中的至少一项不满足该操作状态的验证通过条件时,确定该操作状态的验证结果为失败。
不同类型的操作状态机对应不同的验证器。可以基于验证器的生命周期管理,通过设置验证器的输入和输出来自主定义验证器。例如,对于用于验证Bool类操作状态机的验证器,可以设置针对Bool类操作状态机的各个操作状态的测试数据中的操作值进行强验证,而Last Change Time等时间类数据则进行范围验证。可以设置针对时间类数据的验证精度达到纳秒级。
步骤2033,基于多个操作状态的验证结果,确定任一个操作状态机的验证结果。
本申请实施例中,若各个操作状态的验证结果均为成功,则确定任一个操作状态机的验证结果为成功。若存在操作状态的验证结果为失败,则确定任一个操作状态机的验证结果为失败。
步骤204,基于至少一个操作状态机的验证结果,生成交互设备的测试报告。
若各个操作状态机的验证结果均为成功,则确定交互设备的验证结果为成功。若存在操作状态机的验证结果为失败,则确定交互设备的验证结果为失败。
可以基于各个操作状态机的验证结果生成交互设备的测试报告。本申请实施例不对测试报告的内容做限定,示例性地,测试报告的形式如下示例一和示例二所示,其中,示例一是测试程序输出的测试报告,示例二是单元测试框架(JUnit)格式的测试报告。
示例一:
2022-09-16 15:20:57.209 7032-7069/com.khronos.openxr.cts V/OpenXR_Conformance//测试时间、测试报告的类型等
Conformance Report//测试报告
Random seed used:1663312839//随机种子,用于确定测试用例的执行顺序
API version:1.0.22//版本
Graphics system:OpenGLES//图形应用程序接口
Present API layers://应用程序接口的列表
<none>
Tested instance extensions://扩展列表,用于提供应用程序接口
XR_KHR_android_create_instance
XR_KHR_Opengl_es_enable
XR_KHR_composition_layer_cube
XR_KHR_composition_layer_cylinder
Tested form factor:Hmd//设备类型为头盔式显示器(Head Mounted Display,HMD)
Tseted view configuration:Stereo//视图编制为立体式
Tseted environment blend mode:Opaque//混合模式为叠加模式,即前面有物体时会遮挡后面物体,导致后面物体不可见
Handle invalidation tested:no
Non-disconnectable devices:no
Test Success Count:1//测试成功次数等于1,表明交互设备的验证结果为成功,交互设备符合OpenXR标准的要求
Test Failure Count:0//测试失败次数等于0,表明交互设备的验证结果为成功
示例二:
<?xml version="1.0"encoding="UTF-8"?>
<testsuites>
<testsuite errors="0"failures="0"tests="1"hostname="tbd"time="17.416"timestamp="2022-09-16T07:20:57Z">//测试用例的错误数为0,失败数为0,总时长为17.416毫秒,测试时间为2022年9月16日的7点20分57秒
<properties>
<property name="filters"value="[single]"/>
</properties>
<testcase classname="global"name="tencent_ring_click"time="17.415"status="run"/>//测试用例的数据类型为“global(即全局对象)”,名称为“tencent_ring_click”,总时长为17.415毫秒
<testcase classname="global"name="tencent_ring_click/clickActionLeft"time="17.140"status="run"/>//测试用例的数据类型为“global”,名称为“tencent_ring_click/clickActionLeft”,总时长为17.140毫秒
<system-out/>
<system-err/>
</testsuite>
</testsuites>
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。例如,本申请中涉及到的操作状态机的测试数据、操作状态机的验证模板等都是在充分授权的情况下获取的。
上述方法通过对交互设备支持的至少一个操作状态机进行测试、对各个操作状态机的测试数据验证,并基于各个操作状态机的验证结果,生成交互设备的测试报告,实现了对交互设备进行自动化测试。与依赖测试对象的主观感受相比,对交互设备进行自动化测试所需的时间较少,测试结果的准确性较高,测试效率更高。
上述从方法步骤的角度阐述了本申请实施例提供的交互设备的测试方法,下面结合图3来进一步描述。图3是本申请实施例提供的一种交互设备的测试系统的框架图。该交互设备的测试系统包括触发器、状态机、记录器和验证器。
触发器可以将针对交互设备进行的操作映射为操作状态机对应的操作状态。触发器包括实例生命周期管理、会话生命周期管理、交互配置文件周期管理、测试场景管理、操作映射、至少一个帧循环管理(例如,图3示出了两个帧循环管理)。实例生命周期管理用于管理触发器和操作系统进行交互的生命周期。会话生命周期管理用于管理会话的生命周期。交互配置文件周期管理用于管理交互配置文件的生命周期。测试场景管理用于管理与测试环境的配置相关的内容。操作映射用于将针对交互设备进行的操作映射为操作状态机支持的操作状态。帧循环管理用于管理帧循环。可选地,触发器可以将针对交互设备进行的按键、摇杆、强度、触摸、抓、握等操作转化为对应的操作状态。
状态机包括多种类型的操作状态机,例如,状态机包括布尔类的操作状态机、数组类的操作状态机、浮点类的操作状态机以及位姿类的操作状态机等。状态机包括生命周期管理,生命周期管理用于管理状态机的生命周期。
记录器用于记录各种类型的操作状态机的测试数据,例如,记录器用于记录布尔类的操作状态机的测试数据、数组类的操作状态机的测试数据、浮点类的操作状态机的测试数据以及位姿类的操作状态机的测试数据等。记录器包括生命周期管理,生命周期管理用于管理记录器的生命周期。
验证器用于验证各种类型的操作状态机的测试数据,例如,验证器用于验证布尔类的操作状态机的测试数据、数组类的操作状态机的测试数据、浮点类的操作状态机的测试数据以及位姿类的操作状态机的测试数据等。验证器包括生命周期管理,生命周期管理用于管理验证器的生命周期。
图3所示的交互设备的测试系统本质上是一种测试程序。本申请实施例中,可以基于该交互设备的测试系统对待测试的交互设备进行测试。请参见图4,图4是本申请实施例提供的一种对交互设备进行测试的流程图。该流程图包括步骤401至步骤405。
步骤401,获取承载测试程序的安卓应用程序包。
本申请实施例不对安卓应用程序包的获取方式做限定,示例性地,可以从网络中下载安卓应用程序包,也可以从外部设备(例如,闪存盘、移动硬盘等)中读取安卓应用程序包。
步骤402,基于安卓应用程序包配置测试程序的测试环境。其中,有关步骤402的内容可以见上文有关“配置测试环境”的相关描述,在此不再赘述。
步骤403,通过对交互设备进行操作,对交互设备支持的各个操作状态机进行测试,得到各个操作状态机的测试数据。其中,有关步骤403的内容可以见上文有关步骤201的相关描述,在此不再赘述。
步骤404,对各个操作状态机的测试数据进行验证,得到各个操作状态机的验证结果。其中,有关步骤404的内容可以见上文有关步骤203的相关描述,在此不再赘述。
步骤405,基于各个操作状态机的验证结果,生成交互设备的测试报告。其中,有关步骤405的内容可以见上文有关步骤204的相关描述,在此不再赘述。
通过本申请实施例提供的交互设备的测试方法,实现了对交互设备支持的各种操作类型进行测试。通过触发器、状态机、记录器和验证器的协作机制,将对交互设备进行的手工测试转化为对交互设备进行自动化测试。通过测试程序输出测试报告的能力,直观地展示交互设备的测试结果,提高了在XR领域中对交互设备进行测试的测试能力和测试效率。
本申请实施例提供的交互设备的测试方式包括但不限于具有三个特点。
第一个特点:手工对交互设备进行测试依赖于测试对象的主观感受,准确性不高,而本申请实施例是通过测试程序对交互设备进行自动化测试,准确性高,且通过设置与交互设备支持的各个操作类型相关的操作状态机,并对交互设备支持的各个操作状态机进行测试,提高了测试覆盖范围,有利于使交互设备满足相关标准。
第二个特点是提高了测试效率。通常情况下,人工对交互设备进行测试所需的时长大约为5分钟,而通过测试程序对交互设备进行自动化测试所需的时长大约为30秒,测试效率提高了90%左右。
第三个特点是测试结果的准确性较高。在测试过程中,可以手工对交互设备进行操作,或者通过自动化设备对交互设备进行操作。通过对交互设备进行操作,利用测试程序完成对交互设备的测试,实现半自动化或者自动化测试交互设备。与手工对交互设备进行测试相比,对交互设备进行自动化测试时测试结果的准确性高,此外,由于对交互设备进行半自动化测试时,测试对象只需要对交互设备进行操作即可,不需要关注测试数据的验证逻辑,对交互设备进行半自动化测试时测试结果的准确性较高,测试效率更高。
图5所示为本申请实施例提供的一种交互设备的测试装置的结构示意图,如图5所示,该装置包括:
测试模块501,用于对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,操作状态机是配置有多种操作状态的虚拟设备,任一种操作状态反应针对交互设备所执行的操作的状态;
获取模块502,用于获取各个操作状态机的验证模板;
验证模块503,用于对于任一个操作状态机,基于任一个操作状态机的验证模板对任一个操作状态机的测试数据进行验证,得到任一个操作状态机的验证结果;
生成模块504,用于基于至少一个操作状态机的验证结果,生成交互设备的测试报告。
在一种可能的实现方式中,测试模块501,用于对于交互设备支持的任一个操作状态机,响应于针对交互设备进行操作,确定任一个操作状态机的操作状态为与操作相关的相关操作状态;获取相关操作状态的测试数据;将相关操作状态的测试数据,确定为任一个操作状态机的测试数据。
在一种可能的实现方式中,任一个操作状态机对应的多个操作状态包括初始化操作状态、结束操作状态和至少一个目标操作状态,任一个目标操作状态是除初始化操作状态和结束操作状态之外的操作状态;
当相关操作状态为初始化操作状态,相关操作状态的测试数据为初始化数据;
当相关操作状态为结束操作状态,相关操作状态的测试数据为结束数据;
当相关操作状态为任一个目标操作状态,相关操作状态的测试数据为目标数据。
在一种可能的实现方式中,交互设备支持至少一种操作类型,任一个操作状态机与交互设备支持的任一种操作类型相关,任一种操作类型包括按键类型、摇杆类型、抓握类型、触摸类型和位姿类型中的任一项;
若任一个操作状态机与按键类型、位姿类型、抓握类型和触摸类型中的任一项相关,则任一个目标操作状态为摁下按键的状态,目标数据为摁下按键的数据,或者,任一个目标操作状态为放开按键的状态,目标数据为放开按键的数据;
若任一个操作状态机与摇杆类型、位姿类型和触摸类型中的任一项相关,则任一个目标操作状态为移动至目标方向的状态,目标数据为移动至目标方向的数据,目标方向包括前方、后方、左方和右方的任一项;
若任一个操作状态机与抓握类型相关,则任一个目标操作状态为力度改变的状态,目标数据为力度改变的数据,力度改变包括增大力度和减少力度中的任一项。
在一种可能的实现方式中,任一个操作状态机的测试数据包括多个操作状态的测试数据;
验证模块503,用于对于任一个操作状态的测试数据,从任一个操作状态机的验证模板中提取任一个操作状态的验证通过条件;基于任一个操作状态的测试数据和任一个操作状态的验证通过条件,确定任一个操作状态的验证结果;基于多个操作状态的验证结果,确定任一个操作状态机的验证结果。
在一种可能的实现方式中,任一个操作状态的测试数据包括第一日志数据和第二日志数据,第一日志数据是任一个操作状态机的操作状态改变为任一个操作状态之前的日志数据,第二日志数据是任一个操作状态机的操作状态改变为任一个操作状态之后的日志数据;
验证模块503,用于对比第一日志数据包括的各个数据项和第二日志数据包括的各个数据项,从各个数据项中确定第一数据项,第一数据包括的第一数据项和第二数据包括的第一数据项的值不同;响应于第一数据项满足任一个操作状态的验证通过条件,确定任一个操作状态的验证结果为成功。
在一种可能的实现方式中,任一个操作状态的测试数据包括第三日志数据和第四日志数据,第三日志数据和第四日志数据是任一个操作状态机的操作状态改变为任一个操作状态之后的不同日志数据;
验证模块503,用于对比第三日志数据包括的各个数据项和第四日志数据包括的各个数据项,从各个数据项中确定第二数据项和第三数据项,第三日志数据包括的第二数据项和第四日志数据包括的第二数据项的值不同,第三日志数据包括的第三数据项和第四日志数据包括的第三数据项的值相同;响应于第二数据项和第三数据项满足任一个操作状态的验证通过条件,确定任一个操作状态的验证结果为成功。
在一种可能的实现方式中,装置还包括:
配置模块,用于配置测试环境,测试环境是适合测试程序运行的环境;
测试模块501,用于通过测试程序在测试环境中对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据。
在一种可能的实现方式中,配置模块,用于配置初始化环境,初始化环境是操作系统和测试程序交互的环境,操作系统是用于运行测试程序的系统;创建测试线程,测试线程用于对任一个操作状态机进行测试;创建针对交互设备进行的操作与操作状态机对应的操作状态之间的映射关系。
上述装置通过对交互设备支持的至少一个操作状态机进行测试、对各个操作状态机的测试数据验证,并基于各个操作状态机的验证结果,生成交互设备的测试报告,实现了对交互设备进行自动化测试。与依赖测试对象的主观感受相比,对交互设备进行自动化测试所需的时间较少,测试结果的准确性较高。
应理解的是,上述图5提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6示出了本申请一个示例性实施例提供的终端设备600的结构框图。该终端设备600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个计算机程序,该至少一个计算机程序用于被处理器601所执行以实现本申请中方法实施例提供的交互设备的测试方法。
在一些实施例中,终端设备600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备包括:射频电路604、显示屏605、摄像头组件606、音频电路607和电源608中的至少一种。
外围设备接口603可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器601和存储器602。在一些实施例中,处理器601、存储器602和外围设备接口603被集成在同一芯片或电路板上;在一些其他实施例中,处理器601、存储器602和外围设备接口603中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路604用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路604通过电磁信号与通信网络以及其他通信设备进行通信。射频电路604将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路604包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路604可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路604还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏605用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏605是触摸显示屏时,显示屏605还具有采集在显示屏605的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器601进行处理。此时,显示屏605还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏605可以为一个,设置在终端设备600的前面板;在另一些实施例中,显示屏605可以为至少两个,分别设置在终端设备600的不同表面或呈折叠设计;在另一些实施例中,显示屏605可以是柔性显示屏,设置在终端设备600的弯曲表面上或折叠面上。甚至,显示屏605还可以设置成非矩形的不规则图形,也即异形屏。显示屏605可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件606用于采集图像或视频。可选地,摄像头组件606包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件606还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路607可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器601进行处理,或者输入至射频电路604以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端设备600的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器601或射频电路604的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路607还可以包括耳机插孔。
电源608用于为终端设备600中的各个组件进行供电。电源608可以是交流电、直流电、一次性电池或可充电电池。当电源608包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端设备600还包括有一个或多个传感器609。该一个或多个传感器609包括但不限于:加速度传感器611、陀螺仪传感器612、压力传感器613、光学传感器614以及接近传感器615。
加速度传感器611可以检测以终端设备600建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器611可以用于检测重力加速度在三个坐标轴上的分量。处理器601可以根据加速度传感器611采集的重力加速度信号,控制显示屏605以横向视图或纵向视图进行用户界面的显示。加速度传感器611还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器612可以检测终端设备600的机体方向及转动角度,陀螺仪传感器612可以与加速度传感器611协同采集用户对终端设备600的3D动作。处理器601根据陀螺仪传感器612采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器613可以设置在终端设备600的侧边框和/或显示屏605的下层。当压力传感器613设置在终端设备600的侧边框时,可以检测用户对终端设备600的握持信号,由处理器601根据压力传感器613采集的握持信号进行左右手识别或快捷操作。当压力传感器613设置在显示屏605的下层时,由处理器601根据用户对显示屏605的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
光学传感器614用于采集环境光强度。在一个实施例中,处理器601可以根据光学传感器614采集的环境光强度,控制显示屏605的显示亮度。具体地,当环境光强度较高时,调高显示屏605的显示亮度;当环境光强度较低时,调低显示屏605的显示亮度。在另一个实施例中,处理器601还可以根据光学传感器614采集的环境光强度,动态调整摄像头组件606的拍摄参数。
接近传感器615,也称距离传感器,通常设置在终端设备600的前面板。接近传感器615用于采集用户与终端设备600的正面之间的距离。在一个实施例中,当接近传感器615检测到用户与终端设备600的正面之间的距离逐渐变小时,由处理器601控制显示屏605从亮屏状态切换为息屏状态;当接近传感器615检测到用户与终端设备600的正面之间的距离逐渐变大时,由处理器601控制显示屏605从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图6中示出的结构并不构成对终端设备600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图7为本申请实施例提供的服务器的结构示意图,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器701和一个或多个的存储器702,其中,该一个或多个存储器702中存储有至少一条计算机程序,该至少一条计算机程序由该一个或多个处理器701加载并执行以实现上述各个方法实施例提供的交互设备的测试方法,示例性的,处理器701为CPU。当然,该服务器700还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器700还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,该存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以使电子设备实现上述任一种交互设备的测试方法。
可选地,上述计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-OnlyMemory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以使电子设备实现上述任一种交互设备的测试方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种交互设备的测试方法,其特征在于,所述方法包括:
对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,所述操作状态机是配置有多种操作状态的虚拟设备,任一种操作状态反应针对交互设备所执行的操作的状态;
获取所述各个操作状态机的验证模板;
对于任一个操作状态机,基于所述任一个操作状态机的验证模板对所述任一个操作状态机的测试数据进行验证,得到所述任一个操作状态机的验证结果;
基于所述至少一个操作状态机的验证结果,生成所述交互设备的测试报告。
2.根据权利要求1所述的方法,其特征在于,所述对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,包括:
对于所述交互设备支持的任一个操作状态机,响应于针对所述交互设备进行操作,确定所述任一个操作状态机的操作状态为与所述操作相关的相关操作状态;
获取所述相关操作状态的测试数据;
将所述相关操作状态的测试数据,确定为所述任一个操作状态机的测试数据。
3.根据权利要求2所述的方法,其特征在于,所述任一个操作状态机对应的多个操作状态包括初始化操作状态、结束操作状态和至少一个目标操作状态,任一个目标操作状态是除所述初始化操作状态和所述结束操作状态之外的操作状态;
当所述相关操作状态为初始化操作状态,所述相关操作状态的测试数据为初始化数据;
当所述相关操作状态为结束操作状态,所述相关操作状态的测试数据为结束数据;
当所述相关操作状态为任一个目标操作状态,所述相关操作状态的测试数据为目标数据。
4.根据权利要求3所述的方法,其特征在于,所述交互设备支持至少一种操作类型,任一个操作状态机与所述交互设备支持的任一种操作类型相关,所述任一种操作类型包括按键类型、摇杆类型、抓握类型、触摸类型和位姿类型中的任一项;
若所述任一个操作状态机与所述按键类型、所述位姿类型、所述抓握类型和所述触摸类型中的任一项相关,则所述任一个目标操作状态为摁下按键的状态,所述目标数据为摁下按键的数据,或者,所述任一个目标操作状态为放开按键的状态,所述目标数据为放开按键的数据;
若所述任一个操作状态机与所述摇杆类型、所述位姿类型和所述触摸类型中的任一项相关,则所述任一个目标操作状态为移动至目标方向的状态,所述目标数据为移动至所述目标方向的数据,所述目标方向包括前方、后方、左方和右方的任一项;
若所述任一个操作状态机与所述抓握类型相关,则所述任一个目标操作状态为力度改变的状态,所述目标数据为所述力度改变的数据,所述力度改变包括增大力度和减少力度中的任一项。
5.根据权利要求1所述的方法,其特征在于,所述任一个操作状态机的测试数据包括多个操作状态的测试数据;
所述基于所述任一个操作状态机的验证模板对所述任一个操作状态机的测试数据进行验证,得到所述任一个操作状态机的验证结果,包括:
对于任一个操作状态的测试数据,从所述任一个操作状态机的验证模板中提取所述任一个操作状态的验证通过条件;
基于所述任一个操作状态的测试数据和所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果;
基于所述多个操作状态的验证结果,确定所述任一个操作状态机的验证结果。
6.根据权利要求5所述的方法,其特征在于,所述任一个操作状态的测试数据包括第一日志数据和第二日志数据,所述第一日志数据是所述任一个操作状态机的操作状态改变为所述任一个操作状态之前的日志数据,所述第二日志数据是所述任一个操作状态机的操作状态改变为所述任一个操作状态之后的日志数据;
所述基于所述任一个操作状态的测试数据和所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果,包括:
对比所述第一日志数据包括的各个数据项和所述第二日志数据包括的各个数据项,从所述各个数据项中确定第一数据项,所述第一数据包括的第一数据项和所述第二数据包括的第一数据项的值不同;
响应于所述第一数据项满足所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果为成功。
7.根据权利要求5所述的方法,其特征在于,所述任一个操作状态的测试数据包括第三日志数据和第四日志数据,所述第三日志数据和所述第四日志数据是所述任一个操作状态机的操作状态改变为所述任一个操作状态之后的不同日志数据;
所述基于所述任一个操作状态的测试数据和所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果,包括:
对比所述第三日志数据包括的各个数据项和所述第四日志数据包括的各个数据项,从所述各个数据项中确定第二数据项和第三数据项,所述第三日志数据包括的第二数据项和所述第四日志数据包括的第二数据项的值不同,所述第三日志数据包括的第三数据项和所述第四日志数据包括的第三数据项的值相同;
响应于所述第二数据项和所述第三数据项满足所述任一个操作状态的验证通过条件,确定所述任一个操作状态的验证结果为成功。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
配置测试环境,所述测试环境是适合测试程序运行的环境;
所述对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,包括:
通过所述测试程序在所述测试环境中对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据。
9.根据权利要求8所述的方法,其特征在于,所述配置测试环境,包括:
配置初始化环境,所述初始化环境是操作系统和所述测试程序交互的环境,所述操作系统是用于运行所述测试程序的系统;
创建测试线程,所述测试线程用于对所述任一个操作状态机进行测试;
创建针对所述交互设备进行的操作与所述操作状态机对应的操作状态之间的映射关系。
10.一种交互设备的测试装置,其特征在于,所述装置包括:
测试模块,用于对待测试的交互设备支持的至少一个操作状态机进行测试,得到各个操作状态机的测试数据,所述操作状态机是配置有多种操作状态的虚拟设备,任一种操作状态反应针对交互设备所执行的操作的状态;
获取模块,用于获取所述各个操作状态机的验证模板;
验证模块,用于对于任一个操作状态机,基于所述任一个操作状态机的验证模板对所述任一个操作状态机的测试数据进行验证,得到所述任一个操作状态机的验证结果;
生成模块,用于基于所述至少一个操作状态机的验证结果,生成所述交互设备的测试报告。
11.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以使所述电子设备实现如权利要求1至9任一所述的交互设备的测试方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以使电子设备实现如权利要求1至9任一所述的交互设备的测试方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以使电子设备实现如权利要求1至9任一所述的交互设备的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211473174.0A CN118057313A (zh) | 2022-11-21 | 2022-11-21 | 交互设备的测试方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211473174.0A CN118057313A (zh) | 2022-11-21 | 2022-11-21 | 交互设备的测试方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118057313A true CN118057313A (zh) | 2024-05-21 |
Family
ID=91069323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211473174.0A Pending CN118057313A (zh) | 2022-11-21 | 2022-11-21 | 交互设备的测试方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118057313A (zh) |
-
2022
- 2022-11-21 CN CN202211473174.0A patent/CN118057313A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11393154B2 (en) | Hair rendering method, device, electronic apparatus, and storage medium | |
CN110147231B (zh) | 组合特效生成方法、装置及存储介质 | |
CN108845856B (zh) | 基于对象的同步更新方法、装置、存储介质及设备 | |
CN108694073B (zh) | 虚拟场景的控制方法、装置、设备及存储介质 | |
CN112044065B (zh) | 虚拟资源的显示方法、装置、设备及存储介质 | |
CN110732136B (zh) | 局外环境下局内行为的预览方法、装置、终端及存储介质 | |
CN111880648B (zh) | 一种三维元素的操纵方法和终端 | |
CN110841285A (zh) | 界面元素的显示方法、装置、计算机设备及存储介质 | |
CN105190469B (zh) | 使对象的指定位置被提供给设备 | |
CN110837858A (zh) | 网络模型训练方法、装置、计算机设备及存储介质 | |
CN112770173A (zh) | 直播画面处理方法、装置、计算机设备及存储介质 | |
CN111437600A (zh) | 剧情展示方法、装置、设备及存储介质 | |
CN110045958B (zh) | 纹理数据生成方法、装置、存储介质及设备 | |
WO2021254113A1 (zh) | 一种三维界面的控制方法和终端 | |
CN112612387B (zh) | 展示信息的方法、装置、设备及存储介质 | |
CN112023403B (zh) | 基于图文信息的对战过程展示方法及装置 | |
CN112306332B (zh) | 确定选中目标的方法、装置、设备及存储介质 | |
CN115861577A (zh) | 虚拟场景物的姿态编辑方法、装置、设备及存储介质 | |
CN113194329B (zh) | 直播互动方法、装置、终端及存储介质 | |
CN118057313A (zh) | 交互设备的测试方法、装置、设备及可读存储介质 | |
CN112188268B (zh) | 虚拟场景展示方法、虚拟场景的介绍视频生成方法及装置 | |
CN109547696A (zh) | 一种拍摄方法及终端设备 | |
CN114816622B (zh) | 场景画面显示方法、装置、电子设备及存储介质 | |
CN115794049A (zh) | 场景编辑器中基于对象的函数调用方法、装置及存储介质 | |
CN117666769A (zh) | 虚拟场景的交互方法、装置、存储介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |