应用的测试方法、系统、电子设备和存储介质转让专利

申请号 : CN201811255838.X

文献号 : CN109271325B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 尹胜赖飞李文广唐亚明

申请人 : 携程旅游网络技术(上海)有限公司

摘要 :

本申请提供一种应用的测试方法、系统、电子设备和存储介质,其中方法包括:构建测试环境,包括待发布应用和Mock子系统;获取线上环境中已发布应用的运行数据,包括实际请求数据、关联服务数据和实际响应数据,将关联服务数据存储至Mock子系统;将实际请求数据依次在测试环境中回放,获取待发布应用根据关联服务数据处理实际请求数据所得的模拟响应数据;比对模拟响应数据和实际响应数据,对待发布应用的各功能单元进行筛查。本申请通过Mock子系统将请求在线上环境中运行时所依赖的关联服务数据实时记录下来,并在测试环境回放请求时返回对应的关联服务数据,排除不同环境下关联服务的差异性,对待发布应用进行基于真实数据流的测试筛查。

权利要求 :

1.一种应用的测试方法,其特征在于,包括:

构建测试环境,包括待发布应用和Mock子系统,所述Mock子系统包括Redis Mock子系统和SOA Mock子系统;

获取线上环境中已发布应用的运行数据,包括实际请求数据、关联服务数据和实际响应数据,将所述关联服务数据存储至所述Mock子系统;其中,所述Redis Mock子系统存储所述关联服务数据中,所述已发布应用在线上环境中运行处理请求所用到的缓存数据,以供所述待发布应用在测试环境中处理相同请求时调用,所述SOA Mock子系统存储所述关联服务数据中,所述已发布应用在线上环境中运行处理不同功能单元的请求所用到的服务数据,以供所述待发布应用在测试环境中处理相同功能单元的请求时调用;

将实际请求数据依次在所述测试环境中回放,并使用所述Redis Mock子系统和所述SOA Mock子系统将所述关联服务数据按照所述线上环境返回,以获取所述待发布应用根据关联服务数据处理实际请求数据所得的模拟响应数据;

比对所述模拟响应数据和所述实际响应数据,对所述待发布应用的各功能单元进行筛查;

实时获取线上环境中已发布应用的异常请求数据,将所述异常请求数据在所述测试环境中回放,获取所述待发布应用处理所述异常请求数据生成的数据流,并根据所述数据流对所述已发布应用进行故障分析;

将实际请求数据按预设的请求速率在所述测试环境中回放,获取所述待发布应用根据关联服务数据处理实际请求数据的输出数据;

根据所述输出数据获取所述待发布应用基于所述预设的请求速率的压力测试结果;

调节请求速率,获取所述待发布应用基于不同请求速率的压力测试结果。

2.一种应用的测试系统,其特征在于,包括:

测试环境,包括待发布应用和Mock子系统,所述Mock子系统包括Redis Mock子系统和SOA Mock子系统;

数据获取模块,用于获取线上环境中已发布应用的运行数据,包括实际请求数据、关联服务数据和实际响应数据,将所述关联服务数据存储至所述Mock子系统;其中,所述Redis Mock子系统存储所述关联服务数据中,所述已发布应用在线上环境中运行处理请求所用到的缓存数据,以供所述待发布应用在测试环境中处理相同请求时调用,所述SOA Mock子系统存储所述关联服务数据中,所述已发布应用在线上环境中运行处理不同功能单元的请求所用到的服务数据,以供所述待发布应用在测试环境中处理相同功能单元的请求时调用;

生产测试模块,用于将实际请求数据依次在所述测试环境中回放,并使用所述Redis Mock子系统和所述SOA Mock子系统将所述关联服务数据按照所述线上环境返回,以获取所述待发布应用根据关联服务数据处理实际请求数据所得的模拟响应数据;并比对所述模拟响应数据和所述实际响应数据,对所述待发布应用的各功能单元进行筛查;

故障分析模块,用于实时获取线上环境中已发布应用的异常请求数据,将所述异常请求数据在所述测试环境中回放,获取所述待发布应用处理所述异常请求数据生成的数据流,并根据所述数据流对所述已发布应用进行故障分析;

压力测试模块,用于将实际请求数据按预设的请求速率在所述测试环境中回放,获取所述待发布应用根据关联服务数据处理实际请求数据的输出数据;并根据所述输出数据获取所述待发布应用基于所述预设的请求速率的压力测试结果;

速率调节模块,用于调节请求速率,获取所述待发布应用基于不同请求速率的压力测试结果。

3.一种电子设备,其特征在于,包括:

处理器;以及

存储器,用于存储可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1所述的应用的测试方法的步骤。

4.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1所述的应用的测试方法的步骤。

说明书 :

应用的测试方法、系统、电子设备和存储介质

技术领域

[0001] 本申请涉及互联网技术领域,具体地说,涉及一种应用的测试方法、系统、电子设备和存储介质。

背景技术

[0002] 应用程序在开发完成后,需要对系统和系统的各个模块进行测试。测试时,由开发人员构造测试用例,而后将系统的输出和预期输出进行比对,来判断系统针对该测试用例的反馈是否达到预期。
[0003] 上述测试至少存在如下问题:一是开发人员构造的测试用例具有局限性,不能重现生产环境中的输入数据;二是开发人员构造数目可观的测试用例的工作量较大,对开发工作本身造成较大影响。
[0004] 另外,生产环境中应用程序产生故障后,为了保障系统的可用性,需要立即将系统回滚至正常工作状态,其次才是在线下定位系统故障。这样做会影响故障诊断,也延缓了开发进度。
[0005] 需要说明的是,在上述背景技术部分申请的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

[0006] 有鉴于此,本申请提供一种应用的测试方法、系统、电子设备和存储介质,期望解决现有技术中构造测试用例受限、无法实时定位故障、影响应用开发效率的问题。
[0007] 根据本申请的一个方面,提供一种应用的测试方法,包括:构建测试环境,包括待发布应用和Mock子系统;获取线上环境中已发布应用的运行数据,包括实际请求数据、关联服务数据和实际响应数据,将所述关联服务数据存储至所述Mock子系统;将实际请求数据依次在所述测试环境中回放,获取所述待发布应用根据关联服务数据处理实际请求数据所得的模拟响应数据;比对所述模拟响应数据和所述实际响应数据,对所述待发布应用的各功能单元进行筛查。
[0008] 优选地,上述的测试方法还包括:将实际请求数据按预设的请求速率在所述测试环境中回放,获取所述待发布应用根据关联服务数据处理实际请求数据的输出数据;根据所述输出数据获取所述待发布应用基于所述预设的请求速率的压力测试结果。
[0009] 优选地,上述的测试方法还包括:调节请求速率,获取所述待发布应用基于不同请求速率的压力测试结果。
[0010] 优选地,上述的测试方法还包括:实时获取线上环境中已发布应用的异常请求数据;将所述异常请求数据在所述测试环境中回放,获取所述待发布应用处理所述异常请求数据生成的数据流;根据所述数据流对所述已发布应用进行故障分析。
[0011] 优选地,上述的测试方法中,构建的Mock子系统包括Redis Mock子系统和SOA Mock子系统。
[0012] 根据本申请的另一个方面,提供一种应用的测试系统,包括:测试环境,包括待发布应用和Mock子系统;数据获取模块,用于获取线上环境中已发布应用的运行数据,包括实际请求数据、关联服务数据和实际响应数据,将所述关联服务数据存储至所述Mock子系统;生产测试模块,用于将实际请求数据依次在所述测试环境中回放,获取所述待发布应用根据关联服务数据处理实际请求数据所得的模拟响应数据;并比对所述模拟响应数据和所述实际响应数据,对所述待发布应用的各功能单元进行筛查。
[0013] 优选地,上述的测试系统还包括:压力测试模块,用于将实际请求数据按预设的请求速率在所述测试环境中回放,获取所述待发布应用根据关联服务数据处理实际请求数据的输出数据;并根据所述输出数据获取所述待发布应用基于所述预设的请求速率的压力测试结果。
[0014] 优选地,上述的测试系统还包括:速率调节模块,用于调节请求速率,获取所述待发布应用基于不同请求速率的压力测试结果。
[0015] 优选地,上述的测试系统还包括:故障分析模块,用于实时获取线上环境中已发布应用的异常请求数据;将所述异常请求数据在所述测试环境中回放,获取所述待发布应用处理所述异常请求数据生成的数据流;并根据所述数据流对所述已发布应用进行故障分析。
[0016] 优选地,上述的测试系统中,所述测试环境的Mock子系统包括Redis Mock子系统和SOA Mock子系统。
[0017] 根据本申请的另一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的应用的测试方法的步骤。
[0018] 根据本申请的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的应用的测试方法的步骤。
[0019] 本申请与现有技术相比的有益效果在于:
[0020] 本申请通过Mock子系统将请求在线上环境中运行时所依赖的关联服务数据实时记录下来,并在测试环境回放请求时返回对应的关联服务数据,排除不同环境下关联服务的差异性;
[0021] 通过在测试环境中回放线上环境的实际请求数据,对待发布应用进行基于真实数据流的测试筛查。
[0022] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

[0023] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0024] 图1至图3示出本申请实施例中几种应用的测试方法的步骤示意图;
[0025] 图4示出本申请实施例中一种应用的测试系统的模块示意图;
[0026] 图5示出本申请实施例中一种应用的测试系统的架构示意图;
[0027] 图6示出本申请实施例中一种电子设备的示意图;
[0028] 图7示出本申请实施例中计算机可读存储介质的示意图。

具体实施方式

[0029] 现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使得本申请将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。
[0030] 图1至图3示出本申请的一些实施例中几种应用的测试方法的步骤,图中的编号仅用于区分不同的步骤,并不限制各个步骤间的逻辑关系和执行顺序。
[0031] 参照图1所示,在本申请的一些实施例中,应用的测试方法包括但不限于以下步骤:
[0032] S10、构建测试环境,包括待发布应用和Mock子系统。
[0033] 其中,待发布应用是指针对线上的已发布应用进行更新后的版本。Mock子系统是一套模拟系统,用来模拟待发布应用的各个功能单元的功能实现。Mock子系统可以减少各功能单元之间的依赖,保证各功能单元本身功能的稳定性和测试独立性。
[0034] S20、获取线上环境中已发布应用的运行数据,包括实际请求数据、关联服务数据和实际响应数据,将关联服务数据存储至Mock子系统。
[0035] 在一些优选的实施例中,构建的Mock子系统包括Redis Mock子系统和SOA Mock子系统。Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key‑Value数据库,并提供多种语言的API。Redis Mock子系统可以存储已发布应用在线上环境中运行处理请求所用到的一些缓存数据,供待发布应用在测试环境中处理相同请求时调用。SOA(Service‑Oriented Architecture,面向服务的架构)是一个组件模型,它将应用的不同功能单元(也称为服务)通过这些服务之间定义良好的接口和契约联系起来。SOA Mock子系统可以存储已发布应用在线上环境中运行处理不同功能单元的请求所用到的一些服务数据,供待发布应用在测试环境中处理相同功能单元的请求时调用。
[0036] 其中,线上环境中已发布应用的运行数据存储于数据库中。线上环境将已发布应用的运行数据(即已发布应用运行产生的日志)按照一定的格式推送到消息队列,再通过流程将消息拉取到数据库中。已发布应用的运行数据包含实际请求数据和实际响应数据,以及相关的关联服务数据,包括SOA的服务数据、Redis的服务数据等。
[0037] 通过Redis Mock子系统和SOA Mock子系统,能够在测试环境调用关联服务时,返回与线上环境一致的关联服务数据,从而排除不同环境下关联服务的差异性,保证测试的准确性。
[0038] S30、将实际请求数据依次在测试环境中回放,获取待发布应用根据关联服务数据处理实际请求数据所得的模拟响应数据。
[0039] 通过截取线上环境的真实数据流,在测试环境中回放实际请求数据,能够复现线上环境的真实输入在测试环境中的表现,从而观察输出以及定位待发布应用可能存在的问题。
[0040] S40、比对模拟响应数据和实际响应数据,对待发布应用的各功能单元进行筛查。
[0041] 在优选的实施例中,从数据库中取出一定时间内的实际请求数据,放入测试环境中依次重新请求,同时使用Redis Mock子系统和SOA Mock子系统模拟线上环境中Redis的返回数据和SOA的返回数据,将关联服务数据完全按照线上环境返回,获得待发布应用处理请求所得的模拟响应数据。通过将测试环境中返回的模拟响应数据与数据库中存储的线上环境返回的实际响应数据进行比对,就可以对待发布应用的各功能单元进行测试筛查,及时发现待发布应用的问题。
[0042] 进一步的,在一些实施例中,参照图2所示,应用的测试方法还包括:
[0043] S50、将实际请求数据按预设的请求速率在测试环境中回放,获取待发布应用根据关联服务数据处理实际请求数据的输出数据;S60、根据输出数据获取待发布应用基于预设的请求速率的压力测试结果。
[0044] 通过从线上环境截取大批量的请求数据,导入到待发布应用,观察输出并收集分析待发布应用的各项性能指标,对待发布应用进行压力测试。
[0045] 进一步的,在一些实施例中,应用的测试方法还包括:S70、调节请求速率,获取待发布应用基于不同请求速率的压力测试结果。通过请求数据流的速度调节机制,按需求调整线上环境的请求数据在测试环境回放时的速率,从而达到全面评估待发布应用在不同请求速率下的性能。
[0046] 进一步的,在一些实施例中,参照图3所示,应用的测试方法还包括:
[0047] S80、实时获取线上环境中已发布应用的异常请求数据;
[0048] S90、将异常请求数据在测试环境中回放,获取待发布应用处理异常请求数据生成的数据流,根据数据流对已发布应用进行故障分析。
[0049] 在线上环境产生故障后,为了保障已发布应用的可用性,需要立即将系统回滚至正常工作状态。与此同时,通过实时截取线上环境的异常请求并在测试环境中重新请求,获取待发布应用处理异常请求生成的数据流,通过测试环境的断点等手段,可以快速并准确定位到已发布应用的故障点并深入分析故障根源。如此,既保证了线上环境中已发布应用的正常使用,又实时通过测试环境回放异常请求,还原异常请求在其生命周期的数据流记录,帮助开发人员快速定位系统故障,对异常请求进行回溯分析。
[0050] 上述实施例的应用的测试方法通过Mock子系统,将请求在线上环境中运行时所依赖的关联服务的输出实时记录下来,并在测试环境回放请求时返回对应的关联服务数据,从而排除不同环境下关联服务的差异性,保证测试的准确性;通过请求数据流的速度调节机制,能够调整线上环境请求数据在测试环境重放时的速率,从而达到全面评估待发布应用在不同情况下的性能;通过欢迎异常请求在其生命周期的数据流记录,能够帮助开发人员快速定位系统故障,同时保证线上环境的可用性。
[0051] 本申请实施例还提供一种应用的测试系统。参照图4模块示意图和图5架构示意图所示,在一些实施例中,应用的测试系统3主要包括:
[0052] 测试环境,包括待发布应用31和Mock子系统32。Mock子系统可进一步包括Redis Mock子系统321和SOA Mock子系统322。待发布应用通过第三方数据接口从Redis Mock子系统321和SOA Mock子系统322中获取关联服务数据。
[0053] 数据获取模块33,用于获取线上环境中已发布应用1的运行数据,包括实际请求数据、关联服务数据和实际响应数据,将关联服务数据存储至Mock子系统32。
[0054] 具体来说,线上环境中已发布应用1将运行产生的日志数据(包括请求日志、SOA返回日志、Redis返回日志、响应日志等)按照一定的格式推送到消息队列,例如推送到Kafka或hermes分布式发布订阅消息系统12中,再通过Storm流式数据处理框架13将日志数据拉取到数据库2中。数据获取模块33从数据库2中即可获取线上环境的真实数据。
[0055] 数据获取模块33可以进一步包括请求数据获取模块331,用于实时获取数据库2中的实际请求数据,即请求日志;关联数据获取模块332,用于实时获取数据库2中的关联服务数据,包括SOA返回日志、Redis返回日志等;响应数据获取模块333,用于实时获取数据库2中的实际响应数据,即响应日志。
[0056] 生产测试模块34,用于将实际请求数据依次在测试环境中回放,获取待发布应用31根据关联服务数据处理实际请求数据所得的模拟响应数据;并比对模拟响应数据和实际响应数据,对待发布应用31的各功能单元进行筛查。
[0057] 在优选的实施例中,请求数据获取模块331包括第一获取模块3311,用于从数据库2中取出一段时间内的实际请求数据,放入测试环境中进行模拟请求,即将实际请求数据依次在待发布应用31中重新请求一次。Redis Mock子系统321和SOA Mock子系统322模拟线上环境的SOA服务数据和Redis服务数据,待发布应用从Redis Mock子系统321和SOA Mock子系统322中获取关联服务数据,对实际请求数据进行处理得到模拟响应数据。生产测试模块
34通过将测试环境返回的模拟响应数据与数据库2中存储的线上环境返回的实际响应数据进行比对,就可以对待发布应用31的各功能单元进行筛查,及时发现待发布应用31的问题。
[0058] 进一步的,在一些实施例中,应用的测试系统3还包括:压力测试模块35,用于将实际请求数据按预设的请求速率在测试环境中回放,获取待发布应用31根据关联服务数据处理实际请求数据的输出数据;并根据输出数据获取待发布应用31基于预设的请求速率的压力测试结果。
[0059] 具体来说,请求数据获取模块331还包括第二获取模块3312,用于从数据库2中截取大批量的请求数据,同时放入待发布应用31中进行模拟请求。压力测试模块35根据待发布应用31的输出数据分析待发布应用31在同时处理大批量请求数据时的性能指标。通过模拟线上环境的请求,同时将关联服务接口进行mock,可以保证性能测试的准确性。
[0060] 进一步的,压力测试模块35中可以设置速率调节模块351,用于调节请求速率,获取待发布应用31基于不同请求速率的压力测试结果。通过调节线上环境的请求数据在测试环境重放时的速率,可以测出待发布应用31在不同请求速率下的性能表现。
[0061] 进一步的,在一些实施例中,应用的测试系统3还包括:故障分析模块36,用于实时获取线上环境中已发布应用1的异常请求数据;将异常请求数据在测试环境中回放,获取待发布应用31处理异常请求数据生成的数据流;并根据数据流对已发布应用1进行故障分析。
[0062] 具体来说,请求数据获取模块331还包括第三获取模块3313,用于实时截取线上环境的异常请求数据,将异常请求数据重新放入测试环境中请求。故障分析模块36根据待发布应用31处理异常请求数据生成的数据流,分析排查线上环境的故障。
[0063] 上述实施例的应用的测试系统集成数据库、Redis、SOA的日志数据,提供对应用的功能测试、压力测试、故障诊断等功能,实现实时获取线上环境的请求数据,实时地在测试环境中模拟线上环境,进行测试并诊断线上环境的异常,快速定位故障位置。及时发现待发布应用的功能异常,并提供对已发布应用的故障回溯分析,提升线上环境的运行保障能力和问题处置效率。
[0064] 本申请实施例还提供一种电子设备,包括处理器和存储器,存储器中存储有可执行指令,处理器被配置为经由执行可执行指令来执行上述实施例中的应用的测试方法的步骤。
[0065] 如上所述,本申请的电子设备能够实时获取线上环境的请求数据,并且可以实时地在测试环境模拟线上环境,及时发现待发布应用的问题并诊断已发布应用的故障。
[0066] 图6是本申请实施例中电子设备的结构示意图,应当理解的是,图6仅仅是示意性地示出各个模块,这些模块可以是虚拟的软件模块或实际的硬件模块,这些模块的合并、拆分及其余模块的增加都在本申请的保护范围之内。
[0067] 所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
[0068] 下面参照图6来描述本申请的电子设备400。图6显示的电子设备400仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
[0069] 如图6所示,电子设备400以通用计算设备的形式表现。电子设备400的组件可以包括但不限于:至少一个处理单元410、至少一个存储单元420、连接不同平台组件(包括存储单元420和处理单元410)的总线430、显示单元440等。
[0070] 其中,存储单元存储有程序代码,程序代码可以被处理单元410执行,使得处理单元410执行上述实施例中描述的应用的测试方法的步骤。例如,处理单元410可以执行如图1至图3中所示的步骤。
[0071] 存储单元420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)4201和/或高速缓存存储单元4202,还可以进一步包括只读存储单元(ROM)4203。
[0072] 存储单元420还可以包括具有一组(至少一个)程序模块4205的程序/实用工具4204,这样的程序模块4205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0073] 总线430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0074] 电子设备400也可以与一个或多个外部设备500(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备400交互的设备通信,和/或与使得该电子设备400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口450进行。并且,电子设备400还可以通过网络适配器460与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器460可以通过总线430与电子设备400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
[0075] 本申请实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现上述实施例描述的应用的测试方法的步骤。在一些可能的实施方式中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行上述实施例描述的应用的测试方法的步骤。
[0076] 如上所述,本申请的计算机可读存储介质能够实时获取线上环境的请求数据,并且可以实时地在测试环境模拟线上环境,及时发现待发布应用的问题并诊断已发布应用的故障。
[0077] 图7是本申请的计算机可读存储介质的结构示意图。参考图7所示,描述了根据本申请的实施方式的用于实现上述方法的程序产品600,其可以采用便携式紧凑盘只读存储器(CD‑ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0078] 程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0079] 计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0080] 可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0081] 以上内容是结合具体的优选实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本申请的保护范围。