发明内容
基于此,有必要针对传统的app测试方式测试结果精确度较低和测试过程稳定性较低的问题,提供一种基于终端设备的app自测方法和装置。
为实现本发明目的提供的一种基于终端设备的app自测方法,包括:选取所述终端设备上某一应用程序作为自测对象,并根据所述应用程序的签名获取所述应用程序的功能;接收测试模式选择信号,根据所述测试模式选择信号输出相应的测试界面,并接收测试功能选择信号以及相应的测试次数设置信号,根据所述测试功能选择信号和所述测试次数设置信号生成所述自测命令;根据生成的所述自测命令由通过robotium自测框架实现的预存的多个脚本中选取与所述自测命令相应的第一脚本,并启动所述第一脚本控制自测的所述应用程序执行相应的功能;所述第一脚本根据其控制自测的所述应用程序执行相应功能时的运行状态输出相应的测试结果发送至sqlite数据库。
在其中一个实施例中,所述启动所述第一脚本控制自测的所述应用程序执行相应的功能包括:所述第一脚本每执行完一个操作之后都将相应的标识信息存储至所述数据库;其中,所述标识信息用于标识所述第一脚本所执行的操作步骤。
在其中一个实施例中,还包括:实时查询所述数据库中存储的所述标识信息,并根据所述标识信息确定所述第一脚本测试中断的位置的步骤。
在其中一个实施例中,所述测试界面包含的测试功能与自测所述应用程序所具有的功能相一致。
在其中一个实施例中,所述测试模式选择信号为单功能测试信号、多功能测试信号、冒烟测试信号、压力测试信号或快速测试信号的至少一种。
相应的,本发明还提供了一种基于终端设备的app自测装置,包括:获取模块,用于选取所述终端设备上某一应用程序作为自测对象,并根据所述应用程序的签名获取所述应用程序的功能;生成模块,用于接收测试模式选择信号,根据所述测试模式选择信号输出相应的测试界面,并接收测试功能选择信号以及相应的测试次数设置信号,根据所述测试功能选择信号和所述测试次数设置信号生成所述自测命令;控制模块,用于根据生成的所述自测命令由通过robotium自测框架实现的预存的多个脚本中选取与所述自测命令相应的第一脚本,并启动所述第一脚本控制自测的所述应用程序执行相应的功能;发送模块,用于所述第一脚本根据其控制自测的所述应用程序执行相应功能时的运行状态输出相应的测试结果发送至sqlite数据库。
在其中一个实施例中,所述控制模块包括:存储模块,用于所述第一脚本每执行完一个操作之后都将相应的标识信息存储至所述数据库;其中,所述标识信息用于标识所述第一脚本所执行的操作步骤。
在其中一个实施例中,所述控制模块还包括:查询模块,用于实时查询所述数据库中存储的所述标识信息,并根据所述标识信息确定所述第一脚本测试中断的位置的步骤。
在其中一个实施例中,所述测试界面包含的测试功能与自测所述应用程序所具有的功能相一致。
在其中一个实施例中,所述测试模式选择信号为单功能测试信号、多功能测试信号、冒烟测试信号、压力测试信号或快速测试信号的至少一种。
上述基于终端设备的app自测方法和装置,通过选取终端设备上某一应用程序作为自测对象,并根据应用程序的签名获取应用程序的功能;接收测试模式选择信号,根据测试模式选择信号输出相应的测试界面,并接收测试功能选择信号以及相应的测试次数设置信号,根据测试功能选择信号和测试次数设置信号生成自测命令;根据生成的自测命令由通过robotium自测框架实现的预存的多个脚本中选取与自测命令相应的第一脚本,并启动第一脚本控制自测的应用程序执行相应的功能;第一脚本根据其控制自测的应用程序执行相应功能时的运行状态输出相应的测试结果至sqlite数据库。上述方法通过根据被测应用程序的签名获取被测应用程序所具有的功能后,根据所调用的第一脚本控制被测应用程序执行相应功能时的运行状态输出相应的测试结果至数据库,实现了以手机作为测试终端设备进行安装在手机上的应用软件的自动化测试的目的,从而避免了传统的安装在手机上的应用软件测试方式容易导致漏测和影响测试稳定性的现象,有效提高了应用软件测试的精确性和稳定性,同时还提高了测试效率。
具体实施方式
为了使本发明的木、技术方案及优点更加清楚明白,以下结合附图对本发明的基于终端设备的app自测方法和装置的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
首先,需要说明的是,被测应用程序指安装在终端设备,例如,手机上的任意一款应用软件,例如,某聊天软件或某打车软件等。脚本,指的是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。在基于终端设备的app自测方法中,预先存储的多个脚本均是用于启动并控制被测应用程序的运行的。其中,每个脚本所控制被测应用程序运行的功能程序各不相同。也就是说,每一个脚本对应被测应用程序所具有的一项功能。
另外,在基于终端设备的app自测方法中,脚本使用robotium自测框架技术来实现。其中,robotium是一款Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作,例如,点击、长按、滑动等、查找和断言机制的API,能够对各种控件进行操作。
如图1所示,为一个实施例中的基于终端设备的app自测方法的步骤流程图。具体步骤包括:
步骤102,选取终端设备上某一应用程序作为自测对象,并根据应用程序的签名获取应用程序的功能。
本实施例中,根据被测应用程序的签名获取被测应用程序所具有的功能具体可通过应用程序测试系统,其中,应用程序测试系统安装在手机上,用于测试被测应用程序的签名修改为被测应用程序的签名,从而使得应用程序测试系统与被测应用程序之间建立一定的联系。其中,签名就是在应用程序的特定字段写入特定的标记信息。通过将应用程序测试系统的签名修改为被测应用程序的签名,使得应用程序测试系统与被测应用程序相互关联,由此应用程序测试系统能够获取被测应用程序所具有的功能,以便于后续对被测应用程序的各项功能进行相应的测试。
步骤104,接收测试模式选择信号,根据测试模式选择信号输出相应的测试界面,并接收测试功能选择信号以及相应的测试次数设置信号,根据测试功能选择信号和测试次数设置信号生成自测命令。
步骤106,根据生成的自测命令由通过robotium自测框架实现的预存的多个脚本中选取与自测命令相应的第一脚本,并启动第一脚本控制自测的应用程序执行相应的功能。
本实施例中,当通过修改应用程序测试系统的签名建立应用程序测试系统与被测应用程序之间的联系之后,由于根据自测命令调用相应的第一脚本时,需要根据自测命令中包含的预设的测试功能进行调用。
进一步的,需要说明的是,自测命令中包括有预先设定的测试功能。即自测命令中包含有当前所要测试的被测应用程序所具有的某一项功能。由此,当接收到自测命令后,即可根据自测命令中所包含的预设的测试功能由多个脚本中调用相应的第一脚本,且第一脚本与被测应用程序运行在同一进程中,从而使得第一脚本能够点击控制被测应用程序。由此,即可通过上述步骤,由第一脚本启动并控制被测应用程序执行相应的功能,使得被测应用程序进入自动测试状态,从而进行被测应用程序的测试。
步骤108,第一脚本根据其控制自测的应用程序执行相应功能时的运行状态输出相应的测试结果发送至sqlite数据库。
本实施例中,第一脚本控制被测应用程序执行相应的功能时,判断其自身当前的运行状态是否出现中断,当出现中断时,则表明此时被测应用程序运行过程中某一环节出错,测试过程出现异常,因此输出测试结果异常的信息发送至数据库中;当第一脚本未出现中断,即第一脚本正常执行完所有操作时,则表明此时被测应用程序运行过程正常,测试过程正常,因此输出相应的测试结果正常的信息发送至数据库中。由此,通过使用运行时刻,即指的是一个程序在运行或者在被执行的状态的方法实现了以手机作为终端设备进行自动模拟人为操作测试应用程序的目的,这也就脱离了传统的采用PC作为测试终端的测试方式,从而避免了传统的采用PC作为测试终端时存在数据传输不稳定的现象,保证了测试过程的稳定性和可靠性,且还可以有效降低了在手机上使用测试程序进行应用程序测试的难度。
进一步的,需要说明的是,当第一脚本控制被测应用程序执行相应的功能,并根据被测应用程序的运行状态输出相应的测试结果发送至数据库中时,数据库优选为本地sqlite数据库,进而可通过查询本地sqlite数据库,由本地sqlite数据库中读取相应的测试结果以便于检测人员进行故障排查和分析。
上述基于终端设备的app自测方法,通过选取终端设备上某一应用程序作为自测对象,并根据应用程序的签名获取应用程序的功能;接收测试模式选择信号,根据测试模式选择信号输出相应的测试界面,并接收测试功能选择信号以及相应的测试次数设置信号,根据测试功能选择信号和测试次数设置信号生成自测命令;根据生成的自测命令由通过robotium自测框架实现的预存的多个脚本中选取与自测命令相应的第一脚本,并启动第一脚本控制自测的应用程序执行相应的功能;第一脚本根据其控制自测的应用程序执行相应功能时的运行状态输出相应的测试结果至sqlite数据库。上述方法通过根据被测应用程序的签名获取被测应用程序所具有的功能后,根据所调用的第一脚本控制被测应用程序执行相应功能时的运行状态输出相应的测试结果至数据库,实现了以手机作为测试终端设备进行安装在手机上的应用软件的自动化测试的目的,从而避免了传统的安装在手机上的应用软件测试方式容易导致漏测和影响测试稳定性的现象,有效提高了应用软件测试的精确性和稳定性,同时还提高了测试效率。
如图2所示,为另一个实施例中的基于终端设备的app自测方法的步骤流程图。具体步骤包括:
步骤210,选取终端设备上某一应用程序作为自测对象,并根据应用程序的签名获取应用程序的功能。
步骤220,接收测试模式选择信号,根据测试模式选择信号输出相应的测试界面,并接收测试功能选择信号以及相应的测试次数设置信号,根据测试功能选择信号和测试次数设置信号生成自测命令。
本实施例中,测试界面包含的测试功能与自测应用程序所具有的功能相一致,且测试模式选择信号为单功能测试信号、多功能测试信号、冒烟测试信号、压力测试信号或快速测试信号的至少一种。由此,提高了测试模式选择信号的多选择性与适用性。例如,测试人员通过在该测试界面点击相应的测试模式,即可实现测试模式选择信号的输入。其中,在该测试界面中可选择的测试模式包括单功能测试、多功能测试、冒烟测试、压力测试和快速测试。相应的,测试模式选择信号可为单功能测试信号、多功能测试信号、冒烟测试信号、压力测试信号或快速测试信号。其通过设置多种测试模式,能够实现不同功能单一测试或多功能测试,由此有效提高了应用程序测试方法的多样性和灵活性,同时还进一步提高了测试效率和覆盖率。
进一步的,当接收到测试模块选择信号后,即可根据所接收到的测试模式选择信号输出相应的测试界面,其中,测试界面包含有与被测应用程序相一致的测试功能。其中,以某打车软件为例,此时测试界面所包含的测试功能可包括但不限于:添加设备、添加场景、帮助文档、意见反馈、备份功能、设置功能、添加预约、预约列表、贡共享功能和添加联动等。通过该测试界面,测试人员可通过点击显示出的测试功能,并在测试次数输入框中输入相应的测试次数,即可实现测试功能选择信号以及相应的测试次数设置信号的输入。由此,即可通过上述步骤,应用程序测试系统接收到测试功能选择信号以及相应的测试次数设置信号后,根据测试功能选择信号和测试次数设置信号生成相应的自测命令。
步骤230,根据生成的自测命令由通过robotium自测框架实现的预存的多个脚本中选取与自测命令相应的第一脚本,且第一脚本每执行完一个操作之后都将相应的标识信息存储至数据库;其中,标识信息用于标识第一脚本所执行的操作步骤。
本实施例中,还包括:实时查询数据库中存储的标识信息,并根据标识信息确定第一脚本测试中断的位置的步骤。具体的,在第一脚本运行过程中,其操作的每一步骤都插入数据库更新信息语句,使得第一脚本每执行完一个操作都进行一次数据库更新,以实现在数据库中存储第一脚本的每一个操作的标识。由此,当第一脚本在运行过程中,即在进行被测应用程序的测试过程中,如果某一环节出错,则此时第一脚本自动中断测试过程,并提示测试异常;同时数据库中更新标识信息失败,此时数据库中只存储有出错环节之前的所有操作的标识信息。如果第一脚本正常运行完成,则此时第一脚本自动返回,并提示测试正常,与此同时,数据库中存储有第一脚本所有的操作的标识信息。
进一步的,当通过调用第一脚本启动并控制被测应用程序执行相应的功能,进行被测应用程序的测试过程中,还同时包括实时查询数据库中存储的标识信息,并根据标识信息确定第一脚本测试中断的位置的步骤。即通过在自动测试过程中开放一条线程,进行数据库中所更新的标识信息的实时查询。当查询到数据库中包含有第一脚本所有操作的标识信息,则表明测试过程正常;当查询到数据库中只包含有部分第一脚本的操作的标识信息时,则表明测试异常,此时可根据数据库中标识信息的更新位置确定第一脚本中断测试的位置,由此可直接定位出导致测试异常的环节,从而使得检测人员能够在很短的时间内就能进行出错环节的定位,以便于更快更准确的进行故障分析,实现对被测应用程序的优化和完善。
更进一步的,通过由第一脚本将测试结果以及测试过程中的标识信息更新至sqlite数据库中,进而再通过应用程序测试系统由数据库中读取相应的测试结果,实现了使用sqlite数据库进行测试过程的监测以及测试结果的记录,从而由sqlite数据库作为媒介,使得应用程序测试系统与被测应用程序两者之间进行良好的交互通讯。
步骤240,第一脚本根据其控制自测的应用程序执行相应功能时的运行状态输出相应的测试结果发送至sqlite数据库。
本实施例中,当由sqlite数据库中读取测试结果后,测试结果可采用报告形式显示。通过以报告形式显示测试结果信息,使得检测人员能够更加直观的获取测试结果,以便于进行故障分析。与此同时,还降低了测试结果查看的难度,使得非专业测试人员也能够看懂测试结果。
相应的,基于上述任一种基于终端设备的app自测方法的原理,本发明还同开了一种基于终端设备的app自测装置。由于本发明提供的基于终端设备的app自测装置的工作原理与本发明提供的基于终端设备的app自测方法的原理相同或相似,因此重复之处不再赘述。
如图3所示,为一个实施例中的基于终端设备的app自测装置的结构示意图。该基于终端设备的app自测装置10包括:获取模块200、生成模块400、控制模块600和发送模块800。
其中,获取模块200用于选取终端设备上某一应用程序作为自测对象,并根据应用程序的签名获取应用程序的功能;生成模块400用于接收测试模式选择信号,根据测试模式选择信号输出相应的测试界面,并接收测试功能选择信号以及相应的测试次数设置信号,根据测试功能选择信号和测试次数设置信号生成所述自测命令;控制模块600用于根据生成的自测命令由通过robotium自测框架实现的预存的多个脚本中选取与自测命令相应的第一脚本,并启动第一脚本控制自测的应用程序执行相应的功能;发送模块800用于第一脚本根据其控制自测的应用程序执行相应功能时的运行状态输出相应的测试结果发送至sqlite数据库。
本实施例中,测试界面包含的测试功能与自测应用程序所具有的功能相一致;且测试模式选择信号为单功能测试信号、多功能测试信号、冒烟测试信号、压力测试信号或快速测试信号的至少一种。
在一个实施例中,控制模块600包括:存储模块610(图中未示出)用于第一脚本每执行完一个操作之后都将相应的标识信息存储至数据库;其中,标识信息用于标识第一脚本所执行的操作步骤。
在一个实施例中,控制模块600还包括:查询模块620(图中未示出)用于实时查询数据库中存储的标识信息,并根据标识信息确定第一脚本测试中断的位置的步骤。
为更清楚的说明本发明的基于终端设备的app自测装置对被测应用程序进行测试的具体过程,以下以被测应用程序为某打车软件为例,对本发明的基于终端设备的app自测装置进行更进一步的说明。
具体的,将基于终端设备的app自测装置安装到手机上,手机上同时安装被测应用程序,例如,某打车软件。然后点击基于终端设备的app自测装置,以启动该装置。当启动基于终端设备的app自测装置之后,即可进入测试选项和设定。进一步的,通过测试主界面中选择相应的测试模式。如:单功能测试。当选择好相应的测试模式后,点击单功能测试即可进入单功能测试界面。
当进入单功能测试界面后,此时测试界面中包含有多个测试功能。通过由多个测试功能中选择当前所需要测试的功能。例如,通过点击帮助文档测试功能,同时还可设置帮助文档该项功能的测试次数。当通过上述步骤设定完测试功能和测试次数之后,此时基于终端设备的app自测装置中的主测试模块会由存储模块中调用与帮助文档功能相应的脚本,由该脚本自动打开被测应用程序,即某打车软件,使得某打车软件进入自动测试状态,进行相对应的自动化测试,并将测试结果以报告的形式输出。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。