本发明涉及软件技术领域,特别是一种检测android系统重启并生成测试用例的方法。
背景技术:
目前安卓智能设备的功能越来越多,例如安卓智能电视或安卓智能盒子等,而在不同功能间交叉操作有概率触发android重启等系统问题。如果出现android系统重启则会导致很多不可预料的问题。然而现在对该问题没有很好的测试方法,现在常用的是通过monkey来进行系统压测,但这样即便出现android系统重启也不容易定位及复现问题。若通过人工操作来测试此类问题则会浪费许多人力并且不容易操作出来。
技术实现要素:
为解决现有技术中存在的问题,本发明的目的是提供一种检测android系统重启并生成测试用例的方法,该方法通过获取android系统重启时的测试用例,可以有效的提高测试效率,从而提高软件稳定性和缩短开发周期。
为实现上述目的,本发明采用的技术方案是:一种检测android系统重启并生成测试用例的方法,在对系统进行monkey压力测试的时候,通过shell脚本判断android系统是否重启并记录重启时间,然后根据monkey日志文件获取重启前的场景启动的进程,根据该进程生成测试用例,具体步骤如下:
步骤一、获取初始的system_sever的进程号作为参数1;
步骤二、输入monkey指令,让整机运行monkey指令;
步骤三、运行shell脚本,该脚本用于定时获取当前system_sever的进程号,将该进程号作为参数2,获取该进程号的时间作为参数3;
步骤四、比较参数1和参数2,如果参数1与参数2相等则不做任何处理,如果参数1与参数2不相等,则停止monkey压力测试并记录下参数3;
步骤五、根据参数3的时间,在monkey日志里,找到与该时间对应的位置,然后向上获取按键操作的键值和场景启动的进程生成测试用例并存储。
作为一种优选的实施方式,还包括以下步骤:
步骤六、运行另一shell脚本,该shell脚本用于按行读取测试用例的数据,并检查是否出现android系统重启。
作为另一种优选的实施方式,所述步骤六还可以是人工按测试用例进行操作确认android系统是否重启。
作为另一种优选的实施方式,所述步骤三中,定时获取当前system_sever的进程号的时间间隔为20秒-40秒。
本发明的有益效果是:本发明在monkey压力测试同时,通过shell脚本自动对比system_sever进程,并自动判断android系统是否重启并记录android系统重启的时间,然后根据monkey日志记录的操作步骤,来生成自动测试用例脚本来压测此问题,有效地测试当前安卓智能设备在不同功能间交叉操作而触发android系统重启问题,提高测试效率,提高电视系统软件的稳定性,缩短新产品开发周期,保证软件质量的可靠性。本发明可广泛用于当前安卓系统的智能电视或智能盒子等产品。
附图说明
图1为本发明实施例的流程框图。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例
本实施例以长虹q5t智能电视为例,进行monkey压力测试,出现android系统重启,导致电视黑屏有声。
如图1所示,一种检测android系统重启并生成测试用例的方法,在对系统进行monkey压力测试的时候,通过shell脚本判断android系统是否重启并记录重启时间,然后根据monkey日志文件获取重启前的场景启动的进程,根据该进程生成测试用例,具体步骤如下:
s1、通过串口获取初始的system_sever的进程号是2215,将2215作为参数1;
s2、输入monkey指令,让整机运行monkey指令;
s3、运行first.sh脚本,每30秒钟获取当前system_sever的进程号,first.sh脚本获取到当前system_sever的进程号为15789,出现android系统重启,将15789作为参数2,记录时间作为参数3,并停止monkey压力测试;其中,first.sh的脚本代码如下:
s4、获取monkey的运行日志monkey.txt,具体内容如下所示:
sleepingfor1000milliseconds
:switch:#intent;action=android.intent.action.main;category=android.intent.category.launcher;launchflags=ox10200000;component=cam.te//allowingstartofintent{act=android.intent.action.maincat=[android.intent.category.launcher)cmp=com.tencent.qqmusictv/.a
sleepingfor1000milliseconds
:sendingkey(action_down):23//keycode_dpad_center
:sendingkey(action_up):23//keycode_dpad_center
sleepingfor1000millieeconds
:sendingkey(acrion_down):23//keycode_dpad_center
:sendingkey(action_up):23//keycode_dpad_center
sleepingfor1000milliseconds
:sendingkey(action_down):19//keycode_dpad_up
:sendingkey(action_up):19//keycode_dpad_up
sleepingfor1ooomilliseconds
:sendingkey(action_down):22//keycode_dpad_right
:sendingkey(action_up):22//keycode_dpad_right
sleepingfor1000milliseconds
:sendingkey(action_down):20//keycode_dpad_dwn
:sendingkey(action_up):20//keycode_dpad_down
sleepingfor1000milliseconds
:sendingkey(action_down):22//keycode_opad_right
:sendingkey(action_up):22//keycode_dpad_right
sleepingfor1000milliseconds
:sendingkey(action_down):21//keycode_opad_left
:sendingkey(action_up):21//keycode_dpad_left
sleepingfor1000milliseconds
:sendingkey(action_down):20//keycode_dpad_down
:sendingkey(action_up):20//keycode_dpad_down
sleepingfor1000milliseconds
:sendingkey(action_down):82//keycode_menu
:sendingkey(action_up):82//keycode_menu
sleepingfor1000milliseconds
:sendingkey(action_down):82//keycode_menu
:sendingkey(action_up):82//keycode_menu
sleepingfor1000milliseconds
:sendingkey(action_down):21//keycode_dpad_left
:sendingkey(action_up):21//keycode_dpad_left
s5、根据参数3的时间,在monkey日志里,找到与该时间对应的位置,然后向上获取按键操作的键值和场景启动的进程生成测试用例并存储在operation-scene.txt文件中,内容如下所示:
从该测试用例可以看出,android系统如果先进入了qq音乐,进行一系列按键操作后,再进入dtv进入一系列按键操作后,整机出现了android重启;
s6、运行另一shell脚本second.sh从测试用例operation-scene.txt文件获取参数自动运行测试用例,复现该问题,发现进行这样的组合操作高概率出现android系统重启,其中,second.sh的脚本代码如下:
该实施例的上述步骤s6还可以是人工按照测试用例进行操作确认android系统是否重启。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。