CN101194233B - 测试无线组件应用程序的系统和方法 - Google Patents

测试无线组件应用程序的系统和方法 Download PDF

Info

Publication number
CN101194233B
CN101194233B CN2006800127218A CN200680012721A CN101194233B CN 101194233 B CN101194233 B CN 101194233B CN 2006800127218 A CN2006800127218 A CN 2006800127218A CN 200680012721 A CN200680012721 A CN 200680012721A CN 101194233 B CN101194233 B CN 101194233B
Authority
CN
China
Prior art keywords
comparer
testing tool
param
log event
event
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
CN2006800127218A
Other languages
English (en)
Other versions
CN101194233A (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.)
Maliki Innovation Co ltd
BlackBerry Ltd
Original Assignee
Research in Motion Ltd
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 Research in Motion Ltd filed Critical Research in Motion Ltd
Publication of CN101194233A publication Critical patent/CN101194233A/zh
Application granted granted Critical
Publication of CN101194233B publication Critical patent/CN101194233B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Testing Electric Properties And Detecting Electric Faults (AREA)

Abstract

提供一种无线组件应用程序的功能测试的测试工具(test harness)系统和方法。该测试工具系统包括至少一个测试集(testlet),用于测试至少一个目标应用程序日志事件,以及至少一个事件句柄,用于针对所述至少一个目标应用程序日志事件来验证至少一个比较器。该方法包括步骤:收听目标应用程序日志事件,接收目标应用程序日志事件,接收测试集,以及基于该测试集来验证目标应用程序日志事件。

Description

测试无线组件应用程序的系统和方法
技术领域
本专利文件公开的一部分含受著作权保护的材料。著作权所有者不反对专利文件或专利公开中的任何一人所作的复制再现,如在专利和商标局专利文件或档案中出现的,但除此之外则保留所有的著作权。
本发明的揭示涉及用于提供与多个设备进行通信的通信系统,特别是用于测试无线组件应用程序的一种系统和方法。
背景技术
由于无线网络的激增,当今处于使用中的无线设备的数量持续增长。这些设备包括移动电话,带有无线通信功能的个人数字助理(PDA),双向寻呼机等。同时随着可用的无线设备的增加,在这些设备上运行的软件应用程序也增加了它们的效用。例如,无线设备可包括检索列表中所需城市的天气报告的应用程序,或允许使用者购买食品杂货的应用程序软件。除了语言通信之外,这些软件应用程序经常利用传输无线网络数据的能力,一把向使用者提供及时和有用的业务。但是由于设备类型过多,一些设备的有限资源,以及向设备传输大量数据的复杂性,开发软件应用程序依然是一项困难且费时的工作。
当前,设备被配置成通过基于因特网的浏览器和/或本地应用程序与Web业务进行通信。浏览器具有适合于针对多种不同设备,在交叉平台基础上操作的优点,但其缺点是需要从Web业务请求页面(HTML中的屏幕定义),从而阻碍了屏幕所包含的数据的持续性。浏览器的另一个缺点是屏幕在运行时被渲染,这需要很多的资源。浏览器应用程序对于设计独立平台应用程序是有效的工具。因此,不同运行时间环境执行相同的应用程序,而与平台无关。但是,因为不同无线装置具有不同的能力和形式因素,该应用程序可能并不象所希望的那样被执行或者显示。另外,基于浏览器的应用程序经常需要显著的传送带宽来有效地工作,这对于一些无线装置来说是昂贵或者甚至是不可用的。
另一方面,为特定的无线装置平台开发本地应用程序,从而为在该平台上运行的运行时间环境提供相对优化的应用程序。然而,依赖于平台的应用程序带来了一些缺点,包括必须开发相同应用程序的多个版本以及程序规模相对较大,因此消耗了无线设备的存储资源。另外,应用程序开发员需要具有编程语言的经验,如Java和C++,以构建这些本地应用程序。
目前,几乎没有用于无线组件应用程序的自动功能测试。由于不同平台间在硬件和软件上的不同,一种概括性的应用程序并不是可行的选择,因为它不能简单地(如果从根本上)应用于被测试的应用程序。对于无线组件应用程序,因每个应用程序可能是不同而是这个问题复杂化。采用包含有关每模块规模的功能性的单元测试,但是当把系统作为整体测试时就不合适了(每个模块就其本身而言可能工作得非常好,但当与其余部分连接时就会出现灾难)。开发员和测试员手动测试是找到问题的有效方式,但毫无效率。这是很昂贵,费时并且不彻底的。本发明提供了一种能够有效、自动且彻底地测试应用程序的方式。
发明内容
本发明公开提供了一种创新的方法,用于针对资源有限的小设备对无线组件应用程序进行严格、自动的功能性测试。
根据本发明公开的一个实施例,提供一种测试工具(test harness)系统,用于对无线组件应用程序进行功能性测试。该测试工具系统包括至少一个测试集(testlet),用于测试至少一个目标应用程序日志事件;以及至少一个事件句柄(event handler),用于针对该至少一个目标应用程序日志事件来验证至少一个比较器。
根据本发明的另一个实施例,提供一种对无线组件应用程序进行功能性测试的方法。该方法包括步骤:监听目标应用程序日志事件,接收目标应用程序日志事件,接收测试集并基于该测试集验证目标应用程序日志事件。
根据本发明公开的另一个实施例,提供一种计算机可读媒介,用于存储用来在计算机中执行对无线组件应用程序进行自动功能性测试的方法的指令或语句。该方法包括步骤:监听目标应用程序日志事件,接收目标应用程序日志事件,接收测试集并基于该测试集验证目标应用程序日志事件。
根据本发明公开的另一个实施例,提供一种携带有信号的传播信号载体,所述信号包含有可由计算机读取并执行的计算机可执行指令。该计算机可执行指令用于执行对无线组件应用程序进行自动的功能性测试的方法。该方法包括步骤:监听目标应用程序日志事件,接收目标应用程序日志事件,接收测试集并基于该测试集验证目标应用程序日志事件。
附图说明
现在参考附图描述仅作为一个实例的本发明的实施例,其中:
图1为简化了无线组件应用的网络实例的示意图;
图2在流程图中示出了无线组件应用通信模型的实例;
图3在详细的组件示意图中示出了图1所示的应用网关的实例;
图4在接口示意图中示出了安全子系统的实例;
图5在接口示意图中更详细地示出了生存周期子系统的实例;
图6在接口示意图中更详细地示出了管理子系统的实例;
图7在组件示意图中示出了无线组件应用程序的运行时间环境结构的实例;
图8在组件示意图中示出了根据本发明公开的一个实施例,功能性测试无线组件应用程序的测试工具(harness)系统的实例;
图9示出了框架实例的示意图,在该框架中测试工具系统根据测试工具系统的实施例工作;
图10在流程图中示出了根据测试工具系统的实施例,功能测试无线组件应用程序的方法实例;
图11在流程图中示出了根据测试工具系统的实施例,功能测试无线组件应用程序的另一种方法的实例;
图12以树形结构示出了根据测试工具系统实施例的测试集结构的实例;
图13在流程图中示出了根据测试工具系统实施例的功能测试无线组件应用程序的另一种方法的实例。
具体实施方式
本发明公开提供了一种创新的程序,用于在具有有限资源的小设备上对无线组件应用程序进行严格自动功能测试。
有利的是,测试工具系统减少了开发员在创建测试工具与其接口的代码,以获得应用程序的状态信息方面所付出的努力(即,减少或消除插入或接入点),从而允许开发员编写代码而不用担心自动测试工具如何利用代码工作。
现在参考如何能够最好地进行和使用的实施例的各种实例来描述本发明的系统和方法。为方便起见,在说明书和附图中用相同的参考数字表示相同或相应的部分,其中各种元件不需要成比例地描绘。
参考图1,用数字100一般性地说明通信基础设施的一个实例。该通信基础设施100包括多个无线设备102,通信网络104,应用网关106,以及多个后端业务(back-end services)108。
无线设备102通常为个人数字助理(PDA),但也可包括其他设备。每个无线设备102包括能够为多个组件应用程序提供虚拟主机(hosting)的运行时间环境。
组件应用程序包括一个或多个数据组件,表示组件,和/或消息组件,其以诸如可扩展标记语言(XML)代码之类的结构定义语言写成。组件应用程序能还包括工作流组件,其包含有以诸如ECMAScript的子集写成的一系列指令,并且在一些实现中能嵌入在XML代码中。因此,由于应用程序被划分成,通过提供对应的表示组件,可以为多个设备写出公用的应用程序,而不需要重写其他组件。另外,典型应用程序的大部分职责被转移到组件应用程序的运行时间环境中。下面进一步描述组件应用程序的细节。
无线设备102通过通信网络104与应用网关106通信。相应地,通信网络104可以包括多个组件,例如,无线网络110,中继设备112,共同(corporate)业务器114和/或移动数据业务器(MDS)116,用于在无线设备102和应用网关106之间中继数据。
应用网关106包括网关业务器118,规定业务器(provition server)120和发现业务器(discovery server)122。网关业务器118在无线设备102和后端业务器108的运行时间环境业务之间充当消息代理。网关业务器118与规定业务器120和发现业务器122二者通信。网关业务器110还经由适当的链路与业务诸如网络业务108a,数据库业务业务108b,以及其他企业业务108c之类的多个后端业务器108通信。例如,网关业务器118经由简单对象访问协议(SOAP)和Java数据库连接(JDBC:Java Database Connectivity)分别与网络业务108a和数据库业务108b连接。其它类型的后端业务器108以及它们相对应的链路能够连接到网关业务器118。
优选地,每个无线设备102最初配备有业务手册或IT策略设备以建立多种协议和设置,包括针对共同业务器114和/或移动数据业务器116的连接信息。这些参数可以包括应用网关业务器118的统一资源定位符(URL)以及它的加密密钥。可选地,如果无线设备102最初未配备URL和加密密钥,它们可经由移动数据业务器116被推到无线设备102。然后移动设备102可经由应用网关业务器118的URL与应用网关106连接。
参考图2,在流程图中图示说明无线组件应用程序通信模型150的实例。从上层透视来看,整个无线组件应用程序基础设施150包括在设备102上运行的无线组件应用程序运行时间环境(设备RE)以及在业务器118上运行的无线组件应用程序网关(AG)106。
AG 106作为由RE执行的无线组件应用程序(在本发明公开中有时被称为应用程序)和应用程序与其通信的一个或多个后端业务108之间的调停者(mediator)业务。通常,期望后端业务是在HTTP或HTTPS上使用SOAP作为传输协议的网络业务108a。由于网络业务是所期望的最普通的后端业务108,因此在本发明公开中使用的术语“网络业务”与后端业务108是可互换的。然而,可以理解,其他类型的后端业务也可以应用到本发明中。图2示例性地示出了与后端业务108同步的链路。但是,应该指出,AG 106能够在异步链路上与后端业务108通信。
无线组件应用程序通信模型150是基于异步收发消息范例的。在该模型中,应用网关(AG)106建立并调停设备102与一个或多个后端业务108之间的连接,从而:
1.在资源管理中获得更高的灵活性。
2.在设备102和后端业务108之间提供可靠的通信链路,从而当无线覆盖不稳定时处理多种情况。
3.在设备RE102和AG 106之间有效地分配工作负载。
参考图3,示出了应用网关106一个实例的更详细的示意图。应用网关业务器118包括三个业务层:基础业务层202,应用网关业务层204以及应用程序业务层206。应用网关服务器118进一步包括管理业务208。
规定业务210和发现业务212分别由规定服务器120和发现务器120提供。
在最底层,基础业务层202给更高层中的其他组件提供基础的,独立域的系统业务。因此,例如,在应用网关业务层204和应用程序业务层206中的所有子系统能够使用基础业务层202中的子系统并合作。在该实施例中,基础业务层202包括实用程序子系统211,安全子系统213,配置子系统214和登录子系统216。
应用网关业务层204提供无线组件应用程序特定域业务。这些业务给后端业务108提供有效的消息转换和传送到后端业务108,并给无线设备102和组件应用程序提供生存周期管理。在该实施例中,应用网关业务层204包括生存周期子系统220,连接器子系统222,收发消息子系统224,和转换子系统226。
应用程序业务层206位于架构的最上端并提供使用由较低层提供的子系统的外部程序接口和用户接口。例如,诸如业务提供者生存周期应用程序,打包应用程序以及消息收听应用程序之类的各种应用程序外部程序接口,这是因为它们主要与外部系统上的应用程序通信。类似地,管理应用程序通过给使用者提供接入能力来提供使用者接口,并存在着修改应用网关数据和/或参数的可能。
管理业务208负责管理系统消息,无线设备102的管理,应用网关子系统的运行时间管理,支持和显示系统诊断,以及规定和发现业务的默认实施的管理。
消息收听应用程序(或收发消息收听器232)提供用于从无线设备102以及外部信号源接收消息,并将消息传送到收发消息子系统的接口。另外,消息收听应用程序232通常验证消息来源的有效性。
参考图4,更详细地示出了消息收听应用程序232的实例。消息收听应用程序232包括三个收听器:通知收听器302,压缩消息收听器304,和移动数据业务确认收听器306。通知收听器302经由通知接口303从事件源108c接收通知并响应消息。也可添加其他消息收听器接口。
在一个实施例中,通知接口303可用网络业务事件(WS Eventing)来实现。当在诸如事件源和应用之类的其他业务中发生事件时,网络业务通常要接收消息。网络业务预约(WS Subscription)提供了一种本领域中用来登记兴趣的机制。网络业务预约为备称为预定者的网络业务定义协议,,以向备称为事件源的另一个网络业务注册感兴趣的事,以便接收被称为通知的有关事件的消息。当事件源向预定者通知事件时,称之为网络业务事件。
紧密消息收听器304经由紧密消息接口305接收来自移动设备102的消息。移动数据业务确认收听器306经由移动数据业务接口307接收来自移动数据业务306的确认通知。这三个收听器302,304和306中的每一个都经由收听器管理接口309接收来自管理业务208的管理消息。
在该实施例中,在安全插槽层(Secure Socket Layer)上使用超文本传送协议/安全超文本传送协议(HTTP/HTTPS)配置收听器接口303,305,307和309。但是,这些协议已被选择为设计选项,而当需要时可使用其他协议。据此,外部系统发送HTTP/HTTPS请求,由适当的收听器接收该请求。收听器获取消息,进行最小的转换,并将它传送到收发消息子系统224。该转换包括吧HTTP首部信息到复制到消息目标字段。例如,HTTP首部信息可识别发出消息的移动数据业务116和无线设备102。
如前所述,消息收听应用程序验证消息源作为移动数据业务116,无线设备102或事件源108是有效的。
另外,如果需要可靠的收发消息,那么就要保证业务的有效性,且收听器要处理对应于可用性攻击的技术方案。为使之简化,收发消息子系统定义针对最大消息量的阈值,以及在给定时间段内来自后端业务器108、组件应用程序或无线设备的连接。管理员可以根据需要修改该阈值,也可以通过管理业务208允许特定的例外。
另外,由于可能存在消息截听和重放攻击,收听器使用识别重放消息的机制来检测并禁止该攻击。这些机制通常包括随机数(nonce)的使用。随机数备定义为随时间变化的参数。随机数可以是用来限制或阻止未授权的重放或消息再生的时间标记或其他特殊标记。因为随机数随时间而改变,所以能够用他来确定消息是否是原始的,或是原始消息的重放或再生。用于阻止截听和重放攻击的随机数的使用在本领域中是公知的,不需要详细描述,作为标准实现方式备使用。
另外,除时间的时间标记技术之外,或用来代替时间的时间标记技术,业可以用其他技术,如排序,来防止应用程序消息的重放。再一次说明,这些技术在本领域中是公知的,作为标准实施来使用,不需要详细描述。
参考图5,更详细地示出了生存周期子系统220的一个实例。生存周期子系统包括生存周期业务402和设备库(device depot)404。
生存周期业务402处理与无线设备102有关的设备启动消息,运行时间环境生存周期和组件应用程序生存周期。这些消息,例如,可以和无线设备的注册或暂停,无线设备的交换,无线设备的可用性,组件应用程序的安装,升级,或删除,以及运行时间环境升级有关。这些消息经由设备系统消息处理接口403进行到和来自连接器子系统222的通信。
生存周期业务402进一步提供用不同的过滤器对无线设备和组件应用程序进行询问的能力。为了简化该特征,生存周期业务402经由设备信息询问/升级接口405与收发消息子系统224和管理子系统208通信。在该实施例中,设备信息询问/升级接口405使用一组用于询问并升级设备信息的Java应用程序编程接口(APIs)来实现。典型的接口包括那些用于管理无线设备的安全性和客户管理策略的接口。
生存周期子系统220管理每个无线设备102的安全简档,无线设备通过应用网关106注册到设备库404中。每个安全简档包括每个设备的安全对称密钥。该密钥用于无线设备102和应用网关106之间的安全通信。
客户管理策略包括获取无线设备状态,搜索满足某个可更改标准的组件应用程序,以及搜索满足某个可更改标准的设备。例如,可能需要确定将哪个组件应用程序安装在所有的无线设备上,或哪个无线设备已安装了特定的组件应用程序。
更进一步,管理子系统208提供了生存周期管理接口407以简化生存周期子系统402和设备库404的管理。例如,管理子系统可指示新版本组件应用程序的可用性或运行时间环境。
相应地,生存周期业务402管理多个指定无线设备102中的每一个的状态,所述指定无线设备包括存储在其中的运行时间环境和组件应用程序。诸如运行时间环境,组件应用程序状态,以及无线设备安全设置之类的信息备存储在设备库404中。安全设置可以包括,例如,客户管理策略以及无线设备的加密密钥。
应用网关服务器118也允许使用第三方生存周期组件,其也被称为生存周期业务提供商,通常在应用网关106的外部。为了简化生存周期业务提供商,在应用程序业务层提供了生存周期业务提供商收听器。生存周期业务提供商收听器负责接收来自生存周期业务提供商的有关所有生存周期系统消息的通知,并将它们发送到管理子系统208以进行处理。另外,生存周期业务提供商能够接入管理业务,从而配置应用网关服务器118或发送系统消息。
管理子系统208管理系统消息,系统设备,应用网关子系统,系统诊断,以及规定和发现业务的默认实现。参考图6,示出了管理子系统208的一个实例更详细的示意图。管理子系统208包括管理业务502,管理控制台504和管理应用程序506。管理应用程序506包括Java管理扩展(JMX)应用程序508和网络业务应用程序510。
浏览器接口505将管理员连接到管理员控制台502,以管理应用网关106。管理员接口503将管理业务502与收发消息子系统224连接,以传送管理系统消息。管理应用程序506经由适当的接口连接到它们各自对应的第三方管理应用程序。例如,经由JMX接口509耦合JMX应用程序508,经由网络业务接口511耦合网络业务应用程序510。
管理业务502处理管理员或生存周期业务提供商通过生存周期管理接口发起的组件应用程序和运行时间环境生存周期事件。这些事件的例子包括使用推规定安装组件应用程序,刷新加密密钥,升级组件应用程序或运行时间组件,去除组件应用程序,隔离组件应用程序,和从隔离中去除组件应用程序,应用组件应用程序清除脚本,询问用于状态更新的升级运行时间环境,以及更新客户管理策略。
管理业务502还负责无线设备102的管理。据此,管理业务502能够应答无线设备注册系统消息并维护诸如安全密钥,移动数据业务URL,运行时间版本和状态之类的无线设备的设置。管理业务502进一步支持根据预定义的过滤特性列出设备的能力,如向设备询问其组件应用程序和运行时间环境设置,以及询问有关特定设备的组件应用程序。
管理业务502还向管理员提供接入应用网关子系统运行时间信息和设置的能力,如果可应用,按群节点进行,以及执行与系统有关的任务。这些任务包括观察消息子系统224的运行时间信息,该信息包括每个无线设备12和每个组件应用程序的消息信息,队列中的消息数,以及汇集的特定类型对象的数目的简短描述。管理员能够在运行时间更改该特定设置以及删除或重新调度过期的消息。
管理业务502提供的其他信息和设置包括以下。应用网关子系统参数可以加以更改。因此,例如,管理员能够在运行时间使动和禁止各种特性。能够为集中式应用网关数据库配置数据库设置。该数据库可以包括所有子系统库。可以配置应用网关URL可接入外部系统。例如,可以将URL指定给管理应用程序506以允许第三方接入。同样,可将URL指定给打包业务,以允许规定业务访问。
管理业务502也可存储发现业务证书(credential),业务提供商证书,移动数据业务参数以及安全参数。在接收到表示组件应用程序可用的通知消息时,可以用发现业务证书验证发现业务。类似地,在接收到组件应用程序或运行时间环境生存周期消息时,业务提供商证书,包括其URL,能被用于验证业务提供商。能够用移动数据业务参数将管理员连接到移动数据业务并包括其IP地址,使用者身份和密码。可以将诸如应用网关公共和私人密钥以及密钥刷新策略之类的应用网关安全参数和设置用于对应用网关和外部应用程序之间的通信进行加密。
管理业务502也被用于登记附加子系统,如顾客连接器和生存周期收听器。
网络业务应用程序510使用网络业务来将业务提供商发起的系统消息引导到管理业务502以进行处理,并且如果需要的话,再传送到设备。
类似地,JMX应用程序508将业务提供商发起的系统消息引导到管理业务502以进行处理,且如果需要的话,再传送到设备。但是,JMX接口509是开放接口,任何管理系统销售商都可以影响。管理基础设施基于JMX技术,这是一项用于系统管理和监控的开放技术。每个管理系统实施一套Mbeans对象,以便成为可配置的。按照JMX规范,这些对象必须通过在对象处理空间内运行的MbeanServer来进行登记。
由于应用网关106能潜在地运行在分布式环境中,就是说,一些子系统可以在不同的应用服务器上运行,因而每个应用服务器需要有它自己的MbeanServer的实现方式。另外,每个子系统需要使用由对应的应用服务器提供的分开的管理控制台,或使用了解如何接入由MbeanServer提供的功能的第三方控制台来配置每个子系统。
运行时间环境框架容器为一个客户常驻(client-resident)容器,在该容器中可以在设备上执行应用程序。该容器管理设备上的应用程序生存周期(规定,执行,删除等),并负责将代表应用程序的元数据(XML)翻译为可在设备上有效执行的形式。该容器给应用程序提供一组业务,以及提供对任选JavaScript的支持。这些业务包括对UI控制,数据持续性和异步客户服务器收发消息等的支持。
图7示出了运行时间环境框架600的一个实例。运行时间环境框架600包括应用程序业务模块602,管理模块604,规定和生存周期管理(PLM)业务模块606,收发消息模块608,以及基础业务模块610。可以向运行时间环境框架600中删除或加进一些组件。运行时间环境框架600与无线组件应用后台(daemon)程序612通信。
应用程序业务模块602包括用于在使用者和当前运行的应用程序之间提供界面的屏幕业务614,用于为应用程序提供执行环境的解释程序业务616,用于处理并调停与应用程序元数据有关的接入的元数据业务618,以及用于允许应用程序接入设备102上的其他应用程序的接入业务620。
管理模块604包括控制中心622,用于处理无线组件应用程序运行时间环境框架600的使用者界面,处理使用者与无线组件应用程序运行时间环境框架600的交互,使无线组件应用程序运行时间环境框架600与网络系统100整合。
PLM业务模块606包括RE容器624,用于协调RE容器更新以及备份/复原程序,并对RE框架600应用默认错误处理机制;发现业务模块626,用于对应用程序储存库中的应用程序进行定位;规定业务628,用于对应用程序进行规定(包括应用程序的下载,安装和升级);以及生存周期业务630,用于登记,维护用于管理应用程序的信息,并管理应用程序。
收发消息模块608包括收发消息业务模块632,用于消息排队,消息(解)压缩,以及消息分配。
基础业务模块610包括持续业务634,用于存储RE简档(包括其版本,目录,客户管理策略,应用程序管理策略,安全密钥,有用的升级等),存储应用程序简档(包括其版本,元数据,应用程序持续数据组件,应用程序可持续全球数据以及应用程序资源,有用的升级等),并存储可靠的消息(包括因超出覆盖范围造成的输出消息待传送,以及输入可靠消息待处理)。基础业务模块610还包括安全业务636,用于限制对RE业务的接入,提供消息验证,整合,和加密。基础业务模块610还包括通信业务638,用于发送和接收输入或输出设备102的消息,从适当的储存库下载资源和文件,以及向感兴趣的RE业务通知有关无线覆盖的事件。
无线组件应用后台(daemon)程序模块612包括后台640,用于在每当由于重大的异常事件使进程停止时重启无线组件应用程序进程。
现在描述一个创新过程,用于对具有有限资源的小设备上的无线组件应用程序进行严格的自动功能测试。依据日志从正在被测试的应用程序上分离测试工具。测试工具是一种在正被测试的产品外部的应用程序,所述产品的功能提供对其目标的内部工作的接入,以使它们能被测试。它在某些点上插入到目标应用程序,并提供明确定义的输入,然后监控应用程序的状态变化并确定它们的有效性。
图8示出了根据本发明公开的一个实施例,用于对无线组件应用程序进行自动功能测试的测试工具系统700的实例。测试工具(test harness)系统700包括一个或多个测试集(testlet)702,用于测试目标应用程序的日志事件,以及一个或多个事件句柄706,用于验证一串比较器。测试集702包括一个或多个期望的日志事件(LE)708,用于定义一个期望的目标应用程序逻辑流程,以及一个或多个比较器704,用于保存用于验证测试过程中的某个步骤的信息。项目708以XML定义的期望日志事件,其随后被转换为该消息,项目704或比较器对象(一种实现方式中的Java对象)的测试工具的内部表现。期望的LE 708包括标识符,用于唯一地标识LE 708(或期望的LE 708),以及一个或多个用于存储期望目标应用程序逻辑流程信息的参数。该参数可包含能帮助准确地表示目标应用程序当前状态的任意种类的信息。比较器704包括用于将比较器与事件句柄相关联的句柄定义。比较器704也可以包括任选字段,用于存储用来验证目标应用程序逻辑流程的附加信息。
在开放期间,编码器通常将大量信息记录成日志,这些信息恒定地描绘出当前运行的应用程序的状态图。能够以开发人员选择的任意方式简明地格式化这些日志条目。另外,每当日志事件发生时,应用程序记录业务(LS)会给已登记的收听器提供事件通知。因此,测试工具系统700可以被实施为一种类型的收听器,该收听器登记者本身以接收由目标应用程序(TA)在测试运行期间创建的任何日志事件。优选地,使用用于比较输入事件的基于XML的基准(测试集702)来验证TA的执行流程。如果在测试集702中定义的功能应用程序流程和从TA接收到的日志事件序列之间存在任何差异,就认为测试失败了,否则就通过。优选地,测试集702要保持了解(current)TA中发生的功能变化。
测试集702为一些实体,这些实体包括一连串由TA记录的期望出现的LE708。优选地,使用XML来定义测试集。每个期望LE 708(在测试集702中被定义为测试“步骤”)具有唯一的标识符710以及呈多个参数712形式的附加信息,任选的是,在其之前必须以及发生的另一个步骤的形式为前提。测试工具系统700把这个脚本用作TA功能流程的期望。
在某种意义上,测试工具这样进行模块化,即它的事件比较逻辑由事件句柄(EH)706管理,事件句柄处理在TA中发生的各种事件的特定功能比较请求。因此,对于一个特定的测试案例来说,只加载所需的句柄706,这样就将测试工具系统700的资源覆盖面减少到最小。
模块化去耦合测试工具系统700将下列新概念和优点引入到测试无线组件应用程序中:
●在实现测试解决方案方面减少了开发团队需要付出的努力,即,重新使用了应用程序现有的记录机制,开发人员只需要记录测试团队所需的、在TA逻辑流程中它们发生的点上的某些LE 708;
●从TA中完全去耦合;
●严格的测试能力,即,开发人员能将他们希望的尽可能多的信息加入到LE 708中,以便测试他们的应用程序。
●平台上的微小资源覆盖面,即,仅使用测试案例所需的EH 706;以及
●可扩展,即,如果在应用程序中加入了新功能,开发人员仅仅需要增加一个新的LE 708,测试人员在他们的测试集中定义对应的步骤(如果需要的话可以创建新的EH)。
测试工具系统700通过多个人工产物的引导来操作,这些人工产物包括无线组件目标应用程序(TA)和其记录业务(LS),测试集702,事件句柄706,以及测试服务器。
模块测试工具系统700可以应用于许多无线组件应用程序测试需求。工具系统700是模块,且由于其事件句柄的高度专用化而非常适用于几乎任意测试方案。因为不需要任何挂钩点,它对TA的代码也只有最小的影响。
图9示出了根据测试工具系统700的一个实施例,测试工具系统700在其中工作的框架的实例的示意图。无线组件应用程序是测试工具系统700的目标应用程序(TA)752。它结合了一个基于事件的记录业务754,而不仅限于某一类型的应用程序。当事件达到测试员所关心的某个状态时,其贯穿TA 752的执行流程而被记录。优选地,它运行不易被察觉,且与测试工具系统700无关。
无线组件应用程序(或TA 752)以测试员定义的格式创建事件日志。测试员和开发人员预先对LE消息的格式达成一致的意见。然后以XML写成对应的期望LE 708,以与来自应用程序的LE的结构匹配,它们基本上包括相同的参数712和ID 710。TA 752和TH 700不知道它们之间的交换的信息的格式,只要期望的事件格式与输入的事件格式匹配就可以了;这就是灵活性所在。当TA 752记录在其执行流程中与达到新状态对应的信息时,记录业务754创建日志事件。
测试集702是TA 752遵循的逻辑步骤的XML定义,以便成功地完成测试案例(它的功能的一个小子集当前正被测试)。优选地,为了存储器的效率,TH 700一次载入一个测试集702,且测试集702含有比较器704的组合(定义了测试的期望结果的XML单元),以及连续驱动TA 752以获得进一步结果的模拟输入。模拟输入命令紧跟在比较器704的成功验证之后,其定义是比较器704的一个产物。
比较器704是包含关于TA 752的期望行为的参数化基线信息的实体。它们包含一个强制字段,它们的句柄714定义,所述定义指示了哪个TH EH 706将使用该比较器704以完成事件的验证。另外,他们可包含多个任选字段716。一个任选字段716可以是一个前提定义,其是已在测试流程中发生的另一个事件的定义,且其验证对于当前事件的成功验证是必需的。任选字段716的第二中类型可以是参数字段,其以名字值对(name-value pair)形式包含关于事件的附加信息。它们都被根据句柄的特殊事件处理逻辑成功地验证,以使步骤通过。为了维护测试的灵活性,可以省略在LE 708中出现的一些参数,且当验证该事件时,将它们忽略。另一个任选字段716为命令定义,该定义描述了TH 700基于当前步骤的成功验证而发送到TA 752的模拟输入。
命令是比较器步骤704的产物单元,其包括TH 700基于它们所属的比较器目标的成功验证而在TA 752上模拟的用户输入的上层定义。命令被用于推进TA752的逻辑流程,以生成进一步的LE 708。
根据它们的具体比较逻辑,事件句柄706负责成功地验证被指定给它们的一连串比较器704。每个测试都使用所需的尽可能多的句柄706来满足特殊测试案例中的步骤(或LE 708)的特定比较需求。对于每个测试案例,载入和卸载句柄,以便减少TH(700)的存储器覆盖面。
测试服务器(TS)756负责管理向可用于执行测试的TH 700的测试组的指定,以及负责存储在测试案例结束后接收到的结果日志。它还负责压缩测试集702并执行任何所需的映射,以使它们能正确地验证TA的752输入日志事件。
测试工具系统700的一个目的是以测试小装置应用程序的功能为中心,这些小装置应用程序需要应用程序大量的平台资源。这样的应用程序就输入输出序列而言,大部分趋向于同步,因此它们的日志事件会以一种可预料的、有序的方式到达。因此,TH 700优选地通过采用简单的句柄706来维护最小限度的存在,这将按顺序验证测试步骤。
图10示出根据测试工具系统700的一个实施例,测试无线组件应用程序(800)功能的方法的实例。测试工具获得测试集702(802),并将所有必需的信息预先加载到事件句柄706中。然后,测试工具系统700以监听TA 752(804)的日志事件开始。可从测试服务器756得到测试集,或者将测试集局部地存储在测试工具系统700中。一旦测试工具系统700得到来自TA 752(806)的日志事件,使用加载的测试集(808)中的对应比较器704来验证日志事件。
在能够测试案例之前,创建或重新使用事件句柄706。这种情况下,它的逻辑将遵循如图11提供的流程图所示的步骤,图11为根据测试工具系统700的一个实施例,测试无线组件应用程序的功能(850)的方法的另一个实例(所提供的流程用于在从服务器接收到测试集702且将XML码发送到EH 706进行分析之后所立即采用的逻辑)。
方法(850)以遵循测试集702(852)中定义的步骤顺序在队列中设置比较器704作为开始。接下来,开始测试且启动(854)与第一比较器704相关联的超时计时器。对照队列(856)中的第一比较器,验证来自TA 752的输入日志事件。如果所有参数与日志事件(858)中所给出的信息相匹配,那么就对前提事件进行检查以了解它是否成功地发生了(860),如果步骤(或LE 708)中定义了该前提事件的话。否则,如果一个或多个参数与日志事件(858)中给出的信息不匹配,那么输入日志事件就被认为是不可处理的并被传送到其他EH 706以进行验证(862),如果存在其他EH的话。如果期望的LE 708以不准确的参数712信息(864)到达,那么由于没有句柄成功地对它进行验证,因此在测试计时器期满(866)时出现测试失败。如果满足步骤(860),那么就认为事件被成功验证(868)。对于所有其他情况,都被认为失败(870)。验证状态被记录到TH 700(872)的一个临时日志。如果验证成功(868),那么将超时计时器设置为为队列中下一个比较器定义的超时;被成功验证的那一个则出列并添加入前提列表(874)。对于其他事件,可以按照有效的预处理来操作。如果存在另一个输入日志事件(876),就重复步骤(856)。否则(876),方法完成(880)。如果验证失败(870),就将结果记录为日志,关闭日志并将结果发送到服务器(878)。测试结束(880)。在EH702已被正确实施和测试之后,就准备将它用于所有通过其逻辑而将被验证的测试案例。
测试集702是定义一套期望测试结果(LE 708)的XML文件,对照测试集,TH 700可用于验证输入日志事件。图12以一个树型结构示出根据测试工具系统700的一个实施例在的测试集结构900的一个实例。测试集结构900包括一个案例定义902,该案例定义包括一个或多个步骤708定义904。每个步骤定义904包括句柄710,包括前提906的任选字段712,或多个参数908,以及一个或多个命令910。每个命令910包括一个或多个参数908。
根据测试集结构900的一个实施例,下面是测试集定义的一个例子。
1.案例定义:测试集根段,包含一个所需的属性。
1.1.1.名称:测试集定义的测试案例的名称;应该是唯一的。
1.2.步骤定义:案例的产物,必须定义至少一个。每个测试步骤代表TH的内部EH中的比较器目标。步骤具有两个所需的属性:
1.2.1.id:与对应的日志事件相关联的唯一标识符
1.2.2.超时:识别在验证失败之前TH应当等待严格匹配LE多少秒。
1.3.句柄定义:步骤的产物,必须定义。识别哪个TH EH将基于当前的比较器定义而执行比较。1.4.前提定义:步骤的产物,任选。识别在前发生的、已成功验证的LE,该步骤必须在当前事件之前发生,以使其被验证。它被作为一种机制使用,该机制确保异步应用程序的应用逻辑的正确排序。1.5.参数定义:步骤的产物,任选。定义关于事件的附加信息,所述事件应当由事件句柄在验证LE中使用。可能导致EH寻找所有或部分来自LE的信息。包含一个所需的属性。
1.5.1.id:参数名称,在参数单元中能找到所述参数的值。
1.6.命令定义:步骤的产物,任选。定义应当在当前比较器成功验证之后立即发送的模拟输入命令。包含一个所需的属性。
1.6.1.desc:命令属性,用于识别命令。
1.6.2.param:命令的产物单元,提供用于修改基本命令的附加信息(如伴随命令的移位或alt状态修改量)
根据测试工具系统700的一个实施例,下面提供一个样本测试集实施实例,其举例说明了上文所提供的结构。
<case desc=″New Testlet″>
  <step id=″0″timeout=″30″continueAfterFail=″false″>
    <handler>DefaultStrictHandler</handler>
       <command desc=″Start a wiclet″>
           <param id=″COMMAND_START_WICLET″>/bushism</param>
       </coimnand>
    </step>
    <step id=″1401″name=″Wiclet started″timeout=″30″>
      <handler>DefaultStrictHandler</handler>
      <param id=″Wiclet_ID″>-2739759394304175306</param>
      <param id=″Wiclet_URI″>/bushism</param>
   </step>
   <step id=″1407″name=″Wiclet Admin Policy received″timeout=″30″
continueAfterFail=″false″>
    <handler>DefaultAsynchronousHandler</handler>
    <precond>
     <step id=″1401″name=″Wiclet started″timeout=″30″>
         <handler>DefaultStrictHandler</handler>
         <param id=″Wiclet_ID″>-2739759394304175306</param>
         <param id=″Wiclet_URI″>/bushism</param>
     </step>
   </precond>
   <param id=″Wiclet_ID″>-2739759394304175306</param>
   <param id=″Wiclet_URI″>Research_In_Motion.com/bushism</param>
  </step>
  <step id=″501″name=″Screen pushed″timeout=″30″continueAfterFail=″false″>
    <handler>DefaultStrictHandler</handler>
    <param id=″Screen_ID″>scr_Main</param>
    <param id=″Layout_Type″>2</param>
    <command desc=″Trackwheel Click″>
      <param id=″COMMAND_CLICK″/>
    </command>
   </step>
   <step id=″802″name=″Outgoing wiclet message″timeout=″30″
continueAfterFail=″false″>
     <handler>DefaultStrictHandler</handler>
     <param id=″Wiclet_ID″>-2739759394304175306</param>
     <param id=″Message_ID″>2</param>
     <param id=″AG_ID″>482370271514247927</param>
     <param id=″Reliable″>DELIVERY_MODE_STANDARD</param>
    </step>
    <step id=″301″name=″Request queued for send″timeout=″30″
continueAfterFail=″false″>
     <handler>DefaultStrictHandler</handler>
     <param id=″Position_In_Queue″>0</pararm>
     <param id=″Message_Size″>25</param>
    </step>
    <step id=″304″name=″Request queue empty″timeout=″30″
continueAfterFail=″false″>
     <handler>DefaultStrictHandler</handler>
    </step>
    <step id=″603″name=″Resource read″timeout=″30″continueAfterFail=″false″>
     <handler>DefaultStrictHandler</handler>
     <param id=″Resource_URL″>envlp4.png</param>
    </step>
    <step id=″501″name=″Screen pushed″timeout=″30″continueAfterFail=″false″>
     <handler>DefaultStrictHandler</handler>
     <param id=″Screen_ID″>scr_MessageSent</param>
     <param id=″Layout_Type″>2</param>
    </step>
    <step id=″603″name=″Resource read″timeout=″30″continueAfterFail=″false″>
    <handler>DefaultStrictHandler</handler>
      <param id=″Resource_URL″>envlp3.png</param>
    </step>
    <step id=″501″name=″Screen pushed″timeout=″30″continueAfterFail=″false″>
      <handler>DefaultStrictHandler</handler>
      <param id=″Screen_ID″>scr_inGetRandomBushismResponse</param>
      <param id=″Layout_Type″>2</param>
      <command desc=″Trackwheel Click″>
        <param id=″COMMAND_CLICK″/>
      </command>
    </step>
    <step id=″502″name=″Menu invoked″timeout=″30″continueAfterFail=″false″>
     <handler>DefaultStrictHandler</handler>
     <param id=″Menu_ID″>33</param>
     <param id=″Number_Of_Items″>1</param>
     <command desc=″Trackwheel Roll″>
       <param id=″COMMAND_ROLL_DOWN″>5</param>
     </conunand>
     <command desc=″Trackwheel Click″>
        <param id=″COMMAND_CLICK″/>
     </command>
    </step>
    <step id=″1402″name=″Wiclet stopped″timeout=″30″continueAfterFail=″false″>
     <handler>DefaultStrictHandler</handler>
     <param id=″Wiclet_ID″>-2739759394304175306</param>
     <param id=″Wiclet_URI″>Research_In_Motion.com/bushism</param>
   </step>
</case>
对异步无线组件应用程序的测试与对同步应用程序的类似。使用期望的结果创建句柄和定义测试集的机制保持不变,但是考虑到被测试应用程序的异步性质,测试流程的逻辑要改变。这种形式的测试特别适合基于网络业务的应用程序。
对于异步应用程序,使用两个句柄。一个已如上所述在图11中定义。第二个用于异步事件的句柄在下文中定义。图13根据测试工具系统700的一个实施例,在流程图中示出了测试无线组件应用程序(1000)功能的方法的另一个实例。如前文所述,测试集702中出现的逻辑流程已被TH 700从TS 756中接收,对应的步骤进行到EH 706以进行解析。
方法(1000)以定义所有事件都必须发生(1002)在其中的超时时段开始。如果在该时段结束时还剩有任何未验证的事件(1012),那么就认为测试失败(1016)。接下来,基于与测试集702中的异步句柄相关联的步骤生成比较器事件列表(1004)。启动(1006)测试和句柄超时计时器。对于每个输入的日志事件(1008),将日志事件与列表中的所有比较器704进行比较,直到找到(1010)匹配。该比较逻辑与上面步骤(856)到(866)中所定义的逻辑是一样的。在句柄的超时时段期间,如果所有异步比较器对照输入的日志事件已被成功地验证,那么就认为测试成功了(1014)。
异步应用程序的测试集定义可遵循与上文定义的相同的语法结构。但是,使用前提标志来对TH 700的期望逻辑流程进行排序,以与涉及异步事件的TA 752匹配。考虑一组期望来自TA 752的A,B,C,...G,H的事件。让事件C,D,E,G为异步,但C,D和E必须只在同步事件A和B发生之后发出。由于对于同步事件而言隐含了预处理,因此它的定义只是一种形式。但是,为了确保来自TA752的事件C,D和E在正确的时间到达,必须以事件B显式对事件C、D和E进行预处理。否则,它们可能被验证为含有正确的信息,但是它们的到达时间在逻辑上可能不正确,一直到涉及TA 752。
下面提供一个使用异步事件的示例测试集。来自服务器的响应和输入消息是异步事件,其可能在取决于业务的网络业务质量(QoS)的请求发送之后的任何时间,即网络业务能够提供请求的信息的平均时间发生。
<case desc=″New Testlet″>
    <step id=″0″timeout=″30″continueAfterFail=″false″>
        <handler>DefaultStrictHandler</handler>
        <command desc=″Start a wiclet″>
           <param id=″COMMAND_START_WICLET″>/AQuote</param>
        </command>
       </step>
       <step id=″1401″name=″Wiclet started″timeout=″30″continueAfterFail=″false″>
             <handler>DefaultStrictHandler</handler>
             <param id=″Wiclet_ID″>4681829582212566094</param>
             <param
id=″Wiclet_URI″>Research_In_Motion.corm/AQuote</param>
      </step>
      <step id=″1407″name=″Wiclet Admin Policy received″timeout=″30″
continueAfterFail=″false″>
         <handler>DefaultStrictHandler</handler>
         <precond>
             <step id=″1401″name=″Wiclet started″timeout=″30″>
                 <handler>DefaultStrictHandler</handler>
                 <param id=″Wiclet_ID″>-2739759394304175306</param>
                 <param id=″Wiclet_URI″>/bushism</param>
             </step>
         </precond>
         <param id=″Wiclet_ID″>4681829582212566094</param>
         <param
id=″Wiclet_URI″>Research_In_Motion.com/AQuote</param>
      </step>
      <step id=″501″name=″Screen pushed″timeout=″30″
continueAfterFail=″false″>
        <handler>DefaultStrictHandler</handler>
        <param id=″Screen_ID″>scr_Main</param>
        <param id=″Layout_Type″>2</param>
        <command desc=″Trackwheel Click″>
            <param id=″COMMAND_CLICK″/>
        </command>
    </step>
     <step id=″802″name=″Outgoing wiclet message″timeout=″30″
continueAfterFail=″false″>
         <handler>DefaultStrictHandler</handler>
         <param id=″Wiclet_ID″>4681829582212566094</param>
         <param id=″Message_ID″>2</param>
         <param id=″AG_ID″>-2857534396031158848</param>
         <param id=″Position_In_Queue″>1</param>
         <param id=″Reliable″>DELIVERY_MODE_STANDARD</param>
    </step>
    <step id=″301″name=″Request queued for send″timeout=″30″
continueAfterFail=″false″>
        <handler>DefaultStrictHandler</handler>
        <param id=″Request_ID″>-737979528</param>
        <param id=″Position_In_Queue″>0</param>
        <param id=″Message_Size″>24</param>
    </step>
    <step id=″501″name=″Screen pushed″timeout=″30″
continueAfterFail=″false″>
        <handler>DefaultStrictHandler</handler>
        <param id=″Screen_ID″>scr_MessageSent</param>
        <param id=″Layout_Type″>2</param>
    </step>
    <step id=″302″name=″Request processed″timeout=″30″
continueAfterFail=″false″>
         <handler>DefaultAsynchronousHandler</handler>
         <precond>
             <step id=″802″name=″Outgoing wiclet message″timeout=″30″>
                <handler>DefaultStrictHandler</handler>
                <param
         id=″Wiclet_ID″>4681829582212566094</param>
                  <param id=″Message_ID″>2</param>
                  <param id=″AG_ID″>-
         2857534396031158848</param>
                  <param id=″Position_In_Queue″>1</param>
                  <param
         id=″Reliable″>DELIVERY_MODE_STANDARD</param>
                </step>
         <param id=″Request_ID″>-737979528</param>
         <param id=″Server_Reply″>200</param>
     </step>
     <step id=″801″name=″Incoming wiclet message″timeout=″30″
continueAfferFail=″false″>
         <handler>DefaultAsynchronousHandler</handler>
         <precond>
             <step id=″802″name=″Outgoing wiclet message″timeout=″30″>
                   <handler>DefaultStrictHandler</handler>
                   <param
         id=″Wiclet_ID″>4681829582212566094</param>
                   <param id=″Message_ID″>2</param>
                   <param id=″AG_ID″>-
         2857534396031158848</param>
                   <param id=″Position_In_Queue″>1</param>
                   <param
         id=″Reliable″>DELIVERY_MODE_STANDARD</param>
               </step>
         </precond>
         <param id=″Wiclet_ID″>4681829582212566094</param>
         <param id=″Message_ID″>1</param>
         <param id=″AG_ID″>-2857534396031158848</param>
         <param id=″Position_In_Queue″>1</param>
         <param id=″Reliable″>DELIVERY_MODE_STANDARD</param>
     </step>
     <step id=″809″name=″Message removed from queue″timeout=″30″
continueAfterFail=″false″>
         <handler>DefaultStrictHandler</handler>
         <precond>
            <step id=″801″name=″Incoming wiclet message″timeout=″30″>
     <handler>DefaultAsynchronousHandler</handler>
                 <param
             id=″Wiclet_ID″>4681829582212566094</param>
                 <param id=″Message_ID″>1</param>
                 <param id=″AG_ID″>-
         2857534396031158848</param>
                 <param id=″Position_In_Queue″>1</param>
                 <param
         id=″Reliable″>DELIVERY_MODE_STANDARD</param>
               </step>
         </precond>
         <param id=″Wiclet_ID″>4681829582212566094</param>
         <param id=″Message_ID″>1</param>
         <param id=″Queue_ID″>4681829582212566094</param>
         <param id=″Pending_Wiclet_Message_Count″>0</param>
    </step>
</case>
根据本发明公开的系统和方法可以由具有上文所述的功能的任意硬件,软件或硬件与软件的组合来实现。软件的代码,不论是其整体还是其中一部分,都可存储在计算机可读存储器中。另外,一种代表软件代码的计算机数据信号可通过通信网络进行发送,所述数据信号可嵌入载波中。这样的计算机可读存储器以及计算机数据信号,以及硬件,软件以及它们的组合,都在本发明公开的范围内。
虽然已经给出并描述了本发明的特定实施例,可以对这些实施例进行改变和变型,而并不脱离本发明的真正范围。

Claims (23)

1.一种用于无线组件目标应用程序的自动功能测试的测试工具系统,所述测试工具系统包括:
目标应用程序日志事件收听器,用于收听并接收由正在被测试的目标应用程序生成的日志事件;
测试集,用于测试日志事件,所述测试集包括用于定义期望的目标应用程序逻辑流程的期望的日志事件以及比较器,所述比较器保存用于验证测试过程中的步骤的信息;以及
至少一个事件句柄,用于针对所述日志事件来验证所述比较器,其中所述事件句柄包括用于验证所述比较器的事件比较逻辑。
2.根据权利要求1所述的测试工具系统,其中在测试运行期间生成由目标应用程序生成的日志事件。
3.根据权利要求1所述的测试工具系统,其中用XML定义测试集。
4.根据权利要求1所述的测试工具系统,其中所述测试工具系统只采用简单的句柄来按顺序验证测试步骤。
5.根据权利要求1所述的测试工具系统,其中无线组件目标应用程序的测试是在无线设备上进行的。
6.根据权利要求1所述的测试工具系统,其中所述测试工具系统被从所述目标应用程序完全去耦合。
7.根据权利要求1所述的测试工具系统,其中所述日志事件包括用于唯一地识别所述日志事件的标识符。
8.根据权利要求7所述的测试工具系统,其中所述日志事件还包括至少一个参数,所述参数用于存储描述所述目标应用程序当前状态的期望目标应用程序逻辑流程信息。
9.根据权利要求7所述的测试工具系统,其中所述日志事件还包括用于确定在所述日志事件之前发生的前提日志事件的前提。
10.根据权利要求1所述的测试工具系统,其中所述比较器包括用于将比较器与所述至少一个事件句柄中的事件句柄相关联的句柄定义。
11.根据权利要求10所述的测试工具系统,其中所述比较器包括前提定义,其是必须在当前事件的验证前已在测试流程中发生的另一事件的定义。
12.根据权利要求10所述的测试工具系统,其中所述比较器包括至少一个参数字段,用于存储有关所述日志事件的附加信息。
13.根据权利要求12所述的测试工具系统,其中所述至少一个参数字段中的附加信息呈名称值对的形式。
14.根据权利要求10所述的测试工具系统,其中所述比较器包括用于描述模拟输入的至少一个命令定义,所述测试工具系统基于测试集的成功验证将所述模拟输入发送给目标应用程序,从而执行对用户输入的模拟。
15.根据权利要求1所述的测试工具系统,进一步包括用于管理对测试工具系统进行测试组分派的测试服务器,所述测试服务器包括:
用于存储测试集结果的至少一个测试结果日志;以及
用于存储测试集的储存库。
16.根据权利要求1所述的测试工具系统,进一步包括目标应用程序记录业务,用于生成所述日志事件。
17.一种无线组件目标应用程序的自动功能测试的方法,所述方法包括步骤:
收听由正在被测试的目标应用程序生成的日志事件;
接收所述日志事件;
接收用于测试所述日志事件的测试集,所述测试集包括用于定义期望的目标应用程序逻辑流程的期望的日志事件以及比较器,所述比较器保存用于验证测试过程中的步骤的信息;以及
针对所述日志事件来验证所述比较器。
18.根据权利要求17所述的方法,进一步包括步骤:
将从测试集接收到的比较器排序成队列;
初始化与第一比较器相关联的超时计时器;和
针对所述第一比较器来验证所述日志事件。
19.根据权利要求18所述的方法,其中针对所述第一比较器来验证所述日志事件的步骤包括针对所述第一比较器来确定是否所有参数都与日志事件中给定的信息匹配的步骤。
20.根据权利要求18所述的方法,进一步包括基于针对所述第一比较器来验证所述日志事件的步骤的结果,记录所述日志事件的验证状态的步骤。
21.根据权利要求18所述的方法,进一步包括步骤:使成功验证的比较器出列;以及将成功验证的比较器添加到前提列表。
22.根据权利要求18所述的方法,进一步包括步骤:重置针对第二比较器的超时计时器;以及针对第二比较器验证日志事件。
23.根据权利要求17所述的方法,其中对多个日志事件进行异步验证。
CN2006800127218A 2005-04-18 2006-04-18 测试无线组件应用程序的系统和方法 Active CN101194233B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67204105P 2005-04-18 2005-04-18
US60/672,041 2005-04-18
PCT/CA2006/000579 WO2006111000A1 (en) 2005-04-18 2006-04-18 System and method of testing wireless component applications

Publications (2)

Publication Number Publication Date
CN101194233A CN101194233A (zh) 2008-06-04
CN101194233B true CN101194233B (zh) 2010-05-19

Family

ID=37114669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800127218A Active CN101194233B (zh) 2005-04-18 2006-04-18 测试无线组件应用程序的系统和方法

Country Status (7)

Country Link
US (1) US8001529B2 (zh)
EP (1) EP1872227B1 (zh)
CN (1) CN101194233B (zh)
AT (1) ATE428983T1 (zh)
CA (1) CA2605116C (zh)
DE (1) DE602006006301D1 (zh)
WO (1) WO2006111000A1 (zh)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8745184B1 (en) * 2007-05-18 2014-06-03 Jasper Wireless, Inc. Wireless communication provisioning using state transition rules
US9226151B2 (en) 2006-04-04 2015-12-29 Jasper Wireless, Inc. System and method for enabling a wireless device with customer-specific services
US8478238B2 (en) 2005-04-29 2013-07-02 Jasper Wireless, Inc. Global platform for managing subscriber identity modules
US9307397B2 (en) 2005-04-29 2016-04-05 Jasper Technologies, Inc. Method for enabling a wireless device with customer-specific services
US7861225B2 (en) * 2005-05-31 2010-12-28 Qualcomm Incorporated System and method to combine debugging messages from diverse applications or operating systems executed within a mobile device
JP4304300B2 (ja) * 2006-11-01 2009-07-29 日本電気株式会社 ユーザ装置、サーバ、アップグレードサービスシステム、その方法およびプログラム
TWI345203B (en) * 2006-12-29 2011-07-11 Chimei Innolux Corp Debugging system and method of display device
US8028188B2 (en) * 2008-03-04 2011-09-27 Infosys Technologies Limited System and method for testing an application installed on a wireless communication device
US8578336B1 (en) * 2008-11-03 2013-11-05 United Services Automobile Association (Usaa) Systems and methods for providing a test automation framework having a unified user interface
US20100162275A1 (en) * 2008-12-19 2010-06-24 Microsoft Corporation Way Controlling applications through inter-process communication
US8826238B2 (en) * 2009-01-22 2014-09-02 Microsoft Corporation Per group verification
US8694371B2 (en) * 2009-04-16 2014-04-08 Blackberry Limited System and method for validating metrics associated with interactive events related to advertising
KR20120098682A (ko) * 2009-10-12 2012-09-05 코닌클리케 필립스 일렉트로닉스 엔.브이. 제어 네트워크에서 디바이스들을 연관 또는 재―연관시키는 방법
US9401813B2 (en) * 2009-12-29 2016-07-26 Iheartmedia Management Services, Inc. Media stream monitor
US8650481B1 (en) * 2010-05-18 2014-02-11 Google Inc. Stable and secure use of content scripts in browser extensions
US8966447B2 (en) * 2010-06-21 2015-02-24 Apple Inc. Capturing and displaying state of automated user-level testing of a graphical user interface application
US8869112B2 (en) 2010-11-30 2014-10-21 Sap Se System and method for modular business applications
US9336027B2 (en) 2010-12-17 2016-05-10 Sap Se System and method for modular business applications
US8554797B2 (en) 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
US9213621B2 (en) 2011-05-27 2015-12-15 International Business Machines Corporation Administering event pools for relevant event analysis in a distributed processing system
US8676883B2 (en) 2011-05-27 2014-03-18 International Business Machines Corporation Event management in a distributed processing system
US9419650B2 (en) 2011-06-22 2016-08-16 International Business Machines Corporation Flexible event data content management for relevant event and alert analysis within a distributed processing system
US20130097272A1 (en) 2011-10-18 2013-04-18 International Business Machines Corporation Prioritized Alert Delivery In A Distributed Processing System
US9178936B2 (en) 2011-10-18 2015-11-03 International Business Machines Corporation Selected alert delivery in a distributed processing system
US9135147B2 (en) * 2012-04-26 2015-09-15 International Business Machines Corporation Automated testing of applications with scripting code
US20130339467A1 (en) * 2012-06-14 2013-12-19 VMO Systems Inc. Wireless Mobile Data Server With Removable Solid-State Memory
CN102932205B (zh) * 2012-11-19 2016-01-20 深圳市亚特尔科技有限公司 一种网络服务端接口的自动化测试方法
US9047404B1 (en) 2013-03-13 2015-06-02 Amazon Technologies, Inc. Bridge to connect an extended development capability device to a target device
US9361184B2 (en) 2013-05-09 2016-06-07 International Business Machines Corporation Selecting during a system shutdown procedure, a restart incident checkpoint of an incident analyzer in a distributed processing system
US9195782B2 (en) 2013-06-26 2015-11-24 Siemens Product Lifecycle Management Software Inc. System and method for combining input tools into a composite layout
US9170860B2 (en) 2013-07-26 2015-10-27 International Business Machines Corporation Parallel incident processing
US20150052400A1 (en) 2013-08-19 2015-02-19 Concurix Corporation Breakpoint Setting Through a Debugger User Interface
US9465721B2 (en) * 2013-08-19 2016-10-11 Microsoft Technology Licensing, Llc Snapshotting executing code with a modifiable snapshot definition
US9658902B2 (en) 2013-08-22 2017-05-23 Globalfoundries Inc. Adaptive clock throttling for event processing
US9256482B2 (en) 2013-08-23 2016-02-09 International Business Machines Corporation Determining whether to send an alert in a distributed processing system
US9602337B2 (en) 2013-09-11 2017-03-21 International Business Machines Corporation Event and alert analysis in a distributed processing system
US9086968B2 (en) 2013-09-11 2015-07-21 International Business Machines Corporation Checkpointing for delayed alert creation
CN103607702B (zh) * 2013-11-15 2018-09-07 上海大汉三通通信股份有限公司 一种在短信业务中不同平台间进行通讯的方法和系统
US9389943B2 (en) 2014-01-07 2016-07-12 International Business Machines Corporation Determining a number of unique incidents in a plurality of incidents for incident processing in a distributed processing system
US9143966B2 (en) * 2014-01-20 2015-09-22 Nokia Technologies Oy Remote access to a wireless device
WO2015130675A2 (en) * 2014-02-26 2015-09-03 Western Michigan University Research Foundation Apparatus and method for testing computer program implementation against a design model
CN104410525B (zh) * 2014-11-27 2018-05-04 百度在线网络技术(北京)有限公司 插件应用的管理方法和装置
WO2016114748A1 (en) 2015-01-12 2016-07-21 Hewlett Packard Enterprise Development Lp Data comparison
US9632921B1 (en) 2015-11-13 2017-04-25 Microsoft Technology Licensing, Llc Validation using scenario runners
CN109144563A (zh) * 2018-06-29 2019-01-04 平安科技(深圳)有限公司 应用组件构建打包方法、装置及计算机存储介质
CN110737983A (zh) * 2019-10-11 2020-01-31 上海元城汽车技术有限公司 交通工具的功能试验方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5928369A (en) * 1996-06-28 1999-07-27 Synopsys, Inc. Automatic support system and method based on user submitted stack trace

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410681A (en) * 1991-11-20 1995-04-25 Apple Computer, Inc. Interpreter for performing remote testing of computer systems
AU1281699A (en) 1997-10-30 1999-05-24 Qualcomm Incorporated System and method for analyzing mobile log files
EP1309214B1 (en) 2001-11-05 2010-04-21 Nokia Corporation Delivery of mobile station operational and self-performance test results to network in response to encrypted request message
US7299451B2 (en) * 2002-01-24 2007-11-20 International Business Machines Corporation Remotely driven system for multi-product and multi-platform testing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5928369A (en) * 1996-06-28 1999-07-27 Synopsys, Inc. Automatic support system and method based on user submitted stack trace

Also Published As

Publication number Publication date
ATE428983T1 (de) 2009-05-15
EP1872227A1 (en) 2008-01-02
US20070037521A1 (en) 2007-02-15
CA2605116C (en) 2011-05-31
WO2006111000A1 (en) 2006-10-26
US8001529B2 (en) 2011-08-16
EP1872227B1 (en) 2009-04-15
EP1872227A4 (en) 2008-08-20
DE602006006301D1 (de) 2009-05-28
CN101194233A (zh) 2008-06-04
CA2605116A1 (en) 2006-10-26

Similar Documents

Publication Publication Date Title
CN101194233B (zh) 测试无线组件应用程序的系统和方法
CN101204039B (zh) 设备向服务器注册的系统及方法
US7743250B2 (en) Traffic manager for distributed computing environments
US8832680B2 (en) Installation event counting apparatus and package creation method
US20150163179A1 (en) Execution of a workflow that involves applications or services of data centers
CN100566311C (zh) 供应组件应用程序的系统和方法
CA2369797A1 (en) System and method for web service management
CN107005453B (zh) 用于工业装置的安全双向通信的方法和系统
CN100505711C (zh) 管理组件应用程序的通信的系统和方法
JP2008520051A (ja) ソフトウェアを計測するための方法及びシステム
US8340652B2 (en) System and method of waste management
CN112416512A (zh) 一种镜像构建方法、服务器、客户机、存储介质及系统
CN110392015A (zh) 一种处理业务请求的方法和系统
US7739328B1 (en) Traffic manager for distributed computing environments
Mauro et al. Service oriented device integration-an analysis of SOA design patterns
US20080228889A1 (en) Method, system and computer program product for distributing software based on an e-mail service
CN114301682A (zh) 数据处理方法、装置和终端设备
EP1875372B1 (en) System and method of application persistence
CN112000540A (zh) 分布式部署产品的监控处理方法、系统、设备和存储介质
EP3899760B1 (en) Apparatus and method for license activation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: Ontario, Canada

Patentee after: BlackBerry Ltd.

Country or region after: Canada

Address before: Ontario, Canada

Patentee before: RESEARCH IN MOTION Ltd.

Country or region before: Canada

CP03 Change of name, title or address
TR01 Transfer of patent right

Effective date of registration: 20240524

Address after: Ai Erlandubailin

Patentee after: Maliki Innovation Co.,Ltd.

Country or region after: Ireland

Address before: Ontario, Canada

Patentee before: BlackBerry Ltd.

Country or region before: Canada

TR01 Transfer of patent right