CN103577309A - 自动化测试的方法及装置 - Google Patents
自动化测试的方法及装置 Download PDFInfo
- Publication number
- CN103577309A CN103577309A CN201210258819.9A CN201210258819A CN103577309A CN 103577309 A CN103577309 A CN 103577309A CN 201210258819 A CN201210258819 A CN 201210258819A CN 103577309 A CN103577309 A CN 103577309A
- Authority
- CN
- China
- Prior art keywords
- api
- android
- test
- call
- instrument
- 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.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种自动化测试的方法及装置,属于测试领域。所述方法包括:当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具;根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试。本发明还公开了一种自动化测试的装置,所述装置包括:加载模块和调用模块。本发明可以直接调用安卓工具提供的API,减少了测试用例中实现API的代码量,降低了测试的复杂度;另外,测试人员可以根据安卓工具提供的API编写测试用例,避免了对API代码的学习,降低了测试人员的学习成本。
Description
技术领域
本发明涉及测试领域,特别涉及一种自动化测试的方法及装置。
背景技术
自动化测试框架是应用于自动化测试中的一种解决方案,其为被测对象提供与外围设备交互的API(Application Programming Interface,应用程序编程接口)。当对被测对象进行测试时,在测试软件提供的测试工程中加载自动化测试框架,即可通过该自动化测试框架提供的API传递模拟操作参数,实现对被测对象的模拟操作,从而在操作过程中对被测对象的功能进行测试,实现对被测对象的自动化测试。
现有的自动化测试框架为Instrumentation(测试工具)+JUnit(Java单元测试)框架,所述Instrumentation+JUnit框架可实现对被测对象的UI(User Interface,用户界面)进行自动化测试,也可实现对被测对象的局部功能单元进行自动化测试。
在实现本发明的过程中,发明人发现现有技术至少存在以下缺点:
Instrumentation+JUnit框架提供的API比较基础,一项功能的实现需要调用多个API,因此,测试用例中包含了大量实现API的代码,增加了测试用例的代码量,提高了测试的复杂度;并且,代码量的增多使得测试人员在编写测试用例时需要对代码有较高的熟悉能力,提高了测试人员的学习成本。
发明内容
本发明实施例提供了一种自动化测试的方法及装置,以降低测试复杂度。所述技术方案如下:
一方面,提供了一种自动化测试的方法,所述方法包括:
当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具;
根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试。
其中,从指定的路径加载安卓工具,包括:
根据加载语句从classpath路径加载预先存储的安卓工具的工具包。
其中,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,包括以下至少一种:
根据测试需求调用所述安卓工具提供的操作资源文件夹API,执行对资源文件夹的操作;
根据测试需求调用所述安卓工具提供的操作安全数码SD卡API,执行对SD卡的操作;
根据测试需求调用所述安卓工具提供的检测网络状态API,对网络状态进行检测;
根据测试需求调用所述安卓工具提供的操作活动Activity API,执行对Activity的操作;
根据测试需求调用所述安卓工具提供的操作工具Instrumentation API,对Instrumentation进行调用;
根据测试需求调用所述安卓工具提供的操作模拟对象Mock API,执行对Mock的操作。
其中,对Instrumentation进行调用之前,还包括:
对所述InstrumentationAPI进行封装,并加载封装之后的Instrumentation。
其中,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试之后,还包括:
根据测试操作过程中的测试信息进行测试分析。
其中,根据测试操作过程中的测试信息进行测试分析,包括以下至少一种:
调用所述安卓工具提供的获取屏幕图片API和对比图片API,对获取到的屏幕图片进行对比;
调用所述安卓工具提供的获取日志API,对获取到的日志进行分析;
调用所述安卓工具提供的获取系统状态API,对获取到的系统状态进行分析。
另一方面,还提供了一种自动化测试的装置,所述装置包括:
加载模块,用于当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具;
调用模块,用于根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试。
所述加载模块用于,根据加载语句从classpath路径加载预先存储的安卓工具的工具包。
所述调用模块包括以下至少一种:
第一调用单元,用于根据测试需求调用所述安卓工具提供的操作资源文件夹API,执行对资源文件夹的操作;
第二调用单元,用于根据测试需求调用所述安卓工具提供的操作安全数码SD卡API,执行对SD卡的操作;
第三调用单元,用于根据测试需求调用所述安卓工具提供的检测网络状态API,对网络状态进行检测;
第四调用单元,用于根据测试需求调用所述安卓工具提供的操作活动Activity API,执行对Activity的操作;
第五调用单元,用于根据测试需求调用所述安卓工具提供的操作工具InstrumentationAPI,对Instrumentation进行调用;
第六调用单元,用于根据测试需求调用所述安卓工具提供的操作模拟对象MockAPI,执行对Mock的操作。
所述调用模块还包括:
封装单元,用于在第五调用单元对Instrumentation进行调用之前,对所述InstrumentationAPI进行封装,并加载封装之后的Instrumentation。
所述装置还包括:
分析模块,用于根据测试操作过程中的测试信息进行测试分析。
所述分析模块包括以下至少一种:
第一分析单元,用于调用所述安卓工具提供的获取屏幕图片API和对比图片API,对获取到的屏幕图片进行对比;
第二分析单元,用于调用所述安卓工具提供的获取日志API,对获取到的日志进行分析;
第三分析单元,用于调用所述安卓工具提供的获取系统状态API,对获取到的系统状态进行分析。
本发明实施例提供的技术方案的有益效果是:
当对被测对象进行测试时,通过运行测试用例,并从指定的路径加载安卓工具,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试,可以直接调用安卓工具提供的API,减少了测试用例中实现API的代码量,降低了测试的复杂度;另外,测试人员可以根据安卓工具提供的API编写测试用例,避免了对API代码的学习,降低了测试人员的学习成本。
通过对所述Instrumentation API进行封装,并加载封装之后的Instrumentation,可以根据访问权限访问API,增强了自动化测试的安全性;另外,根据执行测试操作过程中的测试信息进行测试分析,可以方便测试人员对测试对象存在的问题进行总结,从而根据测试分析结果改进被测对象,提高了测试效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种自动化测试的方法流程图;
图2是本发明实施例二提供的一种自动化测试的方法流程图;
图3是本发明实施例三提供的一种自动化测试的装置的结构示意图;
图4是本发明实施例三提供的另一种自动化测试的装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
参见图1,本实施例提供了一种自动化测试的方法,该方法流程具体如下:
101:当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具。
102:根据测试需求调用安卓工具提供的API执行测试操作,以完成被测对象的测试。
其中,从指定的路径加载安卓工具,包括:
根据加载语句从classpath路径加载预先存储的安卓工具的工具包。
其中,根据测试需求调用安卓工具提供的应用程序编程接口API执行测试操作,包括以下至少一种:
根据测试需求调用安卓工具提供的操作资源文件夹API,执行对资源文件夹的操作;
根据测试需求调用安卓工具提供的操作SD卡(Secure Digital Memory Card,安全数码卡)API,执行对SD卡的操作;
根据测试需求调用安卓工具提供的检测网络状态API,对网络状态进行检测;
根据测试需求调用安卓工具提供的操作Activity(活动)API,执行对Activity的操作;
根据测试需求调用安卓工具提供的操作Instrumentation(工具)API,对Instrumentation进行调用;
根据测试需求调用所述安卓工具提供的操作Mock(模拟对象)API,执行对Mock的操作。
其中,对Instrumentation进行调用之前,还包括:
对Instrumentation API进行封装,并加载封装之后的Instrumentation。
其中,根据测试需求调用安卓工具提供的应用程序编程接口API执行测试操作,以完成被测对象的测试之后,还包括:
根据测试操作过程中的测试信息进行测试分析。
其中,根据测试操作过程中的测试信息进行测试分析,包括以下至少一种:
调用所述安卓工具提供的获取屏幕图片API和对比图片API,对获取到的屏幕图片进行对比;
调用所述安卓工具提供的获取日志API,对获取到的日志进行分析;
调用所述安卓工具提供的获取系统状态API,对获取到的系统状态进行分析。
本实施例提供的上述方法,当对被测对象进行测试时,通过运行测试用例,并从指定的路径加载安卓工具,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试,可以直接调用安卓工具提供的API,减少了测试用例中实现API的代码量,降低了测试的复杂度;另外,测试人员可以根据安卓工具提供的API编写测试用例,避免了对API代码的学习,降低了测试人员的学习成本。
另外,通过对所述InstrumentationAPI进行封装,并加载封装之后的Instrumentation,可以根据访问权限访问API,增强了自动化测试的安全性;另外,根据执行测试操作过程中的测试信息进行测试分析,可以方便测试人员对测试对象存在的问题进行总结,从而根据测试分析结果改进被测对象,提高了测试效率。
实施例二
参见图2,本实施例提供了一种自动化测试的方法,该方法流程具体如下:
201:当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具。
本实施例涉及的被测对象是安卓(Android)系统中的应用程序,例如,天气、时钟和日历等。其中,被测对象可以包含一项或多项功能,通常包含多项功能。所述功能可以包括但不限于开启和关闭等等。在对被测对象的功能进行测试时,可以根据每一项功能编写一个测试用例,在运行测试用例的过程中测试该项功能是否正常。
安卓工具(Android Tools,简称aTools)是为安卓系统开发的自动化测试框架,由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成,以提供测试被测对象的解决方案。
进一步地,在使用安卓工具之前,测试人员需要将该安卓工具添加到创建的测试工程中,并在测试工程中设置安卓工具的路径,以便测试工程可以通过正确的路径加载该安卓工具,从而实现在测试时对安卓工具的调用。优选地,本实施例将安卓工具压缩成工具包,以便于对安卓工具进行加载。
通常,Java环境下的指定路径是classpath路径,则从指定的路径加载安卓工具,包括:
根据加载语句从classpath路径加载预先存储的安卓工具的工具包。
其中,加载语句可以是import com.tencent.avt.utility.*,通过运行该加载语句即可加载工具包,获取工具包的调用权限。优选地,可以将该加载语句添加到测试用例中,在每次运行测试用例时都预先加载该工具包,以节省测试步骤,提高测试效率。
202:根据测试需求调用安卓工具提供的API执行测试操作,以完成被测对象的测试。
本实施例中,测试工程通过安卓工具提供的API获取测试需求的信息。所述API是对获取测试需求的信息的系统接口进行进一步开发之后得到的接口,以减少测试用例中实现接口的代码量。具体地,在系统接口上开发基于Java语言的API,使得在测试过程中调用该API时,该API可以调用其对应的系统接口,获取相应的信息。
具体地,根据测试需求调用安卓工具提供的API执行测试操作,包括以下至少一种:
根据测试需求调用安卓工具提供的操作资源文件夹API,执行对资源文件夹的操作;
根据测试需求调用安卓工具提供的操作SD卡API,执行对SD卡的操作;
根据测试需求调用安卓工具提供的检测网络状态API,对网络状态进行检测;
根据测试需求调用安卓工具提供的操作Activity API,执行对Activity的操作;
根据测试需求调用安卓工具提供的操作Instrumentation API,对Instrumentation进行调用;
根据测试需求调用所述安卓工具提供的操作MockAPI,执行对Mock的操作。
下面对安卓工具提供的API进行详细介绍,具体如下:
1)资源文件夹API
安卓工程下的资源文件夹用来保存测试过程中频繁使用到的资源文件。所述资源文件可以包括字符串、图片和音频等等。本实施例中,所述安卓工具提供的资源文件夹API,方便了在测试过程中与资源文件夹进行数据交互,具体地,可以包括但不限于:
Resource.getResource(String resourcePath)//获取resourcePath路径中的资源文件;
Resource.putResource(String srcPath)//将srcPath路径中的资源上传到Resource文件夹中;
Resource.copyResource(String fromPath,String toPath)//将fromPath路径中的资源文件复制到toPath路径中;
Resource.delResource(String resourcePath)//删除resourcePath路径中的资源文件。
2)SD卡API
SD卡是一种存储设备,拥有高记忆容量和快速的数据传输速率,可以通过移动终端的卡槽插入移动终端,与移动终端进行数据交互。本实施例中,所述安卓工具提供的SD卡API,方便了在测试过程中与SD卡进行数据交互,具体地,可以包括但不限于:
SDCard.getSDCardStatus()//获取SD卡当前的状态;
SDCard.pullDataFromSDCard(String path)//将SD卡上的数据复制到path路径中;
SDCard.pushDataToSDCard(String srcPath)//将srcPath路径中的数据上传至SD卡。
其中,SD卡的状态可以包括但不限于,BAD REMOVAL(卸载前已被移除)、CHECKING(磁盘检查)、MOUNTED(存在且具有读/写权限)、MOUNTED READ ONLY(存在且具有读权限)、NOFS(空白或正在使用不受支持的文件系统)、REMOVED(移除)、SHARED(共享)、UNMOUNTABLE(不可被安装)和UNMOUNTED(已卸载)等。
当SD卡处于MOUNTED或SHARED状态时,可以实现复制数据和上传数据的功能;当SD卡处于MOUNTED READ ONLY状态时,可以实现复制数据的功能;当SD卡处于其它状态时,不可对SD卡进行操作。优选地,在执行复制数据和上传数据的操作之前,可以预先获取SD卡的状态,以降低SD卡不可操作造成的测试失败率。
3)网络状态API
安卓系统都具有联网功能,所述网络可以包括但不限于:GPRS(General Packet RadioService,通用分组无线服务)网络、3G(3rd-Generation,第三代移动通信技术)网络和WIFI(Wireless Fidelity,无线保真)网络等等。由于不同的网络下被测对象的测试方法可能有所不同,本实施例中,所述安卓工具提供的网络状态API,方便了在测试过程中对安卓系统当前的网络状态进行检测,具体地,可以包括但不限于:
getNetWorkType()//获取网络状态。
本实施例以安卓系统使用移动运营商提供的网络为例对该API返回的参数进行说明。具体地,当调用上述API时,如果返回CMWAP,则标识安卓系统使用的是GPRS网络;如果返回3GWAP,则标识安卓系统使用的是3G网络;如果返回WIFI,则标识安卓系统使用的是WIFI网络。当然,也可以用其它参数标识安卓系统当前使用的网络,本实施例不作限定。
4)ActivityAPI
Activity是安卓系统自身提供的类,可具体为移动终端中的基本界面单元。其中,与Activity相关的信息有很多种,本实施例以测试需求的信息为Activity的切换方式为例进行说明。
所述切换Activity是指当有优先级高于当前Activity的Activity插入时,需要将移动终端从当前Activity切换到高优先级的Activity,即将移动终端的界面从一个Activity切换到另一个Activity。本实施例中,所述安卓工具提供的ActivityAPI,方便了切换Activity的操作,具体地,可以包括但不限于:
startOtherActivity(Activity activityName)//当待切换Activity的名字activityName已知时,通过activityName切换待切换Activity为当前Activity;
startActivityWithIntent(Intent intent)//当待切换Activity的名字未知时,将当前处理完成的数据封装之后通过intent发出去,当某一Activity监听到该数据与自身相关时,切换自身的Activity为当前Activity,所述intent是一种通用消息系统,对应用程序中一次操作的数据进行描述,可被Activity调用;
startActivityWithAction(Action action)//当待切换Activity的名字未知时,将当前处理完成的操作封装之后通过action发出去,当某一Activity监听到该操作与自身相关时,切换自身的Activity为当前Activity,所述action是一种动作,对应用程序中一次操作的动作进行描述,可被Activity调用。
5)Instrumentation API
Instrumentation是安卓系统自身提供的类,可具体为一种自动化测试工具,包含于安卓工具中。其中,与Instrumentation相关的信息有很多种,本实施例以测试需求的信息为SingleLaunch函数为例进行说明。
SingleLaunch函数是指在一次测试过程中仅启动被测对象一次,避免了每运行完一个测试用例需要重新启动被测对象的问题。本实施例中,所述安卓工具提供的Instrumentation API,方便了调用SingleLaunch函数,具体地,可以包括但不限于:
SingleLaunchTestCase()//仅启动被测对象一次。
具体地,SingleLaunch函数的算法如下:每检测到新的测试用例就对SingleLaunch中的测试用例计数器进行加操作,每检测到测试用例运行结束就对SingleLaunch中的测试用例计数器进行减操作,仅当测试用例计数器为负数时退出程序,从而避免了每运行一个测试用例重新启动被测对象的问题。
优选地,对Instrumentation进行调用之前,还包括:
对Instrumentation API进行封装,并加载封装之后的Instrumentation。
封装是指隐藏对象的属性和实现细节,仅对外公开接口,控制程序中属性的读和修改的访问级别。封装API之后,测试人员不必了解Instrumentation具体的实现细节,只需要根据访问权限访问API,增强了自动化测试的安全性。
6)MockAPI
Mock是指虚拟的测试对象,用来代替不容易构造或不容易获取的对象。其中,与Mock相关的信息有很多种,本实施例以测试需求的信息为Private对象为例进行说明。
Mock包括Public对象和Private对象,所述Public对象是全局公用的数据,Private对象是局部调用的数据,仅对其所在的函数可见。在测试过程中,某一函数可能需要获取另一函数中的Private对象,本实施例中,所述安卓工具提供的MockAPI,方便了获取Private对象,具体地,可以包括但不限于:
testGenPrivateMockObj()//获取Private对象。
203:根据测试操作过程中的测试信息进行测试分析。
本实施例中,在执行测试操作时,还可对测试过程中产生的测试信息进行记录,以便于在测试完成后对测试信息进行分析,得出测试结果。
其中,根据测试操作过程中的测试信息进行测试分析,包括以下至少一种:
调用安卓工具提供的获取屏幕图片API和对比图片API,对获取到的屏幕图片进行对比;
调用安卓工具提供的获取日志API,对获取到的日志进行分析;
调用安卓工具提供的获取系统状态API,对获取到的系统状态进行分析。
下面对测试信息的API进行详细描述,具体如下:
1)屏幕图片API和对比图片API
在测试过程中,测试人员需要根据安卓系统的屏幕图片判断测试结果是否正确,而测试人员不可能实时观看安卓系统的屏幕,因此,可通过截屏获取到安卓系统的屏幕图片,并将该图片保存为图片文件,以便根据该图片判断测试结果是否正确。本实施例中,所述安卓工具提供的屏幕图片API,方便了截取屏幕图片,具体地,可以包括但不限于:
Screenshot(String filename)//截取屏幕图片,并以filename的文件名进行保存。
进一步地,本实施例对保存的屏幕图片进行对比,获取图片对比结果,以判断测试结果是否正确。具体地,可以预先截取一张屏幕图片作为标准图片,在测试过程中,每测试一次截取一张安卓系统的屏幕图片,将该屏幕图片与标准图片进行对比,获取图片对比结果。本实施例中,所述安卓工具提供的对比图片API,方便了对图片进行对比,具体地,可以包括但不限于:
isPictrueSame(String filename1,String filename2)//将文件名为filename2的测试图片与文件名为filename1的标准图片进行对比。
具体地,可将图片转化为字节流,判断两张图片转化的字节流是否相同,如果相同,则返回True参数,标识测试结果正确;如果不同,则返回False参数,标识测试结果错误。
2)日志API
日志是对被测对象进行测试时产生的事件记录信息。现有技术中,日志是按照测试时间记录的,不便于测试人员对某一类事件进行总结。本实施例将日志按照记录事件的类别进行分类,可以包括但不限于:Debug(调试)日志、Verbose(繁琐)日志和Error(出错)日志等。当测试结束时,将获取到的不同类别的日志分别保存到不同目录下的文件中,以便分析出测试对象存在的问题。本实施例中,所述安卓工具提供的日志API,方便了获取日志,具体地,可以包括但不限于:
getDLog()//获取Debug日志;
getVLog()//获取Verbose日志;
getELog()//获取Error日志。
3)系统状态API
系统状态是系统资源的占用率,可以包括但不限于:存储器状态和CPU(Central ProcessingUnit,中央处理单元)状态等等。在对被测对象进行测试时,实时获取系统状态,当测试结束时,将获取到的系统状态分类保存在不同目录下的文件中,以便分析出测试对象占用的系统资源。本实施例中,所述安卓工具提供的系统状态API,方便了获取系统状态,具体地,可以包括但不限于:
getCpuInfo()//获取CPU状态;
getMemoryInfo()//获取存储器状态。
本实施例提供的上述方法,当对被测对象进行测试时,通过运行测试用例,并从指定的路径加载安卓工具,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试,可以直接调用安卓工具提供的API,减少了测试用例中实现API的代码量,降低了测试的复杂度;另外,测试人员可以根据安卓工具提供的API编写测试用例,避免了对API代码的学习,降低了测试人员的学习成本。
另外,通过对所述Instrumentation API进行封装,并加载封装之后的Instrumentation,可以根据访问权限访问API,增强了自动化测试的安全性;另外,根据执行测试操作过程中的测试信息进行测试分析,可以方便测试人员对测试对象存在的问题进行总结,从而根据测试分析结果改进被测对象,提高了测试效率。
实施例三
参见图3,本实施例提供了一种自动化测试的装置,该装置包括:
加载模块301,用于当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具;
调用模块302,用于根据测试需求调用安卓工具提供的API执行测试操作,以完成被测对象的测试。
本实施例中,加载模块301用于,根据加载语句从classpath路径加载预先存储的安卓工具的工具包。
参见图4,本实施例中,调用模块302包括以下至少一种:
第一调用单元302A,用于根据测试需求调用安卓工具提供的操作资源文件夹API,执行对资源文件夹的操作;
第二调用单元302B,用于根据测试需求调用安卓工具提供的操作SD卡API,执行对SD卡的操作;
第三调用单元302C,用于根据测试需求调用安卓工具提供的检测网络状态API,对网络状态进行检测;
第四调用单元302D,用于根据测试需求调用安卓工具提供的操作Activity API,执行对Activity的操作;
第五调用单元302E,用于根据测试需求调用安卓工具提供的操作Instrumentation API,对Instrumentation进行调用;
第六调用单元302F,用于根据测试需求调用安卓工具提供的操作MockAPI,执行对Mock的操作。
参见图4,本实施例中,调用模块302还包括:
封装单元302G,用于在第五调用单元302E对Instrumentation进行调用之前,对Instrumentation API进行封装,并加载封装之后的Instrumentation。
参见图4,本实施例中,所述装置还包括:
分析模块303,用于根据测试操作过程中的测试信息进行测试分析。
参见图4,本实施例中,分析模块303包括以下至少一种:
第一分析单元303A,用于调用安卓工具提供的获取屏幕图片API和对比图片API,对获取到的屏幕图片进行对比;
第二分析单元303B,用于调用安卓工具提供的获取日志API,对获取到的日志进行分析;
第三分析单元303C,用于调用安卓工具提供的获取系统状态API,对获取到的系统状态进行分析。
本实施例提供的上述自动化测试的装置,可以执行上述任一方法实施例中提供的自动化测试的方法,具体过程详见方法实施例中的描述,此处不赘述。
本实施例提供的自动化测试的装置,当对被测对象进行测试时,通过运行测试用例,并从指定的路径加载安卓工具,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试,可以直接调用安卓工具提供的API,减少了测试用例中实现API的代码量,降低了测试的复杂度;另外,测试人员可以根据安卓工具提供的API编写测试用例,避免了对API代码的学习,降低了测试人员的学习成本。
另外,通过对所述Instrumentation API进行封装,并加载封装之后的Instrumentation,可以根据访问权限访问API,增强了自动化测试的安全性;另外,根据执行测试操作过程中的测试信息进行测试分析,可以方便测试人员对测试对象存在的问题进行总结,从而根据测试分析结果改进被测对象,提高了测试效率。
需要说明的是:上述实施例提供的自动化测试的装置在进行自动化测试时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的自动化测试的装置与自动化测试的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本发明实施例中的全部或部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种自动化测试的方法,其特征在于,所述方法包括:
当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具;
根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试。
2.根据权利要求1所述的方法,其特征在于,从指定的路径加载安卓工具,包括:
根据加载语句从classpath路径加载预先存储的安卓工具的工具包。
3.根据权利要求1所述的方法,其特征在于,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,包括以下至少一种:
根据测试需求调用所述安卓工具提供的操作资源文件夹API,执行对资源文件夹的操作;
根据测试需求调用所述安卓工具提供的操作安全数码SD卡API,执行对SD卡的操作;
根据测试需求调用所述安卓工具提供的检测网络状态API,对网络状态进行检测;
根据测试需求调用所述安卓工具提供的操作活动Activity API,执行对Activity的操作;
根据测试需求调用所述安卓工具提供的操作工具Instrumentation API,对Instrumentation进行调用;
根据测试需求调用所述安卓工具提供的操作模拟对象MockAPI,执行对Mock的操作。
4.根据权利要求3所述的方法,其特征在于,对Instrumentation进行调用之前,还包括:
对所述Instrumentation API进行封装,并加载封装之后的Instrumentation。
5.根据权利要求1所述的方法,其特征在于,根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试之后,还包括:
根据测试操作过程中的测试信息进行测试分析。
6.根据权利要求5所述的方法,其特征在于,根据测试操作过程中的测试信息进行测试分析,包括以下至少一种:
调用所述安卓工具提供的获取屏幕图片API和对比图片API,对获取到的屏幕图片进行对比;
调用所述安卓工具提供的获取日志API,对获取到的日志进行分析;
调用所述安卓工具提供的获取系统状态API,对获取到的系统状态进行分析。
7.一种自动化测试的装置,其特征在于,所述装置包括:
加载模块,用于当对被测对象进行测试时,运行测试用例,并从指定的路径加载安卓工具;
调用模块,用于根据测试需求调用所述安卓工具提供的应用程序编程接口API执行测试操作,以完成所述被测对象的测试。
8.根据权利要求7所述的装置,其特征在于,所述加载模块用于,根据加载语句从classpath路径加载预先存储的安卓工具的工具包。
9.根据权利要求7所述的装置,其特征在于,所述调用模块包括以下至少一种:
第一调用单元,用于根据测试需求调用所述安卓工具提供的操作资源文件夹API,执行对资源文件夹的操作;
第二调用单元,用于根据测试需求调用所述安卓工具提供的操作安全数码SD卡API,执行对SD卡的操作;
第三调用单元,用于根据测试需求调用所述安卓工具提供的检测网络状态API,对网络状态进行检测;
第四调用单元,用于根据测试需求调用所述安卓工具提供的操作活动Activity API,执行对Activity的操作;
第五调用单元,用于根据测试需求调用所述安卓工具提供的操作工具InstrumentationAPI,对Instrumentation进行调用;
第六调用单元,用于根据测试需求调用所述安卓工具提供的操作模拟对象Mock API,执行对Mock的操作。
10.根据权利要求9所述的装置,其特征在于,所述调用模块还包括:
封装单元,用于在第五调用单元对Instrumentation进行调用之前,对所述InstrumentationAPI进行封装,并加载封装之后的Instrumentation。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
分析模块,用于根据测试操作过程中的测试信息进行测试分析。
12.根据权利要求11所述的装置,其特征在于,所述分析模块包括以下至少一种:
第一分析单元,用于调用所述安卓工具提供的获取屏幕图片API和对比图片API,对获取到的屏幕图片进行对比;
第二分析单元,用于调用所述安卓工具提供的获取日志API,对获取到的日志进行分析;
第三分析单元,用于调用所述安卓工具提供的获取系统状态API,对获取到的系统状态进行分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210258819.9A CN103577309A (zh) | 2012-07-25 | 2012-07-25 | 自动化测试的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210258819.9A CN103577309A (zh) | 2012-07-25 | 2012-07-25 | 自动化测试的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103577309A true CN103577309A (zh) | 2014-02-12 |
Family
ID=50049136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210258819.9A Pending CN103577309A (zh) | 2012-07-25 | 2012-07-25 | 自动化测试的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577309A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601768A (zh) * | 2014-12-22 | 2015-05-06 | 上海斐讯数据通信技术有限公司 | Android手机自动化测试系统及其测试方法 |
CN104615543A (zh) * | 2015-02-12 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 一种窗口程序异常响应的检测方法及装置 |
CN106291317A (zh) * | 2016-07-28 | 2017-01-04 | 袁伟家 | 一种轨道电路分路参数智能测试仪及其实现方法 |
CN106294106A (zh) * | 2015-05-27 | 2017-01-04 | 航天信息股份有限公司 | Web应用系统的测试方法及装置 |
CN106326109A (zh) * | 2016-08-09 | 2017-01-11 | 北京金山安全软件有限公司 | 一种新应用的测试方法及装置 |
CN106326108A (zh) * | 2016-08-09 | 2017-01-11 | 北京金山安全软件有限公司 | 一种新应用的测试方法及装置 |
CN106528696A (zh) * | 2016-11-02 | 2017-03-22 | 四川秘无痕信息安全技术有限责任公司 | 一种提取Android系统QQ账号的方法 |
CN106776266A (zh) * | 2015-11-25 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 测试工具的配置方法及终端设备 |
CN107025174A (zh) * | 2017-04-06 | 2017-08-08 | 网易(杭州)网络有限公司 | 用于设备的用户界面异常测试的方法、装置和可读储介质 |
CN107608889A (zh) * | 2017-09-15 | 2018-01-19 | 杭州销冠网络科技有限公司 | 一种测试脚本自动生成方法及系统 |
CN107948640A (zh) * | 2017-12-19 | 2018-04-20 | 百度在线网络技术(北京)有限公司 | 视频播放测试方法、装置、电子设备和存储介质 |
CN111756931A (zh) * | 2020-06-24 | 2020-10-09 | 广西东信易通科技有限公司 | 基于中继线路的隐私号码自动化呼叫测试方法及其系统 |
CN112579438A (zh) * | 2020-12-01 | 2021-03-30 | 河南芯盾网安科技发展有限公司 | 多功能自动化测试工具及测试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102479152A (zh) * | 2010-11-26 | 2012-05-30 | 腾讯科技(深圳)有限公司 | 基于Android平台获取工具自动测试结果的方法及装置 |
CN102541728A (zh) * | 2010-12-14 | 2012-07-04 | 北京新媒传信科技有限公司 | 扩展自动化测试工具识别控件的方法 |
-
2012
- 2012-07-25 CN CN201210258819.9A patent/CN103577309A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102479152A (zh) * | 2010-11-26 | 2012-05-30 | 腾讯科技(深圳)有限公司 | 基于Android平台获取工具自动测试结果的方法及装置 |
CN102541728A (zh) * | 2010-12-14 | 2012-07-04 | 北京新媒传信科技有限公司 | 扩展自动化测试工具识别控件的方法 |
Non-Patent Citations (2)
Title |
---|
杨怡君,黄大庆: "Android手机自动化性能测试工具的研究与开发", 《计算机应用》 * |
谢红霞,吴红梅: "基于Android的自动化测试的设计与实现", 《计算机时代》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104601768A (zh) * | 2014-12-22 | 2015-05-06 | 上海斐讯数据通信技术有限公司 | Android手机自动化测试系统及其测试方法 |
CN104615543A (zh) * | 2015-02-12 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 一种窗口程序异常响应的检测方法及装置 |
CN106294106A (zh) * | 2015-05-27 | 2017-01-04 | 航天信息股份有限公司 | Web应用系统的测试方法及装置 |
CN106294106B (zh) * | 2015-05-27 | 2019-03-22 | 航天信息股份有限公司 | Web应用系统的测试方法及装置 |
CN106776266A (zh) * | 2015-11-25 | 2017-05-31 | 腾讯科技(深圳)有限公司 | 测试工具的配置方法及终端设备 |
CN106291317A (zh) * | 2016-07-28 | 2017-01-04 | 袁伟家 | 一种轨道电路分路参数智能测试仪及其实现方法 |
CN106326108B (zh) * | 2016-08-09 | 2019-07-12 | 北京金山安全软件有限公司 | 一种新应用的测试方法及装置 |
CN106326109A (zh) * | 2016-08-09 | 2017-01-11 | 北京金山安全软件有限公司 | 一种新应用的测试方法及装置 |
CN106326108A (zh) * | 2016-08-09 | 2017-01-11 | 北京金山安全软件有限公司 | 一种新应用的测试方法及装置 |
CN106326109B (zh) * | 2016-08-09 | 2019-09-03 | 北京金山安全软件有限公司 | 一种新应用的测试方法及装置 |
CN106528696A (zh) * | 2016-11-02 | 2017-03-22 | 四川秘无痕信息安全技术有限责任公司 | 一种提取Android系统QQ账号的方法 |
CN106528696B (zh) * | 2016-11-02 | 2019-10-11 | 四川秘无痕科技有限责任公司 | 一种提取Android系统QQ账号的方法 |
CN107025174B (zh) * | 2017-04-06 | 2020-01-10 | 网易(杭州)网络有限公司 | 用于设备的用户界面异常测试的方法、装置和可读储介质 |
CN107025174A (zh) * | 2017-04-06 | 2017-08-08 | 网易(杭州)网络有限公司 | 用于设备的用户界面异常测试的方法、装置和可读储介质 |
CN107608889A (zh) * | 2017-09-15 | 2018-01-19 | 杭州销冠网络科技有限公司 | 一种测试脚本自动生成方法及系统 |
CN107608889B (zh) * | 2017-09-15 | 2021-07-06 | 销冠网络科技有限公司 | 一种测试脚本自动生成方法及系统 |
CN107948640A (zh) * | 2017-12-19 | 2018-04-20 | 百度在线网络技术(北京)有限公司 | 视频播放测试方法、装置、电子设备和存储介质 |
CN111756931A (zh) * | 2020-06-24 | 2020-10-09 | 广西东信易通科技有限公司 | 基于中继线路的隐私号码自动化呼叫测试方法及其系统 |
CN111756931B (zh) * | 2020-06-24 | 2021-04-30 | 广西东信易通科技有限公司 | 基于中继线路的隐私号码自动化呼叫测试方法及其系统 |
CN112579438A (zh) * | 2020-12-01 | 2021-03-30 | 河南芯盾网安科技发展有限公司 | 多功能自动化测试工具及测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577309A (zh) | 自动化测试的方法及装置 | |
CN109302522B (zh) | 测试方法、装置以及计算机系统和介质 | |
CN108255729B (zh) | 一种基于Unity平台的手机游戏自动化测试方法和系统 | |
CN104407980B (zh) | 移动应用自动化测试装置和方法 | |
CN105912473B (zh) | 基于bdd的移动app自动测试平台和测试方法 | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
CN105740138B (zh) | 应用的测试方法、测试装置及测试系统 | |
US7379860B1 (en) | Method for integrating event-related information and trace information | |
CN104899016B (zh) | 调用堆栈关系获取方法及装置 | |
CN105787364B (zh) | 任务的自动化测试方法、装置及系统 | |
CN102521118A (zh) | 一种Android程序的自动测试方法 | |
CN103049371A (zh) | Android应用程序测试方法和测试装置 | |
CN103927255A (zh) | 基于云测试系统的软件测试方法、云测试系统及其客户端 | |
CN103312851B (zh) | 一种智能手机应用交互界面程序可用性测试方法 | |
US10198335B2 (en) | Detecting root causes of use-after-free memory errors | |
CN106598834A (zh) | Ui测试方法及装置 | |
CN105740144A (zh) | 一种Android移动终端的自动化测试方法及系统 | |
CN109918338B (zh) | 安全芯片操作系统测试装置 | |
Akour et al. | Mobile software testing: Thoughts, strategies, challenges, and experimental study | |
CN1485740A (zh) | 一种基于主机平台的嵌入式模块和子系统的通用测试装置 | |
CN113407393A (zh) | 芯片验证方法、终端设备、验证平台以及存储介质 | |
KR20080052341A (ko) | 내장형 시스템 소프트웨어 자동 테스트 시스템 및 방법과테스트 시나리오 작성 방법 | |
CN117370203B (zh) | 自动化测试方法、系统、电子设备及存储介质 | |
CN102929688B (zh) | 一种模拟触摸屏的模拟器实现方法及该模拟器 | |
CN103176901A (zh) | 一种嵌入式软件测试监控方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140212 |