使用现场测试在软件程序中自动捕获用户交互并评估用户接口背景技术
本发明一般地涉及在计算机系统上执行的应用,更具体地说,涉及现场测试这些
应用。
本节旨在提供下面描述的发明的背景或上下文。此处的描述可包括能够被执行的
理念,这些理念不一定是之前已被构想、实现或描述的理念。因此,除非此处另外明确指示,
否则本节中描述的内容并非本申请中的描述的现有技术,也不会通过包含在本节中被认为
是现有技术。
随着开发者快速将软件发布到全球市场,移动应用市场的规模也在增大。当移动
应用种类中的新种类被创建时,第一时间将应用种类投放市场的现象很快被类似应用产品
之间的竞争所取代。只有当应用从多名最终用户那里收到肯定的评论和评级时,才能明确
地确定应用种类领导者。具有此类性质的反馈具有主观性,通常描述了用户在与应用交互
时的总体体验。决定最大化移动应用影响的开发者需要具备在行动之前评估和分析应用使
用情况范例的能力。这给开发者以及产品所有者提出了现实的挑战:如何不仅仅凭借主观
度量来测试和分析应用使用情况,以便在总体发布应用之前采取补救性设计/实现措施?
移动软件开发包(MobileSDK)中配备的工具允许设计者/开发者创建顶层视图容
器和关联的控件。备选地,开发者能够以编程的方式创建具有自定义布局和控件的视图容
器,这些自定义布局和控件被等同地编译为能够被目标移动设备使用的格式。此外,还具有
工具以调试编译后的应用,以及分析在“测试”模式下运行的应用内的封装功能的单元测
试。但是,这些方法具有一定的限制,因为它们不捕获专注于在真实情况下与用户接口进行
的直接交互的应用使用情况(通常称为“现场测试”)。
这种现场测试尽管有用,但是通常受到所谓的“测试员(betatester)”的数量的
限制。即使相对简单的软件程序也可能具有许多布局和控件,测试员可能未测试这些布局
和控件的全部或多数可能组合。因此,改进软件程序的测试将是有利的。
发明内容
本节具有示例性实施例的可能实现的例子。本节并非旨在限制。
在第一示例性实施例中,一种方法包括在第一计算设备上分析来自至少一个第二
计算设备的与先前在所述至少一个第二计算设备上执行的应用的用户接口进行的用户交
互的数据。所述数据对应于与所述应用的所述用户接口进行的所述用户交互所导致的事
件。所述第一计算设备和所述至少一个第二计算设备不同。所述方法包括由所述第一计算
设备生成所分析的数据的一个或多个表示;以及由所述第一计算设备输出与所述应用的所
述用户接口进行的所述用户交互的所述一个或多个表示。
在进一步的示例性实施例中,一种计算设备包括:用于在计算设备上分析来自一
个或多个其它计算设备的与先前在所述一个或多个其它计算设备上执行的应用的用户接
口进行的用户交互的数据的部件,所述数据对应于与所述应用的所述用户接口进行的所述
用户交互所导致的事件,其中所述计算设备和所述一个或多个其它计算设备不同;用于由
所述计算设备生成所分析的数据的一个或多个表示的部件;以及用于由所述计算设备输出
与所述应用的所述用户接口进行的所述用户交互的所述一个或多个表示的部件。
一个附加的示例性实施例是一种计算机程序产品,其包括内含计算机可读程序代
码的计算机可读存储介质,所述计算机可读程序代码包括:用于在第一计算设备上分析来
自至少一个第二计算设备的数据的与先前在所述至少一个第二计算设备上执行的应用的
用户接口进行的用户交互的数据的代码,所述数据对应于与所述应用的所述用户接口进行
的所述用户交互所导致的事件,其中所述第一计算设备和所述至少一个第二计算设备不
同;用于由所述第一计算设备生成所分析的数据的一个或多个表示的代码;以及用于由所
述第一计算设备输出与所述应用的所述用户接口进行的所述用户交互的所述一个或多个
表示的代码。
一个附加的示例性实施例是一种计算设备,其包括内含计算机可读代码的存储器
以及一个或多个处理单元。所述一个或多个处理单元和所述存储器被配置为:响应于所述
计算机可读代码的执行而使所述计算设备执行以下操作:在所述计算设备上分析来自至少
一个其它计算设备的与先前在所述至少一个其它计算设备上执行的应用的用户接口进行
的用户交互的数据,所述数据对应于与所述应用的所述用户接口进行的所述用户交互所导
致的事件,其中所述计算设备和所述至少一个其它计算设备不同;由所述计算设备生成所
分析的数据的一个或多个表示;以及由所述计算设备输出与所述应用的所述用户接口进行
的所述用户交互的所述一个或多个表示。
一个进一步的示例性实施例是一种方法,其包括:接收应用;以及将测量库插装到
所述应用中以创建所述应用的插装版本。所述测量库被定义为在插装后的应用在计算设备
上执行时捕获和记录与所述插装后的应用的用户接口进行的用户交互所导致的事件。所述
插装后的应用被发送到一个或多个计算设备。
一个进一步的示例性实施例是一种计算机系统,其包括:用于接收应用的部件;用
于将测量库插装到所述应用中以创建所述应用的插装版本的部件,其中所述测量库被定义
为在插装后的应用在计算设备上执行时捕获和记录与所述插装后的应用的用户接口进行
的用户交互所导致的事件;以及用于将所述插装后的应用发送到一个或多个计算设备的部
件。
一个附加的示例性实施例是一种计算机程序产品,其包括内含计算机可读程序代
码的计算机可读存储介质,所述计算机可读程序代码包括:用于接收应用的代码;用于将测
量库插装到所述应用中以创建所述应用的插装版本的代码,其中所述测量库被定义为,在
插装后的应用在计算设备上执行时,捕获和记录与所述插装后的应用的用户接口进行的用
户交互所导致的事件;以及用于将所述插装后的应用发送到一个或多个计算设备的代码。
一种计算机系统包括内含计算机可读代码的存储器以及一个或多个处理单元。所
述一个或多个处理单元和所述存储器被配置为:响应于所述计算机可读代码的执行而使所
述计算机系统执行以下操作:接收应用;以及将测量库插装到所述应用中以创建所述应用
的插装版本,其中所述测量库被定义为在插装后的应用在计算设备上执行时捕获和记录与
所述插装后的应用的用户接口进行的用户交互所导致的事件;以及将所述插装后的应用发
送到一个或多个计算设备。
另一示例性实施例是一种方法,其包括当应用在计算设备上执行时,由所述计算
设备捕获和记录与所述应用的用户接口进行的用户交互所导致的事件。所述方法包括响应
于触发器,向另一计算设备发送包括所捕获和记录的事件的数据。
一个进一步的示例性实施例是一种计算设备,其包括:用于当应用在计算设备上
执行时由所述计算设备捕获和记录与所述应用的用户接口进行的用户交互所导致的事件
的部件;以及用于响应于触发器,向另一计算设备发送包括所捕获和记录的事件的数据的
部件。
一个附加的示例性实施例是一种计算机程序产品,其包括内含计算机可读程序代
码的计算机可读存储介质,所述计算机可读程序代码包括:用于当应用在计算设备上执行
时,由计算设备捕获和记录与所述应用的用户接口进行的用户交互所导致的事件的代码;
以及用于响应于触发器,向另一计算设备发送包括所捕获和记录的事件的数据的代码。
一个附加的示例性实施例是一种计算设备,其包括内含计算机可读代码的存储器
以及一个或多个处理单元。所述一个或多个处理单元和所述存储器被配置为:响应于所述
计算机可读代码的执行而使所述计算设备执行以下操作:当应用在计算设备上执行时,由
所述计算设备捕获和记录与所述应用的用户接口进行的用户交互所导致的事件;以及响应
于触发器,向另一计算设备发送包括所捕获和记录的事件的数据。
附图说明
图1是根据本发明一示例性实施例的经由网络通信的计算设备和服务器的框图;
图2示出根据本发明一示例性实施例的网络环境;
图3是示例性系统设计的图示;
图4是测量库的中介的图示;
图5是用户在应用视图之间导航时的执行/交互路径的频率的图示;
图6是跟踪与应用的UI的特定UI控件以及其它区域的定向触摸交互的图示;
图7是用于针对现场测试服务器接口,使用现场测试在软件程序中自动捕获用户
交互并评估用户接口的逻辑流程图,该流程图示出根据一示例性实施例的示例性方法的操
作、包含在计算机可读存储器中的计算机程序指令的执行结果,和/或在硬件中实现的逻辑
所执行的功能;
图8是用于针对具有插装的应用的计算设备,使用现场测试在软件程序中自动捕
获用户交互并评估用户接口的逻辑流程图,该流程图示出根据一示例性实施例的示例性方
法的操作、包含在计算机可读存储器中的计算机程序指令的执行结果,和/或在硬件中实现
的逻辑所执行的功能;以及
图9(包括图9A和9B)是用于针对UI评估工具,使用现场测试在软件程序中自动捕
获用户交互并评估用户接口的逻辑流程图,该流程图示出根据一示例性实施例的示例性方
法的操作、包含在计算机可读存储器中的计算机程序指令的执行结果,和/或在硬件中实现
的逻辑所执行的功能。
具体实施方式
尽管下面重点描述移动应用,但是应用的现场测试同样适用于许多其它类型的应
用。例如,许多汽车中具有交互式显示器,这些交互式显示器使用应用来设计和定义。这些
应用可进行现场测试。而且,桌上型计算机具有可进行现场测试的应用的用户接口(UI)。另
外,应用于移动设备(诸如智能电话和平板计算机)的“应用(app)”模型可以应用到桌上型
计算机和便携式计算机,而且将来也可应用到其它平台,诸如机顶盒、智能电视等。因此,本
发明的示例性实施例具有广泛适用性,图1和2示出这类广泛适用性。
现在参考图1,该图示出根据本发明一示例性实施例的经由网络通信的计算设备
和服务器的框图。图1被用于提供系统概览:在该系统中,可使用示例性实施例并且提供某
些示例性实施例的概览。在图1中,具有计算机系统/服务器12,其通过许多其它的通用或专
用计算系统环境或配置执行操作。公知的适合与计算机系统/服务器12使用的计算系统、环
境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、胖客户
机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产
品、网络PC、迷你计算机系统、大型机计算机系统,以及包括上述任何系统或设备的分布式
云计算环境等。
如图1所示,计算机系统/服务器12被示出为采取通用计算设备的形式。计算机系
统/服务器12的组件可包括但不限于:一个或多个处理单元16(例如,处理器(多个))、系统
存储器28,连接不同系统组件(其中包括将系统存储器28连接到一个或多个处理单元16)的
总线18。总线18表示几类总线结构中的任意一种或多种,包括存储器总线或者存储器控制
器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总
线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构
(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总
线。计算机系统/服务器12典型地包括多种计算机系统可读介质,诸如存储器28。这些介质
可以是能够被计算机系统/服务器12访问的任意可获得的介质,而且这些介质可包括易失
性和非易失性介质,可移动的和不可移动的介质。系统存储器28可以包括易失性存储器形
式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓冲存储器32。计算机
系统/服务器12可以还包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介
质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(未示出,通常称为
“硬盘驱动器”)。尽管未示出,可以使用可移动非易失性存储器(例如,存储卡或记忆棒),并
且可以提供用于对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光
盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个I/O(输入/输出)接口22与总
线18相连。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指点设备、显
示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通
信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设
备(例如网卡,调制解调器等等)通信。这种通信可以通过例如I/O接口22进行。并且,计算机
系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网
(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系
统/服务器12的其它组件通信。应当明白,尽管图中未示出,其它硬件和/或软件组件可以与
计算机系统/服务器12一起使用,包括但不限于:微代码、设备驱动器、冗余处理单元、外部
磁盘驱动阵列、RAID系统、磁带驱动器以及数据归档存储系统等。
计算设备12还包括通过总线118互连的存储器128-1、一个或多个处理单元116、一
个或多个I/O接口122,以及一个或多个网络适配器120。存储器128可包括非易失性和/或易
失性RAM、高速缓冲存储器132,以及存储系统134。根据实现方式,存储器128可包括可移动
或不可移动的非易失性存储器。计算设备112可包括显示器124-1(具有UI125-1)或与之相
连。根据实现方式,计算设备112能够或者不与外部设备114相连。显示器124例如可以是触
摸屏、显示器、监视器、电视机、投影仪。UI125可以是用于特定计算设备112的应用和/或操
作系统的任何UI。总线118可以是适合于平台的任何总线,包括上述针对总线18描述的总
线。存储器130、132和134可以分别是上述的那些存储器30、32、34。一个或多个网络适配器
120可以是有线或无线的网络适配器。I/O接口(多个)122可以是诸如USB(通用串行接口)、
SATA(串行AT附接)、HDMI(高清晰度多媒体接口)等之类的接口。一个或多个处理单元16、
116可以是用于控制各个计算设备(例如,通用处理器、单核或多核处理器、专用集成电路、
片上系统、可编程逻辑等等)的操作的任何适当的控制器(多个)。
图1还示出开发者设备220。开发者设备220可以被认为与计算设备112类似,因此
未示出开发者设备220的内部组件(存储器128-2、显示器124-2和UI125-2以外的组件)。开
发者设备220包括存储器128-2,该存储器包含应用210和UI评估工具180(包含现场测试数
据142)。
在该实例中,计算机系统/服务器12、计算设备112和开发者设备220通过网络150,
以及链路51、52和53互连。网络50通常是因特网,但是可以是诸如公司网络之类的其它网
络。
图1中的系统的元件以及这些元件之间的交互将在下面更详细地解释。但是现在
简单介绍示例性交互。典型的操作可以是应用210的开发者使用开发者设备220将应用210
上传到现场测试服务器接口40。现场测试服务器接口40然后插装应用210以创建插装后的
应用140。计算设备112例如可以“被推送”插装后的应用140,计算设备112也可下载插装后
的应用140,例如作为对计算设备112上已有的非插装版本应用的更新。插装的测量库190在
计算设备112的用户使用插装后的应用140时收集现场测试数据142。现场测试数据142可采
取许多不同的形式,但是其中一种可能的形式是图4所述的日志。日志提供有关事件交互
(用户与插装后的应用140的UI125-1的交互)的详细度量。在一段时间之后,插装后的应用
140(例如,在插装的测量库190的指示下,或者通过来自现场测试服务接口40的触发器)将
现场测试数据142发送到现场测试服务接口40,现场测试服务接口40然后将现场测试数据
142发送到开发者设备220。
使用开发者设备的开发者然后具有有关实际用户如何使用他或她的应用210的数
据。UI评估工具180例如可以显示有关计算设备112的用户对应用210的使用的特定信息。该
数据142可帮助用户改进应用210。例如,通过使用现场测试数据142,UI评估工具180可示出
现场测试数据的多个表示185。通过使用这些表示185,开发者可确定应用210的UI是否具有
不清晰的方面(这些特征可能在应用210中使用,也可能不被使用),用户如何与应用交互等
等。在示例性实施例中,UI评估工具180是计算机可读代码,该代码响应于处理单元(多个)
116对其的执行,而使得开发者设备220执行此处描述的操作。
需要指出,假设在本文的附图中,现场测试数据142在计算机系统/服务器12、计算
设备112以及开发者设备220上均相同。但是现场测试数据142可能在这些设备中的一个或
多个上不同,并且还可能被“封装”以便在网络50上传送。例如,计算设备112获得的数据可
能多于传送到计算机系统/服务器12的数据。作为另一实例,针对封装现场测试数据142,计
算设备112可能首先压缩现场测试数据142,然后再将现场测试数据142传送到计算机系统/
服务器12,并且也可以将现场测试数据142变为公知的格式,以便计算机系统/服务器12(例
如,UI评估工具180)能够解释现场测试数据142的元素。
UI评估工具180在图1中被示为在开发者设备220上执行。但是如果需要,UI评估工
具180也可整体或部分地在计算机系统/服务器12上执行。例如,开发者可登录计算机系统/
服务器12上的帐户以查看现场测试数据的表示185。
在一个实例中,现场测试服务器接口40是计算机可读代码,该代码响应于处理单
元(多个)16对其的执行,而使得计算机系统/服务器12执行此处描述的操作。在一个实例
中,插装后的应用140和插装的测量库190是计算机可读代码,该代码响应于处理单元(多
个)216对其的执行,而使得计算设备112执行此处描述的操作。
现在参考图2,其中示出根据一示例性实施例的网络环境。在该实例中,计算机系
统/服务器12被示为与网络50分离,但是也可以是网络的一部分。示出A到E个不同的计算设
备112:智能电话112A、桌上型计算机112B、膝上型计算机112C、平板计算机112D、电视机
112E、以及汽车计算机系统112F。同样适用但未示出的设备有机顶盒和游戏控制台。这些设
备仅作为例子,也可使用其它设备。因此,尽管下面提供的实例重点描述移动设备(例如智
能电话112A或平板计算机112D),本发明的技术也可应用于许多其它计算设备。
到目前为止概述了系统和示例性实施例,现在提供有关其它示例性实施例的更多
细节。
此处的示例性实施例描述用于使用现场测试在软件应用中自动捕获用户交互并
评估用户接口的系统、方法、制品和装置。需要指出,术语“软件程序”、“软件应用”和“应用”
在这里可互换。
此处的示例性实施例的示例性优势使能自动评估应用内的UI,并且为开发者提供
理解用户交互模式的优势。另一示例性优势是:示例性实施例使能应用内所有可能的用户
控件和视图(包括以编程的方式创建的控件)的呈现,将所述呈现收集为能够被设计者和测
试员可视化的序列。
此处的示例性实施例可解决以下问题:
1)应用内实现的用户接口的自动评估对本机用户接口的应用设计具有直接影响,
并且给予应用所有者确定接口视图内的个体交互点的优势,同时还提供在运行这些应用期
间显示于设备上的用户目标控件的可视化。
2)具有透明库,以解决在开发者未专门包括测量条件(这些条件否则将修改应用
的预定执行路径)的情况下,直接测量本机用户接口小部件(widget)的动作度量的问题。
此方法还允许可视化顶层视图集之间的应用内交互路径,从而使得设计者能够理
解用户如何在应用生命周期的各状态之间转换。
整体系统可以允许应用设计者针对移动应用执行以下任务中的一项或多项:
-可视地查看屏幕上呈现给用户的所有应用顶层视图;
-检查给定视图内的个体组件,以定量地测量使用交互;
-当最终用户在现场测试期间导航应用内的视图时,观察这些视图之间的交互路
径的频率;
-可视化执行中的移动应用的应用屏幕截图;和/或
-可视化可执行移动应用的分层式顶层视图对象及其关联的封装用户接口控件。
现在参考图3,该图是示例性系统设计的图示。图3示出可被用于检查和可视化移
动应用的各方面的整体系统。在图3的实例中,计算机系统/服务器12被示为部分地由系统
基础结构310表示。使用开发者设备220的开发者将移动应用210上传到系统基础结构310。
系统基础结构310例如在现场测试服务器接口40的指示下执行处理320,该处理将测量库
325注入应用210中以创建插装后的应用140。如果应用210作为源代码上传,则应用210可将
一个或多个链接添加到源代码中,以便可执行应用能够在适当的时候调用测量库325。如果
应用210作为可执行文件上传,则可以将测量库325添加到应用210。例如,对于用于移动平
台的iOS和Andriod操作系统(此处作为例子使用,但是示例性实施例不限于此)而言,可以
将测量库325添加到可执行代码。在iOS(Apple,Inc.开发的移动操作系统)上,例如,测量库
325通过方法调配被注入,方法调配是一种能够将对特定方法的调用重定向到其它方法的
技术。在Android(Google,Inc.开发的移动操作系统)上,测量库325可通过类加载和/或字
节码重写被注入。类似的注入对于其它操作系统也是可能的。注入测量库325之后的插装后
的应用140然后包含图1所示的插装的测量库190。
插装后的应用140被传送到计算设备112。响应于用户使用插装后的应用140,插装
后的应用140(例如,或者更具体地是指插装的测量库190)执行处理340,该处理对插装后的
应用140进行动态分析。相对于插装后的应用140而言,可以采用许多不同类型的现场测试
数据142。在图3的实例中,动态分析捕获运行中应用的屏幕截图345-1、345-2和345-3。这些
屏幕截图(例如,以JPEG、联合图像专家组或其它格式保存)可被存储为现场测试数据142的
一部分。另外,还保留导致屏幕变化的用户动作,以便于在以后检查屏幕序列。
在某一点,插装的测量库190将现场测试数据142发送到系统基础结构130。测量库
所发送的现场测试数据142可通过许多方式发生。例如,传输可被设定为每10秒进行一次—
这样,到该点为止所收集的任何数据都被发送到服务器。但是,可以初始化库190,以便在连
接到Wi-Fi(或其它高速)连接时更频繁地进行传输,或者在蜂窝连接时减小传输频率;或者
备选地,可以在本地收集采取压缩形式的数据,然后例如在达到空间限制、应用结束其生命
周期、或者库“感测到”(即,接收到通知)存在便于数据上传的最佳网络连接时将数据发送
到服务器。此外,数据可通过测试员执行的人工交互发送(例如,在测试之后,用户进入测量
库190提供的设置面板并选择“上传收集的数据”)。系统基础结构130然后将现场测试数据
142发送到开发者设备220。使用开发者设备220的开发者然后可以创建现场测试数据142的
表示185。例如,可以以在插装后的应用140的执行期间屏幕截图出现的顺序表示应用屏幕
截图345-1、345-2和345-3。此外,也可以表示导致屏幕变化的用户动作。
插装的测量库190执行动态分析340。如图4所示,客户机测量库能够充当执行中的
移动应用与上面执行应用的移动操作系统之间的中介。图4包含计算设备112上的组件的图
示。这些组件是移动应用210、插装的测量库190,以及移动操作系统(OS)405。插装后的应用
140包括移动应用210和测量库190。
参考标号450示出针对从移动应用210和移动操作系统405传递的事件采取的路
径。在方框410,移动应用210执行在显示器124-1的UI125-1上呈现UI控件和视图的操作。
事件407由插装的测量库190捕获。这样,在方框415,测量库190执行捕获在UI上执行用户交
互(例如,与用户控件(或UI的其它部分)进行交互)时创建的事件(多个)的操作。当用户执
行与触摸屏的UI的触摸交互时,触摸交互创建事件407(例如,(短)按下屏幕)。其它事件407
例如可以包括长按或划动(例如,包括速度信息)。点击/触摸事件可能触发,也可能不触发
动作—具体取决于是否存在接收到“事件”的用户控件。期望捕获所有“事件”而不考虑它们
的结果。对于非触摸屏,事件可以是点击鼠标、移动鼠标、敲击键盘等。在一个示例性实施例
中,插装的测量库190创建日志490作为现场测试数据142的一部分。在方框420,插装的测量
库190将有关事件交互的详细度量记录在日志490中。示出日志490中的示例性条目425。条
目425包括大量数据项427:时间戳427-1、事件的绝对坐标427-2、与事件关联的用户接口控
件427-3、事件调用目标427-4、以及已捕获的屏幕截图427-5。时间戳只是有关事件发生事
件的指示。事件的绝对坐标是用户交互在显示器124上的坐标。与事件关联的用户接口控件
是与事件关联的UI控件(即,用户能够与之交互的交互式组件)。此类UI控件例如可以包括
按钮、文本字段、查找条、复选框、放大按钮、切换按钮等等。需要指出,可能不存在用于事件
的用户控件,例如,如果用户按下没有用户控件的区域中的屏幕。事件调用目标可以是UI上
的用户控件,或UI上不与用户控件关联的位置。已捕获的屏幕截图是UI125的屏幕截图(例
如,响应于事件的发生而获取),该屏幕截图以诸如JPEG的格式存储。数据项427仅作为示
例,可能存在更多或更少的数据项。例如,有关事件407(例如,短按、长按、划动)的信息也可
被保留为数据项427。
可以看到,日志490提供相当多的信息,由于每个事件均有时间戳记,因此用户与
移动应用210的UI125-1的交互可被重新创建(例如,通过UI评估工具180)。在一个示例性
实施例中,将针对每个事件收集所有数据项427(例如,时间戳、事件的绝对坐标、事件的预
定目标、屏幕截图—如果之前已经拍摄,则只是对现有屏幕截图的引用)。对于有关“集中交
互”的图6实例,存在针对每个交互生成的事件,但是因为交互在标题栏进行并且没有可动
作的控件,因此不执行任何动作。尽管如此,仍期望捕获所有交互及其对应的事件,并且记
录它们以备分析。
在方框430,插装的测量库190将事件传递到预定目标。该目标是诸如按钮、控件和
图像等之类的组件,该组件将自身显示为源自软件开发包(SDK)定义的类(例如,iOS的
“UIButton”、Android的“Image”等等)的对象。在方框440,移动操作系统405的预定目标处
理该事件。
现在参考图5,其中示出在应用视图之间导航时的执行/交互路径的频率的视图。
因此,该示例性实施例允许一种方法和协议跟踪对应用内的顶层视图的导航。在本公开的
上下文中,屏幕截图是所拍摄的视图的静态图像。例如,在电话簿目录应用中,可以存在一
个显示表中列出的所有联系人的视图(即,viewX);另外还可具有一个视图(即,viewY)来允
许用户在其中一个联系人项中更新他或她的信息。作为用例,用户可以在viewY中更新他或
她的姓名,然后拍摄该视图的屏幕截图。接下来,用户可以导航到viewX,拍摄该视图的屏幕
截图,然后返回到viewY,用户可以将他或她的电话号码保存在viewY中—此操作将触发拍
摄另一屏幕截图(即,更新后的视图的屏幕截图)。因此将有两个viewY的屏幕截图,以及一
个viewX的屏幕截图。在图5的实例中,执行/交互路径A510-1依次包括视图100-1、100-2、
100-4和100-3,其中视图100-1首先出现,视图100-3最后出现。在图5中,每个视图被表示为
一个屏幕。该路径A510-1相对于所有路径510而言以X%频率出现。执行/交互路径B510-2
依次包括视图100-1、100-3、100-2和100-4,其中视图100-1首先出现,视图100-4最后出现。
该路径B510-2相对于所有路径510而言以Y%频率出现。执行/交互路径C510-3依次包括
视图100-1、100-4、100-3和100-2,其中视图100-1首先出现,视图100-2最后出现。该路径C
510-3相对于所有路径510而言以Z%频率出现。
插装的测量库190存储数据以便允许确定路径510。路径510例如可以由UI评估工
具180通过以下方式确定:例如,检查时间戳427-1以及确定一系列视图。例如,可以基于日
志内容(例如,时间戳、事件的坐标、事件的预定目标、屏幕截图)构造路径,例如,如下面所
示:
○如屏幕截图-1所记录,在时间“t”处,在视图UI-1中的标题栏C上的坐标X,Y处触
发事件;
○如屏幕截图-1所记录,在时间“t+1”处,在视图UI-1中的标题栏C上的坐标X+1,Y
+1处触发事件;
○如屏幕截图-2所记录,在时间“t+2”处,在视图UI-1中的按钮B上的坐标X+5,Y+7
处触发事件;
○如屏幕截图-3所记录,在时间“t+3”处,在视图UI-2中的坐标0,0处触发转变事
件;
○如屏幕截图-3所记录,在时间“t+4”处,在视图UI-2中的横幅D上的坐标X,Y处触
发事件。
根据上述五个示例性数据点,可以推断从视图UI-到视图UI-2的转变,但是只有在
重复地触摸视图UI-1中的标题栏C之后。屏幕截图-1和屏幕截图-2是同一视图UI-1的可视
表示,但是它们处于不同的状态(例如,按下前按钮和后按钮B)。由于按下按钮导致新的视
图出现,因此拍摄新的屏幕截图-3(视图UI-1的屏幕截图-3)。
因此,UI评估工具180可创建图5作为现场测试数据的表示185,尽管该数据可通过
多种其它的方式呈现(例如,提供这样的视图100:在该视图中,每个路径510以文本的形式
列出,而非像图5那样由屏幕表示)。
因此,应用设计者可以分析使用应用210、410的用户所采取的路径510。基于以下
众多原因,这是有用的:例如设计者确定特定路径510异常(例如,由于编程错误),或者确定
特定特征未被使用。
示例性实施例还提供一种跟踪与特定用户接口控件的定向交互的方法和协议。这
在图6中示出。图6的图示可由UI评估工具180创建。在计算设备112的显示器124-1的UI
125-1(UI125-1的仿真版本)上示出多种不同的触摸交互610。当用户执行与UI的触摸交互
时,这些触摸交互创建诸如(短)按下屏幕之类的事件。其它事件也可包括例如长按或划动
(例如,包括速度信息)。为简单起见,图6所示的触摸交互610被假设为是短按屏幕。因此,此
类触摸交互610是短按(在该实例中)的表示,该表示例如可以由UI评估工具180使用诸如存
储在特定屏幕截图427-5的日志490中的事件427-2的绝对坐标来生成。
该实例示出标题栏620和“后退”按钮623。具有数个用户控件625(用户控件A)和
630(用户控件B)、图像M635、图像P640、标签L645、按钮650-1到650-5,它们都是选项卡。
通过使用触摸交互610,开发者可以确定(参考标号660)在标题栏620上具有集中动作,但是
上面没有用户控件。也就是说,在标题栏620上执行触摸交互不会导致动作发生。
对于参考标号670,指示存在大量与静态图像P640(其中“静态”表示图像不是用
户控件,而有些图像可以是用户控件)的交互,但是与用户控件B630的交互较少。这可以指
示用户认为图像P640应该调用动作,而图像P640未执行此动作。参考标号675指示在标签
L645的边缘上存在频繁的交互。对于标签L645上的频繁交互,该分析数据指示用户错误
地触摸标签,可能将标签混淆为按钮并且期望动作发生。对于应用创建者而言,这是有价值
的反馈,以便考虑对视图的未来更新。参考标号680指示按钮选项卡5、650-5未被使用。这可
指示未被使用的特征。
现在参考图7,该图是用于针对现场测试服务器接口,使用现场测试在软件程序中
自动捕获用户交互并评估用户接口的逻辑流程图。图7还示出根据一示例性实施例的示例
性方法的操作、包含在计算机可读存储器中的计算机程序指令的执行结果,和/或在硬件中
实现的逻辑所执行的功能。该图中的互连方框也可被视为用于执行方框中的功能的互连部
件。假设现场测试服务器接口40使计算机系统/服务器12执行图7中的方框。图7中的许多操
作已经在上面进行描述,例如参考图3描述的操作。
在方框705,计算机系统/服务器12接收应用210。应用210可以是被设计为在诸如
智能电话或平板计算机之类的移动计算设备112上执行的移动应用。在方框710,计算机系
统/服务器12将测量库325注入应用210中以插装应用并创建插装后的应用140。在方框720,
计算机系统/服务器12将插装后的应用140分发到选定的计算设备。例如,可以分发到请求
应用的任意计算设备112,计算机系统/服务器12可将应用推送到选定的(可能是所有的)计
算设备112等。
在方框725,计算机系统/服务器12触发某些选定的计算设备以发送它们的现场测
试数据。此操作是可选的,但是是计算设备112(例如,以及插装的测量库190)确定计算设备
112应将自己的现场测试数据142发送到计算机系统/服务器12的一种方式。该触发可以响
应于开发者请求执行触发而执行,或者可以例如在某一时间段过去之后执行。在方框730,
计算机系统/服务器12从某些(例如,或者全部)选定的计算设备接收现场测试数据142。在
一个示例性实施例中,计算机系统/服务器12将现场测试数据142传送到开发者设备220(方
框735)。在另一示例性实施例中,计算机系统/服务器12可分析来自计算设备112的数据,从
而可以执行图9的操作。在后一实例中,设计者可使用开发者设备220,例如通过Web接口访
问计算机系统/服务器12,并且查看或接收与UI进行的用户交互的表示,如下面参考图9所
述。
图8是用于针对具有插装后的应用的计算设备,使用现场测试在软件程序中自动
捕获用户交互并评估用户接口的逻辑流程图。图8还示出根据一示例性实施例的示例性方
法的操作、包含在计算机可读存储器中的计算机程序指令的执行结果,和/或在硬件中实现
的逻辑所执行的功能。该图中的互连方框也可被视为用于执行方框中的功能的互连部件。
在方框810,计算设备112接收插装后的应用140。假设方框815和820由计算设备
112例如在插装的测量库190的指导下执行。在方框815,插装的测量库190使计算设备112执
行图4的方框415、420和430。更具体地说,插装的测量库190使计算设备112执行捕获在UI上
执行用户交互(例如,与用户控件(或UI的其它部分)进行交互)时创建的事件(多个)的操作
(方框415)。在方框420,插装的测量库190使计算设备112将有关事件交互的详细度量记录
在日志490中。在方框430,插装的测量库190使计算设备112将事件传递到预定目标。在方框
820,插装的测量库190使计算设备112封装现场测试数据并将该数据传送到计算机系统/服
务器12。响应于触发器执行此操作。例如可以从计算机系统/服务器12接收触发器,也可能
从开发者设备220接收触发器。触发器也可由插装的测量库190生成(例如,在经过某一时间
段之后)。封装可以是简单地将现场测试数据142发送到计算机系统/服务器12,也可以更复
杂,例如使用压缩和/或将现场测试数据142变为公知的格式。
现在参考图9(包括图9A和9B),其中示出用于针对UI评估工具,使用现场测试在软
件程序中自动捕获用户交互并评估用户接口的逻辑流程图。图9还示出根据一示例性实施
例的示例性方法的操作、包含在计算机可读存储器中的计算机程序指令的执行结果,和/或
在硬件中实现的逻辑所执行的功能。该图中的互连方框也可被视为用于执行方框中的功能
的互连部件。
假设图9中的方框由开发者设备220例如在UI评估工具180的指导下执行。为了便
于参考,假设开发者设备220执行各个方框。在方框910,开发者设备220访问现场测试数据
142。现场测试数据142例如可以通过计算机系统/服务器12从单个计算设备112接收,也可
以例如在某一时间段内从多个计算设备112接收。开发者设备220然后访问存储的现场测试
数据142。例如,图9中的方框可以响应于来自设计者的输入,而使用UI评估工具180执行。
在方框920,开发者设备220分析来自一个或多个计算设备的与先前在一个或多个
计算设备上执行的应用的用户接口进行的用户交互的数据。如上所述,该数据对应于与应
用的UI进行的用户交互所导致的事件。因此,在分析之前并且响应于应用在一个或多个计
算设备上的执行而获得该数据。方框922-928是可能的分析的实例。在方框922,开发者设备
220确定应用的UI视图之间的交互的路径和路径频率。应用的UI内的视图之间的交互路径
频率的实例在图5中示出。在方框924,开发者设备220针对应用的UI视图,确定所跟踪的与
UI的特定UI控件以及其它区域的触摸交互。图6示出针对应用的UI视图所跟踪的与UI的特
定UI控件以及其它区域的触摸交互的图示。
在方框926,开发者设备220例如沿着时间线确定应用的应用屏幕截图。屏幕截图
345的一个实例在图3中示出。在图3的实例中,屏幕截图345可以沿着时间线内出现,从而使
得(例如,基于时间线)屏幕截图345-1出现在屏幕截图315-2、315-3之前;屏幕截图315-2出
现在屏幕截图345-1之后,但是在屏幕截图315-3之前;并且屏幕截图315-3在屏幕截图315-
1、315-2之后最后出现。在另一实例中,可以有利地确定源自单个视图的屏幕。例如,在图5
中,视图100-2、100-3和100-4源自视图100-1。有用的是生成从视图100-1开始的一组视图,
通过箭头或其它线条连接视图100-1与视图100-2、100-3和100-4。这允许设计者了解可从
视图100-1到达的其它视图是否未被使用。
在方框928,开发者设备220确定UI的给定视图内的个体用户组件的定量测量的使
用交互。例如,如果设计者对图6的用户控件A625特别感兴趣,则UI评估工具180可以关注
该特定的用户控件。
在方框930,开发者设备220生成与UI进行的用户交互的一个或多个表示。方框
932-938是方框930的实例,并且方框932-938分别对应于方框922-928。在方框932,开发者
设备220生成应用的UI内的视图之间的交互的路径和路径频率的指示。图5是可能针对此情
景生成的指示的实例。
在方框934,开发者设备220针对应用的UI视图,生成与UI的特定UI控件以及其它
区域的触摸交互的指示。图6是此操作的一个实例。
在方框936,开发者设备220生成应用的应用一组屏幕捕获。图3中的屏幕截图345
是该组截图的一个实例。图5也可被视为该组截图的一个实例,前提是视图100被屏幕截图
345替代。
在方框938,开发者设备220生成UI的给定视图内的个体用户组件的定量测量的使
用交互的指示。如果限于仅示出用户控件A625的触摸交互,则图6(例如)是此操作的实例。
在方框940,开发者工具220输出与UI进行的用户交互的一个或多个表示。此类输
出可以是到存储器(方框942)、网络50(方框944)或显示器(方框946)中的一项或多项。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算
机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、
完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方
式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可采取在一个或
多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的
程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机
可读信号介质或者计算机可读存储介质。计算机可读存储介质不包括传播信号,例如可以
是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合
适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)将包括以下项:具有一条
或多条线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦
式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器
件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任
何能够包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者
与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据
信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用任何多种形式,包
括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以
是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或
者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限
于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面
的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、
Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语
言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立
的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或
服务器上执行。在涉及远程计算机的情形中,远程计算机或服务器可以通过任意种类的网
络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机
(例如利用因特网服务提供商来通过因特网连接)。
上面参照根据本发明的多个实施例的方法、装置(系统)和计算机程序产品的流程
图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图
和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供
给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使
得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,生成了实现流程图
和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、
其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的
指令就生成出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令
的制造品(articleofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备
上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以生成计算机实现
的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中
的一个或多个方框中规定的功能/动作的过程。
此处使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如
此处所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另
有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特征、整
数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其他特征、整数、步骤、操
作、元素、组件和/或其组合的存在或增加。
以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或
步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该
功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性
的,也并非是要把本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,在
不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说
明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明
了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。