CN104980552B - 实现Android移动终端自动化测试的方法及系统 - Google Patents

实现Android移动终端自动化测试的方法及系统 Download PDF

Info

Publication number
CN104980552B
CN104980552B CN201510340235.XA CN201510340235A CN104980552B CN 104980552 B CN104980552 B CN 104980552B CN 201510340235 A CN201510340235 A CN 201510340235A CN 104980552 B CN104980552 B CN 104980552B
Authority
CN
China
Prior art keywords
test
instruction
mobile terminal
test instruction
type
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
CN201510340235.XA
Other languages
English (en)
Other versions
CN104980552A (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.)
Dongying dongkai Airport Industrial Park Co., Ltd
Original Assignee
Huizhou TCL Mobile Communication 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 Huizhou TCL Mobile Communication Co Ltd filed Critical Huizhou TCL Mobile Communication Co Ltd
Priority to CN201510340235.XA priority Critical patent/CN104980552B/zh
Publication of CN104980552A publication Critical patent/CN104980552A/zh
Application granted granted Critical
Publication of CN104980552B publication Critical patent/CN104980552B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Telephone Function (AREA)

Abstract

本发明公开实现Android移动终端自动化测试的方法及系统,其中,方法包括:A、将移动终端与PC端通过数据线连接;B、将Android指令执行器上传到移动终端;C.PC端通过cmd命令向移动终端发送测试指令;D、Android指令执行器接收到测试指令后,执行相应的操作,并返回指令执行结果至PC端。本发明无需修改Android移动终端任何软件代码,测试脚本在移动终端外部(例如,PC)执行,从外部发送测试指令,实现自动化测试。能有效节省实施自动化测试的成本,提高自动化测试的效率。

Description

实现Android移动终端自动化测试的方法及系统
技术领域
本发明涉及通讯技术领域,尤其涉及一种实现Android移动终端自动化测试的方法及系统。
背景技术
随着Android移动终端(例如手机)功能越来越复杂,Android手机软件测试投入的人力越来越多,测试成本越来越高。传统的人工测试很难满足日益增长的Android手机软件测试需求。实施手机自动化测试成为一种趋势。
当前Android手机自动化测试框架大多搭建在手机内部,测试脚本也在手机内部执行。这样做有两个弊端:
1、需要修改手机软件代码或者额外安装APK。
2、无法实现测试脚本单步执行,增加了脚本写作成本。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种实现Android移动终端自动化测试的方法及系统,旨在解决现有的测试方法效率低、成本高、需在手机内部执行等问题。
本发明的技术方案如下:
一种实现Android移动终端自动化测试的方法,其中,包括步骤:
A、将移动终端与PC端通过数据线连接;
B、将Android指令执行器上传到移动终端;
C、PC端通过cmd命令向移动终端发送测试指令;
D、Android指令执行器接收到测试指令后,执行相应的操作,并返回指令执行结果至PC端。
所述的实现Android移动终端自动化测试的方法,其中,所述步骤D具体包括:
D1、判断测试指令是否合法,若合法则进入步骤D2;
D2、获取测试指令的参数;
D3、判断测试指令的参数是否合法,若合法则进入步骤D4;
D4、根据测试指令的参数执行相应的操作;
D5、返回指令执行结果。
所述的实现Android移动终端自动化测试的方法,其中,所述步骤D4具体包括:
D41、根据测试指令的参数判断测试指令类型;
D42、若测试指令类型为点击操作类型,则按点击操作类型进行处理;
D43、若测试指令类型为滑动操作类型,则按滑动操作类型进行处理。
所述的实现Android移动终端自动化测试的方法,其中,所述步骤D42具体包括:
若测试指令类型为单击操作类型,则获取单击的坐标;
若测试指令类型为双击操作类型,则获取双击的坐标;
若测试指令类型为长按操作类型,则获取长按的坐标;
根据坐标在移动终端界面上查找对应的对象;
然后执行相应的操作。
所述的实现Android移动终端自动化测试的方法,其中,所述步骤D43具体包括:
获取滑动前后的坐标,然后将移动终端界面按滑动前后的坐标进行滑动。
所述的实现Android移动终端自动化测试的方法,其中,判断滑动前后的界面是否有变化,若无变化,则退出操作。
一种实现Android移动终端自动化测试的系统,其中,包括:
连接模块,用于将移动终端与PC端通过数据线连接;
上传模块,用于将Android指令执行器上传到移动终端;
发送模块,用于PC端通过cmd命令向移动终端发送测试指令;
测试模块,用于Android指令执行器接收到测试指令后,执行相应的操作,并返回指令执行结果至PC端。
所述的实现Android移动终端自动化测试的系统,其中,测试模块具体包括:
第一判断单元,用于判断测试指令是否合法,若合法则进入步骤D2;
参数获取单元,用于获取测试指令的参数;
第二判断单元,用于判断测试指令的参数是否合法,若合法则进入步骤D4;
操作执行单元,用于根据测试指令的参数执行相应的操作;
结果返回单元,用于返回指令执行结果。
所述的实现Android移动终端自动化测试的系统,其中,操作执行单元具体包括:
类型判断子单元,用于根据测试指令的参数判断测试指令类型;
点击处理子单元,用于若测试指令类型为点击操作类型,则按点击操作类型进行处理;
滑动处理子单元,用于若测试指令类型为滑动操作类型,则按滑动操作类型进行处理。
所述的实现Android移动终端自动化测试的系统,其中,所述数据线为USB数据线。
有益效果:本发明无需修改Android移动终端任何软件代码,测试脚本在移动终端外部(例如,PC)执行,从外部发送测试指令,实现自动化测试。能有效节省实施自动化测试的成本,提高自动化测试的效率。
附图说明
图1为本发明一种实现Android移动终端自动化测试的方法较佳实施例的流程图。
图2为本发明一种实现Android移动终端自动化测试的系统较佳实施例的结构框图。
具体实施方式
本发明提供一种实现Android移动终端自动化测试的方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明一种实现Android移动终端自动化测试的方法较佳实施例的流程图,如图所示,其包括步骤:
S101、将移动终端与PC端通过数据线连接;
S102、将Android指令执行器上传到移动终端;
S103、PC端通过cmd命令向移动终端发送测试指令;
S104、Android指令执行器接收到测试指令后,执行相应的操作,并返回指令执行结果至PC端。
本发明实施例中,无需修改Android移动终端任何软件代码,只需将Android指令执行器上传到移动终端,然后在移动终端外部执行测试脚本即可,从而节省了自动化测试的成本,并且提高了测试效率。
具体来说,所述步骤S104具体包括:
S201、判断测试指令是否合法,若合法则进入步骤S202;
S202、获取测试指令的参数;
S203、判断测试指令的参数是否合法,若合法则进入步骤S204;
S204、根据测试指令的参数执行相应的操作;
S205、返回指令执行结果。
判断测试指令是否合法是指测试指令是否符合预先设定好的测试类型,如指令不合法,则无法进行测试,即无法响应该测试指令的操作。
判断测试指令的参数是否合法,是指测试指令的坐标、时间等等参数是否符合测试指令的要求,如不符合,则无法响应该测试指令的操作。
如检测均合法,则执行相应的操作,然后返回指令执行结果。如有检测不合法的情况,则返回错误提示给PC端,提示测试指令不合法。
进一步,所述步骤S204具体包括:
S301、根据测试指令的参数判断测试指令类型;
S302、若测试指令类型为点击操作类型,则按点击操作类型进行处理;
S303、若测试指令类型为滑动操作类型,则按滑动操作类型进行处理。
测试指令的参数可表示其类型,例如测试质量的类型可以是点击操作类型或者滑动操作类型,通过分析测试指令的类型,从而按照相应的处理方式进行处理。
代码如下:
public class Runner extends UiAutomatorTestCase {
public void testDemo() throws UiObjectNotFoundException,IOException {
String cmdType,GetIndex,GetOprType,GetXXX,GetXXX_Val;
String ParList[][];
int x,y,x_end,y_end;
ParList = new String[2][30];
Bundle allPar=getParams();
//获取指令值
cmdType = allPar.getString("type");
UiDevice device = getUiDevice();
ReadFile(ParList,cmdType);
//获取参数值
GetOprType = GetPar(ParList,"opr_type");
//进入“click”指令处理流程
if (cmdType.equals("click")) {
GetOprType = allPar.getString("opr_type");
x = Integer.parseInt(allPar.getString("x"));
y = Integer.parseInt(allPar.getString("y"));
if (GetOprType.equals("Short")) {
//单击屏幕
device.click(x, y);
} else if (GetOprType.equals("Double")){
//双击屏幕
device.click(x, y);
sleep(50);
device.click(x, y);
}else {
//长按屏幕
device.swipe(x, y, x, y, 60);
}
}
//进入“slide”指令处理流程
else if (cmdType.equals("slide")) {
int duration;
x = Integer.parseInt(allPar.getString("x"));
y = Integer.parseInt(allPar.getString("y"));
x_end = Integer.parseInt(allPar.getString("x_end"));
y_end = Integer.parseInt(allPar.getString("y_end"));
duration = Integer.parseInt(allPar.getString("duration"));
device.swipe(x, y, x_end, y_end, duration*2/100);
}
……
//进入非法指令处理流程
else {
System.out.println("FAILURES!!!cmd type not defind!!!:" +cmdType);
}
Return "PASS";
}
……
}
进一步,所述步骤S302具体包括:
若测试指令类型为单击操作类型,则获取单击的坐标;
若测试指令类型为双击操作类型,则获取双击的坐标;
若测试指令类型为长按操作类型,则获取长按的坐标;
根据坐标在移动终端界面上查找对应的对象;
然后执行相应的操作。
对于点击操作,获取点击的坐标,然后根据坐标在移动终端界面上查找对应的对象,若查找到对应的对象,例如某个图标,则对该图标执行相应的操作,若未找到对应的对象,例如为某个界面空白处,那么操作结果就是没有内容。代码如下:
private String clickbyxxx(String ParList[][]) {
String GetIndex,GetOprType,GetXXX,GetXXX_Val,Get_destX,Get_destY;
GetXXX = GetPar(ParList,"xxx");
GetXXX_Val = GetPar(ParList,"xxx_Val");
Get_destX = GetPar(ParList,"dest_x");
Get_destY = GetPar(ParList,"dest_y");
GetIndex = GetPar(ParList,"obj_index");
GetOprType = GetPar(ParList,"opr_type");
UiCollection ColUiObj = null;
//根据参数值,找到对应的对象
if (GetXXX.equals("id")) {
ColUiObj = new UiCollection(new UiSelector().resourceIdMatches(GetXXX_Val));
} else if (GetXXX.equals("text")) {
ColUiObj = new UiCollection(new UiSelector().textMatches(GetXXX_Val));
}
……
else {
return ("FAILURES!!! GETXXX:" + GetXXX_Val +" notdefind!!!");
}
UiObj = new UiObject(ColUiObj.getSelector().instance(Integer.parseInt(GetIndex)));
if (GetOprType.equals("Short")) {
UiObj.click();
}
else if (GetOprType.equals("Double")){
UiObj.click();
sleep(50);
UiObj.click();
} else {
UiObj.dragTo(UiObj.getBounds().centerX(),UiObj.getBounds().centerY(), 30);
}
}
return "PASS";
}
进一步,所述步骤S303具体包括:
获取滑动前后的坐标,然后将移动终端界面按滑动前后的坐标进行滑动。
进一步,判断滑动前后的界面是否有变化,若无变化,则退出操作。
比如对于某个页面,测试指令为滑动操作,那么获取滑动前后的坐标,并且进行滑动,然后对比滑动前后的界面是否有变化,若没有变化,那么说明已经滑动到底,所以退出操作。并且在滑动后还延时0.2秒,避免界面不稳定导致备份失败。代码如下:
else if (cmdType.equals("click_by_xxx_in_list"){
String times = GetPar(ParList,"slide_times");
//滑屏次数
int slide_times;
if (times.length() > 0) {
slide_times = Integer.parseInt(times);
}else {
slide_times = 100;
}
String ExeResult;
int i = 0;
while (true) {
//在当前界面查找对象并点击
ExeResult = clickbyxxx(ParList);
if (ExeResult.equals("PASS")){
break;
}
i = i + 1;
//循环次数超过最大限制,则退出循环
if (i > slide_times) {
break;
}
//读取并保存dumpWindowHierarchy 信息
device.dumpWindowHierarchy("mydump_save1.xml");
boolean isSame;
//下滑
device.swipe(device.getDisplayWidth() / 2, (device.getDisplayHeight() * 2) / 3, device.getDisplayWidth() / 2,(device.getDisplayHeight() * 1) / 3, 30);
//滑动之后延时0.2秒,避免界面不稳定导致dump失败
sleep(200);
device.dumpWindowHierarchy("mydump_save2.xml");
//对比滑动之后界面信息是否有变化,如果没有变化,则说明已经到底,退出循环
isSame = CompareFile(".../mydump_save1.xml", ".../mydump_save2.xml");
if (isSame) break;
}
基于上述方法,本发明还提供一种实现Android移动终端自动化测试的系统较佳实施例,如图2所示,其包括:
连接模块100,用于将移动终端与PC端通过数据线连接;
上传模块200,用于将Android指令执行器上传到移动终端;
发送模块300,用于PC端通过cmd命令向移动终端发送测试指令;
测试模块400,用于Android指令执行器接收到测试指令后,执行相应的操作,并返回指令执行结果至PC端。
进一步,测试模块400具体包括:
第一判断单元,用于判断测试指令是否合法,若合法则进入步骤D2;
参数获取单元,用于获取测试指令的参数;
第二判断单元,用于判断测试指令的参数是否合法,若合法则进入步骤D4;
操作执行单元,用于根据测试指令的参数执行相应的操作;
结果返回单元,用于返回指令执行结果。
进一步,操作执行单元具体包括:
类型判断子单元,用于根据测试指令的参数判断测试指令类型;
点击处理子单元,用于若测试指令类型为点击操作类型,则按点击操作类型进行处理;
滑动处理子单元,用于若测试指令类型为滑动操作类型,则按滑动操作类型进行处理。
进一步,所述数据线为USB数据线。
关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
综上所述,本发明无需修改Android移动终端任何软件代码,测试脚本在移动终端外部(例如,PC)执行,从外部发送测试指令,实现自动化测试。能有效节省实施自动化测试的成本,提高自动化测试的效率。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (8)

1.一种实现Android移动终端自动化测试的方法,其特征在于,包括步骤:
A、将移动终端与PC端通过数据线连接;
B、将Android指令执行器上传到移动终端,在移动终端外部执行测试脚本;
C、PC端通过cmd命令向移动终端发送测试指令;
D、Android指令执行器接收到测试指令后,执行相应的操作,并返回指令执行结果至PC端;
所述步骤D具体包括:
D1、判断测试指令是否合法,若合法则进入步骤D2;
D2、获取测试指令的参数;
D3、判断测试指令的参数是否合法,若合法则进入步骤D4;
D4、根据测试指令的参数执行相应的操作;
D5、返回指令执行结果;
其中,判断测试指令是否合法,具体为判断测试指令是否符合预先设定好的测试类型;
判断测试指令的参数是否合法,具体为判断测试指令的参数是否符合测试指令的要求。
2.根据权利要求1所述的实现Android移动终端自动化测试的方法,其特征在于,所述步骤D4具体包括:
D41、根据测试指令的参数判断测试指令类型;
D42、若测试指令类型为点击操作类型,则按点击操作类型进行处理;
D43、若测试指令类型为滑动操作类型,则按滑动操作类型进行处理。
3.根据权利要求2所述的实现Android移动终端自动化测试的方法,其特征在于,所述步骤D42具体包括:
若测试指令类型为单击操作类型,则获取单击的坐标;
若测试指令类型为双击操作类型,则获取双击的坐标;
若测试指令类型为长按操作类型,则获取长按的坐标;
根据坐标在移动终端界面上查找对应的对象;
然后执行相应的操作。
4.根据权利要求2所述的实现Android移动终端自动化测试的方法,其特征在于,所述步骤D43具体包括:
获取滑动前后的坐标,然后将移动终端界面按滑动前后的坐标进行滑动。
5.根据权利要求4所述的实现Android移动终端自动化测试的方法,其特征在于,判断滑动前后的界面是否有变化,若无变化,则退出操作。
6.一种实现Android移动终端自动化测试的系统,其特征在于,包括:
连接模块,用于将移动终端与PC端通过数据线连接;
上传模块,用于将Android指令执行器上传到移动终端,在移动终端外部执行测试脚本;
发送模块,用于PC端通过cmd命令向移动终端发送测试指令;
测试模块,用于Android指令执行器接收到测试指令后,执行相应的操作,并返回指令执行结果至PC端;
测试模块具体包括:
第一判断单元,用于判断测试指令是否合法,若合法则参数获取单元开启;
参数获取单元,用于获取测试指令的参数;
第二判断单元,用于判断测试指令的参数是否合法,若合法则操作执行单元开启;
操作执行单元,用于根据测试指令的参数执行相应的操作;
结果返回单元,用于返回指令执行结果;
其中,判断测试指令是否合法,具体为判断测试指令是否符合预先设定好的测试类型;
判断测试指令的参数是否合法,具体为判断测试指令的参数是否符合测试指令的要求。
7.根据权利要求6所述的实现Android移动终端自动化测试的系统,其特征在于,操作执行单元具体包括:
类型判断子单元,用于根据测试指令的参数判断测试指令类型;
点击处理子单元,用于若测试指令类型为点击操作类型,则按点击操作类型进行处理;
滑动处理子单元,用于若测试指令类型为滑动操作类型,则按滑动操作类型进行处理。
8.根据权利要求6所述的实现Android移动终端自动化测试的系统,其特征在于,所述数据线为USB数据线。
CN201510340235.XA 2015-06-18 2015-06-18 实现Android移动终端自动化测试的方法及系统 Active CN104980552B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510340235.XA CN104980552B (zh) 2015-06-18 2015-06-18 实现Android移动终端自动化测试的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510340235.XA CN104980552B (zh) 2015-06-18 2015-06-18 实现Android移动终端自动化测试的方法及系统

Publications (2)

Publication Number Publication Date
CN104980552A CN104980552A (zh) 2015-10-14
CN104980552B true CN104980552B (zh) 2019-01-04

Family

ID=54276640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510340235.XA Active CN104980552B (zh) 2015-06-18 2015-06-18 实现Android移动终端自动化测试的方法及系统

Country Status (1)

Country Link
CN (1) CN104980552B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105528049B (zh) * 2015-12-08 2018-10-26 Tcl移动通信科技(宁波)有限公司 Sd卡cmd引脚驱动电流的配置方法和终端
CN106021101B (zh) * 2016-05-16 2019-05-28 北京奇虎科技有限公司 对移动终端进行测试的方法及装置
CN106021102B (zh) * 2016-05-16 2019-05-28 北京奇虎科技有限公司 自动化测试文件的生成方法及装置
CN107665187A (zh) * 2016-07-28 2018-02-06 百度在线网络技术(北京)有限公司 一种判断移动设备应用界面是否发生变化的方法和装置
CN108628736B (zh) * 2017-03-23 2021-09-03 北京小唱科技有限公司 一种安卓设备的测试方法和装置
CN110602295A (zh) * 2018-05-24 2019-12-20 广东技术师范学院 一种手机软件测试方法
CN110377476B (zh) * 2019-07-05 2023-07-28 无锡睿勤科技有限公司 终端测试方法、终端及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120322387A1 (en) * 2011-06-16 2012-12-20 The Board Of Trustees Of The Leland Stanford Junior University System for analyzing mobile browser energy consumption
CN102999418A (zh) * 2012-11-16 2013-03-27 广东欧珀移动通信有限公司 一种基于pc端的手机监测方法
CN103744787A (zh) * 2014-01-21 2014-04-23 上海斐讯数据通信技术有限公司 一种手机自动化测试方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744763A (zh) * 2013-12-25 2014-04-23 广东明创软件科技有限公司 自动化测试中pc端同步控制移动终端的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120322387A1 (en) * 2011-06-16 2012-12-20 The Board Of Trustees Of The Leland Stanford Junior University System for analyzing mobile browser energy consumption
CN102999418A (zh) * 2012-11-16 2013-03-27 广东欧珀移动通信有限公司 一种基于pc端的手机监测方法
CN103744787A (zh) * 2014-01-21 2014-04-23 上海斐讯数据通信技术有限公司 一种手机自动化测试方法

Also Published As

Publication number Publication date
CN104980552A (zh) 2015-10-14

Similar Documents

Publication Publication Date Title
CN104980552B (zh) 实现Android移动终端自动化测试的方法及系统
US9161238B2 (en) Mobile device monitoring and testing
CN104598380A (zh) 一种基于控件的自动化测试方法及系统
CN110765013B (zh) 一种流程自动化执行方法及系统
CN103744787A (zh) 一种手机自动化测试方法
CN104375914A (zh) 一种服务器内部压力变化自动测试方法
CN103744784A (zh) 手机应用自动化测试方法及系统
CN103718159B (zh) 图像处理软件开发方法、图像处理软件开发装置
CN108111364B (zh) 一种业务系统的测试方法及装置
CN108234246B (zh) 一种多向测试服务器网络性能的方法及系统
CN112068852B (zh) 基于国产服务器的开源软件安装方法、系统及设备和介质
CN106598859A (zh) Appium多线程实现系统及方法
CN109344058B (zh) 一种小程序自动化测试方法
CN102819500B (zh) 一种创建外部设备控制界面的方法及装置
CN105204986A (zh) 产品的自动化测试方法、服务器及移动设备
CN106126279A (zh) 自动添加bim模型族文件信息的方法及系统
CN113792341A (zh) 应用程序的隐私合规自动化检测方法、装置、设备及介质
CN111475412B (zh) 软件测试方法、装置、电子设备和计算机可读存储介质
CN106844182A (zh) 用于记录用户行为的方法、系统及移动终端
CN106528429A (zh) 一种ui界面测试方法及装置
US8413117B1 (en) Systems and methods for focusing product testing based on areas of change within the product between product builds
CN104166545A (zh) 一种网页资源的嗅探方法以及装置
CN104699607A (zh) 一种移动终端自动化测试方法及系统
CN107979690A (zh) 一种移动终端及其跳过开机向导的方法和系统
CN111010308A (zh) 一种kvm服务测试方法与装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211112

Address after: No. 338, block B, No. 59, Fuqian street, Dongying District, Dongying City, Shandong Province, 257100

Patentee after: Dongying dongkai Airport Industrial Park Co., Ltd

Address before: 516006 No. 86, Hechang seventh Road West, Zhongkai high tech Zone, Huizhou City, Guangdong Province

Patentee before: Huizhou TCL mobile communication Co., Ltd