var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2011年12月10日

    华为 Android 工程模式

    分类:

    拨号盘输入“*#*#2846579#*#*”,这个起作用是由于ProjectMenuAct.apk,如果系统应用程序中不存在这个则拨这个号无法进入工程模式。

    进入后有ProjectMenuAct->后台设置->LOG设置,选择开启,日志级别为Verbose则可在logcat中输出系统日志。

  • 2011年12月10日

    adb push 和 adb install 的区别

    分类:

    ..platform\system\core\adb\commandline.c中adb push的实现
    if(!strcmp(argv[0], "push")) {
    if(argc != 3) return usage();
    return do_sync_push(argv[1], argv[2], 0 /* no verify APK */);
    }

    同样的文件中的函数install_app也实现了adb install实现:
    安装apk调用do_sync_push(apk_file, apk_dest, 1 /* verify APK */)时需要验证,验证文件在有SD卡时位于"/sdcard/tmp/"目录下、无SD卡时位于"/data/local/tmp/"下 ,如果上面的安装文件成功push到了手机上,这个函数则会把验证文件push到临时文件夹中进行验证,在用手机里的pm程序安装应用程序包(即pm_command(transport, serial, argc, argv)),验证成功后再删除;如果安装文件未能成功push到手机,则删除该失败文件。

    总之,“adb push”仅拷贝apk到手机上(push到/system/app下重启会注册应用程序),而“adb install”不仅拷贝apk到手机上而且安装应用程序包到系统中。

  • 2011年12月05日

    NativeDriver 简介

    分类:

    NativeDriver支持Android2.2+ SDK)和iOS平台上原生应用的自动化测试。它实现了WebDriver APIWebDriver被用作在许多平台和浏览器上测试网页应用的功能。

     

    延伸阅读:使用NativeDriver自动化测试原生移动应用TestNG + NativeDriver实现androidUI自动化测试手机UI自动化测试工具NativeDriver VS Robotium

  • 2011年12月04日

    Android 日志

    分类:

    ANR Log一般保存在/data/anr 目录下。一般在如下几种情况会产生log文件

    1. 程序异常退出 uncaused exception

    2. 程序强制关闭 Force Closed (简称FC)

    3. 程序无响应 Application No Response (简称ANR) 。在Android里,应用程序的响应性是由Activity ManagerWindow Manager系统服务监视的。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示ANR:

    a) 5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)

    b) BroadcastReceiver10秒内没有执行完毕

    4. 手动生成

     

    Android的日志位于/dev/log/

    adb shell

    # cd /dev

    cd /dev

    # ls

    ls

    pcm

    cpuctl

    i2c-debug-1

    i2c-1

    i2c-debug-0

    i2c-0

    video20

    key_test

    input

    diag

    ppp

    mtd

    block

    graphics

    smem_sleep_log

    oncrpc

    smd_pkt_loopback

    smd_sns_dsps

    smd22

    smdcntl7

    smdcntl6

    smdcntl5

    smdcntl4

    smdcntl3

    smdcntl2

    smdcntl1

    smdcntl0

    msm_camera

    ptmx

    smd36

    smd27

    smd21

    smd7

    smd0

    console

    tty

    kmsg

    urandom

    random

    full

    zero

    null

    kmem

    mem

    hw_extern_sdcardMounted

    hw_extern_sdcard

    compass_aot

    compass_dev

    system_bus_freq

    network_throughput

    network_latency

    cpu_dma_latency

    proximity

    light

    log

    binder

    device-mapper

    accel

    alarm

    uinput

    keychord

    android_adb_enable

    android_adb

    tgt

    share_mem

    pmem_audio

    pmem_adsp

    pmem

    fuse

    ashmem

    msm_voicememo

    rmt_storage

    msm_snd

    msm_wmapro

    msm_amrwb

    msm_pcm_dec

    msm_wma

    msm_amrnb_in

    msm_aac

    msm_amrnb

    msm_qcelp

    msm_evrc

    msm_mp3

    msm_preproc_ctl

    msm_pcm_in

    msm_pcm_ctl

    msm_pcm_out

    nmea

    qmi2

    qmi1

    qmi0

    smem_log

    rfkill

    snd

    adsp

    rtc1

    rtc0

    kgsl-3d0

    ttyHS0

    i2c-debug-2

    i2c-2

    ttyGS1

    ttyGS0

    socket

    pts

    # cd log

    cd log

    # ls

    ls

    system

    radio

    events

    main

    如果想查看可以从上面这四个特殊文件,可以用adb pull拉出到pc上察看,通过比较不难发现ddmslogcat输出的是这四个文件的汇聚。

     

    /data/system/dropboxDropBoxManager生成的数据队列(应用程序崩溃,内核日志记录等),它是Android 2.2引入的。若它超过最大容量则会扔掉老数据。可以把它视为一种持久化的系统级的块状“logcat”。

     

    /mnt/sdcard/bugreports记录了android启动过程的log,以及启动后的系统状态,包括进程列表,内存信息,VM信息等。

     

    延伸阅读:Android中对Log日志文件的分析Android软件测试的日志文件(Log文件)之多少解读Android LOG机制的实现

  • 2011年12月04日

    Android 打断测试

    分类:

    汇总Android手机系统测试之打断事件测试My Views in Testing Mobile Application

     

    打断事件一般分为系统基本打断事件:

    1. Home键,当前测试的应用就会放到后台处于stop状态,当然如果开发人员改了接口我们也会看到不同的东西。

    2. 长按Home键,切换应用程序

    3. Back

    4. 长按Power键,调出关机窗口

    5. Power键锁屏,再按power键解锁

    6. 手机横竖屏切换

    7. 内容冲突检测(content provider

    8. 通过程序历史记录单访问已经释放的(即使的)应用,比如蓝牙传送程序,删除APN再去编辑它等等。

     

    Interaction interruptions

    1. (语音/普通)SMS/MMS

    2. 弹出的Alarm闹铃

    3. 来电(接听/拒绝/建立)

    4. Bluetooth的配对请求或者文件发送接收请求窗口

    5. 低电信息提示窗口

    6. 低内存

    7. 充电器插拔

    8. USB线/耳机/充电器插拔

    9. SD卡插拔

    10. 电池移出

     

    这些都会打断当前Activity的生命周期。

     

    此外还有Testing Checklist for Mobile ApplicationsAndroid Unified Testing Critiera