自动化测试方法、装置、设备及系统的制作方法_2

文档序号:8380860阅读:来源:国知局
,完成自动化脚本的录制并生成自动化脚本。
[0064]步骤402,测试终端将自动化脚本发送给移动终端。
[0065]测试终端生成自动化脚本之后,将该自动化脚本发送给移动终端,使得移动终端执行该自动化脚本进行自动化测试。
[0066]对应地,移动终端接收测试终端发送的自动化脚本。
[0067]步骤403,移动终端执行自动化脚本对测试用例进行测试。
[0068]移动终端执行自动化脚本对测试用例进行测试的过程,也即将测试终端录制的自动化脚本进行回放的过程。在执行自动化脚本的过程中,对录制的测试用例所包含的操作事件进行执行。具体来说,首先调用脚本解析器将脚本语句从自动化脚本中解析出来;然后分析脚本语句中记录的操作事件的事件信息;最后根据操作事件的事件信息执行该操作事件。
[0069]在本实施例中,当操作事件为点击移动终端上的某一虚拟按钮这一触摸事件时,其事件信息包括该触摸事件作用的坐标位置以及该触摸事件作用的点击动作。
[0070]步骤404,在执行自动化脚本的过程中,移动终端采集测试用例和/或移动终端的性能数据。
[0071]上文已经介绍,性能数据主要包括:耗时、耗电、网络流量、流畅度、CPU占用率和内存占用这6种数据。在执行自动化脚本的过程中,移动终端通过自动化测试工具采集测试用例和/或移动终端的性能数据。其中,测试用例的性能数据包括该测试用例所包含的操作事件从触发至响应所耗费的时长、电量和网络流量;移动终端的性能数据包括该移动终端在测试过程中的平均显示帧率、CPU占用率和内存占用。
[0072]步骤405,移动终端根据性能数据得到测试用例的性能测试报表。
[0073]移动终端根据采集得到的性能数据得到测试用例的性能测试报表,通常该性能测试报表是以表格的形式呈现。
[0074]需要说明的是,通常情况下,在上述步骤402中,测试终端通过USB数据线将自动化脚本发送给移动终端,而移动终端接收到该自动化脚本之后,需要先断开该USB数据线的连接,再执行自动化脚本对测试用例进行测试。否则,移动终端采集得到的性能数据会不准确,尤其是耗电这一性能数据。
[0075]综上所述,本实施例提供的自动化测试方法,通过测试终端记录测试用例生成自动化脚本,并将该自动化脚本发送给移动终端;移动终端执行自动化脚本对测试用例进行测试,在执行自动化脚本的过程中,移动终端采集测试用例和/或移动终端的性能数据,并根据性能数据得到测试用例的性能测试报表;解决了现有技术存在对应用程序的测试还停留在基础的事件响应方面的测试,无法充分保证应用程序的性能质量的问题;达到了在应用程序的测试阶段自动采集和分析性能数据,既节约了人力成本,又充分保证了应用程序的性能质量的效果。
[0076]请参考图5,其示出了本发明另一实施例提供的自动化测试方法的方法流程图,本实施例仍然以该自动化测试方法应用于图1所示的实施环境中来举例说明。该自动化测试方法包括如下步骤:
[0077]步骤501,测试终端在测试用例中的操作事件被触发后,捕获操作事件。
[0078]在录制自动化脚本的过程中,测试终端在测试用例中的操作事件被触发后,通过自动化测试工具捕获该操作事件。为了便于说明和理解,在本实施例中,仍然假设测试用例包含一个操作事件,且该操作事件为点击移动终端上的某一虚拟按钮这一触摸事件。另外,假设该自动化测试工具为Monkey Talk。MonkeyTalk是一款对1S系统和Android (安卓)系统下的应用程序常用的自动化测试工具。
[0079]具体来讲,本步骤包括如下几个子步骤:
[0080]第一,通过钩子函数Hook获取操作事件的事件接收对象的事件转发函数。
[0081]操作事件被触发后,通常由接收事件的对象进行接收,然后通过事件响应链传递给响应对象进行事件响应。以1S系统下的点击移动终端上的某一虚拟按钮这一触摸事件为例,当用户触摸屏幕时产生该触摸事件UIEvent,该触摸事件UIEvent由接收事件的对象UIApplicat1n进行接收,而后UIApplicat1n通过自身的事件转发函数sendEvent函数将该触摸事件UIEvent通过事件响应链发送给控件树上的响应对象进行事件响应。
[0082]在本实施例中,自动化测试工具Monkey Talk在触摸事件WEvent被触发后,且由接收事件的对象UIApplicat1n进行接收之后,Hook该事件接收对象UIApplicat1n的事件转发函数sendEvent函数。这样,触摸事件UIEvent就无法被事件转发函数sendEvent函数发出。
[0083]第二,添加与事件转发函数相对应的自定义事件转发函数。
[0084]测试终端通过自动化测试工具添加与事件转发函数相对应的自定义事件转发函数。在本实施例中,假设添加的自定义事件转发函数为mySendEvent函数,也即将mySendEvent函数插入添加至sendEvent函数的位置。
[0085]第三,通过自定义事件转发函数捕获操作事件。
[0086]测试终端通过自动化测试工具添加的自定义事件转发函数捕获操作事件。在本实施例中,Monkey Talk通过UIApplicat1n下插入添加的mySendEvent函数捕获触摸事件UIEvent0
[0087]步骤502,测试终端获取操作事件的事件信息。
[0088]测试终端通过自动化测试工具捕获操作事件之后,对该操作事件进行解析,获取操作事件的事件信息。一个操作事件的事件信息包含操作事件作用的坐标位置以及操作事件作用的动作等信息。
[0089]在本实施例中,测试终端通过Monkey Talk捕获触摸事件WEvent之后,获取该触摸事件作用的坐标位置即为用户触摸屏幕时这一触摸位置的坐标,该触摸事件作用的动作即为点击。
[0090]事件信息反映了操作事件的具体情况,通过获取操作事件的事件信息,可以在后续自动化脚本执行过程中对事件信息进行解析和构造,还原出操作事件。
[0091]步骤503,测试终端将事件信息保存至自动化脚本中。
[0092]测试终端将获取到的事件信息保存至自动化脚本中,也即生成得到自动化脚本。当一个测试用例包含不止一个操作事件时,通常将该测试用例所包含的所有操作事件的事件信息保存至同一个自动化脚本中。
[0093]步骤504,测试终端重发操作事件至操作事件的事件接收对象的事件转发函数。
[0094]测试终端重发操作事件至操作事件的事件接收对象的事件转发函数,该事件转发函数用于将操作事件通过事件响应链传递给响应对象进行事件响应。
[0095]在本实施例中,测试终端通过UIApplicat1n的sendEvent函数将触摸事件UIEvent重发出去,使得该触摸事件UIEvent通过事件响应链传递至控件树上的响应对象进行事件响应。进一步地,可以记录事件响应的状态和结果以便后续自动化测试阶段进行测试结果的验证。
[0096]步骤505,测试终端将自动化脚本发送给移动终端。
[0097]测试终端通过上述步骤生成自动化脚本之后,将该自动化脚本发送给移动终端,使得移动终端执行该自动化脚本进行自动化测试。
[0098]对应地,移动终端接收测试终端发送的自动化脚本。
[0099]步骤506,移动终端读取自动化脚本中的事件信息。
[0100]移动终端对接收到的自动化脚本进行解析,读取自动化脚本中的事件信息。
[0101]在本实施例中,由于在上述步骤502中,测试终端获取到的事件信息为触摸事件作用的坐标位置以及该触摸事件作用的点击动作。因此,此时移动终端读取保存于自动化脚本中的事件信息为:坐标位置以及点击动作这两个信息。
[0102]步骤507,移动终端根据事件信息构造得到操作事件。
[0103]移动终端从自动化脚本中读取到事件信息之后,根据该事件信息构造得到操作事件。在本实施例中,移动终端根据坐标位置以及点击动作这两个信息,构造得到触摸事件。
[0104]步骤508,移动终端将操作事件发送给自定义对象。
[0105]自定义对象用于将操作事件通过事件响应链传递给响应对象进行事件响应。通常来说,一个操作事件从触发至响应的过程如下:操作事件被触发后由接收事件的对象进行接收,然后由该接收事件的对象将该操作事件发送给窗口对象,窗口对象再将该操作事件通过事件响应链传递给控件树上的响应对象进行事件响应。
[0106]比如,在1S系统中,一个UIEvent被触发后由UIApplicat1n进行接收,然后由UIApplicat1n将该UIEvent发送给UIWindow,UIWindow再将该UIEvent通过事件响应链传递给控件树上的响应对象进行事件响应。
[0107]而在现有的自动化测试过程中,自动化测试工具会在自动化脚本录制的过程中存储操作事件与响应对象之间的对应关系。在之后的自动化脚本执行的过程中,自动化测试工具会首先遍历控件树,在控件树上查找与操作事件相对应的响应对象,然后直接将操作事件发送给查找到的响应对象进行事件响应。从而验证该操作事件是否得到响应或者获取该操作事件得到响应的概率等测试结果。
[0108]在本实施例中,为了确保后续采集得到的性能数据的准确性,移动终端在对测试用例进行自动化测试时,在所有窗口对象之上添加了自定义对象,通过自定义对象将操作事件通过事件响应链传递给响应对象进行事件响应来完成自动化测试,也即通过还原操作事件得到响应的过程完成自动化测试。
[0109]具体地,以1S系统为例,在所有的^Window之上添加自定义对象Top UIView,在对事件信息进行构造得到UIEvent之后,将该UIEvent发送给Top UlView,然后由TopUIView通过事件响应链将UIEvent传递给控件树上的响应对象进行事件响应,完成自动化测试。这样,既免去了遍历控件树查找响应对象的过程,又通过还原真实情况下操作事件得到响应的过程进行自动化测试,使得测试结果更为精确。
[0110]步骤509,在执行自动化脚本的过程中,移动终端采集测试用例和/或移动终端的性能数据。
[0111]具体来讲,在第一种可能的实现方式中,在预定时间间隔内采集测试用例中的至少一个操作事件的第一类性能数据。
[0112]第一类性能数据包括测试用例中的至少一个操作事件从触发至响应所耗费的时长、电量、网络流量以及移动终端在测试过程中的平均显示帧率中的至少一种。
[0113]通常情况下,耗时、耗电、网络流量以及流畅度这4个性能数据都需进行采集。在预定时间间隔内采集第一类性能数据,说明第一类性能数据的采集是在持续的一段时间间隔内才能获得的。以耗时这一性能数据的采集为例,记录操作事件从触发到响应整个过程的时间间隔得到耗时这一性能数据。
[0114]在第二种可能的实现方式中,在预定时刻采样获取第二类性能数据。
[0115]第二类性能数据包括移动终端的中央处理器CPU占用率和内存占用中的至少一种。
[0116]通常情况下,除了上述耗时、耗电、网络流量以及流畅度这4个性能数据需要采集之外,还需一并采集CPU占用率和内存占用这2个性能数据。在预定时刻采样获取第二类性能数据,说明第二类性能数据的采集是在不同的采样时刻获得的。以CPU占用率这一性能数据的采集为例,在自动化脚本执行过程中的不同时刻采样获取若干个时刻时的CPU占用率,从而得到CPU占用率这一性能数据。
[0117]步骤510,移动终端将性能数据发送给测试终端。
[0118]移动终端将采集得到的性能数据发送给测试终端进行数据分析。
[0119]对应地,测试终端接收移动终端发送的性能数据。
[0120]步骤511,测试终端对性能数据进行分析得到性能数据分析结果。
[0121]对性能数据的分析主要从统计、横向对比、纵向对比以及报警这四个方面进行分析。
[0122]具体来讲,在第一种可能的实现方式中,对性能数据进行统计得到性能数据的统计结果。
[0123]针对上述耗时、耗电、网络流量、流畅度、CPU占用率以及内存占用这6种性能数据,对于其中的每一种性能数据来说,将一次自动化测试或者若干
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1