本发明涉及电视的码流测试技术领域,特别涉及一种对电视进行码流适应性自动化测试的方法、系统、计算机设备及存储介质。
背景技术:
新品电视在研发过程中都需要对电视进行码流(ts)适用性测试。该测试是一项繁琐的工作,ts的全称则是transportstream。mpeg-ts主要应用于实时传送的节目,比如实时广播的电视节目。测试时,会验证大量的码流,一条码流包含多个电视节目(多的可达30多个节目)。测试需要验证电视对码流信息解析的正确性,主要包括节目名,节目号,节目时间,节目预告,级别信息(programrating),audiolanguage等信息。
现进行码流适应性测试是人工检测,人工检测时如果对每个节目信息都进行验证的话,那是一个巨大的工作量。如一条码流平均有10个节目,1个节目有10个信息需要验证,那么100条码流就需要验证10000个测试点。因此,人工测试存在耗时且繁琐的问题。
技术实现要素:
本发明的目的是克服上述背景技术中不足,提供一种对电视进行码流适应性自动化测试的方法、系统、计算机设备及存储介质,从播放切换码流到检测都实现了自动化测试,可以替换人工检测,极大的缩短测试周期并提升测试准确率。
为了达到上述的技术效果,本发明采取以下技术方案:
对电视进行码流适应性自动化测试的方法,包括以下步骤:
s1.记录码流播放器各个控件的坐标;通过记录播放器各个控件的坐标可实现对播放器的精准控制;
s2.在python中导入pyautogui模块;pyautogui模块可实现通过屏幕xy坐标系统确定目标位置,控制鼠标和键盘发送虚拟击键和鼠标点击,完成点击按钮、填写表单等操作,即使用pyautogui模块可以控制鼠标和键盘,从而实现鼠标和键盘对码流播放器的自动控制,
s3.按码流播放器的操作流程编写测试脚本,同时读取需要测试的码流的电子表格,将要播放的码流逐一赋值到码流播放器中;对于要测试的码流会预先汇总编辑到一个电子表格中,可通过python读取码流的播放清单将要播放的码流逐一赋值到码流播放器中;其中,将需要播放的码流汇总在电子表格中,可更加便于维护及修改;
s4.与电视建立通信连接;
s5.启动自动化测试过程,导入api;
s6.控制电视实现自动搜台,并确定该码流有多少个节目;
s7.使用对应的活动对象来调用相应的测试菜单,通过id来定位元素,并将元素中的词条信息抓取出来保存到电子表格中;
s8.完成一个节目信息抓取及保存后则切换到下一个节目,直至所有节目信息完成抓取及保存;将抓取的信息按格式保存到电子表格中,即结束一个节目测试,再切换到下一个节目继续抓取并保存,根据搜台确定的节目数来决定循环切几次节目;
s9.判断当前的码流是否为最后一个,若是则测试完成,否则,继续对下一个码流进行测试;
s10.输出测试结果并进行结果的比对。
进一步地,所述步骤s4中与电视建立通信连接通过usb连接或网络连接实现。
进一步地,所述步骤s4中还包括使用函数monkeyrunner.waitforconnection()判断是否连接成功。
进一步地,所述步骤s6中是通过monkeyrunner控制电视实现自动搜台,monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,monkeyrunner工具提供了一个api,使用此api写出的程序可以在android代码之外控制android设备,通过monkeyrunner,可以写出一个python程序通过调用活动对象(activity)来调出用户界面或其他使用的菜单和窗口,其中,通过monkeyrunner提供的com.android.monkeyrunner模块,可以对电视进行menu,enter,上下左右,back,exit等操作,进而实现了对电视的自动控制,另通过调用活动对象来打开电视的测试菜单,并通过id来定位测试元素,将抓取到的元素按照固定格式输出到电子表中。
进一步地,所述步骤s7中具体是:所述id是通过对应应用源码的android资源文件(即res-->layout下的xml文件)来获取。
进一步地,所述步骤s10中具体是利用基于c语言编写的一个文件比对的程序实现结果的比对。
同时,本发明还公开了对电视进行码流适应性自动化测试的系统,包括:
码流播放器自动控制模块,用于实现对码流播放器的自动控制;
码流读取模块,用于实现对码流列表的读取及码流列表的修改与维护;
电视节目信息自动化测试模块,用于实现对电视的自动化控制及节目信息的读取;
结果对比模块,用于输出结果并进行结果比对;
所述电视节目信息自动化测试模块分别与码流播放器自动控制模块、码流读取模块、结果对比模块连接。
进一步地,所述码流播放器自动控制模块是使用python的pyautogui模块实现对码流播放器的自动控制。
同时,本发明还公开了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的对电视进行码流适应性自动化测试的方法的步骤。
同时,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的对电视进行码流适应性自动化测试的方法的步骤。
本发明与现有技术相比,具有以下的有益效果:
本发明的对电视进行码流适应性自动化测试的方法、系统、计算机设备及存储介质,具有以下的有益效果:
实现了码流播放及切换的自动化。一般播放码流都是使用码流调制卡进行播放,该调制卡一般是插在台式电脑的pci或pci-e接口也或是usb接口,再使用对应的码流播放软件进行播放。通过本发明的技术方案能让电脑按照定义的表格进行按次序播放及切换。
实现了结果的自动输出。本发明的方案中测试设备通过usb或网络连接电视,基于monkeyrunner,通过脚本控制电视进行自动搜台,再调用活动对象(如电视显示的节目信息即是一个活动对象),并抓取活动对象上的元素(如节目信息中的节目名即是一个元素),最后再将抓取的信息按定义的格式输出到一个电子表格上,实现结果的自动输出。
输出结果的自动判断。本发明的方案中输出的电子表格会和标准的列表进行自动比对,并判断结果。
附图说明
图1是本发明的对电视进行码流适应性自动化测试的方法的流程示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
实施例一:
如图1所示,一种对电视进行码流适应性自动化测试的方法,包括以下步骤:
步骤1.记录码流播放器各个控件的坐标。通过记录播放器各个控件的坐标可实现对播放器的精准控制;
步骤2.在python中导入pyautogui模块。
pyautogui是用python写的一个模块,使用它可以控制鼠标和键盘。从而实现鼠标和键盘对码流播放器的自动控制,及码流的自动播放及切换。pyautogui模块可实现通过屏幕xy坐标系统确定目标位置,控制鼠标和键盘发送虚拟击键和鼠标点击,完成点击按钮、填写表单等操作,因此,使用pyautogui模块可以控制鼠标和键盘,从而实现鼠标和键盘对码流播放器的自动控制。
具体的,本实施例中,python中导入pyautogui模块时其导入实现语法如下:
importpyautogui
步骤3.按码流播放器的操作流程编写测试脚本,同时读取需要测试的码流的电子表格,将要播放的码流逐一赋值到码流播放器中。
为了便于维护及修改,对于要测试的码流会预先汇总编辑到一个电子表格中,可通过python读取码流的播放清单将要播放的码流逐一赋值到码流播放器中。
具体的,本实施例中,python中实现读取电子表格中的测试码流时实现代码如下:
bok=xlrd.open_workbook('d:\\test\\tslist.xlsx')
sheet=bok.sheet_by_name('sheet1')
row1=sheet.row_values(0)
cell_d4=sheet.cell(0,0).value
cell_d4即为码流名称及地址
步骤4.与电视建立通信连接。
具体可通过usb连接或网络连接实现。同时,使用函数monkeyrunner.waitforconnection()判断网络是否连接成功,若返回true则连接成功,继续下一步,若返回false,则连接失败,需手动重新连接网络。
步骤5.启动自动化测试过程,导入api。
本实施例中,完成了待测试的活动对象的准备之后即启动自动化测试过程导入api,其中,导入api的实现语法如下:
fromcom.android.monkeyrunnerimportmonkeyrunner
fromcom.android.monkeyrunnerimportmonkeydevice
fromcom.android.monkeyrunnerimportmonkeyimage。
步骤6.通过monkeyrunner控制电视实现自动搜台,并确定该码流有多少个节目。
步骤7.使用对应的活动对象来调用相应的测试菜单,通过id来定位元素,并将元素中的词条信息抓取出来保存到电子表格中。
其中,所述id是通过对应应用源码的android资源文件(即res-->layout下的xml文件)来获取。
本实施例中,monkeyrunner通过活动对象调出测试菜单的实现代码如下:
viewer=device.gethierarchyviewer()
device.startactivity(component="com.mediatek.wwtv.tvcenter/com.mediatek.wwtv.tvcenter.nav.turnkeyuimainactivity")
通过id实现抓取元素的实现代码如下:
button=viewer.findviewbyid('id/banner_simple_channel_name')
#program_name
text=viewer.gettext(button)
步骤8.完成一个节目信息抓取及保存后则切换到下一个节目,直至所有节目信息完成抓取及保存;将抓取的信息按格式保存到电子表格中,即结束一个节目测试,再切换到下一个节目继续抓取并保存,根据搜台确定的节目数来决定循环切几次节目;
步骤9.判断当前的码流是否为最后一个,若是则测试完成,否则,继续对下一个码流进行测试。
步骤10.输出测试结果并进行结果的比对,具体是利用基于c语言编写的一个文件比对的程序实现结果的比对。
实施例二
一种对电视进行码流适应性自动化测试的系统,包括:用于实现对码流播放器的自动控制的码流播放器自动控制模块;用于实现对码流列表的读取及码流列表的修改与维护的码流读取模块;用于实现对电视的自动化控制及节目信息的读取的电视节目信息自动化测试模块;用于输出结果并进行结果比对的结果对比模块;其中,所述电视节目信息自动化测试模块分别与码流播放器自动控制模块、码流读取模块、结果对比模块连接。
本实施例的对电视进行码流适应性自动化测试的系统的工作原理即实施例一的对电视进行码流适应性自动化测试的方法的操作步骤,此处不再赘述。
实施例三
本实施例中公开了一种计算机设备,该计算机设备可以是服务器,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储对电视进行码流适应性自动化测试的方法中涉及到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种对电视进行码流适应性自动化测试的方法。
在另一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例一中对电视进行码流适应性自动化测试的方法的步骤,或者,处理器执行计算机程序时实现上述实施例二的对电视进行码流适应性自动化测试的系统的各模块的功能。为避免重复,这里不再赘述。
在另一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例一中对电视进行码流适应性自动化测试的方法的步骤,或者,处理器执行计算机程序时实现上述实施例二的对电视进行码流适应性自动化测试的系统的各模块的功能。为避免重复,这里不再赘述。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。