CN109089108B - 测试方法及系统 - Google Patents

测试方法及系统 Download PDF

Info

Publication number
CN109089108B
CN109089108B CN201810931295.2A CN201810931295A CN109089108B CN 109089108 B CN109089108 B CN 109089108B CN 201810931295 A CN201810931295 A CN 201810931295A CN 109089108 B CN109089108 B CN 109089108B
Authority
CN
China
Prior art keywords
tested
target object
mode
partition
kernel
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.)
Active
Application number
CN201810931295.2A
Other languages
English (en)
Other versions
CN109089108A (zh
Inventor
徐李超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amlogic Shanghai Co Ltd
Original Assignee
Amlogic Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amlogic Shanghai Co Ltd filed Critical Amlogic Shanghai Co Ltd
Priority to CN201810931295.2A priority Critical patent/CN109089108B/zh
Publication of CN109089108A publication Critical patent/CN109089108A/zh
Application granted granted Critical
Publication of CN109089108B publication Critical patent/CN109089108B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N17/00Diagnosis, testing or measuring for television systems or their details
    • H04N17/004Diagnosis, testing or measuring for television systems or their details for digital television systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了测试方法及系统,涉及智能电视技术领域。测试方法为在内核启动阶段前识别待测试目标对象当前的工作模式;在待测试目标对象完成引导程序加载阶段后,当识别的工作模式为工厂模式时,加载工厂系统内核,通过内核子分区中存储的文件屏蔽孵化池的启动,完成待测试目标对象的工厂系统启动,对待测试目标对象进行测试。本发明能够在待测试目标对象完成内核启动阶段前识别的工作模式为工厂模式时,加载工厂系统内核完成待测试目标的启动,从而缩短了启动时间,提高了生产及测试的效率;当待测试目标对象当前工作模式为工厂模式时,对待测试目标对象进行测试,实现了在测试的过程中对处于工厂模式的待测试目标对象进行测试,提高了测试效率。

Description

测试方法及系统
技术领域
本发明涉及智能电视技术领域,尤其涉及一种用于测试Android(安卓)智能电视的测试方法及系统。
背景技术
目前,传统的OEM(Original Equipment Manufacturer,原始设备制造商)厂商在Android智能电视生产过程中,大都是让Android系统启动进入Luncher(桌面启动器)后,使用工厂遥控器快捷键的方式分别进入各信号源(如:ATV/DTV(Digital Television,数字电视)/HDMI/AV等)测试通道播放功能,或者进入工厂菜单检测WIFI/BT等功能。然而,由于一般Android系统电视从POWER ON(上电)到遥控器可以操作通常需要20-30秒,开机速度较慢,这对于工厂生产来说,等待开机时间较长,降低了规律生产及测试的效率。
发明内容
针对现有的Android智能电视在测试阶段开机速度慢的问题,现提供一种旨在可提高测试阶段开机速度的测试方法及系统。
一种测试方法,用于对待测试目标对象进行测试,所述待测试目标对象包括引导程序加载层、Linux内核层、系统运行库与本地服务层和应用层,其中所述待测试目标对象的Linux内核层、系统运行库与本地服务层和应用层存储在数据分区,
所述数据分区包括:内核子分区,所述内核子分区用以存储屏蔽孵化池启动的文件;
所述待测试目标对象的工作模式包括工厂模式、用户模式和过渡模式;
所述测试方法包括下述步骤:
在内核启动阶段前识别所述待测试目标对象当前的工作模式;
在所述待测试目标对象完成引导程序加载阶段后,当识别的工作模式为工厂模式时,加载工厂系统内核,通过所述内核子分区中存储的文件屏蔽孵化池的启动,完成所述待测试目标对象的工厂系统启动;
当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后对所述待测试目标对象进行测试。
优选的,所述数据分区还包括:系统子分区、用户数据子分区和子数据子分区;
所述系统子分区用以存储库文件,和/或本地服务文件,和/或shell脚本文件;
所述用户数据子分区用以存储工厂模式系统用户数据文件;
所述子数据子分区用以存储用户模式系统用户数据文件。
优选的,还包括:
在内核启动阶段中,当识别所述待测试目标对象当前的工作模式为过渡模式时,对所述数据分区的子数据分区进行回收,并且对所述数据分区进行格式化,在完成对所述数据分区进行检测后并进行挂载,将所述当前工作模式转换为所述用户模式。
优选的,当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后对所述待测试目标对象进行测试,包括:
当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后通过与所述待测试目标对象的所述系统运行库与本地服务层建立通讯,从而对所述待测试目标对象进行测试。
优选的,还包括:
完成所述待测试目标对象的所有测试后,将所述目标对象的当前工作模式转换为所述过渡模式后关机。
本发明还提供了一种测试系统,用于对待测试目标对象进行测试,所述待测试目标对象包括引导程序加载层、Linux内核层、系统运行库与本地服务层和应用层,其中所述待测试目标对象的Linux内核层、系统运行库与本地服务层和应用层存储在数据分区,
所述数据分区包括:内核子分区,所述内核子分区用以存储屏蔽孵化池启动的文件;
所述待测试目标对象的工作模式包括工厂模式、用户模式和过渡模式;
所述测试系统包括:
识别单元,用于在内核启动阶段前识别所述待测试目标对象当前的工作模式;
屏蔽单元,用于在所述待测试目标对象完成引导程序加载阶段后,当识别的工作模式为工厂模式时,加载工厂系统内核,通过所述内核子分区中存储的文件屏蔽孵化池的启动,完成所述待测试目标对象的工厂系统启动;
测试单元,当所述待测试目标对象当前的工作模式为工厂模式时,用于在内核启动阶段后对所述待测试目标对象进行测试。
优选的,所述数据分区还包括:系统子分区、用户数据子分区和子数据子分区;
所述系统子分区用以存储库文件,和/或本地服务文件,和/或shell脚本文件;
所述用户数据子分区用以存储工厂模式系统用户数据文件;
所述子数据子分区用以存储用户模式系统用户数据文件。
优选的,还包括:
转换单元,在内核启动阶段中,当识别所述待测试目标对象当前的工作模式为过渡模式时,所述转换单元用于对所述数据分区的子数据分区进行回收,并且对所述数据分区进行格式化,在完成对所述数据分区进行检测后并进行挂载,将所述当前工作模式转换为所述用户模式。
优选的,当所述待测试目标对象当前的工作模式为工厂模式时,所述测试单元用于在内核启动阶段后通过与所述待测试目标对象的所述系统运行库与本地服务层建立通讯,从而对所述待测试目标对象进行测试。
优选的,当完成所述待测试目标对象的所有测试后,所述测试单元还用于将所述目标对象的当前工作模式转换为所述过渡模式后关机。
上述技术方案的有益效果:
本技术方案中,当待测试目标对象完成内核启动阶段前(即引导加载程序阶段),识别的工作模式为工厂模式时,加载工厂系统内核,然后可通过内核子分区中存储的文件屏蔽孵化池的启动,完成待测试目标的启动,从而缩短了启动时间,提高了生产及测试的效率;在内核启动阶段后识别待测试目标对象当前的工作模式,当待测试目标对象当前的工作模式为工厂(Factory)模式时,对待测试目标对象进行测试,实现了在测试的过程中对处于工厂模式的待测试目标对象进行测试,提高了测试效率。
附图说明
图1为本发明所述的测试方法的方法流程图;
图2为现有用户模式下Android系统的分区示意图;
图3位本发明所述的待测试目标对象开机后的工作模式状态原理图;
图4为本发明的工厂模式下Android系统的分区示意图;
图5为工厂模式和用户模式下待测试目标对象的启动逻辑示意图;
图6为由过渡模式将工厂模式切换到用户模式的原理图;
图7为本发明中shell脚本的调用原理图;
图8为本发明中测试化工具调用原理图;
图9为本发明中采用测试方法测试切换DTV信号源的流程图;
图10为本发明中采用测试方法测试播放DTV节目的流程图;
图11为本发明中采用测试方法测试切换HDMI1信号源的流程图;
图12为本发明所述的测试系统的模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
考虑到电视品牌商在新款电视未发布之前,是不希望电视的设计(包括炫目的UI(User Interface,用户界面)以及新颖的功能)被提前曝光,可是目前生产线的测试普遍是基于用户模式下进行测试的,在测试时由应用层开始测试,测试时间长。
针对上述问题本发明对待测试目标对象的工作模式进行了区分,在工厂模式进行测试,以缩短对待测试目标对象的测试时间。
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
如图1所示,本发明提供了一种测试方法,用于对待测试目标对象进行测试,所述待测试目标对象包括底层的引导程序加载层、Linux内核层、中间层的系统运行库与本地服务层和顶层的应用层,其中所述待测试目标对象的Linux内核层、系统运行库与本地服务层和应用层主要存储在数据分区,
所述数据分区包括:内核子分区(fac_kernel),所述内核子分区用以存储屏蔽孵化池启动的文件;
所述待测试目标对象的工作模式包括工厂模式、用户模式和过渡模式;
所述测试方法包括下述步骤:
S1.在内核启动阶段前识别所述待测试目标对象当前的工作模式;
在本实施例中,在一分区(如:统一密钥(unifykey)分区)设置一个标识(flag),每次开机uboot都会识别该flag,当flag=2时,表示开机后需要进入工厂模式;当flag=7时,表示开机后需要进入过渡模式;当flag=1时,表示开机后需要进入用户模式,参见图3。
需要说明的是,unifykey分区是一个升级不会被擦除的分区。
S2.在所述待测试目标对象完成引导程序加载阶段后,当识别的工作模式为工厂模式时,加载工厂系统内核,通过所述内核子分区中存储的文件屏蔽孵化池的启动,完成所述待测试目标对象的工厂系统启动;
现有的待测试目标对象在用户模式下时,Android系统的分区包括:bootloader(启动加载)分区、mbr(主引导记录)分区、boot(操作系统的内核及在引导过程中使用的文件)分区、system(系统)分区、cache(缓存)分区、logo(标志)分区、recovery(复位)分区、data(数据)分区等,参考图2所示。
在本实施例中,当待测试目标对象处于工厂模式下,额外增加了内核子分区。内核子分区可直接在初始化文件(init.rc)中停止孵化池(zygote)的启动,当待测试目标对象启动完毕后,会展示一个工厂模式的显示状态(on-screen display,简称OSD)以表示工厂模式开机完成。
S3.当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后对所述待测试目标对象进行测试。
进一步地,在执行步骤S3之前,还可在内核启动阶段后识别所述待测试目标对象当前的工作模式,当待测试目标对象当前的工作模式为工厂模式时,执行步骤S3。
需要说明的是,本发明中的待测试目标对象可以是电视板卡或智能电视整机。
在实际测试过程中,当待测试目标对象完成内核启动阶段前,识别的工作模式为工厂模式时,加载工厂系统内核,然后可通过内核子分区中存储的文件屏蔽孵化池的启动,完成待测试目标对象的工厂系统启动,从而缩短了启动时间,提高了生产及测试的效率;在内核启动阶段后识别待测试目标对象当前的工作模式,当待测试目标对象当前的工作模式为工厂模式时,对待测试目标对象进行测试,实现了在测试的过程中对处于工厂模式的待测试目标对象进行测试,提高了测试效率和准确率,同时防止新产品提前曝光。
在优选的实施例中,所述数据分区还包括:系统子分区(fac_sys)、用户数据子分区(fac_sys)和子数据子分区(data1);
所述系统子分区用以存储库文件,和/或本地服务文件,和/或shell脚本文件;
所述用户数据子分区用以存储工厂模式系统用户数据文件;
所述子数据子分区用以存储用户模式系统用户数据文件。
需要说明的是:本实施例在Factory模式下除了基于用户模式系统增加fac_kernel子分区之外,还新增两个分区分别为:fac_sys子分区和fac_userdata子分区,并且增加的三个子分区是从用户模式的data分区中分出来的,data1分区是剩余的data分区参考图4-图5。
当待测试目标对象处于工厂模式下时,bootloader启动完毕后,便开始加载fac_kernel分区中的内核并启动,在内核启动末尾,kernel init进程会根据Android fstab(文件系统挂载表)file将fac_sys分区、fac_userdata分区分别挂载在文件/system、/data的目录下,完成工厂系统启动(bootup finish)接下来其他启动过程与用户模式下Android启动相同。工厂模式和用户模式下系统启动可参考图4-图5。
在工厂模式下,fac_kernel子分区、fac_sys子分区、fac_userdata子分区会寄生在data分区末尾,具体地,这三个分区以及新的子数据子分区对应的系统文件如下:
fac_kernel子分区对应的第四代扩展(Fourth extended filesystem,简称EXT4)文件系统命名为fac_kernel.img,用户模式下boot分区对应的EXT4文件系统命令为boot.img,为了保证工厂模式下测试功能的有效性,需要保持工厂模式与用户模式底层功能是一致的,所以fac_kernel.img格式基本继承了boot.img格式,最大的区别就是:工厂模式下的fac_kernel.img屏蔽掉了Android的相应启动;
fac_sys子分区对应的EXT4文件系统命名为fac_sys.img,用户模式下system分区对应的EXT4文件系统命名为system.img,fac_sys.img与system.img相比删除与Android有关的Java归档文件包(Java Archive,简称jar)和安卓安装包(AndroidPackage,简称apk)等,从而节省了分区占用的空间;同时还增加了库文件或者Service,还有shell脚本文件等等,这些文件都可支持工厂模式的功能,从而保证工厂测试工具(TOOL)正常工作的基础;
fac_userdata子分区对应的EXT4文件系统命名为fac_userdata.img,用户模式下data分区对应的EXT4文件系统命名为userdata.img,两个文件系统除了大小不一致外,其他均一致;
在工厂模式下,原有data分区被fac_kernel子分区、fac_sys子分区、fac_userdata子分区分离出一部分,因此data1分区(余下的data分区)文件系统根据新的data分区大小重新制作为userdata1.img。
由于文件系统在制作时需要指定各自将要挂载分区的SIZE作为参数,因此,以上各个文件系统对应分区SIZE满足如下关系:
data分区SIZE=fac_kernel子分区SIZE+fac_sys子分区SIZE+fac_userdata子分区SIZE+data1子分区SIZE。
在优选的实施例中,还包括:
在内核启动阶段中,当识别所述待测试目标对象当前的工作模式为过渡模式时,对所述数据分区的子数据分区进行回收,并且对所述数据分区进行格式化,在完成对所述数据分区进行检测后并进行挂载,将所述当前工作模式转换为所述用户模式。
在本实施例中,当flag=7时,表示开机后需要进入过渡模式,在过渡模式中,需在内核启动过程中将数据分区中的fac_kernel子分区、fac_sys子分区、fac_userdata子分区进行格式,并设置flag=1,然后在内核启动过程中更新(update)用户模式的分区表(partition),在init.rc挂载usedata文件系统前,先对/dev/block/userdata进行调整(resize),将之数据分区中分出去的子分区进行回收,然后会对新的文件系统进行e2fsck(用于检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误)进行检查,判断是否成功(success)通过检测,若成功则挂载(mount)到data目录,将工厂模式切换到用户模式重新启动,若失败(fail),则开机失败。关于过渡模式将工厂模式切换到用户模式的原理过程可参见图6。
考虑到现有的在用户模式下进行工厂测试时,测试效率低、耗时长。从遥控器发射(remote key)-->内核事件(kernel event)-->框架运行(framework)解析健值,广播(broadcast)事件-->apk响应事件-->系统运行库与本地服务层(native)处理事件-->内核处理,一次完整的功能完成对于工厂来说链路太长,耗费时间,工厂侧重于硬件功能检测,因此在下述实施例中,通过直接调用待测试目标对象的系统运行库与本地服务层(即:系统运行库与本地服务层处理事件-->内核处理),以缩短测试时间。
在优选的实施例中,当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后对所述待测试目标对象进行测试,包括:
当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后通过与所述待测试目标对象的所述系统运行库与本地服务层建立通讯,从而对所述待测试目标对象进行测试。
进一步地,通过调用中间层shell脚本文件对所述待测试目标对象进行测试。
目前电视(television,简称TV)系统中的电视服务器(tvserver)提供了基本的电视应用程序编程接口(TVAPI)功能,对于待测试目标对象进行时,基于目前的客户端/服务器(Client/Server,简称C/S)模型建立一个工厂客户端(fac_client),fac_client可以解析shell脚本中传递的参数,然后通过binder(是安卓开发中的一个接口,该接口是能进行远程操作对象的一个基本接口)通讯调用tvserver中相应的函数,实现shell脚本对于TVAPI的间接调用。shell脚本和fac_client之间可以用先进先出队列(First Input FirstOutput,简称FIFO)进行通讯。shell脚本文件与fac_client,以及fac_client与tvservice之间的通讯,可参见图7。
其中,shell脚本文件是一个shell脚本集合,包括了所有与硬件有关的各项功能。在fac_client中包括一对输入(fifo_in)文件和输出(fifo_out)文件,在shell脚本文件中,通过fifo_in文件进行写参数操作,通过fifo_out文件进行读返回值操作。
为了提高生产效率,需要利用测试化的TOOL进行各项功能的测试。测试化TOOL是电脑端(PC)上可以操作的带有图像化界面的工具。键盘(Keypad)、耳机(Earphone)、光盘(Optical)、以太网(Ethernet)与TV板卡连接。测试化TOOL再通过ADB(Android DebugBridge,安卓的调试桥)工具与TV板卡建立联系,从而实现电脑端和待测试目标对象进行数据交互。对于板卡厂而言,测试化TOOL可以是自动化的,测试之前接上所有的输入端信号,测试完HDMI1(High Definition Multimedia Interface,中文为:高清晰度多媒体接口),接着自动切换信号源测试HDMI2接口、HDMI3接口、AV接口、ATV接口、DTV接口、Lineout接口等。对于OEM厂商而言,测试化TOOL可以是半自动化的工具,产线是流水性作业,每一个节点(station)可以设定测试一个固定的功能,比如:station1可以设置软件固定测试HDMI1接口的功能;station2可以设置测试ATV接口的功能;station3可以测试DTV接口的功能。测试化TOOL调用原理参见图8所示。
图9为在实际应用中,采用本发明的测试方法测试切换DTV信号源的流程图,具体过程如下:
升级工厂版本软件;开机进入工厂模式界面;通过ADB将TOOL连接到PC端和TVBOARD(电视板卡);插上RF(射频)信号线;设置自动化PC端TOOL为DTV测试界面;将信号源切换到DTV;PC端TOOL调用设置信号源的shell脚本,并且将“DTV”作为参数传递下去;解析出需要切换的信号源,并将其转换成对应的CMD(命令提示符),写入fifo_in文件;fac_client中等待到fifo_in文件中的数据,对其进行读(READ)操作和解析(PARSE)操作;然后通过binder通讯的接口将切换DTV SOURCE(信号源)的CMD传递给tvserver;tvserver调用设置信号源的接口,完成SOURCE的切换,并且初始化各硬件设备;fac_client获取设置信号源的返回值,并将结果写入(WRITE)到fifo_out文件中;shell脚本读到fifo_out文件中的数据,并且将返回值发送给PC端TOOL。
图10为在实际应用中,采用本发明的测试方法测试播放DTV节目的流程图,具体过程如下:
等待获DTV信号源切换成功的标志;PC端TOOL调用设置频道播放的shell脚本,并且将“1”作为参数传递下去;解析出tv.db文件中频道列表(channel list),并且提取第一个频道的freq(频率)、vpid(视频数字电视编码)、apid(音频编码)信息,并作为参数写入fifo_in文件中;fac_client中等fifo_in文件中的数据,对其进行读操作和解析操作;然后通过binder通讯将DTV播放(PLAY)的CMD传递给tvserver;tvserver接收到DTV PLAY的CMD,调用相关播放接口,开始播放DTV节目的界面(interface);fac_client获取设置信号源的返回值,并将结果写入到fifo_out文件中;shell脚本读到fifo_out文件中的数据,并且将返回值发送给PC端TOOL。
图11为在实际应用中,采用本发明的测试方法测试切换HDMI1信号源的流程图,具体过程如下:
升级工厂版本软件;开机进入工厂模式界面;通过ADB将TOOL连接到PC端和电视板卡;插上射频信号线;设置自动化PC端TOOL为HDMI1测试界面;将信号源切换到HDMI1;PC端TOOL调用设置信号源的shell脚本,并且将“HDMI1”作为参数传递下去;解析出需要切换的信号源,并将其转换成对应的CMD,写入fifo_in文件;fac_client中等待到fifo_in文件中的数据,对其进行读操作和解析操作;然后通过binder通讯的接口将切换HDMI1SOURCE的CMD传递给tvserver;tvserver调用设置信号源的接口,完成SOURCE的切换,并且初始化各硬件设备;fac_client获取设置信号源的返回值,并将结果写入到fifo_out文件中;shell脚本读到fifo_out文件中的数据,并且将返回值发送给PC端TOOL。
在优选的实施例中,还包括:
完成所述待测试目标对象的所有测试后,将所述目标对象的当前工作模式转换为所述过渡模式后关机。
在本实施例中,在工厂模式下各个功能测试完毕,表示待测试目标对象的测试结束,测试成功的目标对象就会进入出厂流程。
需要说明的是:当待测试目标对象完成测试后,令unifykey分区中的flag=7,以将目标对象的当前工作模式转换为所述过渡模式,而后,关闭或重新启动待测试目标对象。
如图12所示,本发明还提供了一种测试系统,用于对待测试目标对象进行测试,所述待测试目标对象包括引导程序加载层、Linux内核层、系统运行库与本地服务层和应用层,其中所述待测试目标对象的Linux内核层、系统运行库与本地服务层和应用层主要存储在数据分区;
所述数据分区包括:内核子分区,所述内核子分区用以存储屏蔽孵化池启动的文件;
所述待测试目标对象的工作模式包括工厂模式、用户模式和过渡模式;
所述测试系统可包括屏蔽单元1、识别单元2和测试单元4,其中:
识别单元2,用于在内核启动阶段前识别所述待测试目标对象当前的工作模式;
屏蔽单元1,连接所述识别单元2,用于在所述待测试目标对象完成引导程序加载阶段后,当识别的工作模式为工厂模式时,加载工厂系统内核,通过所述内核子分区中存储的文件屏蔽孵化池的启动,完成所述待测试目标对象的工厂系统启动;
测试单元4,连接所述识别单元2,当所述待测试目标对象当前的工作模式为工厂模式时,用于在内核启动阶段后对所述待测试目标对象进行测试。
在实际测试过程中,当待测试目标对象完成内核启动阶段前,识别的工作模式为工厂模式时,加载工厂系统内核,然后可通过内核子分区中存储的文件屏蔽孵化池的启动,完成待测试目标对象的启动,从而缩短了启动时间,提高了生产及测试的效率;在内核启动阶段识别待测试目标对象当前的工作模式,当待测试目标对象当前的工作模式为工厂模式时,对待测试目标对象进行测试,实现了在测试的过程中对处于工厂模式的待测试目标对象进行测试,提高了测试效率和准确率,同时防止新产品提前曝光。
进一步地,所述识别单元2还用于可在内核启动阶段后识别所述待测试目标对象当前的工作模式。
识别单元2可在内核启动前、中、后阶段识别所述待测试目标对象当前的工作模式。
在优选的实施例中,所述数据分区还包括:内核子分区、用户数据子分区和子数据子分区;
所述内核子分区用以存储库文件,和/或本地服务文件,和/或shell脚本文件;
所述用户数据子分区用以存储工厂模式系统用户数据文件;
所述子数据子分区用以存储用户模式系统用户数据文件。
需要说明的是:本实施例在Factory模式下基于用户模式系统除了增加fac_kernel子分区之外,还新增三个分区分别为:fac_sys子分区、fac_userdata子分区和子数据子分区,并且增加的三个子分区是从用户模式的data分区中分出来的,参考图4-图5。
当待测试目标对象处于工厂模式下时,bootloader分区启动完毕后,便开始加载fac_kernel分区中的内核并启动,在内核启动末尾,kernel init进程会根据Androidfstab(文件系统挂载表)file将fac_sys分区、fac_userdata分区分别挂载在文件/system、/data的目录下,接下来其他启动过程与用户模式下Android启动相同。工厂模式和用户模式下系统启动可参考图4。
在工厂模式下,fac_kernel子分区、fac_sys子分区、fac_userdata子分区会寄生在data分区末尾,具体地,这三个分区以及新的子数据子分区对应的系统文件如下:
fac_kernel子分区对应的第四代扩展(Fourth extended filesystem,简称EXT4)文件系统命名为fac_kernel.img,用户模式下boot分区对应的EXT4文件系统命令为boot.img,为了保证工厂模式下测试功能的有效性,需要保持工厂模式与用户模式底层功能是一致的,所以fac_kernel.img格式基本继承了boot.img格式,最大的区别就是:工厂模式下的fac_kernel.img屏蔽掉了Android的相应启动;
fac_sys子分区对应的EXT4文件系统命名为fac_sys.img,用户模式下system分区对应的EXT4文件系统命名为system.img,fac_sys.img与system.img相比删除与Android有关的Java归档文件包(Java Archive,简称jar)和安卓安装包(AndroidPackage,简称apk)等,从而节省了分区占用的空间;同时还增加了库文件或者Service,还有shell脚本文件等等,这些文件都可支持工厂模式的功能,从而保证工厂测试工具(TOOL)正常工作的基础;
fac_userdata子分区对应的EXT4文件系统命名为fac_userdata.img,用户模式下data分区对应的EXT4文件系统命名为userdata.img,两个文件系统除了大小不一致外,其他均一致;
在工厂模式下,原有data分区被fac_kernel子分区、fac_sys子分区、fac_userdata子分区分离出一部分,因此data1分区(余下的data分区)文件系统根据新的data分区大小重新制作为userdata1.img。
在优选的实施例中,还包括:
转换单元3,连接识别单元2,在内核启动阶段中,当识别所述待测试目标对象当前的工作模式为过渡模式时,所述转换单元3用于对所述数据分区的子数据分区进行回收,并且对所述数据分区进行格式化,在完成对所述数据分区进行检测后并进行挂载,将所述当前工作模式转换为所述用户模式。
在本实施例中,当flag=7时,表示开机后需要进入过渡模式,在过渡模式中,需在内核启动过程中将数据分区中的fac_kernel子分区、fac_sys子分区、fac_userdata子分区进行格式,然后在内核启动过程中更新(update)用户模式的分区表,在init.rc挂载usedata文件系统前,先对/dev/block/userdata进行调整(resize),将之数据分区中分出去的子分区进行回收,然后会对新的文件系统进行e2fsck(用于检查第二扩展文件系统的完整性,通过适当的选项可以尝试修复出现的错误)进行检查,最后挂载(mount)到data目录。关于过渡模式将工厂模式切换到用户模式的原理过程可参见图6。
在优选的实施例中,所述待测试目标对象当前的工作模式为工厂模式时,所述测试单元4用于在内核启动阶段后通过与所述待测试目标对象的所述系统运行库与本地服务层建立通讯,从而对述待测试目标进行测试。
进一步地,通过shell脚本文件调用所述待测试目标对象的所述系统运行库与本地服务层进行测试。
在优选的实施例中,当完成所述待测试目标对象的所有测试后,所述测试单元4还用于将所述目标对象的当前工作模式转换为所述过渡模式后关机。
在本实施例中,在工厂模式下各个功能测试完毕,表示待测试目标对象的测试结束,测试成功的目标对象就会进入出厂流程。
需要说明的是:当待测试目标对象完成测试后,令unifykey分区中的flag=7,以将目标对象的当前工作模式转换为所述过渡模式,而后,关闭或重新启动待测试目标对象。
本发明的优点有:可大幅提高工厂模式开机速度,开机时间可达到6-10秒;能够有效保护新产品的UI不被产线提前曝光;减少单个功能测试的时间,单个功能测试至少节省了几百毫秒,有效提高功能测试的效率;同时方便流水线作业的需求,满足自动化测试的需求,提升测试的效率。
以上所述仅为本发明较佳的实施例,并非因此限制本发明的实施方式及保护范围,对于本领域技术人员而言,应当能够意识到凡运用本发明说明书及图示内容所作出的等同替换和显而易见的变化所得到的方案,均应当包含在本发明的保护范围内。

Claims (8)

1.一种测试方法,用于对待测试目标对象进行测试,所述待测试目标对象包括引导程序加载层、Linux内核层、系统运行库与本地服务层和应用层,其中所述待测试目标对象的Linux内核层、系统运行库与本地服务层和应用层存储在数据分区,其特征在于,
所述数据分区包括:内核子分区,所述内核子分区用以存储屏蔽孵化池启动的文件;
所述待测试目标对象的工作模式包括工厂模式、用户模式和过渡模式;
所述测试方法包括下述步骤:
在内核启动阶段前识别所述待测试目标对象当前的工作模式;
在所述待测试目标对象完成引导程序加载阶段后,当识别的工作模式为工厂模式时,加载工厂系统内核,通过所述内核子分区中存储的文件屏蔽孵化池的启动,完成所述待测试目标对象的工厂系统启动;
当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后对所述待测试目标对象进行测试;
所述数据分区为所述待测试目标对象处于所述用户模式下的数据分区;
当所述待测试目标对象处于所述工厂模式时,从所述用户模式下的数据分区中分离出一部分作为所述内核子分区;
在内核启动阶段中,当识别所述待测试目标对象当前的工作模式为过渡模式时,对所述数据分区的子数据分区进行回收,并且对所述数据分区进行格式化,在完成对所述数据分区进行检测后进行挂载,将所述当前工作模式转换为所述用户模式。
2.根据权利要求1所述的测试方法,其特征在于,所述数据分区还包括:系统子分区、用户数据子分区和子数据子分区;
所述系统子分区用以存储库文件,和/或本地服务文件,和/或shell脚本文件;
所述用户数据子分区用以存储工厂模式系统用户数据文件;
所述子数据子分区用以存储用户模式系统用户数据文件。
3.根据权利要求1所述的测试方法,其特征在于,当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后对所述待测试目标对象进行测试,包括:
当所述待测试目标对象当前的工作模式为工厂模式时,在内核启动阶段后通过所述待测试目标对象的所述系统运行库与本地服务层建立通讯,从而对所述待测试目标对象进行测试。
4.根据权利要求1或3所述的测试方法,其特征在于,还包括:
完成所述待测试目标对象的所有测试后,将所述待测试目标对象的当前工作模式转换为所述过渡模式后关机。
5.一种测试系统,用于对待测试目标对象进行测试,所述待测试目标对象包括引导程序加载层、Linux内核层、系统运行库与本地服务层和应用层,其中所述待测试目标对象的Linux内核层、系统运行库与本地服务层和应用层存储在数据分区,其特征在于,
所述数据分区包括:内核子分区,所述内核子分区用以存储屏蔽孵化池启动的文件;
所述待测试目标对象的工作模式包括工厂模式、用户模式和过渡模式;
所述测试系统包括:
识别单元,用于在内核启动阶段前识别所述待测试目标对象当前的工作模式;
屏蔽单元,用于在所述待测试目标对象完成引导程序加载阶段后,当识别的工作模式为工厂模式时,加载工厂系统内核,通过所述内核子分区中存储的文件屏蔽孵化池的启动,完成所述待测试目标对象的工厂系统启动;
测试单元,当所述待测试目标对象当前的工作模式为工厂模式时,用于在内核启动阶段后对所述待测试目标对象进行测试;
所述数据分区为所述待测试目标对象处于所述用户模式下的数据分区;
当所述待测试目标对象处于所述工厂模式时,从所述用户模式下的数据分区中分离出一部分作为所述内核子分区;
转换单元,在内核启动阶段中,当识别所述待测试目标对象当前的工作模式为过渡模式时,所述转换单元用于对所述数据分区的子数据分区进行回收,并且对所述数据分区进行格式化,在完成对所述数据分区进行检测后进行挂载,将所述当前工作模式转换为所述用户模式。
6.根据权利要求5所述的测试系统,其特征在于,所述数据分区还包括:系统子分区、用户数据子分区和子数据子分区;
所述系统子分区用以存储库文件,和/或本地服务文件,和/或shell脚本文件;
所述用户数据子分区用以存储工厂模式系统用户数据文件;
所述子数据子分区用以存储用户模式系统用户数据文件。
7.根据权利要求5所述的测试系统,其特征在于,当所述待测试目标对象当前的工作模式为工厂模式时,所述测试单元用于在内核启动阶段后通过所述待测试目标对象的所述系统运行库与本地服务层建立通讯,从而对所述待测试目标对象进行测试。
8.根据权利要求5或7所述的测试系统,其特征在于,当完成所述待测试目标对象的所有测试后,所述测试单元还用于将所述待测试目标对象的当前工作模式转换为所述过渡模式后关机。
CN201810931295.2A 2018-08-15 2018-08-15 测试方法及系统 Active CN109089108B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810931295.2A CN109089108B (zh) 2018-08-15 2018-08-15 测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810931295.2A CN109089108B (zh) 2018-08-15 2018-08-15 测试方法及系统

Publications (2)

Publication Number Publication Date
CN109089108A CN109089108A (zh) 2018-12-25
CN109089108B true CN109089108B (zh) 2021-03-09

Family

ID=64793402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810931295.2A Active CN109089108B (zh) 2018-08-15 2018-08-15 测试方法及系统

Country Status (1)

Country Link
CN (1) CN109089108B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933471A (zh) * 2019-03-05 2019-06-25 歌尔科技有限公司 Android设备及其产测方法、装置、计算机可读存储介质
CN110244157B (zh) * 2019-05-29 2021-07-09 东明兴业科技股份有限公司 一种小家电流水线工厂模式自动检测方法和系统
CN110208632A (zh) * 2019-07-09 2019-09-06 深圳创维数字技术有限公司 一种用于电磁兼容性测试的方法、系统及存储介质
CN111176665B (zh) * 2019-12-26 2024-02-09 晶晨半导体(深圳)有限公司 大容量emmc镜像制作方法和装置
CN114157593A (zh) * 2021-10-18 2022-03-08 深圳市亿联无限科技有限公司 一种路由器工厂模式的实现及切换方法
CN114385428A (zh) * 2022-01-12 2022-04-22 博为科技有限公司 一种终端设备的测试方法及相关设备
CN116028100B (zh) * 2022-07-29 2024-04-05 荣耀终端有限公司 软件版本升级方法和电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577210B (zh) * 2012-08-06 2017-11-28 广州三星通信技术研究有限公司 移动终端之间挂载的系统和方法
CN103024547A (zh) * 2012-12-28 2013-04-03 北京赛科世纪数码科技有限公司 一种启动控制方法、启动控制装置及数字电视机顶盒
CN103593289A (zh) * 2013-11-12 2014-02-19 浪潮齐鲁软件产业有限公司 一种安卓机顶盒生产测试软件的设计方法
CN104102506B (zh) * 2014-04-25 2017-05-31 华南理工大学 一种基于ARM平台的Android启动加速方法
CN106648773A (zh) * 2016-12-16 2017-05-10 四川长虹电器股份有限公司 一种基于Android系统实现快速开机的方法
CN107368343B (zh) * 2017-08-21 2021-03-26 创维集团智能科技有限公司 一种基于安卓系统的终端开机方法、终端及存储介质

Also Published As

Publication number Publication date
CN109089108A (zh) 2018-12-25

Similar Documents

Publication Publication Date Title
CN109089108B (zh) 测试方法及系统
US8719810B2 (en) Program upgrade system and method for over the air-capable mobile terminal
US10871973B2 (en) Application activation method and apparatus
EP3971707A1 (en) Screen sharing processing method, apparatus and device, and storage medium
CN102890638B (zh) 一种机顶盒升级方法
US20100186007A1 (en) Image display apparatus and method for controlling the same
CN106502717B (zh) 应用程序运行方法及装置
KR101298364B1 (ko) 무선 디바이스에 대한 팩토리 프로그램 시간을 감소시키는 시스템 및 방법
CN104918114A (zh) 一种操作系统升级方法及装置
CN113821221B (zh) 安装操作系统的方法、设备及存储介质
US20050160255A1 (en) Information processing device and program
CN106484719B (zh) 一种扩展手机存储的方法及终端
CN111694585A (zh) 替换系统分区文件的方法、系统、终端和存储介质
CN111708548A (zh) 软件安装方法、装置、设备及存储介质
US20110252414A1 (en) System using separate modules to update software and the method thereof
CN110610080B (zh) 应用的隔离实现方法、移动终端、计算机设备和存储介质
CN116719670B (zh) 数据处理的方法、电子设备及可读存储介质
CN111782236A (zh) 系统软件升级方法、装置、存储介质及一体机设备
CN109634782A (zh) 一种系统健壮性的检测方法、装置、存储介质及终端
CN102200912B (zh) 一种提高用户操作易用性的方法及系统
CN112596751B (zh) 应用程序安装包的编译方法、终端、服务器及存储介质
US8762699B1 (en) System, apparatus, and method for initiating a reboot of a personal computer system by pressing a button on an attached storage device and causing the operating system on the attached storage device to be booted
CN113656063A (zh) 一种系统版本更换方法、装置、设备及计算机可读介质
CN115562697B (zh) 升级方法、设备及存储介质
CN112269601A (zh) 一种bmc及其部件资产信息管理方法、装置和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant