一种界面测试程序的生成方法、装置及电子设备与流程

文档序号:11620483阅读:269来源:国知局
一种界面测试程序的生成方法、装置及电子设备与流程

本申请涉及界面测试技术领域,具体涉及一种界面测试程序的生成方法、装置及电子设备。



背景技术:

界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。通过用户界面(ui,userinterface)测试能够核实用户与软件的交互。ui测试的目标在于确保用户界面向用户提供了适当的访问和浏览测试对象功能的操作。除此之外,ui测试还要确保ui功能内部的对象符合预期要求,并遵循公司或行业的标准。

在一个高度交互性和响应的软件流程时代,通过执行自动测试工具或者用某种程序设计语言编写测试程序,控制被测软件中的各种模块,模拟手动测试步骤,完成测试是十分必要的。实现界面测试的自动化具有很多优点,例如,可频繁的进行回归测试、将测试结果快速反馈给开发人员、几乎无限的重复测试用例的执行、不会错过人工手动测试可能遗漏的缺陷等。

以web界面测试为例,目前比较完整的web界面自动化测试的实践方式,均基于selenium开源解决方案上,主要分为两种方式:

1)基于seleniumide的页面录制方式。

seleniumide是一个firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本,即:界面测试程序。

2)基于selenium2.0api进行编程的方式。

该方式首先通过元素xpath定位建立页面元素集合、形成页面建模数据文件;然后,启动浏览器读取页面建模数据文件,从中获取页面的受测对象和测试用例;最后,再结合测试场景进行测试程序的编写。这种实现方式需要对页面元素的类型、html标签、selenium2.0都有一定的了解和测试场景编写能力。

上述现有的界面测试程序的生成方式,提供了一种通用的自动化方案,但在实际应用中缺乏策略指导。具体的,上述第一种方式支持的浏览器有限,主要适用于工作在firefox浏览器下,而当今主流且前端工具丰富的浏览器(如googlechrome)却无法适用;上述第二种方式的存在如下缺点为:在业务快速变化且维护人员不断变更的情况下,对测试程序的编写及测试程序的维护均需较高成本,使得页面自动化本身的持续回归和自动化的意义完全体现不出来。

综上所述,业务的迅速发展导致界面测试程序需要频繁修改,现有技术需要人工定位测试程序中的代码并进行维护,从而导致维护成本较高。因而,现有技术存在无法自动生成测试程序的问题。



技术实现要素:

本申请提供一种界面测试程序的生成方法、装置及电子设备,以解决现有技术存在无法自动生成测试程序的问题。

本申请提供一种界面测试程序的生成方法,包括:

获取为待处理的测试用例预先生成的组件化模板;所述组件化模板是指,包括组件级元素的、能够表达所述测试用例的业务流程的界面文件;所述组件级元素是指,与所述测试用例中控件级元素相对应的组件化元素,所述组件级元素采用预设的组件标签进行标识;

针对各个所述组件级元素,根据预设的组件标签与程序代码模板的对应关系,生成与所述组件级元素对应的程序代码;

根据所述组件级元素在所述组件化模板中的排列顺序,对与所述组件级元素对应的程序代码进行合成,作为所述测试用例的测试程序。

可选的,所述生成与所述组件级元素对应的程序代码,包括:

解析所述组件级元素,获取所述组件级元素包括的所述组件标签、及所述组件级元素的属性;

根据所述组件标签及所述预设的组件标签与程序代码模板的对应关系,获取与所述组件级元素对应的程序代码模板;

根据所述组件级元素的属性和所述程序代码模板,生成与所述组件级元素对应的程序代码。

可选的,所述组件化模板包括非组件级元素的程序代码;

所述对与所述组件级元素对应的程序代码进行合成,采用如下规则:

所述测试程序包括所述非组件级元素的程序代码、且所述非组件级元素的程序代码在所述测试程序中的位置与在所述组件化模板中的位置相对应。

可选的,所述组件级元素与预设事件绑定,当所述预设事件被触发时,执行所述界面测试程序的生成方法;所述预设事件包括对所述组件级元素的属性进行增加、修改或删除的事件。

可选的,还包括:

通过浏览器对所述预设事件进行监听。

可选的,还包括:

当所述测试用例发生变更时,修改所述组件化模板;所述发生变更包括所述业务流程发生变更;

执行所述界面测试程序的生成方法,根据修改后的组件化模板,生成修改后的测试用例的测试程序。

可选的,所述组件化模板与模板变更事件绑定;所述执行所述界面测试程序的生成方法,采用如下方式:

当所述模板变更事件被触发时,执行所述界面测试程序的生成方法。

可选的,还包括:

通过浏览器对所述模板变更事件进行监听。

可选的,在所述获取为待处理的测试用例预先生成的组件化模板之前,还包括:

根据预设的控件标签与组件标签的对应关系,为所述测试用例构建所述组件化模板。

可选的,所述组件级元素包括选择列表元素、文本输入元素、可选项元素或按钮元素;所述组件级元素包括元素定位属性,所述元素定位属性包括元素标识属性或元素名称属性。

相应的,本身请还提供一种界面测试程序的生成装置,包括:

获取单元,用于获取为待处理的测试用例预先生成的组件化模板;所述组件化模板是指,包括组件级元素的、能够表达所述测试用例的业务流程的界面 文件;所述组件级元素是指,与所述测试用例中控件级元素相对应的组件化元素,所述组件级元素采用预设的组件标签进行标识;

生成单元,用于针对各个所述组件级元素,根据预设的组件标签与程序代码模板的对应关系,生成与所述组件级元素对应的程序代码;

合成单元,用于根据所述组件级元素在所述组件化模板中的排列顺序,对与所述组件级元素对应的程序代码进行合成,作为所述测试用例的测试程序。

可选的,所述生成单元包括生成子单元,用于生成与所述组件级元素对应的程序代码;

所述生成子单元包括:

解析子单元,用于解析所述组件级元素,获取所述组件级元素包括的所述组件标签、及所述组件级元素的属性;

获取子单元,用于根据所述组件标签及所述预设的组件标签与程序代码模板的对应关系,获取与所述组件级元素对应的程序代码模板;

第一生成子单元,用于根据所述组件级元素的属性和所述程序代码模板,生成与所述组件级元素对应的程序代码。

可选的,所述组件级元素与预设事件绑定,当所述预设事件被触发时,执行所述界面测试程序的生成方法;所述预设事件包括对所述组件级元素的属性进行增加、修改或删除的事件;所述装置还包括:

第一监听单元,用于通过浏览器对所述预设事件进行监听。

可选的,所述组件化模板与模板变更事件绑定;所述执行所述界面测试程序的生成方法,采用如下方式:当所述模板变更事件被触发时,执行所述界面测试程序的生成方法;所述装置还包括:

第二监听单元,用于通过浏览器对所述模板变更事件进行监听。

相应的,本申请还提供一种电子设备,包括:

显示器;

处理器;以及

存储器,用于存储界面测试程序的生成装置,所述界面测试程序的生成装置被所述处理器执行时,包括如下步骤:获取为待处理的测试用例预先生成的组件化模板;所述组件化模板是指,包括组件级元素的、能够表达所述测试用 例的业务流程的界面文件;所述组件级元素是指,与所述测试用例中控件级元素相对应的组件化元素,所述组件级元素采用预设的组件标签进行标识;针对各个所述组件级元素,根据预设的组件标签与程序代码模板的对应关系,生成与所述组件级元素对应的程序代码;根据所述组件级元素在所述组件化模板中的排列顺序,对与所述组件级元素对应的程序代码进行合成,作为所述测试用例的测试程序。

与现有技术相比,本申请具有以下优点:

本申请提供一种界面测试程序的生成方法、装置和电子设备,通过获取为待处理的测试用例预先生成的组件化模板;针对组件化模板包括的各个组件级元素,根据预设的组件标签与程序代码模板的对应关系,生成与组件级元素对应的程序代码;根据组件级元素在组件化模板中的排列顺序,对与组件级元素对应的程序代码进行合成,作为待处理的测试用例的测试程序。采用本申请提供的方法,能够自动生成待处理的测试用例的测试程序,从而达到降低维护成本的效果。

附图说明

图1是本申请的界面测试程序的生成方法实施例的流程图;

图2是本申请的界面测试程序的生成方法实施例生成组件级元素的程序代码的具体流程图;

图3是本申请的界面测试程序的生成装置实施例的示意图;

图4是本申请的界面测试程序的生成装置实施例的具体示意图;

图5是本申请的电子设备实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请中,提供了一种界面测试程序的生成方法、装置及电子设备。在下面的实施例中逐一进行详细说明。

本申请实施例提供的界面测试程序的生成方法,其核心的基本思想是:根据预设的组件标签与程序代码的对应关系,对待处理的测试用例的组件化模板进行解析,生成待处理的测试用例的测试程序。由于能够自动生成待处理的测试用例的测试程序,从而达到降低维护成本的效果。

请参考图1,其为本申请的界面测试程序的生成方法实施例的流程图。所述方法包括如下步骤:

步骤s101:获取为待处理的测试用例预先生成的组件化模板。

测试用例(testcase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。本申请实施例所述的待处理的测试用例包括从操作型界面中抽象出的测试用例。

界面分为操作型界面和查询型界面。相对于查询型界面而言,操作型界面的特点为具有业务交互流程。用户登录界面是一种典型的操作型界面,用户首先需要输入账号及密码等信息,然后点击提交按钮启动后台进行用户身份的验证。在实际应用中,一个操作型界面可抽象出至少一个测试用例。

本申请实施例所述的组件化模板是指,包括组件级元素的、能够表达测试用例的业务流程的界面文件。一个测试用例对应一个组件化模板。所述的组件级元素是指,与测试用例中控件级元素相对应的组件化元素。

控件(control)和组件(component)均是对数据和方法的封装。控件一般是为了完成特定的展示或特定页面/窗体的技术功能,而组件一般指对一些小功能点的封装,封装后的集合(组件)一般具有较独立的功能,可以完成某一项任务。因此,控件是为了页面/窗体级复用而出现的,而组件是为了项目级复用而出现的,从这个意义上来说,组件的意思更接近于模块。综上所述,控件和组件的区别在于:控件是可视的、而组件是不可视的,即:控件就是可视化的组件。

本申请实施例所述的控件级元素是指可视化的界面组成元素,所述的组件级元素是指不可视的界面组成元素。所述的组件级元素采用预设的组件标签进行标识。组件级元素包括但不限于:选择列表元素、文本输入元素、可选项元素或按钮元素等。从元素属性角度,所述的组件级元素包括元素定位属性或值属性等。所述的元素定位属性包括元素标识属性或元素名称属性。通过元素定位属性能够对组件级元素进行定位。

需要说明的是,现有技术在对web页面元素进行定位时,部分元素可能包括id或name属性,而另外部分元素则需要用复杂的xpath来表达。本申请实施例提供的方法,可为复杂的xpath元素增加元素标识或元素名称属性。由于每个组件级元素均可具有元素标识或元素名称属性,因此,只要该元素不删除,页面的dom结构修改便不会影响该元素的定位,从而减少业务需求变更对测试程序的影响。

下面通过本申请实施例的一个组件化模板对上述概念进行具体说明。本实施例的组件化模板代码如下:

@url(“http://output.wmp.daily.taobao.net/quality/packageq_c.htm”)

@select([name:”desk”,value:”质检台1”])

@text([id:”packagecode”,value:”paszc150907000004”])

for(inti=0;i<itemnum;i++)

@text([id:”itemcode”,value:”482031-90”])

@button([id:”completeqc”])

上述代码中的@url、@select、@text、@button均为组件标签,其中,@url标签表示driver跳转的目标页面链接,@select和@text标签对应的组件级元素通过输入方式完成,@button标签对应的组件级元素通过点击方式完成。上述每一个组件标签对应的一行代码表示一个组件级元素,例如,@button对应的@button([id:”completeqc”])即表示一个组件级元素,@button标签的id属性为元素标识属性,”completeqc”表示该元素的元素标识值。@text([id:”itemcode”,value:”482031-90”])元素中的value属性(即:值属性)表示实际操作时的测试数据。

要实施本申请实施例提供的方法,首先需要构建待处理的测试用例的组件化模板。在实际应用中,可根据预设的控件标签与组件标签的对应关系,为待处理的测试用例构建组件化模板。例如,控件标签与组件标签的对应关系包括:select对应@select、textarea对应@text等。

需要说明的是,在实际应用中,上述控件标签与组件标签的对应关系可以采用多种具体的形式。该对应关系的各种形式的变化,都只是具体实施方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。

步骤s103:针对各个所述组件级元素,根据预设的组件标签与程序代码模 板的对应关系,生成与所述组件级元素对应的程序代码。

本申请实施例提供的界面测试程序的生成方法,根据预设的组件标签与程序代码模板的对应关系,将组件级元素解析为与其对应的测试程序代码。本步骤即针对组件化模板中的各个组件级元素,根据预设的组件标签与程序代码模板的对应关系,生成与各个组件级元素分别对应的测试程序代码。

本申请实施例所述的组件标签与程序代码模板的对应关系实质为一种解析规则,例如,@url标签对应的java代码模板为driver.get(…)、@text标签对应的代码模板为driver.findelement(…).clear().sendkeys(…).sendkeys(keys.enter)、@button对应的java代码模板为driver.findelement(…).click()。

所述的程序代码模板是指不包括具体参数的程序代码,例如,组件级元素为@text([id:”packagecode”,value:”paszc150907000004”]),该元素的组件标签为@text,该组件标签对应的程序代码模板为driver.findelement(by.id(&id)).clear().sendkeys(&value).sendkeys(keys.enter),该组件标签对应的程序代码如下:

driver.findelement(by.id(”packagecode”)).clear();

driver.findelement(by.id(”packagecode”)).sendkeys(”paszc150907000004”);

driver.findelement(by.id(”packagecode”)).sendkeys(keys.enter);

需要说明的是,在实际应用中,上述组件标签与程序代码模板的对应关系可以采用多种具体的形式。该对应关系的各种形式的变化,都只是具体实施方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。此外,可为组件标签设置不同程序语言的程序代码模板,例如,java语言、c++语言等。

请参考图2,其为本申请的界面测试程序的生成方法实施例生成组件级元素的程序代码的具体流程图。在本实施例中,生成与组件级元素对应的程序代码,包括如下步骤:

步骤s201:解析所述组件级元素,获取所述组件级元素包括的所述组件标签、及所述组件级元素的属性。

要生成与组件级元素对应的程序代码,首先需要对组件级元素进行解析,获取组件级元素包括的组件标签及属性,例如,组件级元素包括的元素定位属性、值属性等。解析组件级元素,可通过文本比对的方法进行。

步骤s203:根据所述组件标签及所述预设的组件标签与程序代码模板的对 应关系,获取与所述组件级元素对应的程序代码模板。

获取到组件级元素包括的组件标签后,本步骤以组件标签为检索条件,在预设的组件标签与程序代码的对应关系中进行检索,以获取与所述组件级元素对应的程序代码模板。

步骤s205:根据所述组件级元素的属性和所述程序代码模板,生成与所述组件级元素对应的程序代码。

最后,根据组件级元素的属性对程序代码模板的可变部分进行填充,生成与组件级元素对应的程序代码。例如,组件级元素@text([id:”packagecode”,value:”paszc150907000004”]),该元素的组件标签对应的程序代码模板包括代码driver.findelement(by.id(&id)).clear(),因此,需读取该元素的id属性,将id属性值填充到代码中,形成程序代码driver.findelement(by.id(”packagecode”)).clear()。

需要说明的是,在实际应用中,可以采用多种具体的实施方式实现步骤s103。实现该步骤的各种形式的变化,都只是具体实施方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。

步骤s105:根据所述组件级元素在所述组件化模板中的排列顺序,对与所述组件级元素对应的程序代码进行合成,作为所述待处理的测试用例的测试程序。

本申请实施例所述的组件化模板能够表达测试用例的业务流程,业务流程是通过组件级元素在组件化模板中的排列顺序表示的。以步骤s101给出的组件化模板代码为例,该界面代码所表达的业务流程为:1)选取质检台;2)输入包裹号;3)输入子项编码;4)点击按钮进行提交。

本步骤对于组件化模板包括的各个组件化元素,将与组件化元素对应的程序代码进行合成,以生成待处理的测试用例的测试程序。合成的规则为:按照组件级元素的排列顺序,对组件级元素的程序代码进行合成,即:与组件级元素对应的程序代码在测试程序中的位置、与组件级元素在组件化模板中的位置相对应。

需要说明的是,本申请实施例所述的组件化模板可包括非组件级元素的程序代码,例如,步骤s101给出的组件化模板代码中的for(inti=0;i<itemnum;i++)部分即为非组件级元素的程序代码。与组件级元素不同,非组件级元素的程序 代码无需解析。当组件化模板包括非组件级元素的程序代码时,对与组件级元素对应的程序代码进行合成,采用如下规则:测试程序包括非组件级元素的程序代码、且非组件级元素的程序代码在测试程序中的位置与在组件化模板中的位置相对应。

下面以步骤s101给出的组件化模板代码为例,给出应用本申请实施例提供的方法生成的测试程序,以直观说明应用本申请实施例提供的方法所达到的效果。生成的测试程序如下:

在实际应用中,当待处理的测试用例发生变更时,例如,业务流程发生变更(如增加了输入框)、元素属性名被修改、测试数据变更等情况下,首先需要修改与测试用例对应的组件化模板,然后,执行本申请实施例提供的界面测试程序的生成方法,即可根据修改后的组件化模板,自动生成新的测试程序。

作为一种优选的实施方式,本申请实施例提供的界面测试程序的生成方法,可通过为组件化模板绑定模板变更事件,并对模板变更事件进行监听,以实现测试程序的自动更新,即:当监听到模板变更事件被触发时,执行本申请实施例提供的方法。

对于目前常用的web页面的测试用例,可通过浏览器对模板变更事件进行监听。当对组件化模板进行修改时,实时重新加载(reload)相应的测试程序代 码,对web页面进行回归测试时选取最新版本的测试程序。

作为又一种优选的实施方式,本申请实施例提供的界面测试程序的生成方法,也可通过为组件级元素绑定预设事件,并对预设事件进行监听,以实现测试程序的自动更新,即:当监听到预设事件被触发时,执行本申请实施例提供的方法。

本申请实施例所述的预设事件包括但不限于:对组件级元素的属性值进行增加、修改或删除的事件,还可包括对组件级元素的属性名进行增加、修改或删除的事件等。例如,可通过如下代码:

@text([id:”packagecode”,value:”paszc150907000004”])

@bind(onchange())

为组件级元素@text([id:”packagecode”,value:”paszc150907000004”])绑定onchange事件。其中,@bind标签表示为上一个组件级元素绑定动态事件,即:为@text标签所标识的元素绑定onchange事件,也就是会监控该元素的所有属性变更,例如,当对该元素的value属性的值进行修改时,能够触发onchange事件,从而自动更新该元素对应的程序代码。

本申请实施例提供的界面测试程序的生成方法,通过对组件级元素或组件化模板绑定监听事件,使得对组件级元素的属性进行增删改时或对业务流程进行变更时,能够自动触发本申请实施例提供的方法的执行,进一步简化了界面测试程序的生成操作,从而达到进一步降低维护成本的效果。

在上述的实施例中,提供了一种界面测试程序的生成方法,与之相对应的,本申请还提供一种界面测试程序的生成装置。该装置是与上述方法的实施例相对应。

请参看图3,其为本申请的界面测试程序的生成装置实施例的示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种界面测试程序的生成装置,包括:

获取单元101,用于获取为待处理的测试用例预先生成的组件化模板;所述组件化模板是指,包括组件级元素的、能够表达所述测试用例的业务流程的界面文件;所述组件级元素是指,与所述测试用例中控件级元素相对应的组件化元素,所述组件级元素采用预设的组件标签进行标识;

生成单元103,用于针对各个所述组件级元素,根据预设的组件标签与程序代码模板的对应关系,生成与所述组件级元素对应的程序代码;

合成单元105,用于根据所述组件级元素在所述组件化模板中的排列顺序,对与所述组件级元素对应的程序代码进行合成,作为所述测试用例的测试程序。

请参看图4,其为本申请的界面测试程序的生成装置实施例的具体示意图。可选的,所述生成单元103包括生成子单元,用于生成与所述组件级元素对应的程序代码;

所述生成子单元包括:

解析子单元201,用于解析所述组件级元素,获取所述组件级元素包括的所述组件标签、及所述组件级元素的属性;

获取子单元203,用于根据所述组件标签及所述预设的组件标签与程序代码模板的对应关系,获取与所述组件级元素对应的程序代码模板;

第一生成子单元205,用于根据所述组件级元素的属性和所述程序代码模板,生成与所述组件级元素对应的程序代码。

可选的,所述组件级元素与预设事件绑定,当所述预设事件被触发时,执行所述界面测试程序的生成方法;所述预设事件包括对所述组件级元素的属性进行增加、修改或删除的事件;所述装置还包括:

第一监听单元,用于通过浏览器对所述预设事件进行监听。

可选的,所述组件化模板与模板变更事件绑定;所述执行所述界面测试程序的生成方法,采用如下方式:当所述模板变更事件被触发时,执行所述界面测试程序的生成方法;所述装置还包括:

第二监听单元,用于通过浏览器对所述模板变更事件进行监听。

请参考图5,其为本申请的电子设备实施例的示意图。由于设备实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的设备实施例仅仅是示意性的。

本实施例的一种电子设备,该电子设备包括:显示器1101;处理器1102;以及存储器1103,获取为待处理的测试用例预先生成的组件化模板;所述组件化模板是指,包括组件级元素的、能够表达所述测试用例的业务流程的界面文件;所述组件级元素是指,与所述测试用例中控件级元素相对应的组件化元素,所述组件级元素采用预设的组件标签进行标识;针对各个所述组件级元素,根 据预设的组件标签与程序代码模板的对应关系,生成与所述组件级元素对应的程序代码;根据所述组件级元素在所述组件化模板中的排列顺序,对与所述组件级元素对应的程序代码进行合成,作为所述测试用例的测试程序。

本申请提供一种界面测试程序的生成方法、装置和电子设备,通过获取为待处理的测试用例预先生成的组件化模板;针对组件化模板包括的各个组件级元素,根据预设的组件标签与程序代码模板的对应关系,生成与组件级元素对应的程序代码;根据组件级元素在组件化模板中的排列顺序,对与组件级元素对应的程序代码进行合成,作为待处理的测试用例的测试程序。采用本申请提供的方法,能够自动生成待处理的测试用例的测试程序,从而达到降低维护成本的效果。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件 和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1