精华内容
下载资源
问答
  • 手机系统测试工程师的主要职责 手机系统测试工程师需要负责移动端产品性能测试,能够采取有效保障手段,开展性能测试、故障演练、可靠性测试等。下面是小编为您精心整理的手机系统测试工程师的主要职责。 手机系统...
  • Android手机系统测试之打断事件测试,很不错
  • 手机系统测试方法

    2020-08-20 00:03:04
    手机软件主要测试方法 1.功能测试(如重点模块:设置、相机、电话、短信) 2.性能测试(APP响应时间/加载速度【东舟】,APP安装时长,首次加载时长, game fps,power,thermal,网络:上传下载速率,吞吐量。 动画...

    转载: https://wenku.baidu.com/view/a26c6f014693daef5ff73dbd.html
    手机软件主要测试方法
    1.功能测试(如重点模块:设置、相机、电话、短信)
    2.性能测试(APP响应时间/加载速度【东舟】,APP安装时长,首次加载时长,
    game fps,power,thermal,网络:上传下载速率,吞吐量。

    动画帧率,cpu,内存,电量,流量,系统流畅度。)
    https://blog.csdn.net/ygz111111/article/details/79627464?utm_source=blogxgwz1

    3.压力测试(长时间测试,反复重复动作测试【如热插拔】,monkey等自动化测试)
    4.兼容性测试(3方app兼容性测试,分辨率适配等等)
    5.文档测试等等(客户需求测试)

    手机软件测试方法   
    系统测试方法分为:  功能测试,一致性测试,性能测试,压力测试,容量测试,安全性测试,恢复性测试,备份测试,GUI测试,健壮性测试,兼容性测试,可用性测试,可安装性测试,文档测试,在线帮助测试以及数据转换测试等。

    从手机软件系统测试的角度分为:  功能模块测试,交叉事件测试,压力测试,容量性能测试,性能测试和用户手册测试等。

    由于笔者执行手机软件测试的工作中,短消息和电话测试的较多,下面就以短消息为例来阐述,手机软件测试的一般方法和测试的要求,来供大家参考。

    一、短消息[SMS]的基本功能测试     
    1、短消息的基本功能:是指短消息的编辑,删除,保存,收发,显示,以及各种按钮等功能的正常实现。   
    2、测试要求和执行:一般根据测试案例或软件本身的流程就可以完成短消息的基本功能测试。         
    二、短消息的交叉事件测试   
    1、交叉测试:又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。例如通话过程中接收到短信或来响闹。应该以执行干扰的冲突事件不会导致手机死机或花屏等严重的问题出现为Pass的标准。

    2、测试要求和执行:干扰要恰到好处,准确,否则很难发掘出深层次的软件缺陷。

    三、短消息的压力性能测试   
    1、压力测试:又叫边界值容错测试或极限负载测试,即测试过程中,已经达到某一软件功能的最大容量,边界值或最大的承载极限,仍然对其进行相关操作。例如连续进行短信的接收和发送,超过收件箱和PIM卡所能存储的最大的条数,仍然进行短消息的接收或发送,以检测软件在超常态条件下的表现,来评估用户能否接受。  
    2、测试要求和执行:可以考虑进行自动化测试

    四、短消息的容量性能测试    
    1、容量测试:又叫满记忆体测试,包括手机的用户可用内存和SIM/PIM卡的所有空间被完全使用的测试。此时再对可编辑的模块进行和存储空间有关的任何操作测试,如果软件的极限容量状态下处理不好,有可能导致死机或严重的花屏等问题的出现。     2、测试要求和执行:可以考虑进行自动充满记忆体测试,要对不同品牌和不同容量大小的SIM/PIM卡进行测试

    五、短消息的兼容性能测试     兼容性测试:也就是不同品牌手机,不同网络,不同品牌和不同容量大小的SIM/PIM卡之间的互相兼容的测试,以短消息为例:中国电信的小灵通接收到从中国移动或中国联通GSM发来的短消息,接收,显示和回复
    Teambition——安卓测试,让测试管理更高效
    广告 Teambition将「测试计划」纳入敏捷开发流程中,安卓测试, 查看详情 >

    功能是否正常等;

    展开全文
  • 【Uiautomator】手机系统测试----图库

    千次阅读 2016-04-14 17:48:51
    build.gradle 设置如下 添加库 defaultConfig { ... testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } dependencies { compile fileTree(dir: 'libs', include: ['*.ja

    build.gradle 设置如下


    添加库

    defaultConfig {
        ...
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.2.1'
        androidTestCompile 'com.android.support:support-annotations:23.2.1'
        androidTestCompile 'com.android.support.test:runner:0.4.1'
        // UiAutomator Testing
        androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
    ...
    }



    GalleryViewTestCase.java
    import android.content.Context;
    import android.content.Intent;
    import android.content.pm.PackageManager;
    import android.content.pm.ResolveInfo;
    import android.os.Build;
    import android.support.test.InstrumentationRegistry;
    import android.support.test.uiautomator.By;
    import android.support.test.uiautomator.UiDevice;
    import android.support.test.uiautomator.UiObject;
    import android.support.test.uiautomator.UiObjectNotFoundException;
    import android.support.test.uiautomator.UiSelector;
    import android.support.test.uiautomator.Until;
    
    import com.fxly.uiautomatordemo.Strings.CommonStrings;
    
    import org.junit.Before;
    import org.junit.Test;
    
    import static org.hamcrest.CoreMatchers.notNullValue;
    import static org.junit.Assert.assertThat;
    
    /**
     * Created by Lambert Liu on 2016-04-05.
     */
    public class GalleryViewTestCase {
    
    
    
        private static final String BASIC_SAMPLE_PACKAGE
                = "com.android.gallery3d";
    
        private static final int LAUNCH_TIMEOUT = 5000;
    
        private static final String STRING_TO_BE_TYPED = "UiAutomator";
    
        private UiDevice mDevice;
    
    
        @Before
        public void startMainActivityFromHomeScreen() {
            // Initialize UiDevice instance
            mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
    
            // Start from the home screen
            mDevice.pressHome();
    
            // Wait for launcher
            final String launcherPackage = getLauncherPackageName();
            assertThat(launcherPackage, notNullValue());
            mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), LAUNCH_TIMEOUT);
    
            // Launch the blueprint app
            Context context = InstrumentationRegistry.getContext();
            final Intent intent = context.getPackageManager()
                    .getLaunchIntentForPackage(CommonStrings.GALLERY);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);    // Clear out any previous instances
            context.startActivity(intent);
    
            // Wait for the app to appear
            mDevice.wait(Until.hasObject(By.pkg(CommonStrings.GALLERY).depth(0)), LAUNCH_TIMEOUT);
        }
    
    
        @Test
        public void Is_No_picture() throws UiObjectNotFoundException {
            UiObject nopicture=new UiObject(new UiSelector().className("android.widget.Button").text("Camera"));
            if(nopicture.exists()){
                nopicture.clickAndWaitForNewWindow();
                Sleep(4);
                UiObject shutter_picture=new UiObject(new UiSelector().descriptionStartsWith("Shutter"));
                shutter_picture.click();
                Sleep(5);
    
            }else {
    
            }
            mDevice.pressBack();
    
        }
    
        @Test
        public void Albums_types_test() throws UiObjectNotFoundException {
    //        android:id/action_bar_spinner
            String trooper650_4G_albums_stype[]={"Albums","Locations","Times","People","Tags"};
    
            if(Build.MODEL.equals("KAZAM Trooper 650 4G")){
                UiObject albums_type=new UiObject(new UiSelector().resourceId("android:id/action_bar_spinner"));
                for (int aa=0;aa<trooper650_4G_albums_stype.length;aa++){
                    albums_type.click();
                    Sleep(2);
    
                    UiObject type=new UiObject(new UiSelector().resourceId("android:id/text1").text(trooper650_4G_albums_stype[aa]));
                    type.click();
                    Sleep(5);
    
                }
            }
            else {
    
            }
    
    
    
    
        }
    
        @Test
        public  void albums_del_test() throws UiObjectNotFoundException {
            if(Build.MODEL.equals("KAZAM Trooper 650 4G")){
                UiObject more_menu=new UiObject(new UiSelector().descriptionContains("More options"));
                if (more_menu.exists()){ more_menu.click();Sleep(4);}
                else {mDevice.pressMenu();Sleep(2);}
    
                UiObject selectalbum=new UiObject(new UiSelector().text("Select album"));
                if(selectalbum.exists()){
                    selectalbum.click();
                    Sleep(3);
    //                UiObject selected=new UiObject(new UiSelector().className("android.widget.FrameLayout").childSelector(new UiSelector().className("android.widget.ImageView")));
                    UiObject selected=new UiObject(new UiSelector().className("android.widget.Button"));
                    selected.click();
                    Sleep(3);
    
                    UiObject selected_all =new UiObject(new UiSelector().text("Select all"));
                    selected_all.click();
    
                    UiObject button_del=new UiObject(new UiSelector().resourceId("com.android.gallery3d:id/action_delete"));
    
                    button_del.click();
                    Sleep(3);
    
                    UiObject is_del=new UiObject(new UiSelector().text("Delete selected item?"));
                    if(is_del.exists()){
                        UiObject ok_button=new UiObject(new UiSelector().className("android.widget.Button").text("OK"));
                        ok_button.click();
                        Sleep(5);
                    }else {
                        System.out.println("");
                    }
    
    
    
    
    
                }else {
                    System.out.println("");
                }
    
    
            }
        }
    
        @Test
        public void takepicture() throws UiObjectNotFoundException {
            if(Build.MODEL.equals("KAZAM Trooper 650 4G")){
                UiObject enter_camera=new UiObject(new UiSelector().descriptionStartsWith("Switch to camera"));
                enter_camera.click();
                Sleep(2);
                UiObject shutter_picture=new UiObject(new UiSelector().descriptionStartsWith("Shutter"));
                shutter_picture.click();
                Sleep(2);
    
                UiObject switch_camera=new UiObject(new UiSelector().resourceId("com.android.camera2:id/front_back_switcher"));
                switch_camera.click();
                Sleep(2);
                shutter_picture.click();
                Sleep(2);
                switch_camera.click();
                Sleep(2);
                shutter_picture.click();
                Sleep(2);
            }
            else {
    
            }
            mDevice.pressBack();
            Sleep(2);
            mDevice.pressBack();
            Sleep(2);
            mDevice.pressHome();
        }
    
    
        @Test
        public void albums_refresh() throws UiObjectNotFoundException {
            if(Build.MODEL.equals("KAZAM Trooper 650 4G")){
                UiObject more_menu=new UiObject(new UiSelector().descriptionContains("More options"));
                if (more_menu.exists()){ more_menu.click();Sleep(4);}
                else {mDevice.pressMenu();Sleep(2);}
    
                UiObject refresh_albums=new UiObject(new UiSelector().text("Refresh"));
                refresh_albums.click();
                Sleep(2);
            }
    
        }
    
    
        @Test
        public void albums_picture() throws UiObjectNotFoundException {
    
    //        String albums_rotate[]={"Delete","Slideshow","Rotate left","Rotate right","Details","Set picture as"};
            String albums_rotate[]={"Rotate left","Rotate right"};
            String picture_edit[]={"Edit","Crop"};
    
            if(Build.MODEL.equals("KAZAM Trooper 650 4G")){
                UiObject enteralbum=new UiObject(new UiSelector().resourceId("com.android.gallery3d:id/gl_root_view"));
                int x= enteralbum.getVisibleBounds().centerX();
                int y= enteralbum.getVisibleBounds().centerY();
                mDevice.click(x,y);
                Sleep(2);
    
                mDevice.click(x,y-20);
                Sleep(2);
    
                for (int e=0;e<albums_rotate.length;e++){
                    UiObject more_menu=new UiObject(new UiSelector().descriptionContains("More options"));
                    if (more_menu.exists()){ more_menu.click();Sleep(4);}
                    else {mDevice.pressMenu();Sleep(2);}
    
                    UiObject menu_list=new UiObject(new UiSelector().text(albums_rotate[e]));
                    menu_list.clickAndWaitForNewWindow();
                    Sleep(2);
    
    
                }
                //Edit
                for (int e=0;e<picture_edit.length;e++){
                    UiObject more_menu=new UiObject(new UiSelector().descriptionContains("More options"));
                    if (more_menu.exists()){ more_menu.click();Sleep(4);}
                    else {mDevice.pressMenu();Sleep(2);}
    
                    UiObject menu_list=new UiObject(new UiSelector().text(picture_edit[e]));
                    menu_list.clickAndWaitForNewWindow();
                    Sleep(2);
                    mDevice.pressBack();
                    Sleep(2);
    
    
                }
                //Del
                UiObject more_menu=new UiObject(new UiSelector().descriptionContains("More options"));
                if (more_menu.exists()){ more_menu.click();Sleep(4);}
                else {mDevice.pressMenu();Sleep(2);}
                UiObject menu_del=new UiObject(new UiSelector().text("Delete"));
                menu_del.click();
                Sleep(2);
                UiObject is_del=new UiObject(new UiSelector().text("Delete selected item?"));
                if(is_del.exists()){
                    UiObject ok_bnt=new UiObject(new UiSelector().text("OK"));
                    ok_bnt.clickAndWaitForNewWindow();
                    Sleep(2);
                }
    
    
                //Slideshow
                if (more_menu.exists()){ more_menu.click();Sleep(4);}
                else {mDevice.pressMenu();Sleep(2);}
                UiObject menu_slideshow=new UiObject(new UiSelector().text("Slideshow"));
                menu_slideshow.click();
                Sleep(10);
    
                mDevice.pressBack();
                Sleep(2);
    
    
                //Details
                if (more_menu.exists()){ more_menu.click();Sleep(4);}
                else {mDevice.pressMenu();Sleep(2);}
                UiObject menu_details=new UiObject(new UiSelector().text("Details"));
                menu_details.click();
                Sleep(2);
                mDevice.pressBack();
                Sleep(2);
    
    
                //Set picture as
                if (more_menu.exists()){ more_menu.click();Sleep(4);}
                else {mDevice.pressMenu();Sleep(2);}
                UiObject menu_set_as=new UiObject(new UiSelector().text("Set picture as"));
                menu_set_as.click();
                Sleep(2);
                //Wallpaper
                UiObject set_as_wallpaper=new UiObject(new UiSelector().text("Wallpaper"));
                set_as_wallpaper.clickAndWaitForNewWindow();
                Sleep(2);
                //Set wallpaper
                UiObject set_as_wallpaper_ok=new UiObject(new UiSelector().text("Set wallpaper"));
                set_as_wallpaper_ok.click();
                Sleep(2);
    
    //         Set picture as   Contact photo
    
    
            }
    
        }
        /**
         * Uses package manager to find the package name of the device launcher. Usually this package
         * is "com.android.launcher" but can be different at times. This is a generic solution which
         * works on all platforms.`
         */
        private String getLauncherPackageName() {
            // Create launcher Intent
            final Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
    
            // Use PackageManager to get the launcher package name
            PackageManager pm = InstrumentationRegistry.getContext().getPackageManager();
            ResolveInfo resolveInfo = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
            return resolveInfo.activityInfo.packageName;
        }
    
    
    
        private void Sleep(int i) {
            try {
                Thread.sleep(i*1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        private int gettestcount() {
            int loop=5;
            return loop;
        }
    }
    



    展开全文
  • 关于手机测试的文档,功能测试 ,系统测试
  • 手机系统测试

    2020-06-01 15:03:32
    系统测试,就是对你测试机进行整体测试,与需求说明书进行对比,检测是否与需求说明书存在差异,在我测试的过程中(手机端测试)系统测试中,比较常见的就是功能测试、交互测试、压力测试、容量测试、边界值测试,...

    个人理解

    系统测试,就是对你测试机进行整体测试,与需求说明书进行对比,检测是否与需求说明书存在差异,在我测试的过程中(手机端测试)系统测试中,比较常见的就是功能测试、交互测试、压力测试、容量测试、边界值测试,其他基本没有见过,毕竟本人实习生萌新一个……

    功能测试

    需求说明书中的功能需求逐步进行的测试,以验证功能是否满足其需求。(就是说明书上功能如何,实际功能就应该与说明书一致。)

    交互测试

    在你执行一项系统功能的同时,同时进行一些事件的操作,查看测试机工作状态,与需求说明书进行比较,是否满足其需求,即同一时间处理两个或以上的系统功能。(打电话的同时收到短信、打电话的时候闹钟响起……)

    压力测试

    对测试机的一项功能进行长时间、大量重复操作或强负荷情况下,查看测试机工作状态,与需求说明书进行比较,是否满足其需求。(长时间观看视频、大量反复插拔USB接口、对大量用户发送消息、大数据量……)

    容量测试

    在预先知道测试机系统的某项指标的极限值时,功能在极限值下进行操作,查看是否有功能隐患、主要功能正常运行及软件或系统是否出现故障。(测试机储存已满\将满、测试机后台运行空间已满……)

    边界值测试

    在预先知道测试机系统的某项指标的极限值时,进行超出极限值的操作,查看测试机的状态、功能是否实现、系统功能是否出现故障。(群发给测试机所支持的最高+1位用户发送短信、搜索框输入到最大值+1……)


    以上都是自己在这一个月所总结的知识,自己也有很多知识上的不足以及错误,如有错误还望请大神指出。

    展开全文
  • 【原文章】【分享】测试小白如何测试手机整机系统测试,该文章的PPT,文章是PPT复制过去的,内容仅适合入职手机系统功能测试的小白,分享测试经验
  • 移动通讯的发展历史和主要标准组织 移动通讯终端(手机)的生产流程介绍 生产测试系统原理 主要射频指标测试原理
  • 手机软件系统测试

    千次阅读 2010-01-16 23:09:00
    转:http://chenman111.blog.163.com/blog/static/680658722008719112710151/ 系统测试方法分为:功能测试,一致性测试,性能测试,压力测试,容量测试,安全性... 从手机软件系统测试的角度分为:功能模块测试,交叉

    转:http://chenman111.blog.163.com/blog/static/680658722008719112710151/ 系统测试方法分为:功能测试,一致性测试,性能测试,压力测试,容量测试,安全性测试,恢复性测试,备份测试,GUI测试,健壮性测试,兼容性测试,可用性测试,可安装性测试,文档测试,在线帮助测试以及数据转换测试等。 从手机软件系统测试的角度分为:功能模块测试,交叉事件测试,压力测试,容量性能测试,性能测试和用户手册测试等。 下面就以短消息为例来阐述,手机软件测试的一般方法和测试的要求,供大家参考。 一.短消息[SMS]的基本功能测试 1、短消息的基本功能:是指短消息的编辑,删除,保存,收发,显示,以及各种按钮等功能的正常实现。 2、测试要求和执行:一般根据测试案例或软件本身的流程就可以完成短消息的基本功能测试。 二.短消息的交叉事件测试 1、交叉测试:又叫事件或冲突测试,是指一个功能正在执行过程中,同时另外一个事件或操作对该过程进行干扰的测试。例如通话过程中接收到短信或来响闹。应该以执行干扰的冲突事件不会导致手机死机或花屏等严重的问题出现为Pass的标准。 2、测试要求和执行:干扰要恰到好处,准确,否则很难发掘出深层次的软件缺陷。 三.短消息的压力性能测试 1、压力测试:又叫边界值容错测试或极限负载测试,即测试过程中,已经达到某一软件功能的最大容量,边界值或最大的承载极限,仍然对其进行相关操作。例如连续进行短信的接收和发送,超过收件箱和PIM卡所能存储的最大的条数,仍然进行短消息的接收或发送,以检测软件在超常态条件下的表现,来评估用户能否接受。 2、测试要求和执行:可以考虑进行自动化测试 四.短消息的容量性能测试 1、容量测试:又叫满记忆体测试,包括手机的用户可用内存和SIM/PIM卡的所有空间被完全使用的测试。此时再对可编辑的模块进行和存储空间有关的任何操作测试,如果软件的极限容量状态下处理不好,有可能导致死机或严重的花屏等问题的出现。 2、测试要求和执行:可以考虑进行自动充满记忆体测试,要对不同品牌和不同容量大小的SIM/PIM卡进行测试 五. 短消息的兼容性能测试 兼容性测试:也就是不同品牌手机,不同网络,不同品牌和不同容量大小的SIM/PIM卡之间的互相兼容的测试,以短消息为例:中国电信的小灵通接收到从中国移动或中国联通GSM发来的短消息,接收,显示和回复功能是否正常等

    展开全文
  • 手机软件系统测试用例设计方法,等价类分析法,边界值分析,错误猜测法,判定表法,流程分析方法,正交试验设计法,状态迁移法
  • 手机温度测试自动化系统 需求分析 系统设计 例子
  • Android手机系统的性能测试工具Android应用的性能如何测试?JAVA层面可以用TraceView,可是用NDK开发出来的是so,TraceView跟踪不了怎么办?问了Google大神,答案是OProfile!Oprofile是Linux系统下一个低开销的系统...
  • 软件平台  用于控制测试设备、组织测试流程的软件,  主要软件开发工具:VC、VB、TestStand、Labwindows/CVI 硬件平台  工控机根据不同的测试要求...软件平台通过控制GPIB卡、I/O卡实现对测试仪表以及被测手机的控制。
  • 验收测Android系统手机专业性能测试工具极光软件(AuroraSoftworks)为Android手机推出的性能测试软件《象限》(Quadrant)是Google应用商店中评价高达4.5星的性能测试软件,针对CPU、内存、I/O输入输出、2D及3D图像的...
  • 一个关于手机软件系统测试用例的文档,不只是给测试人员看,开发人员也应该看看。
  • 本文介绍了VTAG在智能手机天线方面的研究。通过利用所开发的不同测试平台进行了各种传播试验,信道测量表明分集系统要比单天线系统的性能有所提高。
  • 最全面的手机软件系统测试用例设计举例文档,提高你的工作效率!
  • 手机软件测试最佳实践,通过学习提高测试人员的技术水平,从而提高软件的质量
  • TestQuest手机自动测试系统

    千次阅读 2010-07-13 14:00:00
    TestQuest手机自动测试系统 大家好。 <br />我目前在TestQuest北京代表处工作。 <br />TestQuest的总部位于美国,公司专注于向手机厂商,网络运营商以及移动应用软件开发商提供用于移动终端的自动化...
  • 有新的事件发生,如手机进行通 系统测试常用测试方法 软件测试 系统测试一般采取黑盒测试,系统测试的方法也比较多,其中常用的方法有:多任务测试、临界测试、中断测试、等价划分测试 多任务测试 多任务测试是...
  • 如何对Android系统手机进行单元测试如何进行Android单元测试Menifest.xml中加入:中加入:外面加入:MISSIONandroid:name="android.permission.RUN_INSTRUMENTATION"/>android:label="Testformyapp"/编写单元测试...
  • 手机自动化测试系统设计浅析手机自动化测试系统设计浅析
  • 基于GPIB的自动测试系统手机测试中的应用,高柯,,本文首先阐述基于GPIB 技术的自动测试系统的组成,然后介绍了GPIB技术的特点和工作原理,最后结合手机测试给出构建自动测试系统的软
  • 随着通信行业的迅猛发展,矢量网络分析仪的运用在这...那么就孕育了一种VMNA(Virtual Multi-port Network Analyzer)虚拟多端口网络分析测试系统。用于拓展双端口矢量网络分析仪至多端口矢量网络分析测试系统,实现针...
  • 摘要:介绍闪存的CF卡在手机测试系统中的应用,提出具体的硬件开发和软件实现方案。包括CF卡的读写操作、缓冲区操作的具体源程序。 关键词:闪存 CF卡 手机测试系统引言目前,手机作为日常生活中一种重要的通信工具...
  • 手机系统测试基于当前智能手机的大盛世,出门见到的人十有八九拿的都是智能手机,不再是有按键的“砖头”----“诺基亚”,而且全触摸屏的智能手机。“火腿肠”----HTC、苹果、三星、摩托罗拉…….不同的公司,不同的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,007
精华内容 3,202
关键字:

手机系统测试