系统级的调试和测试

来源:互联网 发布:理发软件 编辑:程序博客网 时间:2024/05/16 09:53

1. 调试

命令行调试工具

1.1 am工具

                 am指令:

                     显示启动activity两种形式指令:

#am start -n com.android.settings/com.android.settings.Settings

#am start -n com.android.settings/.Settings

    隐式启动activity

                      #am start -a android.settings.SETTINGS

                   在启动activity时可以添加--activity-XXX等参数进行额外的flag传递。

                   隐式启动:

                     #am start -a android.intent.action.VIEW -d http://www.baidu.com

                    # am start -a android.intent.action.CALL -d tel:12345

             

URI 相当于Intent中的setData()方法的设置

              隐式地启动,指定URI并且附加MimeType的方法如下所示:

#am start -a android.intent.action.VIEW -d file:///sdcard/image.jpg -t image/*

#am start -a android.intent.action.VIEW -d file:///sdcard/image.jpg -t audio/*

#am start -a android.intent.action.VIEW -d file:///sdcard/image.jpg -t video/*


BroadcastReceiver和Service的调用比较简单。BroadcastReceiver很少使用显示调用,Service则只能支持启动操作,不能支持绑定的相关操作。对他们一般使用一下的两个命令:

#am broadcast -a <ACTION> -d <DATA_URI>

                #am startService -a <ACTION> -d <DATA_URI>

此处可以使用一个调试技巧:可以使用后台组件构建调试的入口。使用am工具可以调用他们。BroadscastReiceiver的onReceive()方法,Service的onStartCommand()方法可以根据Intent的不同的动作,进行不同的调用。在am工具中则传入不同的动作调用他们。


2. input工具

input工具用于模拟信息的输入。使用input工具可以在系统没有真正输入的情况系为系统注入输入事件,由此模拟一些情景。

#input keyevent 82    # 菜单事件(MENU)

#input keyEvent 4      #回退事件(BACK)

此处使用的按键码,就是android.view包中的KeyEvent类中对应的各个按键码的定义。

#input text "hanchao3c"   # 可以在调试时快速在终端输入文本

       

3. ime工具

ime的含义为Input Method Manager。ime工具用于管理系统的输入法。

ime工具格式:

ime list

ime enable 

ime disable

ime set 


4. pm 工具

pm list packages -f   //列出系统安装的apk包  ,这个信息也保存在/data/system目录中的packages.list文件中

使用list命令还可以打印出Permission,Feature和Instrumentation

pm path com.android.providers.settings  //打印provider的路径

pm install /sdcard/demo.apk

pm setInstallLocation 2  # 0表示自动,1表示内部,external表示外部

pm getInstallLocation


pm工具的enable和disable命令则可以使用和禁止某个应用程序包和组件。

pm disable com.example.android.skeletonapp

pm enable com.example.android.skeletonapp


被禁止的apk包并没有被卸载,蛋挞就像没有被安装一样,不能被使用,也不会出现在桌面图标。

5. 命令行脚本的拼凑

android的shell可以运行脚本。

echo $*
am start -a android.intent.action.VIEW -d about://blank
echo "Enter Browser"
input keyevent 82
echo "Browser Menu"
input keyevent 22
input keyevent 22
input keyevent 66
input keyevent 4
echo "Browser Main"

脚本实际上是利用了Android的shell系统运行的,同样可以传入命令行的参数。通过使用am调用activity,通过input进行输入事件,可以模拟一个可执行程序的执行过程。脚本还可以传递shell中传入的参数。


2. 界面上的辅助工具

界面上的调试工具GUI进行调试,包括DevTools、Term、SpareParts

1. DevTools

DevToos的代码路径为:development/apps/Development/,生成Development.apk (com.android.development)

DevTools功能

读取系统配置信息(Configuration)

查看运行进程(Running Process)

包浏览器(Package Browser)和包的信息(Package Summary)

媒体扫描(Media Scanner)

检测工具(Instrumentation)

其意义主要是在无法打开命令行时,可以进行简单的测试工作。

2. Term

3. SpareParts



2. 测试系统和工具

android测试体系结构

android测试系统主要涉及一下几个方面的概念

Instrumentation:测试者和被测试应用程序包联系的检测工具,是测试系统的核心

Mock:提供“仿制“的对象,用以隔离测试和系统

JUnit:Java标准的测试框架,在Android的测试包中可以基于JUnit组织

Monkey:运行与目标及的随机测试工具

MonkeyRunner:运行与主机的测试工具,可以支持测试脚本。

使用instrumentation机制,可以根据测试代码中的回调机制,逐步调用每个组件。InstrumentationTestRunner是连接到被测试应用程序包的机制,Android测试的工具和方法大豆与之相关。


3. 代码级别的测试

android代码级别的测试基于JUnit,并构建了自己的测试类,通过使用Instrumentation可以方便地对各个应用程序包进行测试。


4. 兼容性及兼容性测试


0 0
原创粉丝点击