CN110959153B - 使用灵活后处理的应用分析 - Google Patents

使用灵活后处理的应用分析 Download PDF

Info

Publication number
CN110959153B
CN110959153B CN201880049868.7A CN201880049868A CN110959153B CN 110959153 B CN110959153 B CN 110959153B CN 201880049868 A CN201880049868 A CN 201880049868A CN 110959153 B CN110959153 B CN 110959153B
Authority
CN
China
Prior art keywords
application
post
processor
screens
electronic device
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.)
Active
Application number
CN201880049868.7A
Other languages
English (en)
Other versions
CN110959153A (zh
Inventor
胡恒翔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN110959153A publication Critical patent/CN110959153A/zh
Application granted granted Critical
Publication of CN110959153B publication Critical patent/CN110959153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)

Abstract

本公开描述了用于使用灵活后处理进行应用分析的方法和装置。一个测试套件可用于针对多种不同潜在问题类型分析应用。在示例实现中,将应用提供给应用运行器。应用运行器执行该应用,并根据测试套件从用户交互角度爬取通过各种用户界面(UI)屏幕。基于不同的UI屏幕,应用运行器生成工件集合,其包含与伴随应用的操作的不同潜在问题类型有关的元数据。向多个不同的后处理器提供对工件集合的访问,每个相应的后处理器对应于相应问题类型。给定的后处理器通过遍历元数据、提取元数据的相关部分并产生指示与给定的后处理器相对应的问题类型的任何潜在问题的报告来处理工件集合。

Description

使用灵活后处理的应用分析
相关申请
本申请要求在2018年8月22日提交的美国实用新型专利申请16/109,453的优先权,该申请继而根据35U.S.C.第119(e)条要求在2017年12月21日提交的美国临时专利申请62/609,304的优先权,它们在此通过引用全文并入在此。
背景技术
电子设备在制造、医疗保健、商业、社会互动、娱乐和通信中起着不可或缺的作用。例如,大多数人认为他们的智能手机是他们日常生活的重要组成部分。电子设备包括个人计算设备,例如智能手机、笔记本计算机、平板电脑、智能手表和其他可穿戴设备、游戏机、电视和其他娱乐设备。电子设备还包括更加实用的物品,例如智能扬声器、带有传感器以检测热量或污染物的安全设备、检测未经授权活动的安全性设备以及物联网(IoT)设备。此外,具有计算能力的电子设备被嵌入在许多不同类型的现代设备中,从医疗设备到家用电器、从车辆到工业工具。因此,为了更大的目的,以多种尺寸、形状因数和能力制造电子设备。
为了实现这些目的,创建了可执行应用。可执行应用包括可以由一个或多个处理器执行以提供某些功能或实现设备特征的代码、指令和软件等。从历史上看,应用包括在购买电子设备时,或者客户购买了在装有物理介质(例如存储应用的软盘)的盒子中的应用。以前,随着电子设备开发步伐的缓慢以及这些交付应用的物理方法的出现,很少(例如每年)产生新版本的应用。
每次产生新的应用或应用的新版本时,都会投入大量的精力来减少发布应用时出现的问题或难题的数量。这些问题有时称为软件错误,发现它们的过程称为软件测试。软件测试是一项时间和资源密集的工作。但是,由于过去很少产生新版本的应用,因此,在应用发布之前查找软件错误同样很少出现。但是,今天,新的应用和应用的新版本频繁发布。取代将应用问题版绑定到新设备、新操作系统版本或年度更新,可以非常频繁地(例如每周)推出应用问题版。
大多数设备用户熟悉虚拟应用市场,现在可以从中获得新的应用和应用的新版本。例如,大多数智能电话、平板电脑、可穿戴设备和台式计算机等访问虚拟应用市场,该市场通常与电子设备的运行系统相关联。因此,用户可以经由某些虚拟应用市场通过网络获取应用和应用更新。应用开发人员通过提供更频繁的更新来提供新特征和解决用户发现的问题,从而对应用的易于分发做出了响应。幸运的是,可以通过虚拟应用市场更快地解决用户发现的问题,但是这些问题仍然存在问题。这样的问题导致用户感到沮丧和不便,甚至可能使应用或整个电子设备无法运行。此外,随着社交媒体的普及,应用问题的知识可以更快地传播。因此,这些有问题的应用问题的存在会导致用户离开一个应用,而进入竞争对手的应用,从而导致市场份额下降。
由于这些各种因素,应用问题给应用开发人员带来了前所未有的困难。具体来说,应用发布的频率更高,而应用问题的影响则传播得更远和更快。不幸的是,在发布应用之前发现应用问题的能力并未跟上虚拟应用市场的存在所带来的应用开发的加快的步伐。这导致更高的开发成本、更慢的发布计划和/或更多的用户不满意。因此,发现或处理应用问题的更好方法可以支持对通过虚拟应用市场分发的应用以及总体对应用的快速改进和更可靠的更新。
提供该背景技术部分中的描述以大体呈现本公开的上下文。除非本文另外指出,否则本节中提供的材料既不明确也不暗含承认是本公开或所附权利要求的现有技术。
发明内容
描述了用于使用灵活后处理进行应用分析的技术和装置。这些技术和装置使一个测试套件能够用于针对多种不同潜在问题类型分析应用。在示例实现中,将应用提供给执行该应用的应用运行器。使用测试套件,应用运行器从用户交互角度爬取通过各种用户界面(UI)屏幕。基于未发现的不同UI屏幕(例如,表示不同应用状态的不同UI屏幕,每个应用状态对应于不同UI屏幕中的相应UI屏幕),应用运行器生成工件集合,该工件集合包含与伴随应用的操作的不同潜在问题类型有关的元数据。潜在问题可以表示导致或指示无法实现预期特征或预期结果的应用操作的异常数据、问题、UI错误或计划外行为。这些不同潜在问题类型可以包括以下中的一个或多个:可访问性问题、UI问题、UI外观问题、内存使用问题、字符串压缩问题、稳定性问题、处理器使用问题、多线程实现问题、网络使用问题或其他问题类型。可以基于仿真的用户交互将工件集合组织为有向图。或者,可以通过测试用例或特征来组织工件集合。通过有向图进行组织,有向图可以具有多个节点和多个边,其中,每个相应的节点对应于多个UI屏幕中的一个UI屏幕或表示多个应用状态中的一个应用状态,并且每个边分别表示实现从多个屏幕的第一UI屏幕过渡到第二UI屏幕的用户交互。向多个不同的后处理器提供对工件集合的访问,每个相应的后处理器对应于相应的问题类型。给定的后处理器通过以下来处理工件集合:遍历元数据,提取元数据的相关部分,评估提取的元数据并且产生指示与给定的后处理器相对应的问题类型的任何潜在问题的报告。因此,例如,通过使用多个不同的后处理器,其中,每个相应的后处理器对应于相应的问题类型,可以使用一个测试套件来生成一组与多种不同潜在应用问题类型相关的工件集合,并且可以避免产生多个不同测试套件的工作量和资源的重复。此外,在某些情况下,可以应用针对不同问题类型的新后处理器,该后处理器处理工件集合,而无需实质性地改变测试套件。此外,问题提交后处理器可以查看由其他后处理器提供的报告,以产生问题报告,该报告突出显示已标识的更相关的问题(例如,在出现频率或可能的最终用户影响方面的优先级更高的问题)供人工考虑。
以下描述的方面包括由至少一个电子设备执行的用于使用灵活后处理进行应用分析的方法。该方法包括加载要分析的应用并获得包括多个测试用例的测试套件,其中,每个测试用例对应于该应用的至少一个特征。该方法还包括从用户交互角度爬取应用。所述爬取包括基于测试套件的多个测试用例激活用户交互元素,以使应用产生多个用户界面(UI)屏幕。所述爬取还包括确定由应用产生的多个应用状态,其中,每个相应的应用状态对应于多个UI屏幕中的相应UI屏幕。该方法另外包括基于多个应用状态生成工件集合。该方法还包括处理工件集合以调查与该应用的操作有关的多种问题类型。
下面描述的各方面还包括至少一个用于实现使用灵活后处理来进行应用分析的电子设备。该电子设备包括一个或多个处理器以及一个或多个计算机可读存储介质,该计算机可读存储介质存储由一个或多个处理器可执行的指令。该计算机可读存储介质包括被配置为提供多个特征的应用和包括多个测试用例的测试套件,其中,每个测试用例对应于多个特征中的至少一个特征。计算机可读存储介质还包括应用运行器,该应用运行器被配置为使用测试套件运行应用(例如,执行或模拟应用的执行)。应用运行器包括应用爬取器,该应用爬取器被配置为从用户交互角度遍历应用并基于测试套件提供元数据。应用运行器还包括工件生成器,该工件生成器被配置为基于元数据生成工件集合。所述计算机可读存储介质还包括:多个后处理器,其被配置为访问所述工件集合,而每个相应的后处理器被配置为使用所述工件集合来调查与所述应用的操作有关的多种问题类型中的相应问题类型。
下面描述的方面另外包括至少一个用于实现使用灵活后处理来进行应用分析的电子设备。该电子设备包括一个或多个计算机可读存储介质,该计算机可读存储介质存储处理器可执行指令,该处理器可执行指令响应于一个或多个处理器的执行而使该电子设备执行操作。这些操作包括运行要分析的应用,并基于测试套件模拟用户交互元素的激活,以使该应用产生多个UI屏幕。所执行的操作还包括确定由应用产生的多个应用状态,其中,每个相应的应用状态对应于多个UI屏幕中的相应的UI屏幕。所执行的操作另外包括:基于多个应用状态生成工件集合,其中,该工件集合包括针对多个应用状态中的每个应用状态的多个UI屏幕中的UI屏幕。所执行的操作还包括使用第一后处理器处理工件集合,以调查与应用的操作有关的第一问题类型,并基于该处理产生与第一问题类型相对应的第一报告。
以下描述的各方面还包括一种用于实现使用灵活后处理来进行应用分析的系统。该系统包括被配置为提供多个特征的应用和包括多个测试用例的测试套件,其中,每个测试用例对应于多个特征中的至少一个特征。该系统还包括应用运行器,该应用运行器被配置为使用测试套件运行该应用。应用运行器包括用于从用户交互角度爬取应用以基于测试套件提供元数据的装置。应用运行器还包括用于基于元数据生成工件集合的装置。该系统进一步包括用于处理该工件集合的后处理器装置,该后处理器装置被配置为使用该工件集合来调查与应用的操作有关的多种问题类型。
在附图和以下描述中阐述一种或多种实现的细节。根据说明书和附图以及根据权利要求书,其他特征和优点将显而易见。因此,提供本发明内容部分以介绍在具体实施方式和附图中进一步描述的主题。因此,发明内容不应被认为描述必要特征,也不应被解释为限制要求保护的主题的范围。
附图说明
参考以下附图描述了用于实现使用灵活后处理来进行应用分析的装置和技术。在整个附图中使用相同的数字来引用相似的特征和组件:
图1示出了示例环境,包括具有应用运行器和多个后处理器的应用分析器,在其中,可以实现使用灵活后处理进行应用分析。
图2描绘了对于示例地图绘制应用而言的两个示例用户界面(UI)屏幕,这些屏幕图示了作为示例应用分析的一部分的两个UI屏幕之间的爬网。
图3示出了示例应用运行器,其包括应用爬取器和可以生成工件集合的工件生成器。
图4示出了与工件生成器和多个后处理器结合的示例性应用爬取器,所述工件生成器和多个后处理器各自可以产生多个报告中的相应报告。
图5示出了示例工件集合,其被描绘为具有多个节点和边的有向图,其可以表示UI屏幕及其之间的UI链接。
图6示出了示例后处理器,该后处理器可以根据相应的问题类型处理工件集合以产生针对该问题类型的报告。
图7示出了示例问题提交后处理器,用于处理一个或多个其他后处理器所报告的问题,以标识更相关的那些问题以供手动考虑。
图8示出了用于实现使用灵活后处理来进行应用分析的示例方法。
图9示出了用于实现使用灵活后处理来进行应用分析的其他示例方法。
图10示出了根据一个或多个实现的示例电子设备的各种组件,其可以实现使用灵活后处理来进行应用分析。
具体实施方式
总览
互联网的创建(包括对互联网的高速宽带访问)已经实现了虚拟应用市场的发展。使用虚拟应用市场,用户可以经由网络快速和轻松地下载应用。应用用于为应用开发人员的客户提供令人兴奋的新特征和服务,以及提供现有服务的改进版本。为了使这些客户满意,开发人员正在不断更新他们的应用。此外,某些应用提供了关键功能,例如与车辆相关的功能或提供安全或安全性特征的功能。提供关键功能的应用会定期更新以应对任何潜在威胁。由于所有这些因素,正在对应用进行修改,然后以比过去更高的频率重新发布。对于这些问题版每个,应用开发人员都在努力减少给定应用中存在的隐藏问题的数量,因为这些问题(或错误)会加剧和疏远客户。为此,应用开发人员分析每个应用,以寻找在大多数情况下可能对许多用户造成严重问题的问题,或在极少数情况下可能仅对少数用户造成单个问题的问题。
为了针对潜在问题分析应用,可以响应于设计用于在特定关注领域中寻找问题的测试用例来执行该应用,例如内存问题或用户界面(UI)问题。每个测试用例都被设计来测试应用以生成与相应关注区域有关的元数据。但是,现代应用,即使是运行在智能手机或可穿戴设备(如增强现实(AR)眼镜)上的应用,也相当复杂。为了仅针对单个关注区域分析应用,测试装置可以采用数十个或数百个设计为针对该区域得出元数据的测试用例。在多个关注区域的情况下,将创建多组测试用例,每组测试用例都对应于相应的区域。此外,一些测试用例与一般用法有关,或为后续应用其他测试用例提供基础。通过将这些测试用例全部汇总在一起,一套测试用例可能包含数千个相互关联的测试用例。
创建这些测试用例是面向细节且耗时的工作。因此,具有数百或数千个测试用例的测试套件表示对时间、专业知识和其他资源的大量投资。分析应用的现有方法涉及将多个测试用例或同质测试套件应用于该应用,以针对每个特定的关注领域生成元数据。然后可以手动检查元数据,以确定特定区域是否存在问题。为每个此类关注领域创建一个不同的专用测试套件,并对每个专用测试套件重复进行应用分析。因此,为每个潜在问题区域创建每个测试套件所投入的资源和成本被重复很多次。换句话说,致力于发现应用有问题的工作的很大一部分都涉及创建每个测试用例,而这种工作通常会在多个关注领域中重复进行。因此,这种现有方法速度慢、成本高并且浪费了应用开发资源。
相反,本文描述的实现使得能够使用更少的测试套件(甚至包括单个测试套件)来针对多个不同的潜在问题区域分析应用。在本文中,这些不同的关注领域被称为伴随应用操作的不同问题类型。在示例实现中,在一个或多个电子设备上运行的应用分析器包括二进制管理器和应用运行器。二进制管理器将应用加载到应用运行器。应用运行器包括应用执行器、应用爬取器、工件生成器和测试套件接口。
应用执行器执行应用。使用经由测试套件接口获取的测试套件的测试用例,应用爬取器例如通过激活用户交互元素从用户交互角度遍历各种用户界面(UI)屏幕。基于未发现的不同UI屏幕,工件生成器生成工件集合,其包含与伴随应用操作的不同问题类型有关的元数据。该工件集合可以包括例如有向图(其中,每个节点对应于一个UI屏幕)或者应用状态或其某种组合等等。向多个不同的后处理器提供对工件集合的访问,每个相应的后处理器对应于相应的问题类型。在二进制管理器的控制下,给定的后处理器通过遍历元数据、提取元数据的相关部分、评估提取的元数据并生成报告来处理工件集合。该报告指示与给定后处理器相对应的问题类型的任何潜在问题。在某些情况下,可以针对不同问题类型生成新的后处理器,该后处理器可以处理工件集合,而无需改变测试套件。
因此,一个测试套件可用于生成与多种不同潜在应用问题类型相关的工件集合。可以将不同可插拔后处理器中的相应一些应用于该工件集合,以发现与不同的相应问题类型有关的问题。以这种方式,可以避免重复的工作和资源以产生多个不同的测试套件,例如每个问题类型一个测试套件。
下面参考相关附图讨论各种详细程度的示例实现。下面的讨论首先阐述示例操作环境,然后描述示例方案、技术和硬件。接下来参考各种流程图描述示例方法,并且讨论以示例电子设备及其相关方面结束。
示例环境
图1示出了示例环境100,该示例环境100包括具有应用运行器120和多个后处理器116的应用分析器108。应用分析器108可以实现使用灵活后处理来进行应用分析。环境100还包括至少一个应用110。为了实现或提供用于执行应用分析器108的平台,环境100还包括一个或多个电子设备102。如图所示,存在多个电子设备102-1…102-n,其中,“n”代表某个正整数。每个电子设备102包括至少一个处理器104和至少一个计算机可读存储介质106。
存储介质106可以存储可执行代码,例如一个或多个程序、一个或多个模块、处理器可执行指令和至少一个应用等。因此,处理器104可以执行代码或处理器可执行指令以执行某种方法,进行处理,实现方案并且实现应用分析器108的至少一部分等等。电子设备102可以包括:诸如智能电话或笔记本计算机之类的便携式设备;台式计算机;服务器计算机或机架;以及,云计算资源的一部分;等等。因此,在一些实现中,可以在便携式设备上执行应用分析器108的至少一部分。替代地,可以在工作站计算机上执行应用分析器108。在其他实现中,可以由从提供云计算功能的基础设施中提取的分布式计算系统执行应用分析器108。此外,在示例组合实现中,云基础设施或服务器计算机与诸如平板计算机的便携式设备互操作以实现应用分析器108。例如,一些应用执行可以通过在服务器处理器上的仿真来执行,而一些应用执行可以在应用针对的移动设备上执行。而且,可以使用客户端-服务器体系结构或使用至少一个库来完全或部分地实现应用分析器108。
不管如何实现多个电子设备102-1至102-n中的一个或多个,至少一个电子设备102用于实现应用分析器108。在示例实现中,应用分析器108包括至少一个测试套件114、至少一个后处理器116、至少一个二进制管理器118和至少一个应用运行器120。应用运行器120可以与多个后处理器116-1、116-2…116-n交互,其中,“n”代表某个正整数。在本文中在各种上下文中使用变量“n”,并且其值在各种上下文中可以相同或不同。应用运行器120包括应用爬取器122和工件集合124。
在示例实现中,二进制管理器118控制在应用运行器120、测试套件114、多个后处理器116-1至116-n和应用110之间的交互或对其的访问。例如,在分布式计算环境中,二进制管理器118可以启动应用运行器120,检索测试套件114,并激活选择的后处理器116。二进制管理器118还可以加载或否则提供对应用110的访问。应用110提供或供给多个特征112-1至112-n。
特征112使得某些功能、工具和交互等能够提供给应用110的用户。可以根据抽象的不同相对级别或类别来描述特征112。在相对较高的级别或类别下,特征112可以包括电子通信、字处理、图像处理、Web浏览和数据库管理等。在中间级别或类别,特征112可以包括搜索、拍照、提供打印预览、与打印机通信、更新显示器、更新社交媒体馈送、访问联系人和将项目发布到社交网络等等。在相对较低的级别或类别,特征112可以包括接受文本输入、显示“可点击”的虚拟按钮、放大显示器、读出文本或提供其他功能以实现可访问性等等。然而、可以以不同的抽象级别或以替代方式来定义多个特征112-1至112-n。
在操作中,二进制管理器118将应用110提供给应用运行器120,应用运行器120可以运行该应用(例如,执行该应用或模拟该应用的执行)。应用爬取器122与应用110交互以基于测试套件114的内容从用户交互的角度测试各种特征112。下面参考图2描述用户交互和用户界面(UI)屏幕。在执行应用110时,应用爬取器122收集由应用110产生的元数据。应用运行器120从元数据中产生工件集合124。该工件集合124包括经过组织的数据(例如,通过特征112或通过测试用例组织为有向图),以使得能够调查与应用的操作有关的多种问题类型。每个后处理器116被定制以调查相应问题类型。此外,可以添加新的后处理器116以调查新的问题类型,而无需更改测试套件114,或者至少无需重写测试套件114。
当经由多个电子设备102-1至102-n中的一个或多个的一个或多个处理器104和一个或多个存储介质106进行操作时,二进制管理器118可协调各种模块、应用和其他组件之间的交互。处理器104可以执行由计算机可读存储介质106存储的处理器可执行指令或代码,以使至少一个电子设备102执行操作或实现各种设备功能。在某些情况下,处理器104被实现为通用处理器(例如,多核中央处理器(CPU))、专用集成电路(ASIC)或其中电子设备的组件可以集成在其中的片上系统(SoC)。在其他情况下,处理器104被实现为被配置为并行操作的多个处理器核或多核处理器或作为分布式处理系统的一部分。
存储介质106可以包括任何适当类型的存储器介质或存储介质,例如只读存储器(ROM)、可编程ROM(PROM)、随机存取存储器(RAM)、动态RAM(DRAM)、静态RAM(SRAM)或闪存。在该讨论的上下文中,电子设备102的存储介质106被实现为至少一个基于硬件的存储介质,其不包括瞬态信号或载波。在一些情况下,存储介质106将电子设备102的固件、操作系统、模块和/或应用存储为指令、代码或其他信息。指令或代码可以由处理器104执行以实现电子设备102的各种功能,诸如与应用分析、软件测试、问题报告、软件调试、代码优化和其组合等有关的那些功能。在该示例中,存储介质106存储处理器可执行指令或代码以实现应用分析器108。
示例方案,设备和组件
图2描绘了一个示例地图绘制应用210的两个示例用户界面(UI)屏幕202,这些屏幕说明了两个UI屏幕之间的示例爬网200。可以以类似于爬取万维网(WWW)的方式执行爬网200,网页的URL链接类似于UI屏幕202的用户交互元素204,除了爬网200的方向和用户输入的内容可以由测试用例指导(如下面参考图3所述)。尽管此示例集中于地图绘制应用210,但是用于通过不同UI屏幕202进行爬取的原理通常适用于应用110或与应用110有关。在左侧示出了第一UI屏幕202-1,在右侧示出了第二UI屏幕202-2。每个UI屏幕202包括用户可见或用户可观察到的各种UI元素(例如,作为触觉或听觉内容)。某些UI元素能够被观察,但不能与之交互。但是,其他UI元素使用户能够与它们交互。这些UI元素在本文中被称为用户交互元素204。明确示出了八个示例性用户交互元素204,但是可以存在更多或更少。
第一UI屏幕202-1包括用于地图显示208的区域。文本输入框204-6在地图显示208上方。文本输入框204-6包括菜单激活元素204-2和语音交互激活元素204-1。地图显示208的区域包括多个虚拟按钮:上按钮204-4和下按钮204-5。即使实际的第一UI屏幕202-1不会在视觉上描绘滑动交互元素204-3,但是该滑动交互元素204-3也可能存在。通常使用滑动交互元素(或长按、捏或其他多指手势交互),应用110可能会受到用户的影响。对于地图绘制应用210,激活滑动交互元素204-3的向下运动会使地图的在地图显示208中可见的部分滚动。
可见的用户交互元素204可以类似于手势相关的交互元素那样表现。例如,按下上按钮204-4可以激活菜单以改变地图显示208的外观(例如,从道路切换到地形)。按下下按钮204-5可以激活地图绘制应用210的导航功能(例如,以在地图显示208上显示用于输入目的地或路线的框或启用图钉放置特征)。按下菜单激活元素204-2可以导致显示下拉菜单或滑出菜单,该菜单呈现出地图应用210可获得的其他选项、设置或特征。按下语音交互激活元素204-1可以使地图绘制应用210访问关联设备的麦克风以检测声音并导致显示相应的口头单词。
对于图2的示例爬网200,例如通过触摸文本输入框204-6来激活文本输入框204-6。触摸文本输入框204-6使对应的用户交互链接206被跟随或从第一UI屏幕202-1导航到第二UI屏幕202-2。这里,文本输入框204-6的激活导致将要显示不同的UI屏幕202。首先,在第二UI屏幕202-2中呈现键盘204-7。键盘204-7使用户能够将文本输入到文本输入框204-6中。第二,添加文本(例如,“Mountain V…”)导致显示建议列表204-8,该建议列表204-8可以最初由先前的条目填充。建议列表204 8还可以用作用户交互元素204,因为建议的选择将所选的建议提升到文本输入框204-6中,并且可以启动该建议的关联搜索或显示。
因此,在用户交互链接206上的导航以至少一种不平凡的方式(例如,通过不止文本、通过添加不同的用户交互元素204等)产生了不同于先前的UI屏幕202的新的UI屏幕202。通常,作为应用分析的一部分,应用爬取器122(作为图1中的应用运行器120的组成部分)使应用110通过基于测试套件114查找、标识然后激活各种用户交互元素204来创建每个UI屏幕202。因此,应用爬取器122从用户交互的角度爬取应用110作为其执行的一部分。下面参考图3描述应用运行器120的附加示例实现。
图3在300处大体示出了示例应用运行器120,该示例性应用运行器120包括应用爬取器122和工件生成器308。如图所示,应用运行器120还包括测试套件接口304、应用执行器306和后处理器接口310。测试套件114包括多个测试用例302-1至302-n,其中,“n”表示某个正整数。在一些实现中,每个测试用例302被设计成针对或测试应用110的至少一个特征112。为了完全测试给定的特征112,尤其是在相对较高或中等水平上定义的一个特征,多个测试用例302可以针对给定特征112的不同方面或针对在不同场景或应用模式下的给定特征112。因此,“n”个特征112可以具有与“n”个测试用例302不同的数量。
在示例操作中,应用执行器306使应用110执行。应用执行器306可以在服务器电子设备的虚拟机中,使用由云计算功能提供的平台等等,在应用110将被分发到的实际硬件(例如,目标电子设备)上执行应用110。应用爬取器122与应用执行器306进行交互,以便可以将多个测试用例302应用于应用110的执行。为此,应用爬取器122从测试套件接口304接收测试用例302。实际上,测试套件接口304获得测试套件114并将多个测试用例302转发到应用爬取器122。
因此,基于测试套件114并使用应用执行器306,应用爬取器122从用户交互角度跨多个UI屏幕202爬取应用110,如上面参考图2所述。在爬取期间,应用爬取器122使得所述执行产生元数据,例如UI屏幕202和应用状态数据,其在下面将参考图4和5进行描述。使用该元数据,工件生成器308生成工件集合124。工件集合124可以包括以被组织为可由多个后处理器116访问的形式的元数据的至少一部分。因此,工件集合124可以使元数据能够被浏览,以便每个不同的后处理器116可以提取和评估与后处理器被设计用来分析的问题类型有关的特定元数据。后处理器接口310为多种不同类型的后处理器116-1至116-n的每个后处理器116提供一种机制来访问工件集合124。
图4在400处大体示出了与工件生成器308和多个后处理器116-1至116-n结合的示例应用爬取器122。如图所示,应用爬取器122包括屏幕检查器402、用户仿真器404和状态确定器406。多个后处理器116-1至116-n中的每个相应后处理器116对应于多个问题类型410-1到410-n的相应问题类型410,其中,“n”代表某个正整数。图4还描绘了多个报告408-1至408-n,其中,“n”代表某个正整数。尽管在整个本公开中变量“n”在各种情况下用于多个组件,但是变量“n”的数值对于不同的组件和在不同的情况下都可以不同。
在示例操作中,屏幕检查器402检查(图2的)UI屏幕202以定位该UI屏幕202的用户交互元素204。用户仿真器404根据至少一个测试用例302来激活用户交互元素204。状态确定器406从多个UI屏幕202确定多个应用状态。例如,状态确定器406可以确定是否对UI屏幕的改变足以将UI屏幕标识为新的应用状态(例如,仅对文本的改变通常不足地实质上保证标识新的应用状态)。另外地或可替代地,状态确定器406可以为多个应用状态中的每个应用状态确定元数据412。
在示例实现中,将应用状态、UI屏幕截图和其他元数据412从应用爬取器122提供给工件生成器308。工件生成器308从元数据412生成工件集合124。后处理器接口310向多个后处理器116-1至116-n提供对工件集合124的访问。因此,后处理可以与应用运行器120(例如,如图3所示)和/或测试套件114分离。这使得后处理可以被修改和扩展,而基本上不改变执行或仿真代码或基本上没有大量重写测试套件114。因此,可以重复使用投资在测试套件114中的时间和资源。
此外,每个后处理器116可以被调整为考虑不同的问题类型410。问题类型410与可能潜在影响正在分析的应用110的操作的不同相应的问题类型有关。示例的问题类型410包括用户界面问题、可访问性问题、内存使用问题、网络使用问题、稳定性问题、处理器使用问题和字符串压缩问题等等。用户界面问题可能包括UI元素是否可见并且避免彼此重叠等等。可访问性问题(例如“A11Y”或“a11y”问题)可能与用户交互元素204是否已正确被编码以提供增强的可访问性有关。例如,每个虚拟按钮或其他用户交互元素204可以被编码以在听觉上描述其功能或目的。内存使用问题可能包括内存泄漏问题、内存高峰和内存本地化问题等。网络使用情况可以包括访问频率和平均带宽等。稳定性问题涉及应用是否崩溃和是否可以正常处理意外输入等。处理器使用问题可能与应用消耗多少时间或占用什么时间百分比或处理能力有关。
后处理器116还可以修改(例如,扩展或更新)工件集合124。然后,另一个后处理器116可以访问修改后的工件集合124。修改后处理器116可以存储修改的指示。在其他方面,可以为应用110创建定制后处理器116,其分析应用特定特征112的操作,诸如特定UI元素之间的预期布置或相互关系。
在一些实现中,多个后处理器116-1至116-n中的每个相应后处理器116对应于多个问题类型410-1至410-n中的相应问题类型410。多个后处理器116-1至116-n中的每个相应后处理器116产生多个报告408-1至408-n中的相应报告408。因此,多个报告408-1至408-n中的每个相应报告408也对应于多个问题类型410-1至410-n中的相应问题类型410,例如UI问题或内存使用问题。下面参考图5描述工件生成器308生成用于后处理的工件集合124的示例方法。下面参考图6描述用于实现后处理器116并将后处理器116应用于该工件集合124以产生报告408的示例方法。下面参考图7描述查看多个报告408-1到408-n的示例自动方法。
图5示出了示例工件集合124,其被组织为具有多个节点502和多个边504的有向图500。在一些实现中,每个节点502表示应用状态510或对应于UI屏幕202。每个边504表示或对应于用户交互链接206。因此,当(图2的)爬网200通过使用多个用户交互链接206经由各种用户交互元素204在不同UI之间导航而展开时,(例如,图3和图4的)应用爬取器122获得元数据412。此外,工件生成器308将所得的元数据412组织成有向图500中,以生成工件集合124。
在示例实现中,工件生成器308将标识信息覆盖在有向图500的部分上。每个相应节点502的每个UI屏幕202被分配屏幕标识508,其可以基于包括在UI屏幕202中的用户交互元素204的一个或多个名称或标识符。工件生成器308还将导航标识符506分配给与每个边504相对应的每个用户交互链接206。在一些实现中,可以从边504的起源和目的地侧的屏幕标识508得出边504的导航标识符506。例如,边504所起源的起源节点502的屏幕标识508可以与边504指向的目的地节点502的屏幕标识508相连接,以产生用于边504的导航标识符506。
还参考图2,还可以为用户交互元素204分配一个标识符(未显示),例如,该标识符包括与其它信息组合的对应用户交互链接206的导航标识符506。在一些方面,该有向图500可以包含三元组的列表。每个三元组都是三元数据结构。当前屏幕被包括,因为生成了稳定的屏幕标识符,屏幕标识508。因此,每个三元组具有用于表示当前状态的屏幕标识508。具体来说,三元组可以具有当前状态、中间的过渡动作以及最终的目的地状态。换句话说,使用三元组并从当前状态开始,执行动作以过渡到目的地状态。
在示例操作中,工件生成器308与应用爬取器122协作,以从(图2的)爬网200期间创建的元数据412产生有向图500。工件生成器308针对应用110的每个确定的状态捕获UI屏幕202的截图。工件生成器308还获得并记录状态数据,该状态数据表示所包括或相关联的UI屏幕202的应用状态510。可以为应用状态510获取不同类型的状态数据,以解决给定的后处理器116可能正在寻找的不同问题类型410,或者更全面地提供应用如何影响电子设备的图片。应用状态510的示例包括:内存使用状态510-1、网络使用状态510-2和处理器使用状态510-3等等。在一些实现中,UI屏幕202表示状态,并且应用状态510可以对应于UI屏幕202。在其他实现中,应用状态510可以包括UI屏幕202。
图6大体上在600示出了示例后处理器116,其可以根据对应的问题类型410处理工件集合124以产生报告408。该工件集合124包括有向图500。在示例实现中,后处理器116包括遍历模块602、提取模块604、评估模块606和报告产生模块608。每个模块包括指定相对于对应的问题类型410如何处理元数据的一个或多个参数。在操作中,遍历模块602遍历工件集合124以获得从正被分析的应用110的模拟或仿真用户执行得到的状态数据。这里,图4的元数据412被组织为有向图500,因此遍历模块602遍历有向图500以分析该有向图500的节点502。
提取模块604包括至少一个过滤器610。过滤器610被调整到与后处理器116相对应的问题类型410。因此,提取模块604可以基于过滤器610从有向图500中提取遍历的状态数据。例如,提取模块604可以使用过滤器610来肯定地标识与对应的问题类型410相关的数据项,或者排除与对应的问题类型410不相关的数据项(例如,可以对于内存使用问题类型省略处理器使用)。因此,更新过滤器610的参数可以调整提取哪些数据项。
评估模块606使用一个或多个规则612基于与后处理器116相对应的问题类型410来评估提取的状态数据。每个规则612同样是基于问题类型410。用于问题类型410的每个规则612可以包括用于确定问题类型410的状态数据是否有问题的至少一个参数(例如条件),并且可以导致应用以与其预期操作不同的方式运行。例如,规则612可以包括用于内存尖峰问题的瞬时阈值或用于检测两个不同的用户交互元素204是否彼此重叠的算法。因此,更新评估模块606的规则612的参数可以调整哪些数据项被认为违反对应的问题类型410的规则或与其相称。下面描述示例评估和相关规则612。报告产生模块608使用来自评估模块606的评估状态数据来产生报告408。报告408指示与对应于后处理器116的问题类型410有关的、与应用110的运行一起的一个或多个有问题的问题。
这里针对具有不同的相应示例问题类型410并且因此具有不同过滤器610或规则612的后处理器116描述了示例场景。首先,对于示例用户界面问题,提取模块604的过滤器610标识UI屏幕202的每个遍历的屏幕截图的UI元素。评估模块606基于一个或多个规则612为外观目的评估每个标识的UI元素。例如,评估模块606可以对标识的UI元素进行评估,以确保旨在可见的每个UI元素是在顶部显示层中和/或不与另一个UI元素重叠。通常,报告产生模块608可以针对不满足指定的一组UI元素准则的每个UI元素向报告408添加条目。
其次,对于示例可访问性问题,提取模块604的过滤器610标识UI屏幕202的每个遍历的屏幕截图的UI元素。评估模块606评估每个UI元素以确保每个UI元素与该UI元素有关的每个可访问性规则612相符。例如,可以检查UI元素以验证UI元素具有专用于大声朗读以描述其功能的文本。通常,报告产生模块608可以在报告408中包括针对每个UI元素的条目,该UI元素不满足指定的可访问性规则以及违反哪个规则612的指示。
第三,对于示例内存使用问题,提取模块604的过滤器610从多个节点502的应用状态510中标识(图5的)内存使用状态数据510-1。评估模块606将记录的内存使用值与规则612的至少一个内存使用阈值相比较。可以根据当前正在存储应用110的数据的存储器数量、应用正在存储数据的地址范围(即使在该范围内有可用的可寻址位置)、内存访问速率或带宽等来表示内存使用阈值。如果从内存使用状态数据510-1提取的内存使用值超过规则612的内存使用阈值,则评估模块606可以发出违规通知或警报。基于通知或警报,报告产生模块608可以在报告408中包括用于问题的条目,该问题标识存储器状态510或节点502并提供内存使用问题的问题的标记(例如,平均内存使用的警报或最高瞬时内存使用(例如内存峰值)的警报)。
图7一般地在700处示出了示例问题提交后处理器116-n,用于处理由一个或多个其他后处理器116报告的问题706,以标识用于手动考虑的更相关的那些问题706。在一家公司或另一个实体具有在分析的大型应用110或许多应用110的情况下,自动化的报告产生系统可能会导致许多问题由程序员、应用调试员器和其他软件工程师手动考虑。由于时间和资源有限,软件工程师可能无法查看每个报告的问题。为了适应这种潜在的压倒性情况,可以实施问题提交后处理器116-n以产生问题报告408-n,该问题报告408-n标识出被推断为更相关的问题706,以供软件工程师手动考虑。
如图7所示,示例问题提交后处理器116-n包括选择模块702、重复数据删除模块704和报告产生模块608。多个后处理器116-1至116-(n-1)中的每个其他后处理器116产生多个报告408-1至408(n-1)中的相应报告408。每个报告408包括至少一个问题706,并且许多报告408可以单独包括数十个甚至数百个问题706。因此,问题提交后处理器116-n可以负责处理“n”个问题706-1…706-n,“n”表示可以达到数千或更高的整数。
在示例实现中,问题提交后处理器116-n可以顺序地对每个报告408的问题706进行操作或并行地对多个报告408-1至408(n-1)的问题706进行操作。在操作中,选择模块702基于至少一个排序标准708执行选择操作712。选择模块702可以基于排序标准708对问题706进行排序。对于使用后处理器间排序方案(inter-post-processor ranking scheme)的问题分析,根据一个排序标准708,可以将崩溃问题706分配给比内存高峰问题706更高的优先级。对于使用后处理器内排序方案(intra-post-processor ranking scheme)进行的问题分析,可以使用内存高峰的相对大小或UI元素重叠的相对数量用作不同的排序标准708。可以替代地实现其他方案。
作为选择操作712的一部分,还可以设置一个问题上限阈值,该阈值设置要选择作为可报告的问题以转发给软件工程师的最大问题数量。上限阈值可以是相对于给定的应用版本,或者是在任何单个时间段(例如每天)期间。因此,选择模块702可以使用至少一个排序标准708来对问题的重要性进行优先级排序,并且应用上限阈值以促进要报告为问题的问题706的缩小以用于手动考虑。这些选择的问题706可用于重复数据删除模块704。
重复数据删除模块704对选择的问题执行重复数据删除操作714,以消除重复的问题,从而产生重复数据删除结果。为此,重复数据删除模块704可以访问包含多个问题706的问题数据库710,每个问题与相应的问题签名716相关联地存储。例如,应用状态510或其他状态数据可用于为所分析的每个问题706(例如,先前已转发以进行手动考虑的每个问题或当前作为选择的问题正在处理的每个问题)计算问题签名716。在一些方面,重复数据删除模块704可以依赖结构化数据来测量新选择的问题与现有问题之间的相似性。例如,结构化数据可以包括崩溃的堆栈跟踪和内存泄漏的泄漏跟踪。如果针对两个问题的问题签名716相同或足够接近(例如,基于相似性阈值),则可以从报告中省略两个问题之一(例如,更新的一个或具有较少状态数据的一个)。以这种方式,重复数据删除模块704可以消除重复的问题,以为软件工程师节省额外时间。在替代实现中,可在选择操作712之前或至少部分并行地执行重复数据删除操作714。
未被选择操作712过滤掉或未被重复数据删除操作714转移的那些问题706被传递给报告产生模块608。报告产生模块608产生具有问题706的问题报告408-n(该问题706包括少于多个问题706-1至706-n中的所有问题的问题,以便于手动考虑被确定为更重要且不可重复的那些问题706。以这些方式,问题提交后处理器116-n可以查看由其他后处理器116-1至116(n-1)提供的报告408-1至408-(n-1)以产生问题报告408-n,其标识更相关的问题706,更相关的问题706被突出显示以供软件工程师手动考虑。问题报告408-n可以基于至少一个排序标准708,以推断的重要性顺序呈现报告的问题706。
已经概括地描述了用于使用灵活后处理进行应用分析的示例方案和设备,现在该讨论转向示例方法。
示例方法
下面参考图8和图9的各种流程图描述示例方法。这些方法涉及使用灵活后处理进行应用分析。这些方法的方面可以例如在硬件(例如,固定逻辑电路或通用处理器)、固件或其某种组合中实现。这些技术可以使用图1至图7或图10中所示的一个或多个电子设备或组件来实现(下面在图10中描述电子设备1000),可以将这些设备或组件进一步划分、组合等等。这些图的电子设备和组件通常代表固件、硬件、IC芯片、电路或其组合。因此,这些图示出了能够实现所描述的技术的许多可能的系统或装置中的一些。
对于这些流程图,示出和/或描述操作的顺序不旨在被解释为限制。所描述的方法操作的任何数量或组合可以以任何顺序组合以实现方法或替代方法。此外,可以以完全或部分重叠的方式来实现所描述的运行。
图8示出了在流程图800处用于实现使用灵活后处理进行应用分析的示例方法。流程图800包括五个操作802-810。在802,加载要分析的应用。例如,二进制管理器118或应用执行器306可以加载要分析的应用110。在804,获得包括多个测试用例的测试套件,其中,每个测试用例对应于应用的至少一个特征。例如,测试套件接口304可以获得包括多个测试用例302-1至302-n的测试套件114,其中,每个测试用例302对应于应用110的至少一个特征112。
在806,从用户交互角度对应用进行爬取。例如,应用爬取器122可以从用户交互角度爬取应用110。例如,屏幕检查器402可以标识不同UI屏幕202上的用户交互元素204。在806-1,基于测试套件的多个测试用例激活用户交互元素,以使应用产生多个用户界面(UI)屏幕。例如,用户仿真器404可以基于测试套件114的多个测试用例302激活用户交互元素204以使应用110产生多个UI屏幕202。在806-2,确定由应用产生的多个应用状态,其中,每个相应的应用状态对应于多个UI屏幕中的相应UI屏幕。例如,状态确定器406可以确定由应用110产生的多个应用状态510。每个相应的应用状态510对应于多个UI屏幕202中的相应的UI屏幕202。
在808处,基于多个应用状态生成工件集合。例如,工件生成器308可以基于多个应用状态510来生成工件集合124。这里,多个应用状态510可以包括多个UI屏幕202的截图以及状态数据。在810,处理工件集合以调查与应用的操作有关的多种问题类型。例如,在由应用爬取器122爬取应用110之后,多个后处理器116-1至116-n可以处理工件集合124以分别调查与应用的操作有关的多种问题类型410-1至410-n。应用110的操作可以涉及对用户而言显而易见的应用110的各方面(例如,视觉方面、运行速度或稳定性)或对用户而言不容易显而易见的各方面(例如,网络使用、处理器使用、多线程实现或内存使用)。
图9示出了用于在流程图900处实现使用灵活后处理进行应用分析的示例方法。流程图900包括六个操作902-912。在902处,运行要分析的应用。例如,应用运行器120可以使用应用执行器306来执行(例如,在本地或目标硬件上运行;在其他通用硬件上运行;或者模拟执行)要分析的应用110。在904,基于测试套件,模拟用户交互元素的激活以使应用产生多个用户界面(UI)屏幕。例如,基于经由测试套件接口304获得的测试套件114,应用爬取器122的用户仿真器404可以激活用户交互元素204以通过遍历用户交互链接206来使应用110产生多个UI屏幕202。
在906处,确定由应用产生的多个应用状态,其中,每个相应的应用状态对应于多个UI屏幕中的相应的UI屏幕。例如,应用爬取器122的状态确定器406可以确定由应用110产生的多个应用状态510。这里,每个相应的应用状态510可以对应于多个UI屏幕202的相应的UI屏幕202。在908,基于多个应用状态生成工件集合,其中,该工件集合包括针对多个应用状态中的每个应用状态的多个UI屏幕中的一个UI屏幕。例如,工件生成器308可以基于多个应用状态510来生成工件集合124。工件集合124可以包括针对多个应用状态510中的每个应用状态510的多个UI屏幕202的UI屏幕202。工件集合124可以制定为其中节点502表示应用状态510或UI屏幕202并且边504表示状态和屏幕之间的过渡的有向图500。
在910,使用第一后处理器来处理工件集合以调查与应用的操作有关的第一问题类型。例如,第一后处理器116-1可以处理工件集合124,以调查与应用110的操作有关的第一问题类型410-1。在912处,基于该处理,产生与第一问题类型相对应的第一报告。例如,第一后处理器116-1可以产生与第一问题类型410-1相对应的第一报告408-1。此外,第二后处理器-2可以处理工件集合124以调查第二问题类型410-2并产生与第二问题类型410-2相对应的第二报告408-2。第一和第二后处理器116-1和116-2可以顺序地或至少部分并行地操作。
示例性电子设备
图10示出了根据如参照先前图1至图8中的任何一个所描述的一个或多个实现方式的示例性电子设备1000的各种组件,该示例性电子设备1000可以实现使用灵活后处理来进行应用分析。电子设备1000可以被实现为以下部分的任何一种或组合:固定或移动设备;本地或分布式设备;任何形式的计算机,例如便携式、最终用户或服务器计算机;任何形式的电子设备,例如通信、电话、导航、游戏、音频、照相机、消息传递、媒体播放、消费者、企业和/或其他类型的电子设备,包括工作站、虚拟机或分布式云计算设备。
电子设备1000包括通信收发器1002,该通信收发器1002使得能够进行设备数据1004的有线和/或无线通信,例如如上所述的接收的数据、发送的数据或其他信息。示例性通信收发器1002包括NFC收发器、符合各种IEEE 802.15((BluetoothTM)标准的WPAN无线电、符合各种IEEE 802.11(WiFiTM)标准中的任何一种的WLAN无线电、用于蜂窝电话的WWAN(符合3GPP的)无线电、符合各种IEEE 802.16(WiMAXTM)标准的无线城域网(WMAN)无线电以及有线局域网(LAN)以太网收发器。
电子设备1000还可以包括一个或多个数据输入端口1006,通过该端口可以接收任何类型的数据、媒体内容和/或其他输入,例如用户可选输入、消息、应用、音乐、电视内容、录制的视频内容以及从任何内容和/或数据源接收到的任何其他类型的音频、视频和/或图像数据。数据输入端口1006可以包括USB端口、同轴电缆端口以及用于闪存、DVD、CD等的其他串行或并行连接器(包括内部连接器)。这些数据输入端口1006可用于将电子设备耦合到组件、外围设备或附件,例如键盘、麦克风或相机。
该示例的电子设备1000包括至少一个处理器1008(例如,应用处理器、微处理器、数字信号处理器(DSP)和控制器等中的任何一个或多个),其可以包括组合处理器存储器系统(例如,实现为SoC的一部分),组合处理器存储器系统处理(例如,执行)存储在计算机可读介质上的计算机可执行指令以控制设备的运行。处理器1008可以被实现为应用处理器、嵌入式控制器、微控制器和SoC等。通常,处理器或处理系统可以至少部分地以硬件实现,该硬件可以包括集成电路或片上系统的组件、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程控制器门阵列(FPGA)、复杂的可编程逻辑设备(CPLD)以及硅片和/或其他硬件中的其他实现。
替代地或附加地,电子设备1000可以用电子电路中的任何一个或组合来实现,该电子电路可以包括结合处理和控制电路而实现的软件、硬件、固件或固定逻辑电路,这些处理和控制电路一般在1010处指示(作为电子电路1010)。该电子电路1010可以通过逻辑电路和/或硬件(例如,诸如FPGA)等来实现可执行的或基于硬件的模块(未示出)。
尽管未示出,但是电子设备1000可以包括系统总线、互连、交叉开关或数据传输系统,其耦合设备内的各种组件。系统总线或互连可以包括不同总线结构中的任何一种或组合,例如内存总线或内存控制器、外围总线、通用串行总线和/或利用多种总线架构中的任何一种的处理器或本地总线。
电子设备1000还包括一个或多个能够进行数据存储的存储设备1012,其示例包括随机存取存储器(RAM)、非易失性存储器(例如,只读存储器(ROM)、闪存、EPROM和EEPROM)以及磁盘存储设备。存储器设备1012提供数据存储机制以存储设备数据1004、其他类型的代码和/或数据以及各种设备应用1020(例如,软件应用或程序)。例如、操作系统1014可以作为软件指令被存储在存储器设备1012内并且由处理器1008执行。
如图所示,电子设备1000还包括音频和/或视频处理系统1016,其处理音频数据和/或将音频和视频数据传递到音频系统1018和/或显示系统1022(例如,视频缓冲区或智能手机或相机的屏幕)。音频系统1018和/或显示系统1022可以包括处理、显示和/或否则呈现音频、视频、显示和/或图像数据的任何设备。显示数据和音频信号可以通过RF(射频)链路、S-video链路、HDMI(高清多媒体接口)、复合视频链路、分量视频链路、DVI(数字视频接口)、模拟音频连接或其他类似的通信链接(例如媒体数据端口1024)传输到音频组件和/或显示组件。在某些实现中,音频系统1018和/或显示系统1022是电子设备1000的外部或独立组件。备选地,显示系统1022可以是示例电子设备1000的集成组件,例如集成触摸界面的一部分。
图10的电子设备1000是图1的电子设备102的示例实现。因此,处理器1008是处理器104的示例。而且,内存设备1012是计算机可读存储介质106(CRM)的示例,如由所示应用分析器108进一步指示的。电子设备1000可以进一步包括要分析的应用110。因此,本文所述的使用灵活后处理进行应用分析的原理可以由图10的电子设备1000或与之结合实现。
除非上下文另有指示,否则在本文中使用单词“或”可被视为使用“包含性或”或允许包含或应用由单词“或”链接的一个或多个项目的术语(例如,短语“A或B”可以解释为仅允许“A”、仅允许“B”或允许“A”和“B”两者)。而且,在此讨论的附图和术语中表示的项目可以指示一个或多个项目或术语,因此在本书面描述中可以互换地引用项目或术语的单数或复数形式。尽管已经以特定于某些特征和/或方法的语言描述了使用灵活后处理进行应用分析的实现,但是所附权利要求的主题不必限于所描述的特定特征或方法。而是,将特定特征和方法公开为用于使用灵活后处理进行应用分析的示例实现。

Claims (19)

1.一种由至少一个电子设备执行的用于使用灵活后处理进行应用分析的方法,所述方法包括:
加载要分析的应用;
获得包括多个测试用例的测试套件,每个测试用例被设计为用于测试所述应用的至少一个特征;
从用户交互角度爬取所述应用,包括:
使用所述测试套件的所述多个测试用例激活用户交互元素,以使所述应用产生多个用户界面UI屏幕;以及
确定所述应用的多个应用状态,每个相应的应用状态对应于由所述应用产生的所述多个UI屏幕中的相应UI屏幕;
基于所述多个应用状态生成工件集合;以及
在基于所述测试套件的所述多个测试用例爬取所述应用之后,处理所述工件集合以调查与所述应用的操作有关的多种问题类型,包括:
将多个后处理器应用于所述工件集合,每个相应的后处理器被配置为调查所述多种问题类型中的相应问题类型;以及
基于所述应用,由所述多个后处理器中的每个相应后处理器产生多个报告中的相应报告,每个相应报告指示与所述相应后处理器的相应问题类型相对应的伴随所述应用的操作的一个或多个问题。
2.根据权利要求1所述的方法,其中,所述应用包括:由所述多个后处理器中的所述相应后处理器基于至少一个过滤器从所述工件集合中提取与所述相应后处理器的相应问题类型相关的相应状态数据。
3.根据权利要求1所述的方法,其中,所述应用包括:由所述多个后处理器中的至少一个后处理器基于一个或多个规则来评估所述多个UI屏幕中的每个UI屏幕的用户交互元素。
4.根据权利要求1至3中的任一项所述的方法,其中,激活所述用户交互元素包括模拟以下中的至少一个:按下虚拟按钮、在框中输入文本以及沿着屏幕滑动。
5.根据权利要求1至3中的任一项所述的方法,其中,确定所述应用的所述多个应用状态包括:将激活的用户交互元素从所述多个UI屏幕中的第一UI屏幕导航到所述多个UI屏幕中的第二UI屏幕。
6.根据权利要求1至3中的任一项所述的方法,其中,处理所述工件集合进一步包括:
从由所述多个后处理器报告的多个问题中确定多个选择的问题;
执行至少包括所述多个选择的问题的重复数据删除操作,以删除重复的问题;以及
基于所述重复数据删除操作生成问题报告。
7.根据权利要求1至3中的任一项所述的方法,其中,所述生成包括:生成具有多个节点的有向图,每个节点对应于所述多个应用状态中的相应应用状态以及所述多个UI屏幕中的相应UI屏幕。
8.一种用于实现使用灵活后处理进行应用分析的电子设备,所述电子设备包括:
一个或多个处理器;以及
一个或多个计算机可读存储介质,存储由所述一个或多个处理器可执行的指令,所述计算机可读存储介质包括:
被配置为提供多个特征的应用;
包括多个测试用例的测试套件,每个测试用例被设计为用于测试所述多个特征中的至少一个特征;
被配置为使用所述测试套件执行所述应用的应用运行器,所述应用运行器包括:
应用爬取器,被配置为从用户交互角度遍历所述应用并基于所述测试套件提供元数据,所述元数据对应于所述应用的多个应用状态;以及
工件生成器,被配置为基于所述元数据生成工件集合;以及
被配置为在所述应用爬取器基于所述测试套件提供所述元数据之后访问所述工件集合的多个后处理器,每个相应后处理器被配置为:
调查与所述应用的操作有关的多种问题类型中的相应问题类型;以及
基于所述调查,产生多个报告中的相应报告,每个相应报告指示与所述相应问题类型相对应的伴随所述应用的操作的一个或多个问题。
9.根据权利要求8所述的电子设备,其中,所述元数据指示跨所述多种问题类型的所述应用的操作性能,并且所述工件集合包括有向图。
10.根据权利要求8所述的电子设备,其中:
所述应用爬取器包括:
用户仿真器,被配置为基于所述多个测试用例激活多个用户界面UI屏幕的用户交互元素;以及
状态确定器,被配置为从所述多个UI屏幕确定所述多个应用状态,并确定所述多个应用状态中的每个应用状态的所述元数据;以及
所述工件集合根据所述多个应用状态被组织。
11.根据权利要求10所述的电子设备,其中,所述应用运行器包括后处理器接口,所述后处理器接口被配置为将所述工件集合暴露给与新问题类型相对应的新后处理器,而无需测试套件更新。
12.根据权利要求10所述的电子设备,其中,所述多个后处理器包括:
用户界面后处理器,被配置为基于至少一个UI规则,响应于所述多个UI屏幕中的每个UI屏幕的外观,评估所述工件集合,以检测用户界面问题;
可访问性后处理器,被配置为基于至少一个可访问性规则来评估所述工件集合以检测可访问性问题;以及
内存使用后处理器,被配置为基于至少一个存储器使用阈值来评估所述工件集合以检测内存使用问题。
13.根据权利要求10所述的电子设备,其中,所述工件集合包括:
有向图,所述有向图包括多个节点和分别指向所述多个节点的成对节点之间的多个边,每个节点分别对应于所述多个UI屏幕中的一个UI屏幕,并且每个边分别表示实现从所述多个UI屏幕中的第一UI屏幕过渡到所述多个屏幕中的第二UI屏幕的用户交互。
14.根据权利要求8至13中的任一项所述的电子设备,其中,所述多个后处理器中的后处理器包括:
遍历模块,被配置为遍历所述工件集合以获得从所述元数据导出的多个应用状态;
提取模块,被配置为基于至少一个过滤器提取遍历的应用状态,所述至少一个过滤器被调整到与所述后处理器相对应的问题类型;
评估模块,被配置为基于针对与所述后处理器相对应的所述问题类型的至少一个规则来评估所提取的应用状态;以及
报告产生模块,被配置为使用所评估的应用状态来产生报告,所述报告指示与对应于所述后处理器的问题类型有关的伴随所述应用的操作的一个或多个问题。
15.根据权利要求8所述的电子设备,其中,所述多个后处理器中的一个后处理器包括:
选择模块,被配置为基于上限阈值或排序标准中的至少一个至少从所述多个报告中包括的所述一个或多个问题中确定多个选择的问题;
重复数据删除模块,被配置为所述从所述多个报告中的多个选择的问题中删除重复问题以产生重复数据删除结果;以及
报告产生模块,被配置为基于所述重复数据删除结果和所述多个报告产生问题报告。
16.一种用于实现使用灵活后处理进行应用分析的电子设备,所述电子设备包括存储处理器可执行指令的一个或多个计算机可读存储介质,所述处理器可执行指令响应于一个或多个处理器的执行而使所述电子设备执行操作,所述操作包括:
运行要分析的应用;
基于测试套件,模拟用户交互元素的激活,以使所述应用产生多个用户界面UI屏幕;
确定所述应用的多个应用状态,每个相应应用状态对应于由所述应用产生的所述多个UI屏幕中的相应UI屏幕;
基于所述多个应用状态生成工件集合,所述工件集合包括针对所述多个应用状态中的每个应用状态的所述多个UI屏幕中的UI屏幕;以及
在确定与基于所述测试套件产生的所述多个UI屏幕相对应的所述多个应用状态之后,
使用第一后处理器处理所述工件集合,以调查与潜在影响所述应用的操作的第一问题有关的第一问题类型;以及
使用第二后处理器处理所述工件集合,以调查与潜在影响所述应用的操作的第二问题有关的第二问题类型。
17.根据权利要求16所述的电子设备,其中:
所述第一问题类型包括选自包括可访问性问题、UI问题、内存使用问题、字符串压缩问题、稳定性问题以及网络使用问题的组的问题;以及
所述第二问题类型包括选自所述组的不同问题。
18.根据权利要求16所述的电子设备,其中:
所述工件集合包括具有多个节点的有向图,每个节点对应于所述多个UI屏幕中的一个UI屏幕以及所述多个应用状态中的一个应用状态;
使用所述第一后处理器处理所述工件集合以调查所述第一问题类型包括:
从所述多个节点中的节点到节点遍历所述有向图,以获得第一状态数据;以及
基于一个或多个第一过滤器,从多个UI屏幕和所遍历的节点的所述多个应用状态中提取所述第一状态数据的第一相关部分;以及
评估所提取的状态数据,以确定对应于所述第一问题类型的一个或多个规则的至少一个违反;以及
所述处理器可执行指令响应于所述一个或多个处理器的执行而使所述电子设备执行进一步包括以下的操作:基于使用所述第一后处理器处理所述工件集合,基于所评估的状态数据产生与所述第一问题类型相对应并且包括针对至少一个确定的违反的条目的第一报告。
19.根据权利要求16至18中的任一项所述的电子设备,其中,使用所述第一后处理器处理所述工件集合以调查所述第一问题类型包括:
更新所述第一后处理器的一个或多个参数;以及
使用所更新的第一后处理器处理所述工件集合以调查所述第一问题类型。
CN201880049868.7A 2017-12-21 2018-09-13 使用灵活后处理的应用分析 Active CN110959153B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762609304P 2017-12-21 2017-12-21
US62/609,304 2017-12-21
US16/109,453 US11055209B2 (en) 2017-12-21 2018-08-22 Application analysis with flexible post-processing
US16/109,453 2018-08-22
PCT/US2018/050951 WO2019125546A1 (en) 2017-12-21 2018-09-13 Application analysis with flexible post-processing

Publications (2)

Publication Number Publication Date
CN110959153A CN110959153A (zh) 2020-04-03
CN110959153B true CN110959153B (zh) 2023-12-08

Family

ID=66951143

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880049868.7A Active CN110959153B (zh) 2017-12-21 2018-09-13 使用灵活后处理的应用分析

Country Status (4)

Country Link
US (1) US11055209B2 (zh)
EP (1) EP3635563B1 (zh)
CN (1) CN110959153B (zh)
WO (1) WO2019125546A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110442772A (zh) * 2019-08-13 2019-11-12 深圳司南数据服务有限公司 一种智能研报生成方法及终端
CN112527362A (zh) * 2021-02-08 2021-03-19 鹏城实验室 Fpga测试程序更新方法、装置、电子设备及存储介质
US20220358162A1 (en) * 2021-05-04 2022-11-10 Jpmorgan Chase Bank, N.A. Method and system for automated feedback monitoring in real-time

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106021112A (zh) * 2016-05-31 2016-10-12 腾讯科技(深圳)有限公司 程序测试系统、方法及装置
CN106294159A (zh) * 2016-08-12 2017-01-04 腾讯科技(深圳)有限公司 一种控制截屏的方法及截屏控制装置
CN107341398A (zh) * 2016-04-29 2017-11-10 腾讯科技(深圳)有限公司 程序测评方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108630A1 (en) * 2003-11-19 2005-05-19 Wasson Mark D. Extraction of facts from text
WO2005077118A2 (en) * 2004-02-11 2005-08-25 Spi Dynamics, Inc. System and method for testing web applications with recursive discovery and analysis
US7379846B1 (en) * 2004-06-29 2008-05-27 Sun Microsystems, Inc. System and method for automated problem diagnosis
US8296722B2 (en) * 2008-10-06 2012-10-23 International Business Machines Corporation Crawling of object model using transformation graph
US9367680B2 (en) * 2008-10-21 2016-06-14 Lookout, Inc. System and method for mobile communication device application advisement
US9043919B2 (en) * 2008-10-21 2015-05-26 Lookout, Inc. Crawling multiple markets and correlating
US8745592B1 (en) 2010-01-08 2014-06-03 Google Inc. Input selection for automatic test suite generation
CN102404281B (zh) * 2010-09-09 2014-08-13 北京神州绿盟信息安全科技股份有限公司 一种网站扫描设备和方法
US8880588B2 (en) * 2010-10-29 2014-11-04 Fujitsu Limited Technique for stateless distributed parallel crawling of interactive client-server applications
US9881050B2 (en) * 2010-10-29 2018-01-30 Orange Method and system to recommend applications from an application market place to a new device
US8990183B2 (en) * 2012-06-06 2015-03-24 Microsoft Technology Licensing, Llc Deep application crawling
US9317693B2 (en) * 2012-10-22 2016-04-19 Rapid7, Llc Systems and methods for advanced dynamic analysis scanning
US9396237B1 (en) * 2013-02-12 2016-07-19 Focus IP Inc. Monitoring applications for infringement
US9171003B2 (en) * 2013-03-15 2015-10-27 Western Digital Technologies, Inc. Shared media crawler database method and system
US20150095305A1 (en) * 2013-09-30 2015-04-02 International Business Machines Corporation Detecting multistep operations when interacting with web applications
US10078502B2 (en) * 2014-06-19 2018-09-18 Fujitsu Limited Verification of a model of a GUI-based application

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107341398A (zh) * 2016-04-29 2017-11-10 腾讯科技(深圳)有限公司 程序测评方法及装置
CN106021112A (zh) * 2016-05-31 2016-10-12 腾讯科技(深圳)有限公司 程序测试系统、方法及装置
CN106294159A (zh) * 2016-08-12 2017-01-04 腾讯科技(深圳)有限公司 一种控制截屏的方法及截屏控制装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Automated Model-Based Android GUI Testing using Multi-level GUI Comparison Criteria";Young-Min Baek;《AUTOMATED SOFTWARE ENGINEERING》;20160825;文献第2-4部分 *

Also Published As

Publication number Publication date
US11055209B2 (en) 2021-07-06
EP3635563B1 (en) 2022-11-02
WO2019125546A1 (en) 2019-06-27
EP3635563A1 (en) 2020-04-15
CN110959153A (zh) 2020-04-03
US20190196947A1 (en) 2019-06-27

Similar Documents

Publication Publication Date Title
US10346292B2 (en) Software component recommendation based on multiple trace runs
WO2019085061A1 (zh) 基金系统自动化测试管理方法、装置、设备及存储介质
CN110741354B (zh) 呈现代码实体调用之间的差异
CN104102643B (zh) 一种进行页面快照的方法和装置
CN110959153B (zh) 使用灵活后处理的应用分析
US20130283100A1 (en) Testing device
US20120265746A1 (en) Capture, Aggregate, and Use Search Activities as a Source of Social Data Within an Enterprise
US9965252B2 (en) Method and system for generating stateflow models from software requirements
US10540360B2 (en) Identifying relationship instances between entities
CN109408361A (zh) Monkey测试复原方法、装置、电子设备及计算机可读存储介质
US20150248318A1 (en) Z/os workload mapper for potential problem areas using modules and defect data
US8850407B2 (en) Test script generation
CN111460235A (zh) 图谱数据的处理方法、装置、设备及存储介质
JP2016514326A (ja) コンピューターシステムアクティビティのトレースタイムラインを解析するための方法およびシステム
US20160371169A1 (en) Use case fingerprinting and capture store
US20120151447A1 (en) Display of data from parallel programming contexts
CN113419964B (zh) 一种测试案例生成方法、装置、计算机设备及存储介质
US20150006578A1 (en) Dynamic search system
CN114331167A (zh) 一种冠军挑战者策略的管理方法、系统、介质和设备
JP2015102878A (ja) プログラム関連分析方法
CN111949510B (zh) 测试处理方法、装置、电子设备及可读存储介质
US20170032552A1 (en) Implementing out of order access to reversal operations in images
CN112395304B (zh) 基于数据行为模拟的数据安全计算方法、系统及存储介质
JPWO2018154784A1 (ja) 影響抽出装置、影響抽出プログラム及び影響抽出方法
CN114969759A (zh) 工业机器人系统的资产安全评估方法、装置、终端及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant