nothing is impossible!一切皆有可能!

发布新日志

  • 测试之我见(一)

    2015-04-10 19:01:49

    从事测试工作有八个年头了,今天也来写写这些年下来自己对测试的一些看法吧。
    相信对于为何要测试和如何测试已经有很多讨乱了,那我说说其他的方面;

    其一,如何测试的开心,那就是将自己放在公司的高度去看自己手中的测试工作,从公司的角度去考虑测试需要关注的对象,遇到的困难,存在的风险,从老板的角度去看成本和失败以及成功;

    其二,如何测试的正确,这很滑稽是吗,还有正确一说?可现实是很多测试多年的人都不一定测试的正确,那怎么才正确,首要的就是要学会从用户的角度出发去思考设计,理解需求,质疑成品,从用户角度去分析,而不是产品或者开发说什么就是什么,不加自己的分析理解,把用户角度可能存在的问题忽略。

    一的做法会让你很多事情觉得力不从心,但是时间久了就会觉得这是你自己的一项事业,无所谓别人怎么看,自己觉得在努力朝梦想的路线前进就ok。
    二的做法会让你的测试方法丰富,测试深度逐步加深,理解问题会更全面,但是也会让你更加执着于用户的体验而使得沟通成本增加,有时坚持本身就是一件很难坚持的事情,不过,看环境而定,有时提出来了没人理解我们也不必太难过,因为你已经尽心了,此时多看看历史就可以聊以宽慰自己受伤的心灵。

    今天暂说着两点,估计发出去会被扔鸡蛋...........

  • 测试之我见(二)

    2015-04-10 19:00:09

    俗话说,万丈高楼平地起,大家都能看见高楼的威武,高耸如云,可是我们往往忽略了他深埋在地下的坚实基石。
    测试一样,没有夯实地基的高楼,也就是个漂亮的豆腐渣工程。

    那作为一个测试,他的基石是什么?编码?写用例?执行点点操作?都不是,最基本的第一步是去了解质量,建立自己的质量意识,而质量这个东西生活中到处可见,结合生活再理解质量,切合民生去创建自己的质量意识,此处质量不是指为了一些标准而进行的质量度量之类的东西,而纯粹是一个意识的建立过程。
    遥想当年,读着克劳士比的《质量无泪》,热血沸腾,明显的感觉到自己的肩上责任之重大,质量保证与人民生活息息相关。他的零缺陷意识指导着我尽职尽责,说服同仁尽量从早期介入项目,不放过自己疑惑的任何一个地方,说服pm进行出厂前的初始化安装测试,这才避免了在客户方出现大量初始化安装由于缺少补丁而带来的巨大损失。这是对零缺陷的向往,相信读过的人都了解,零缺陷不是说没有缺陷,而是说从一开始就向着零缺陷努力,那样后期缺陷,后期成本都可以少很多;

    那第二个基础是什么?有了质量意识就要去实践,从测试的角度去实现它,这时才涉及到测试的基础知识,用例的涉及,场景的模拟,bug的描述,这些不能是为了写而写,要结合(一)中的两点,去自己完善,优化--------你的case,bug别人能看懂吗?如果好久没接触了,你再接触的时候能很快上手执行吗?还是会推到重做,质量,不但是要让开发做,测试首先要提交高质量的设计文档,该文档不需要漂亮,不需要好多话,只需要告诉别人如何测试,按照你的case,任何一个人都可以很快上手执行,面对你的bug描述,越来越少的开发来让你复现,或许有过第一次,第二次,可是好的bug报告,在经历两三次后,对方就会去认真读,而不是说看不懂,因为他按照你的描述可以百分百复现,这就是高质量的报告(这里不说高质量的case,因为他的依赖条件较多,上述条件满足后只能说是个不错的case)。

    对于高质量的case,这里需要提点,高质量,不是要多复杂,而是要将复杂的业务逻辑肢解了,拆散了给别人看,单独的case或许不是很懂在干什么,可是当别人将你写的case执行完之后就会有种突然间明白里面所有的逻辑关系感觉,那你就是将肢解了的东西又重组给别人的眼前了。而这样的case结果需要多种设计策略合并使用,有时还会借助思维导图进行梳理,所以本人认为case最大工作量不在写上,而在分析和一次次的肢解组合上,而这是测试占用工作量和精力最大的地方,而许多人却不理解,没有认真动脑写case的人,就会认为用例就是写出来呗,怎么还没写。

    打好这些基础,从自我质量提高开始,那好的质量意识会指导你更多的从生活,从用户去考虑问题,即使遇到不同意见,你也可以比较清晰的给对方描述用户场景,存在风险;好的测试用例设计技能可以让你在各种系统,各种实现手段--自动化,性能,客户端,服务端,显得游刃有余,因为在做这些的时候,你明确知道你的目标是什么,你要干什么,而不是为了自动化而自动,为了并发而并发,不思考,不质疑。而在各种业务系统中,你需要找出他的特别之处加以琢磨,其他主旨都一样,不都是为了能用,好用,耐用,安全吗?

  • Python编辑器IDLE傻瓜入门(转自博客园-Shurrik)

    2012-10-23 12:18:10

    Python编辑器IDLE傻瓜入门(转载)

    Python编辑器IDLE傻瓜入门

     

    下载python进行安装,默认自带此工具
    开始->程序->Python 2.*/3.*-> IDLE (Python GUI)
    如此就打开了Python Shell->File->New window(Ctrl+N)
    就出现了python编辑器
    编写代码比如

    Java代码 
    1. print('Hello World')  

    然后保存文件为helloworld.py(注意记得加py扩展名,默认是不会自动加添的)。
    在编辑器窗口按F5即可在Python Shell中看到结果。

    如何debug
    1.设置断点:在Python编辑器中要调试的代码行右击->Set Breakpoint,之后该行底色就变黄了
    2.打开debugger:Python Shell->Debug->Debugger
    3.编辑窗口按F5
    4.debug过程略

    • Go表示运行完相当于eclipse的F8,不过按F5后先要Go一下才能往下走,默认是不运行的
    • Step表示一步一步相当于eclipse的F5
    • Over表示跳过函数方法相当于eclipse的F6
    • Out表示跳出本函数相当于eclipse的F7


    IDLE编辑器快捷键
    自动补全代码        Alt+/(查找编辑器内已经写过的代码来补全)
    补全提示              Ctrl+Shift+space(默认与输入法冲突,修改之)
    (方法:Options->configure IDLE…->Keys-> force-open-completions
    提示的时候只要按空格就出来对于的,否则翻上下键不需要按其他键自动就补全了)

    后退                    Ctrl+Z

    重做                    Ctrl+Shift+Z
    加缩进                 Ctrl+]
    减缩进                 Ctrl+[
    加注释                 Alt+3
    去注释                 Alt+4

    Python Shell快捷键

    自动补全同上
    上一条命令           Alt+P

    下一条命令           Alt+N

     

     

     转载地址:http://www.javaeye.com/topic/603535

  • Android monkey 资料(转自博客园)

    2011-12-20 18:01:59

    一、为什么要用Monkey 测试?
     
    简单在说就是象猴子一样乱点,为了测试软件的稳定性,健壮性。号称最快速有效的方法。有时候运行相同系列的测试,即使是复杂的测试,但是以相同的顺序和路径,即使一遍又一遍地运行也很少机会能发现内存和资源使用的bug。而此时猴子就比人更有效了。
     
    简介
     
    Monkey是一个命令行工具 ,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流,实现对正在开发的应用程序进行压力测试。Monkey包括许多选项,它们大致分为四大类:
     
    · 基本配置 选项,如设置尝试的事件数量。
     
    · 运行约束选项,如设置只对单独的一个包进行测试。
     
    · 事件类型和频率。
     
    · 调试选项。
     
    在Monkey运行的时候,它生成事件,并把它们发给系统。同时,Monkey还对测试中的系统进行监测,对下列三种情况进行特殊处理:
     
    · 如果限定了Monkey运行在一个或几个特定的包上,那么它会监测试图转到其它包的操作,并对其进行阻止。
     
    · 如果应用程序崩溃或接收到任何失控异常 ,Monkey将停止并报错。
     
    · 如果应用程序产生了应用程序不响应(application not responding)的错误,Monkey将会停止并报错。
     
    按照选定的不同级别的反馈信息,在Monkey中还可以看到其执行过程报告和生成的事件。
     
    二、怎么用的?
     
    首先用一个最简单的例子分析:
    //p参数: 表示指定测试的程序
    //v参数: 表示查看monkey生成的一些详细的随机的事件名
    //数字100: 表示测试事件数为100
    monkey -p com.example.android.apis  -v -v -v 100
     
     
    结果如下:
     
    :Monkey: seed=0 count=100
     
     
    :AllowPackage: com.example.android.apis
    :IncludeCategory: android.intent.category.LAUNCHER
    :IncludeCategory: android.intent.category.MONKEY
     
    //各种事件所占的比例。
    //各数字分别表示:
    [--pct-touch PERCENT]
    [--pct-motion PERCENT]
    [--pct-trackball PERCENT]
    [--pct-syskeys PERCENT]
    [--pct-nav PERCENT]
    [--pct-majornav PERCENT]
    [--pct-appswitch PERCENT]
    [--pct-flip PERCENT]
    [--pct-anyevent PERCENT]
    // Event percentages:
    //   0: 15.0%
    //   1: 10.0%
    //   2: 15.0%
    //   3: 25.0%
    //   4: 15.0%
    //   5: 2.0%
    //   6: 2.0%
    //   7: 1.0%
    //   8: 15.0%
    :Switch:
     
    //表示跳转到com.example.android.apis 里面的ApiDemos这一个Activity里。
    #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.example.android.apis/.ApiDemos;end
     
    //允许此Intent跳转,
        // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.android.apis/.ApiDemos } in package com.example.android.apis
     
    //发送的一些动作,如点击按下,点击放开,移动。
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0
    :Sending Pointer ACTION_UP x=0.0 y=0.0
    :Sending Pointer ACTION_DOWN x=207.0 y=282.0
    :Sending Pointer ACTION_UP x=189.0 y=289.0
    :Sending Pointer ACTION_DOWN x=95.0 y=259.0
    :Sending Pointer ACTION_UP x=95.0 y=259.0
    :Sending Pointer ACTION_DOWN x=295.0 y=223.0
    :Sending Pointer ACTION_UP x=290.0 y=213.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=3.0
    :Sending Pointer ACTION_MOVE x=0.0 y=-5.0
     
    //拒绝此跳转,因为它是跳转到非它自己的包的Activity,本测试中是指写测试它程序所在的包,此跳转是跳出本程序,进入到桌面。
        // Rejecting start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] cmp=com.android.launcher/.Launcher } in package com.android.launcher
     
    //继续发送动作。
    :Sending Pointer ACTION_DOWN x=74.0 y=201.0
    :Sending Pointer ACTION_UP x=74.0 y=201.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-2.0
    :Sending Pointer ACTION_UP x=0.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0
    Events injected: 100
     
    //丢弃的,键=0,指针=0,轨迹球=0,翻转=0。
    :Dropped: keys=0 pointers=0 trackballs=0 flips=0
     
    //网络统计经过时间为4202ms,其中4202ms是用于在手机上的,0ms用于无线网络上,没有连接的时间为0ms。
    ## Network stats: elapsed time=4202ms (4202ms mobile, 0ms wifi, 0ms not connected)
     
    //monkey测试完成。
    // Monkey finished
     
    从例子中可以看出,该程序在这次测试中没有问题,若程序出现问题终端将打印出异常供程序员查找错误。
     
     
     
    以下是monkey命令行的一些参数:
    -p:所在测试的包,可以是一个也可以是多个 如 monkey -p com.androd.sms -p com.androd.explorer
    -c:如果用此参数指定了一个或几个类别,Monkey将只允许系统启动被这些类别中的某个类别列出的Activity。如果不指定任何类别,Monkey将选择下列类别中列出的Activity: Intent.CATEGORY_LAUNCHER或Intent.CATEGORY_MONKEY。要指定多个类别,需要使用多个-c选项,每个-c选项只能用于一个类别。
    -ignore-crash:当应用程序崩溃或发生任何失控异常时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
    -ignore-timeouts:通常,当应用程序发生任何超时错误(如“Application Not Responding”对话框)时,Monkey将停止运行。如果设置此选项,Monkey将继续向系统发送事件,直到计数完成。
    -ignore-security-exceptions:通常,当应用程序发生许可错误(如启动一个需要某些许可的Activity)时,Monkey将停止运行。如果设置了此选项,Monkey将继续向系统发送事件,直到计数完成。
    -monitor-native-crashes:监视并报告Android系统中本地代码的崩溃事件。如果设置了–kill-process-after-error,系统将停止运行。
    -kill-process-after-error:如果程序出现错误,monkey将结束此程序进程。
    -hprof:设置此项,将在monkey事件序列之前和之后立即生成profilling报告。这将会在data/misc中生成大文件(约5mb)所以要小心使用它。
    -pct-touch:调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕的某单一位置)。
    -pct-motion:动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的随机事件和一个up事件组成)。
    -pct-trackball:调整轨迹事件的百分比(轨迹事件由一个或几个随机移动组成,有时还伴随着点击)。
    -pct-syskeys:调整系统按键事件的百分比(这些按键通常被保留,由系统使用,如home,back,start call,end call及音量控制)。
    -pct-nav 调整基本导航事件的百分比(导航事件来自方向输入设备的up/down/left/right组成)。
    -pct-majornav:调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)
    -pct-appswitch:调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。
    -pct-anyevent:调整启动Activity的百分比。它包罗了所有其它的事件类型,如:按键,其它不常用的设备按钮。
    -pct-flip:
    –wait-dbg:停止执行中的Monkey,直到有调试器和它相连接。
    –dbg-no-events:设置此选项,Monkey将执行初始启动,进入到一个测试Activity,然后不会再进一步生成事件。为了得到最佳结果,把它与-v、一个或几个包约束、以及一个保持Monkey运行30秒或更长时间的非零值联合起来,从而提供一个环境,可以监视应用程序所调用的包之间的转换。
    -setup:
    -f:
    -port: 为monkey开启专用端口。此时只monkey不会帮你乱点击,而此时你自己就是一只monkey了,在你乱点的时候,monkey会输出你点击后回馈的信息。如果你打完命令之后模拟器上没有启动你所要启动的包,你需要自己启动,但是你只能启动你-p中指定的那几个包。ctrl+c中断。
    --throttle :当事件起效时等待的毫秒数。
    -s:随机数生成器的seed值。如果用相同的seed值再次运行monkey,它将生成相同的事件序列。
    COUNT:要发送的事件数。
    usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
                  [-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
                  [--ignore-crashes] [--ignore-timeouts]
                  [--ignore-security-exceptions] [--monitor-native-crashes]
                  [--kill-process-after-error] [--hprof]
                  [--pct-touch PERCENT] [--pct-motion PERCENT]
                  [--pct-trackball PERCENT] [--pct-syskeys PERCENT]
                  [--pct-nav PERCENT] [--pct-majornav PERCENT]
                  [--pct-appswitch PERCENT] [--pct-flip PERCENT]
                  [--pct-anyevent PERCENT]
                  [--wait-dbg] [--dbg-no-events]
                  [--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
                  [--port port]
                  [-s SEED] [-v [-v] ...] [--throttle MILLISEC]
                  COUNT
     
     
     
     
    Monkey测试结果 :
    # monkey -p wfh.LessonTable -v -v -v 200
    :Monkey: seed=0 count=200
    :AllowPackage: wfh.LessonTable
    :IncludeCategory: android.intent.category.LAUNCHER
    :IncludeCategory: android.intent.category.MONKEY
    // Selecting main activities from category android.intent.category.LAUNCHER
    //   - NOT USING main activity com.android.browser.BrowserActivity (from package com.android.browser)
    //   - NOT USING main activity com.android.music.MusicBrowserActivity (from package com.android.music)
    //   - NOT USING main activity com.android.contacts.DialtactsActivity (from package com.android.contacts)
    //   - NOT USING main activity com.android.contacts.DialtactsContactsEntryActivity (from package com.android.contacts)
    //   - NOT USING main activity com.android.mms.ui.ConversationList (from package com.android.mms)
    //   - NOT USING main activity com.android.spare_parts.SpareParts (from package com.android.spare_parts)
    //   - NOT USING main activity com.android.camera.Camera (from package com.android.camera)
    //   - NOT USING main activity com.android.alarmclock.AlarmClock (from package com.android.alarmclock)
    //   - NOT USING main activity com.android.settings.Settings (from package com.android.settings)
    //   - NOT USING main activity com.android.camera.GalleryPicker (from package com.android.gallery)
    //   - NOT USING main activity com.android.email.activity.Welcome (from package com.android.email)
    //   - NOT USING main activity com.example.android.apis.ApiDemos (from package com.example.android.apis)
    //   - NOT USING main activity com.android.calculator2.Calculator (from package com.android.calculator2)
    //   - NOT USING main activity com.android.customlocale.CustomLocaleActivity (from package com.android.customlocale)
    //   - NOT USING main activity com.android.development.Development (from package com.android.development)
    //   - NOT USING main activity com.myactivity.MyActivity (from package com.myactivity)
    //   + Using main activity wfh.LessonTable.MainTable (from package wfh.LessonTable)
    //   - NOT USING main activity wfh.rss.MainRSS (from package wfh.rss)
    // Selecting main activities from category android.intent.category.MONKEY
    //   - NOT USING main activity com.android.launcher.Launcher (from package com.android.launcher)
    //   - NOT USING main activity com.android.settings.ManageApplications (from package com.android.settings)
    //   - NOT USING main activity com.android.settings.RunningServices (from package com.android.settings)
    // Seeded: 0
    // Event percentages:
    //   0: 15.0%
    //   1: 10.0%
    //   2: 15.0%
    //   3: 25.0%
    //   4: 15.0%
    //   5: 2.0%
    //   6: 2.0%
    //   7: 1.0%
    //   8: 15.0%
    :Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=wfh.LessonTable/.MainTable;end
        // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=wfh.LessonTable/.MainTable } in package wfh.LessonTable
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
    :SendKey (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
    Sleeping for 0 milliseconds  //------------------------------------用--throttle来设置一个起效的事件发生后时延时。
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=0.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0 //-------------移动事件!!!
    :Sending Pointer ACTION_MOVE x=-2.0 y=4.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=1.0
    :Sending Pointer ACTION_MOVE x=0.0 y=-2.0
    :Sending Pointer ACTION_DOWN x=0.0 y=0.0
    :Sending Pointer ACTION_UP x=0.0 y=0.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 64    // KEYCODE_EXPLORER
    :SendKey (ACTION_UP): 64    // KEYCODE_EXPLORER
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER
    :SendKey (ACTION_UP): 23    // KEYCODE_DPAD_CENTER
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 91    // KEYCODE_MUTE
        // Allowing start of Intent { cmp=wfh.LessonTable/.EditLesson } in package wfh.LessonTable
    :SendKey (ACTION_UP): 91    // KEYCODE_MUTE
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=207.0 y=282.0
    :Sending Pointer ACTION_MOVE x=210.0 y=277.0
    :Sending Pointer ACTION_MOVE x=204.0 y=283.0
    :Sending Pointer ACTION_MOVE x=205.0 y=278.0
    :Sending Pointer ACTION_MOVE x=199.0 y=278.0
    :Sending Pointer ACTION_MOVE x=199.0 y=287.0
    :Sending Pointer ACTION_MOVE x=194.0 y=295.0
    :Sending Pointer ACTION_MOVE x=198.0 y=290.0
    :Sending Pointer ACTION_MOVE x=197.0 y=286.0
    :Sending Pointer ACTION_MOVE x=189.0 y=289.0
    :Sending Pointer ACTION_UP x=189.0 y=289.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 56    // KEYCODE_PERIOD
    :SendKey (ACTION_UP): 56    // KEYCODE_PERIOD
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=95.0 y=259.0
    :Sending Pointer ACTION_UP x=95.0 y=259.0
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=295.0 y=223.0
    :Sending Pointer ACTION_MOVE x=291.0 y=223.0
    :Sending Pointer ACTION_MOVE x=291.0 y=218.0
    :Sending Pointer ACTION_MOVE x=284.0 y=215.0
    :Sending Pointer ACTION_MOVE x=284.0 y=206.0
    :Sending Pointer ACTION_MOVE x=285.0 y=205.0
    :Sending Pointer ACTION_MOVE x=290.0 y=213.0
    :Sending Pointer ACTION_UP x=290.0 y=213.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=-5.0 y=3.0
    :Sending Pointer ACTION_MOVE x=3.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=2.0
    :Sending Pointer ACTION_MOVE x=3.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=1.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=-5.0
    :SendKey (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
    :SendKey (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=0.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=4.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=3.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=3.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=-3.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=-1.0
    :SendKey (ACTION_DOWN): 3    // KEYCODE_HOME
    :SendKey (ACTION_UP): 3    // KEYCODE_HOME
        // Rejecting start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] cmp=com.android.launcher/.Launcher } in package com.android.launcher
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=74.0 y=201.0
    :Sending Pointer ACTION_UP x=74.0 y=201.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER
    :SendKey (ACTION_UP): 23    // KEYCODE_DPAD_CENTER
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=3.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=0.0
    :Sending Pointer ACTION_MOVE x=3.0 y=2.0
    :Sending Pointer ACTION_MOVE x=0.0 y=0.0
    :Sending Pointer ACTION_MOVE x=4.0 y=3.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=1.0
    :Sending Pointer ACTION_DOWN x=0.0 y=0.0
    :Sending Pointer ACTION_UP x=0.0 y=0.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
    :SendKey (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
        // activityResuming(wfh.LessonTable)
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
    :SendKey (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
    Sleeping for 0 milliseconds ??????
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=4.0 y=0.0
        // Sending event #100
    :Sending Pointer ACTION_MOVE x=3.0 y=0.0
    :Sending Pointer ACTION_MOVE x=3.0 y=1.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=3.0
    :Sending Pointer ACTION_MOVE x=1.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=0.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=1.0
    :Sending Pointer ACTION_MOVE x=2.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=2.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-3.0
    :Sending Pointer ACTION_MOVE x=4.0 y=0.0
    :Sending Pointer ACTION_MOVE x=0.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=4.0
    :Sending Pointer ACTION_MOVE x=4.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=2.0 y=-2.0
    :SendKey (ACTION_DOWN): 22    // KEYCODE_DPAD_RIGHT
    :SendKey (ACTION_UP): 22    // KEYCODE_DPAD_RIGHT
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 53    // KEYCODE_Y
    :SendKey (ACTION_UP): 53    // KEYCODE_Y
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 24    // KEYCODE_VOLUME_UP
    :SendKey (ACTION_UP): 24    // KEYCODE_VOLUME_UP
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=149.0 y=150.0
    :Sending Pointer ACTION_MOVE x=149.0 y=151.0
    :Sending Pointer ACTION_MOVE x=152.0 y=158.0
    :Sending Pointer ACTION_MOVE x=148.0 y=162.0
    :Sending Pointer ACTION_MOVE x=148.0 y=156.0
    :Sending Pointer ACTION_MOVE x=152.0 y=149.0
    :Sending Pointer ACTION_MOVE x=155.0 y=146.0
    :Sending Pointer ACTION_MOVE x=150.0 y=138.0
    :Sending Pointer ACTION_MOVE x=155.0 y=142.0
    :Sending Pointer ACTION_MOVE x=162.0 y=150.0
    :Sending Pointer ACTION_UP x=162.0 y=150.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
        // Allowing start of Intent { cmp=wfh.LessonTable/.AWeekLesson } in package wfh.LessonTable
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=0.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=0.0
    :Sending Pointer ACTION_MOVE x=2.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=4.0
    :Sending Pointer ACTION_MOVE x=4.0 y=4.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=2.0 y=2.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=-1.0
    :SendKey (ACTION_DOWN): 19    // KEYCODE_DPAD_UP
    :SendKey (ACTION_UP): 19    // KEYCODE_DPAD_UP
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=134.0 y=239.0
    :Sending Pointer ACTION_UP x=134.0 y=239.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 4    // KEYCODE_BACK
    :SendKey (ACTION_UP): 4    // KEYCODE_BACK
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER
        // activityResuming(wfh.LessonTable)
    :SendKey (ACTION_UP): 23    // KEYCODE_DPAD_CENTER
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 22    // KEYCODE_DPAD_RIGHT
    :SendKey (ACTION_UP): 22    // KEYCODE_DPAD_RIGHT
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 19    // KEYCODE_DPAD_UP
    :SendKey (ACTION_UP): 19    // KEYCODE_DPAD_UP
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
    :SendKey (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 19    // KEYCODE_DPAD_UP
    :SendKey (ACTION_UP): 19    // KEYCODE_DPAD_UP
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER
    :SendKey (ACTION_UP): 23    // KEYCODE_DPAD_CENTER
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=118.0 y=37.0
    :Sending Pointer ACTION_MOVE x=119.0 y=33.0
    :Sending Pointer ACTION_UP x=119.0 y=33.0
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=297.0 y=358.0
    :Sending Pointer ACTION_MOVE x=289.0 y=363.0
    :Sending Pointer ACTION_MOVE x=284.0 y=369.0
    :Sending Pointer ACTION_UP x=284.0 y=369.0
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=258.0 y=403.0
    :Sending Pointer ACTION_MOVE x=249.0 y=398.0
    :Sending Pointer ACTION_MOVE x=258.0 y=393.0
    :Sending Pointer ACTION_MOVE x=258.0 y=402.0
    :Sending Pointer ACTION_MOVE x=263.0 y=395.0
    :Sending Pointer ACTION_MOVE x=266.0 y=399.0
    :Sending Pointer ACTION_MOVE x=273.0 y=403.0
    :Sending Pointer ACTION_UP x=273.0 y=403.0
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=-5.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=1.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=1.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=2.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-3.0
    :Sending Pointer ACTION_MOVE x=2.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=-5.0 y=2.0
    :Sending Pointer ACTION_MOVE x=0.0 y=0.0
     
    当测试到ACTION_MOVE x=0.0 y=0.0这个动作时,发生了FC(Force Close)错误,以下为输出错误信息。同时在LogCat里面也有错误输出,而且LogCat里面的错误信息更为详细,在实际的测试中应该结合两者输出的信息进行调试程序。
     
    // CRASH: wfh.LessonTable (pid 1973)
    // Short Msg: java.lang.NullPointerException
    // Long Msg: java.lang.NullPointerException
    // Build Label: android:generic/sdk/generic/:2.1-update1/ECLAIR/35983:eng/test-keys
    // Build Changelist: 35983
    // Build Time: 1273161972
    // ID:
    // Tag: AndroidRuntime
    // java.lang.NullPointerException:
    //   at android.widget.TabHost.dispatchKeyEvent(TabHost.java:279)
    //   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    //   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    //   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    //   at android.widget.TabHost.dispatchKeyEvent(TabHost.java:275)
    //   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    //   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    //   at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    //   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1655)
    //   at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1102)
    //   at android.app.Activity.dispatchKeyEvent(Activity.java:2038)
    //   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631)
    //   at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2368)
    //   at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338)
    //   at android.view.ViewRoot.handleMessage(ViewRoot.java:1641)
    //   at android.os.Handler.dispatchMessage(Handler.java:99)
    //   at android.os.Looper.loop(Looper.java:123)
    //   at android.app.ActivityThread.main(ActivityThread.java:4363)
    //   at java.lang.reflect.Method.invokeNative(Method.java:-2)
    //   at java.lang.reflect.Method.invoke(Method.java:521)
    //   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    //   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    //   at dalvik.system.NativeStart.main(NativeStart.java:-2)
     
    ** Monkey aborted due to error.
    Events injected: 190
    :Dropped: keys=0 pointers=11 trackballs=0 flips=0
    ## Network stats: elapsed time=27954ms (27954ms mobile, 0ms wifi, 0ms not connected)
    ** System appears to have crashed at event 190 of 200 using seed 0
    #
     
     
    开始monkey测试时android的LogCat输出的信息:
     
    11-01 08:52:53.712: DEBUG/AndroidRuntime(2077): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    11-01 08:52:53.742: DEBUG/AndroidRuntime(2077): CheckJNI is ON
    11-01 08:52:54.453: DEBUG/AndroidRuntime(2077): --- registering native functions ---
    11-01 08:52:55.542: DEBUG/ddm-heap(2077): Got feature list request
    11-01 08:52:59.533: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=wfh.LessonTable/.MainTable }
    11-01 08:53:00.842: INFO/ActivityManager(53): Displayed activity wfh.LessonTable/.MainTable: 1266 ms (total 1266 ms)
    11-01 08:53:03.123: DEBUG/dalvikvm(1973): GC freed 7524 objects / 507616 bytes in 246ms
    11-01 08:53:03.173: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.213: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c585c0 on MO that has not been deactivated or closed
    11-01 08:53:03.213: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.213: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.233: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.252: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c57f98 on MO that has not been deactivated or closed
    11-01 08:53:03.252: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.252: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.263: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.293: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c57970 on MO that has not been deactivated or closed
    11-01 08:53:03.293: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.303: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.323: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.323: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c57330 on MO that has not been deactivated or closed
    11-01 08:53:03.333: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.353: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.363: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.403: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c45330 on MO that has not been deactivated or closed
    11-01 08:53:03.403: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.403: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.423: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.433: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c44d08 on MO that has not been deactivated or closed
    11-01 08:53:03.443: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.443: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.453: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.483: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c446c8 on MO that has not been deactivated or closed
    11-01 08:53:03.483: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.503: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.523: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.563: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c26288 on MO that has not been deactivated or closed
    11-01 08:53:03.572: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.572: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.622: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.642: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c25cb0 on MO that has not been deactivated or closed
    11-01 08:53:03.642: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.662: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.662: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.722: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c256d8 on MO that has not been deactivated or closed
    11-01 08:53:03.722: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.722: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.732: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.752: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c250e8 on MO that has not been deactivated or closed
    11-01 08:53:03.752: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.762: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:03.902: INFO/dalvikvm(1973): Uncaught exception thrown by finalizer (will be discarded):
    11-01 08:53:03.902: INFO/dalvikvm(1973): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43c1e780 on MO that has not been deactivated or closed
    11-01 08:53:03.902: INFO/dalvikvm(1973):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
    11-01 08:53:03.912: INFO/dalvikvm(1973):     at dalvik.system.NativeStart.run(Native Method)
    11-01 08:53:04.247: WARN/KeyCharacterMap(1973): No keyboard for id 0
    11-01 08:53:04.252: WARN/KeyCharacterMap(1973): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    11-01 08:53:04.762: INFO/ActivityManager(53): Starting activity: Intent { cmp=wfh.LessonTable/.EditLesson }
    11-01 08:53:05.233: WARN/WindowManager(53): No window to dispatch pointer action 0
    11-01 08:53:05.533: WARN/WindowManager(53): No window to dispatch pointer action 1
    11-01 08:53:06.782: INFO/ActivityManager(53): Displayed activity wfh.LessonTable/.EditLesson: 1637 ms (total 1637 ms)
    11-01 08:53:09.623: WARN/ActivityManager(53): Launch timeout has expired, giving up wake lock!
    11-01 08:53:09.682: WARN/ActivityManager(53): Activity idle timeout for HistoryRecord{43d3ab48 wfh.LessonTable/.MainTable}
    11-01 08:53:12.662: INFO/ActivityManager(53): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/.Launcher }
    11-01 08:53:15.433: INFO/NotificationService(53): enqueueToast pkg=wfh.LessonTable callback=android.app.ITransientNotification$Stub$Proxy@43d5b308 duration=1
    11-01 08:53:15.513: INFO/System.out(1973): UpdateRecord
    11-01 08:53:19.353: INFO/NotificationService(53): enqueueToast pkg=android callback=android.widget.Toast$TN@43ced790 duration=0
    11-01 08:53:19.752: WARN/InputManagerService(53): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@43d2bab0
    11-01 08:53:20.752: INFO/ActivityManager(53): Starting activity: Intent { cmp=wfh.LessonTable/.AWeekLesson (has extras) }
    11-01 08:53:21.852: INFO/ActivityManager(53): Displayed activity wfh.LessonTable/.AWeekLesson: 1028 ms (total 1028 ms)
    11-01 08:53:27.093: DEBUG/AndroidRuntime(1973): Shutting down VM
    11-01 08:53:27.113: WARN/dalvikvm(1973): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
     
     
     
    以下为LogCat输出的错误信息,在以下的信息中首先从自己的包中找错误,如果没有自己的包的话就再找发生错误的包的第一个发生了异常。由错误提示可以看出很大的可能是因为TabHost引发的异常。经过查看代码发现是由于TabHost的编写不规范,TabHost与其中一个view放在了一起,在 monkey测试做滚球上下滚动时当滚到TabHost时就发生了异常了。所以把TabHost与Activity分开写就不会出现些问题了。
     
     
     
    11-01 08:53:27.113: ERROR/AndroidRuntime(1973): Uncaught handler: thread main exiting due to uncaught exception
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973): java.lang.NullPointerException
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.widget.TabHost.dispatchKeyEvent(TabHost.java:279)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.widget.TabHost.dispatchKeyEvent(TabHost.java:275)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1655)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1102)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.app.Activity.dispatchKeyEvent(Activity.java:2038)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2368)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1641)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.os.Handler.dispatchMessage(Handler.java:99)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.os.Looper.loop(Looper.java:123)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at java.lang.reflect.Method.invokeNative(Native Method)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at java.lang.reflect.Method.invoke(Method.java:521)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    11-01 08:53:27.133: ERROR/AndroidRuntime(1973):     at dalvik.system.NativeStart.main(Native Method)
    11-01 08:53:27.163: INFO/Process(53): Sending signal. PID: 1973 SIG: 3
    11-01 08:53:27.173: INFO/dalvikvm(1973): threadid=7: reacting to signal 3
    11-01 08:53:27.173: ERROR/dalvikvm(1973): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
    11-01 08:53:27.622: INFO/AndroidRuntime(2077): AndroidRuntime onExit calling exit(190)
    11-01 08:53:33.702: WARN/ActivityManager(53): Launch timeout has expired, giving up wake lock!
    11-01 08:53:33.733: WARN/ActivityManager(53): Activity idle timeout for HistoryRecord{43d3ab48 wfh.LessonTable/.MainTable}
    11-01 08:53:41.173: DEBUG/dalvikvm(1334): GC freed 62 objects / 3120 bytes in 2419ms
    11-01 08:53:43.742: WARN/ActivityManager(53): Activity destroy timeout for HistoryRecord{43dc5028 wfh.LessonTable/.AWeekLesson}
     
    四、总结:
    在monkey测试中常用的命令组合有:
    1、monkey -p com.yourpackage -v 500//简单的输出测试的信息。
    2、monkey -p com.yourpackage -v -v -v 500 //以深度为三级输出测试信息。
    3、monkey -p com.yourpackage --port 端口号 -v//为测试分配一个专用的端口号,不过这个命令只能输出跳转的信息及有错误时输出信息。
    4、monkey -p com.yourpackage -s 数字 -v 500//为随机数的事件序列定一个值,若出现问题下次可以重复同样的系列进行排错。
    5、monkey -p com.yourpackage -v --throttle 3000 500//为每一次执行一次有效的事件后休眠3000毫秒。
     
    五、附录:
    以下内容为android系统中的keycode值,在以后的调试中会经常需要查询:
    KEYCODE_UNKNOWN=0;
    KEYCODE_SOFT_LEFT=1;
    KEYCODE_SOFT_RIGHT=2;
    KEYCODE_HOME=3;
    KEYCODE_BACK=4;
    KEYCODE_CALL=5;
    KEYCODE_ENDCALL=6;
    KEYCODE_0=7;
    KEYCODE_1=8;
    KEYCODE_2=9;
    KEYCODE_3=10;
    KEYCODE_4=11;
    KEYCODE_5=12;
    KEYCODE_6=13;
    KEYCODE_7=14;
    KEYCODE_8=15;
    KEYCODE_9=16;
    KEYCODE_STAR=17;      //-----------------------------------
    KEYCODE_POUND=18;
    KEYCODE_DPAD_UP=19;
    KEYCODE_DPAD_DOWN=20;
    KEYCODE_DPAD_LEFT=21;
    KEYCODE_DPAD_RIGHT=22;
    KEYCODE_DPAD_CENTER=23;
    KEYCODE_VOLUME_UP=24;
    KEYCODE_VOLUME_DOWN=25;
    KEYCODE_POWER=26;
    KEYCODE_CAMERA=27;
    KEYCODE_CLEAR=28;    //-----------------------------------
    KEYCODE_A=29;
    KEYCODE_B=30;
    KEYCODE_C=31;
    KEYCODE_D=32;
    KEYCODE_E=33;
    KEYCODE_F=34;
    KEYCODE_G=35;
    KEYCODE_H=36;
    KEYCODE_I=37;
    KEYCODE_J=38;
    KEYCODE_K=39;
    KEYCODE_L=40;
    KEYCODE_M=41;
    KEYCODE_N=42;
    KEYCODE_O=43;
    KEYCODE_P=44;
    KEYCODE_Q=45;
    KEYCODE_R=46;
    KEYCODE_S=47;
    KEYCODE_T=48;
    KEYCODE_U=49;
    KEYCODE_V=50;
    KEYCODE_W=51;
    KEYCODE_X=52;
    KEYCODE_Y=53;
    KEYCODE_Z=54;
    KEYCODE_COMMA=55;    //-----------------,------------------
    KEYCODE_PERIOD=56;    //-----------------.------------------
    KEYCODE_ALT_LEFT=57;
    KEYCODE_ALT_RIGHT=58;
    KEYCODE_SHIFT_LEFT=59;
    KEYCODE_SHIFT_RIGHT=60;
    KEYCODE_TAB=61;
    KEYCODE_SPACE=62;
    KEYCODE_SYM=63;
    KEYCODE_EXPLORER=64; //-----------------------------------
    KEYCODE_ENVELOPE=65;  //---------------信封--------------------
    KEYCODE_ENTER=66;   
    KEYCODE_DEL=67;
    KEYCODE_GRAVE=68;  //---------------坟墓--------------------
    KEYCODE_MINUS=69;  //---------------负--------------------
    KEYCODE_EQUALS=70;  //--------------等于(=)---------------------
    KEYCODE_LEFT_BRACKET=71;  //----------------------------
    KEYCODE_RIGHT_BRACKET=72;  //----------------------------
    KEYCODE_BACKSLASH=73;  //-------------反斜线\---------------
    KEYCODE_SEMICOLON=74;  //--------------;--------------
    KEYCODE_APOSTROPHE=75; //---------------’-------------
    KEYCODE_SLASH=76;         //--------------/?--------------
    KEYCODE_AT=77;           //------------------@---------------
    KEYCODE_NUM=78;
    KEYCODE_HEADSETHOOK=79;  //----------------------------
    KEYCODE_FOCUS=80;//*Camera*focus
    KEYCODE_PLUS=81;   //------------+----------------
    KEYCODE_MENU=82;
    KEYCODE_NOTIFICATION=83;   //----------------------------
    KEYCODE_SEARCH=84;
    KEYCODE_MEDIA_PLAY_PAUSE=85;
    KEYCODE_MEDIA_STOP=86;
    KEYCODE_MEDIA_NEXT=87;
    KEYCODE_MEDIA_PREVIOUS=88;
    KEYCODE_MEDIA_REWIND=89;  //------------倒带----------------
    KEYCODE_MEDIA_FAST_FORWARD=90;
    KEYCODE_MUTE=91;  //-----------静音-----------------

  • Android 的monkey测试及排错步骤(转自博客园)

    2011-12-20 17:56:03

    1.  环境准备:
        1。开启eclipse,并显示到Logcat界面;
        2。开启模拟器;
        3。进入shell,准备Monkey测试;
        4。准备两把屏幕尺子(方便找到测试时找到的点及一些动作的变化);
     
    2。  开始测试:
        1。在shell中输入命令(以测试com.hskj.memo为例):monkey -p com.hskj.memo -s 100 -v -v -v 500 
        (测试com.hskj.memo包,以seed为100的随机排序<设置seed方便下次进行同样事件的测试,不过要求测试的起始位置相同,比如起始位置为桌面或者为某一个Activity的某一个状态>,测试结果为第三级别的显示,即为最详细的显示)
        2。查看结果并将结果保存(包括Monkey的输出结果及eclipse里面的输出结果):
        3。分析结果(找出并标识出重要信息):
            
     
     
     
    //-------------monkey的输出结果--------------------------
     
    # monkey -p com.hskj.memo -s 100 -v -v -v 500
    :Monkey: seed=100 count=500
    :AllowPackage: com.hskj.memo
    :IncludeCategory: android.intent.category.LAUNCHER
    :IncludeCategory: android.intent.category.MONKEY
    // Selecting main activities from category android.intent.category.LAUNCHER
    //   - NOT USING main activity com.android.settings.Settings (from package com.android.settings)
    //   - NOT USING main activity com.android.contacts.DialtactsActivity (from package com.android.contacts)
    //   - NOT USING main activity com.android.contacts.ContactsListActivity (from package com.android.contacts)
    //   - NOT USING main activity com.hskj.iphonemms.ui.ConversationList (from package com.hskj.iphonemms)
    //   - NOT USING main activity com.android.calendar.LaunchActivity (from package com.android.calendar)
    //   - NOT USING main activity com.android.deskclock.DeskClockGroupActivity (from package com.android.deskclock)
    //   - NOT USING main activity com.android.systemupdater.SystemUpdate (from package com.android.systemupdater)
    //   - NOT USING main activity com.android.camera.Camera (from package com.android.camera)
    //   - NOT USING main activity com.android.browser.BrowserActivity (from package com.android.browser)
    //   - NOT USING main activity com.android.music.MusicBrowserActivity (from package com.android.music)
    //   - NOT USING main activity com.android.email.activity.Welcome (from package com.android.email)
    //   - NOT USING main activity com.hskj.iphonecamera.GalleryPicker (from package com.hskj.iphonegallery)
    //   + Using main activity com.hskj.memo.ui.MemoMain (from package com.hskj.memo)
    //   - NOT USING main activity com.android.term.Term (from package com.android.term)
    //   - NOT USING main activity com.android.development.Development (from package com.android.development)
    //   - NOT USING main activity com.hskj.iphone.voicememor.VoiceRecordActivity (from package com.hskj.iphone.voicememor)
    //   - NOT USING main activity com.hskj.iphonecalculator.Calculator (from package com.hskj.iphonecalculator)
    // Selecting main activities from category android.intent.category.MONKEY
    //   - NOT USING main activity com.android.settings.ManageApplications (from package com.android.settings)
    //   - NOT USING main activity com.android.settings.RunningServices (from package com.android.settings)
    //   - NOT USING main activity com.hskj.iphonehome.Launcher (from package com.hskj.iphonehome)
    //   - NOT USING main activity com.android.launcher.Launcher (from package com.android.launcher)
    //   - NOT USING main activity com.android.googlesearch.GoogleSearch (from package com.android.googlesearch)
    // Seeded: 100
    // Event percentages:
    //   0: 15.0%
    //   1: 10.0%
    //   2: 15.0%
    //   3: 25.0%
    //   4: 15.0%
    //   5: 2.0%
    //   6: 2.0%
    //   7: 1.0%
    //   8: 15.0%
    :Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.hskj.memo/.ui.MemoMain;end
        // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.hskj.memo/.ui.MemoMain } in package com.hskj.memo
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=1.0 y=377.0
    :Sending Pointer ACTION_UP x=1.0 y=377.0
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=104.0 y=178.0
    :Sending Pointer ACTION_UP x=104.0 y=178.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
        // activityResuming(com.hskj.iphonehome)
        // Rejecting resume of package com.hskj.iphonehome
        // Allowing start of Intent { act=android.intent.action.EDIT dat=content://com.hskj.provider.memo/memo/2 cmp=com.hskj.memo/.ui.MemoEdit } in package com.hskj.memo
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER
    :SendKey (ACTION_UP): 23    // KEYCODE_DPAD_CENTER
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=249.0 y=141.0
    :Sending Pointer ACTION_MOVE x=258.0 y=139.0
    :Sending Pointer ACTION_MOVE x=261.0 y=138.0
    :Sending Pointer ACTION_MOVE x=260.0 y=138.0
    :Sending Pointer ACTION_MOVE x=264.0 y=134.0
    :Sending Pointer ACTION_MOVE x=269.0 y=128.0
    :Sending Pointer ACTION_MOVE x=266.0 y=136.0
    :Sending Pointer ACTION_MOVE x=274.0 y=136.0
    :Sending Pointer ACTION_MOVE x=275.0 y=132.0
    :Sending Pointer ACTION_UP x=275.0 y=132.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 28    // KEYCODE_CLEAR
    :SendKey (ACTION_UP): 28    // KEYCODE_CLEAR
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 7    // KEYCODE_0
    :SendKey (ACTION_UP): 7    // KEYCODE_0
    Sleeping for 0 milliseconds
     
     
    //---------------一般由此处开始分析(即跳转到发生错误的那个Activity前的一个Activity的最后一个动作)-----------------
     
     
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 0 milliseconds
    :Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.hskj.memo/.ui.MemoMain;end
        // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.hskj.memo/.ui.MemoMain } in package com.hskj.memo
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=-4.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=2.0 y=1.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=3.0 y=0.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=1.0 y=2.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=2.0 y=3.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=4.0
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 5    // KEYCODE_CALL
    :SendKey (ACTION_UP): 5    // KEYCODE_CALL
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
        // Rejecting start of Intent { act=android.intent.action.CALL_BUTTON cmp=com.android.contacts/.DialtactsActivity } in package com.android.contacts
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=281.0 y=162.0
    :Sending Pointer ACTION_UP x=281.0 y=162.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 78    // KEYCODE_NUM
    :SendKey (ACTION_UP): 78    // KEYCODE_NUM
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 22    // KEYCODE_DPAD_RIGHT
    :SendKey (ACTION_UP): 22    // KEYCODE_DPAD_RIGHT
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 7    // KEYCODE_0
    :SendKey (ACTION_UP): 7    // KEYCODE_0
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=306.0 y=55.0
    :Sending Pointer ACTION_UP x=306.0 y=55.0
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 60    // KEYCODE_SHIFT_RIGHT
    :SendKey (ACTION_UP): 60    // KEYCODE_SHIFT_RIGHT
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=1.0 y=1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=4.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=-5.0
    :SendKey (ACTION_DOWN): 22    // KEYCODE_DPAD_RIGHT
    :SendKey (ACTION_UP): 22    // KEYCODE_DPAD_RIGHT
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_MOVE x=2.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=2.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=0.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=4.0
    :SendKey (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
    :SendKey (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
    Sleeping for 0 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=99.0 y=260.0
    :Sending Pointer ACTION_UP x=99.0 y=260.0
    Sleeping for 0 milliseconds
    :Sending Pointer ACTION_DOWN x=12.0 y=179.0
    :Sending Pointer ACTION_UP x=12.0 y=179.0
     
     
    //-----------------重点:出错错误信息(往上查找出现错误前执行的事件,一般从出现错误的Activity之前的一个Activity的最后一个动作查找)-----------------
     
     
    // CRASH: com.hskj.memo (pid 430)
    // Short Msg: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    // Long Msg: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    // Build Label: android:cyanogen/cyanogen/generic/:2.1-update1/ECLAIR/eng.root.20101029.152625:eng/test-keys
    // Build Changelist: -1
    // Build Time: 1288337269
    // ID:
    // Tag: AndroidRuntime
    // android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    //   at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
    //   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
    //   at android.app.Activity.startActivityForResult(Activity.java:2749)
    //   at android.app.Activity.startActivity(Activity.java:2855)
    //   at com.hskj.memo.ui.MemoEdit.onClick(MemoEdit.java:183)
    //   at android.view.View.performClick(View.java:2364)
    //   at android.view.View.onTouchEvent(View.java:4198)
    //   at android.widget.TextView.onTouchEvent(TextView.java:6543)
    //   at android.view.View.dispatchTouchEvent(View.java:3728)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
    //   at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
    //   at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
    //   at com.hskj.iphone.app.IphoneMenuBottomPopActivity.dispatchTouchEvent(IphoneMenuBottomPopActivity.java:104)
    //   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
    //   at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
    //   at android.os.Handler.dispatchMessage(Handler.java:99)
    //   at android.os.Looper.loop(Looper.java:123)
    //   at android.app.ActivityThread.main(ActivityThread.java:4363)
    //   at java.lang.reflect.Method.invokeNative(Method.java:-2)
    //   at java.lang.reflect.Method.invoke(Method.java:521)
    //   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    //   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    //   at dalvik.system.NativeStart.main(NativeStart.java:-2)
     
    ** Monkey aborted due to error.
    Events injected: 92
    :Dropped: keys=0 pointers=1 trackballs=0 flips=0
    ## Network stats: elapsed time=15962ms (15962ms mobile, 0ms wifi, 0ms not connected)
    ** System appears to have crashed at event 92 of 500 using seed 100
    #
     
     
    //------------------eclipse中LogCat的输出结果-----------------------------------
     
     
    11-04 02:03:51.544: DEBUG/dalvikvm(314): GC freed 4448 objects / 297008 bytes in 80ms
    11-04 02:03:51.544: INFO/dalvikvm(314): Uncaught exception thrown by finalizer (will be discarded):
    11-04 02:03:51.544: INFO/dalvikvm(314): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43a326f8 on panel that has not been deactivated or closed
    11-04 02:03:51.554: INFO/dalvikvm(314):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:599)
    11-04 02:03:51.554: INFO/dalvikvm(314):     at dalvik.system.NativeStart.run(Native Method)
    11-04 02:03:57.534: DEBUG/dalvikvm(314): GC freed 18199 objects / 925728 bytes in 85ms
    11-04 02:04:01.983: DEBUG/dalvikvm(314): GC freed 13953 objects / 660984 bytes in 82ms
    11-04 02:04:04.993: DEBUG/libEGL(423): Setting TLS: 0xafe43b74 to 0xac70a2ec
    11-04 02:04:05.554: DEBUG/AndroidRuntime(423): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    11-04 02:04:05.564: DEBUG/AndroidRuntime(423): CheckJNI is ON
    11-04 02:04:06.284: DEBUG/AndroidRuntime(423): --- registering native functions ---
    11-04 02:04:06.804: DEBUG/dalvikvm(314): GC freed 12275 objects / 582016 bytes in 148ms
    11-04 02:04:06.963: DEBUG/ddm-heap(423): Got feature list request
    11-04 02:04:09.433: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.hskj.memo/.ui.MemoMain }
    11-04 02:04:09.574: DEBUG/LifeCryle(314): Launcher onSaveInstanceState!
    11-04 02:04:09.574: DEBUG/LifeCryle(314): Launcher onPause!
    11-04 02:04:10.228: INFO/ActivityManager(117): Start proc com.hskj.memo for activity com.hskj.memo/.ui.MemoMain: pid=430 uid=10019 gids={}
    11-04 02:04:10.924: DEBUG/ddm-heap(430): Got feature list request
    11-04 02:04:12.914: INFO/ActivityThread(430): Publishing provider com.hskj.provider.memo: com.hskj.memo.provider.MemoProvider
    11-04 02:04:13.403: DEBUG/MemoListView(430): MemoListView(Context context, AttributeSet attrs) mMaximumVelocity:4000
    11-04 02:04:13.654: DEBUG/mListView.getChildCount()(430): mListView.getChildCount()=0
    11-04 02:04:14.014: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:04:14.033: DEBUG/MemoListView(430): onTouchEvent case MotionEvent.ACTION_DOWN:
    11-04 02:04:14.103: DEBUG/MemoMainListAdapter(430): formatCalendar days:0
    11-04 02:04:14.123: DEBUG/MemoMainListAdapter(430): formatCalendar days:0
    11-04 02:04:14.153: DEBUG/MemoMainListAdapter(430): formatCalendar days:0
    11-04 02:04:14.173: DEBUG/MemoMainListAdapter(430): formatCalendar days:0
    11-04 02:04:14.193: DEBUG/MemoMainListAdapter(430): formatCalendar days:0
    11-04 02:04:14.363: INFO/ActivityManager(117): Displayed activity com.hskj.memo/.ui.MemoMain: 4769 ms (total 4769 ms)
    11-04 02:04:14.373: DEBUG/MemoListView(430): onTouchEvent case MotionEvent.ACTION_UP:
    11-04 02:04:14.383: DEBUG/MemoListView(430): onTouchEvent case MotionEvent.ACTION_UP:   Math.abs(velocityX):0---Math.abs(velocityY):0
    11-04 02:04:14.434: DEBUG/MemoListView(430): onTouchEvent case MotionEvent.ACTION_DOWN:
    11-04 02:04:14.794: DEBUG/MemoListView(430): onTouchEvent case MotionEvent.ACTION_UP:
    11-04 02:04:14.803: DEBUG/MemoListView(430): onTouchEvent case MotionEvent.ACTION_UP:   Math.abs(velocityX):0---Math.abs(velocityY):0
    11-04 02:04:15.243: WARN/KeyCharacterMap(314): No keyboard for id 0
    11-04 02:04:15.253: WARN/KeyCharacterMap(314): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    11-04 02:04:15.253: DEBUG/IphoneLauncher(314): onKeyDown!
    11-04 02:04:15.403: DEBUG/LifeCryle(314): Launcher onStop!
    11-04 02:04:15.504: DEBUG/MemoProvider(430): getType uri = content://com.hskj.provider.memo/memo/2, match =2
    11-04 02:04:15.514: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.EDIT dat=content://com.hskj.provider.memo/memo/2 cmp=com.hskj.memo/.ui.MemoEdit }
    11-04 02:04:15.544: WARN/KeyCharacterMap(430): No keyboard for id 0
    11-04 02:04:15.553: WARN/KeyCharacterMap(430): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    11-04 02:04:15.734: DEBUG/dalvikvm(430): GC freed 2584 objects / 153536 bytes in 93ms
    11-04 02:04:15.834: DEBUG/LifeCryle(314): Launcher onDestroy!
    11-04 02:04:15.904: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:15.924: DEBUG/IphoneHomeLoaders(314): aborting loaders
    11-04 02:04:16.133: DEBUG/IphoneEditText(430): beforeTextChanged cancelShow()
    11-04 02:04:16.143: DEBUG/IphoneEditText(430): beforeTextChanged start: 0after: 39count: 0
    11-04 02:04:16.143: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:16.143: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 0selEnd: 0
    11-04 02:04:16.263: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:16.263: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 22selEnd: 22
    11-04 02:04:16.263: WARN/KeyCharacterMap(430): No keyboard for id 0
    11-04 02:04:16.273: WARN/KeyCharacterMap(430): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    11-04 02:04:16.464: DEBUG/IphoneEditText(430): onWindowFocusChanged
    11-04 02:04:16.484: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:16.484: DEBUG/PinyinIME(171): onStartInput  ccontentType: 147457 Restarting:false
    11-04 02:04:16.644: DEBUG/PinyinIME(171): onStartInputView  contentType: 147457 Restarting:false
    11-04 02:04:16.854: INFO/ActivityManager(117): Displayed activity com.hskj.memo/.ui.MemoEdit: 1272 ms (total 1272 ms)
    11-04 02:04:16.934: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:16.943: DEBUG/ViewFlipper(171): updateRunning() mVisible=true, mStarted=false, mUserPresent=true, mRunning=false
    11-04 02:04:16.943: DEBUG/ViewFlipper(171): updateRunning() mVisible=true, mStarted=false, mUserPresent=true, mRunning=false
    11-04 02:04:16.978: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 26selEnd: 26
    11-04 02:04:17.464: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:17.464: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 29selEnd: 29
    11-04 02:04:17.664: DEBUG/IphoneEditText(430): onTouchEvent x = 249, y = 39
    11-04 02:04:17.664: DEBUG/IphoneEditText(430): action = 0
    11-04 02:04:17.674: DEBUG/IphoneEditText(430): mStatus.hasSelection = false
    11-04 02:04:17.693: DEBUG/IphoneEditText(430): onTouchEvent x = 258, y = 37
    11-04 02:04:17.693: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.724: DEBUG/IphoneEditText(430): onTouchEvent x = 261, y = 36
    11-04 02:04:17.734: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.754: DEBUG/IphoneEditText(430): onTouchEvent x = 260, y = 36
    11-04 02:04:17.754: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.774: DEBUG/IphoneEditText(430): onTouchEvent x = 264, y = 32
    11-04 02:04:17.784: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.804: DEBUG/IphoneEditText(430): onTouchEvent x = 269, y = 26
    11-04 02:04:17.814: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.834: DEBUG/IphoneEditText(430): onTouchEvent x = 266, y = 34
    11-04 02:04:17.834: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.864: DEBUG/IphoneEditText(430): onTouchEvent x = 274, y = 34
    11-04 02:04:17.864: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.893: DEBUG/IphoneEditText(430): onTouchEvent x = 275, y = 30
    11-04 02:04:17.893: DEBUG/IphoneEditText(430): action = 2
    11-04 02:04:17.914: DEBUG/IphoneEditText(430): onTouchEvent x = 275, y = 30
    11-04 02:04:17.923: DEBUG/IphoneEditText(430): action = 1
    11-04 02:04:17.923: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:17.934: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 26selEnd: 26
    11-04 02:04:17.944: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:17.953: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 29selEnd: 29
    11-04 02:04:17.974: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:17.983: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 26selEnd: 26
    11-04 02:04:18.103: DEBUG/IphoneEditText(430): beforeTextChanged cancelShow()
    11-04 02:04:18.103: DEBUG/IphoneEditText(430): beforeTextChanged start: 26after: 1count: 0
    11-04 02:04:18.103: DEBUG/MemoEdit(430): EdtContentTextWatcher.onTextChanged()  str:5+=    szdmj udfodePPL K
    11-04 02:04:18.103: DEBUG/MemoEdit(430): [L00
    11-04 02:04:18.103: DEBUG/MemoEdit(430): WX          ---s.length:40---split array count:3
    11-04 02:04:18.133: DEBUG/MemoEdit(430): edtContentTextWatcher.onTextChanged savaMemo()
    11-04 02:04:18.193: DEBUG/MemoEdit(430): savaMemo nextMemoId = 3
    11-04 02:04:18.263: DEBUG/MemoMainListAdapter(430): onContentChanged
    11-04 02:04:18.273: DEBUG/MemoMain(430): OnContentChangedListener.onContentChanged()
    11-04 02:04:18.293: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:18.293: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 32selEnd: 32
    11-04 02:04:18.313: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.hskj.memo/.ui.MemoMain }
    11-04 02:04:18.574: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:18.584: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 27selEnd: 27
    11-04 02:04:18.594: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:18.604: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 4selEnd: 4
    11-04 02:04:18.754: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:18.754: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:18.754: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:04:18.764: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:04:19.234: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:19.243: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 22selEnd: 22
    11-04 02:04:19.257: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:19.263: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 27selEnd: 27
    11-04 02:04:19.273: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:19.273: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:19.273: DEBUG/PinyinIME(171): onStartInput  ccontentType: 147457 Restarting:false
    11-04 02:04:19.283: DEBUG/PinyinIME(171): onStartInputView  contentType: 147457 Restarting:false
    11-04 02:04:19.434: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:19.470: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 28selEnd: 28
    11-04 02:04:19.473: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:19.473: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 29selEnd: 29
    11-04 02:04:19.493: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:19.493: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 30selEnd: 30
    11-04 02:04:19.493: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:19.493: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 31selEnd: 31
    11-04 02:04:19.604: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:19.604: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:19.614: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:04:19.624: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:04:20.063: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.CALL_BUTTON flg=0x10000000 cmp=com.android.contacts/.DialtactsActivity }
    11-04 02:04:20.163: DEBUG/IphoneEditText(430): onTouchEvent x = 281, y = 255
    11-04 02:04:20.173: DEBUG/IphoneEditText(430): action = 0
    11-04 02:04:20.183: DEBUG/IphoneEditText(430): mStatus.hasSelection = false
    11-04 02:04:20.213: DEBUG/IphoneEditText(430): onTouchEvent x = 281, y = 255
    11-04 02:04:20.223: DEBUG/IphoneEditText(430): action = 1
    11-04 02:04:20.233: DEBUG/IphoneMenuPopupWindow(430): popWindowWidth:120
    11-04 02:04:20.233: DEBUG/IphoneMenuPopupWindow(430): popWindowHeight:59
    11-04 02:04:20.243: DEBUG/IphoneMenuPopupWindow(430): before fixed x:281
    11-04 02:04:20.243: DEBUG/IphoneMenuPopupWindow(430): after fixed x:200
    11-04 02:04:20.243: DEBUG/IphoneMenuPopupWindow(430): before fixed y:162
    11-04 02:04:20.253: DEBUG/IphoneMenuPopupWindow(430): after fixed y:98
    11-04 02:04:20.253: DEBUG/IphoneMenuPopupWindow(430): setArrowMenuBackground:
    11-04 02:04:20.253: DEBUG/IphoneMenuPopupWindow(430): touchAndShowOffset:81
    11-04 02:04:20.283: DEBUG/IphoneMenuPopupWindow(430): when i = 0 hadFindArrowMenuPosition = false
    11-04 02:04:20.283: DEBUG/IphoneMenuPopupWindow(430): childWidth = 63
    11-04 02:04:20.293: DEBUG/IphoneMenuPopupWindow(430): touchAndShowOffset - childWidth = 18
    11-04 02:04:20.313: DEBUG/IphoneMenuPopupWindow(430): when i = 1 hadFindArrowMenuPosition = false
    11-04 02:04:20.313: DEBUG/IphoneMenuPopupWindow(430): childWidth = 63
    11-04 02:04:20.323: DEBUG/IphoneMenuPopupWindow(430): touchAndShowOffset - childWidth = -45
    11-04 02:04:20.323: DEBUG/IphoneMenuPopupWindow(430): i == menuCount- 1
    11-04 02:04:20.353: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:20.363: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 22selEnd: 22
    11-04 02:04:20.373: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:20.373: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:20.373: DEBUG/PinyinIME(171): onStartInput  ccontentType: 147457 Restarting:false
    11-04 02:04:20.383: DEBUG/PinyinIME(171): onStartInputView  contentType: 147457 Restarting:false
    11-04 02:04:21.003: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:21.013: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 40selEnd: 40
    11-04 02:04:21.193: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:21.193: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:21.193: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:04:21.223: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:04:21.604: DEBUG/IphoneMenuPopupWindow(430): updateIphoneMenuPopupWindow dismiss:
    11-04 02:04:21.614: DEBUG/IphoneEditText(430): onTouchEvent x = 306, y = 148
    11-04 02:04:21.614: DEBUG/IphoneEditText(430): action = 0
    11-04 02:04:21.614: DEBUG/IphoneEditText(430): mStatus.hasSelection = false
    11-04 02:04:21.643: DEBUG/IphoneEditText(430): onTouchEvent x = 306, y = 148
    11-04 02:04:21.643: DEBUG/IphoneEditText(430): action = 1
    11-04 02:04:21.654: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:21.654: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 22selEnd: 22
    11-04 02:04:21.664: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:21.664: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:21.674: DEBUG/PinyinIME(171): onStartInput  ccontentType: 147457 Restarting:false
    11-04 02:04:21.684: DEBUG/PinyinIME(171): onStartInputView  contentType: 147457 Restarting:false
    11-04 02:04:22.243: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:22.268: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 21selEnd: 21
    11-04 02:04:22.303: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:22.303: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 20selEnd: 20
    11-04 02:04:22.313: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:22.313: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 19selEnd: 19
    11-04 02:04:22.323: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:22.333: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 18selEnd: 18
    11-04 02:04:22.393: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:22.393: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 27selEnd: 27
    11-04 02:04:22.443: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:22.443: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 32selEnd: 32
    11-04 02:04:22.534: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:22.534: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:22.534: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:04:22.544: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:04:23.153: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:23.153: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 40selEnd: 40
    11-04 02:04:23.163: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:23.163: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 27selEnd: 27
    11-04 02:04:23.173: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:23.183: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 4selEnd: 4
    11-04 02:04:23.298: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:23.303: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:23.303: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:04:23.323: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:04:24.373: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:24.383: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 22selEnd: 22
    11-04 02:04:24.393: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:24.408: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 27selEnd: 27
    11-04 02:04:24.413: DEBUG/IphoneEditText(430): onSelectionChanged
    11-04 02:04:24.423: DEBUG/IphoneEditText(430): onSelectionChanged selStart: 32selEnd: 32
    11-04 02:04:24.433: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:04:24.433: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:04:24.433: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:04:24.443: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:04:24.924: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    11-04 02:04:24.944: DEBUG/AndroidRuntime(430): Shutting down VM
    11-04 02:04:24.953: WARN/dalvikvm(430): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
     
     
    //---------------此处发生错误---------------------
     
    11-04 02:04:24.953: ERROR/AndroidRuntime(430): Uncaught handler: thread main exiting due to uncaught exception
    11-04 02:04:24.973: ERROR/AndroidRuntime(430): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.app.Activity.startActivityForResult(Activity.java:2749)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.app.Activity.startActivity(Activity.java:2855)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at com.hskj.memo.ui.MemoEdit.onClick(MemoEdit.java:183)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.View.performClick(View.java:2364)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.View.onTouchEvent(View.java:4198)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.widget.TextView.onTouchEvent(TextView.java:6543)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.View.dispatchTouchEvent(View.java:3728)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at com.hskj.iphone.app.IphoneMenuBottomPopActivity.dispatchTouchEvent(IphoneMenuBottomPopActivity.java:104)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.os.Handler.dispatchMessage(Handler.java:99)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.os.Looper.loop(Looper.java:123)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at android.app.ActivityThread.main(ActivityThread.java:4363)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at java.lang.reflect.Method.invokeNative(Native Method)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at java.lang.reflect.Method.invoke(Method.java:521)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    11-04 02:04:24.973: ERROR/AndroidRuntime(430):     at dalvik.system.NativeStart.main(Native Method)
    11-04 02:04:24.993: INFO/Process(117): Sending signal. PID: 430 SIG: 3
    11-04 02:04:24.993: INFO/dalvikvm(430): threadid=7: reacting to signal 3
    11-04 02:04:25.023: INFO/dalvikvm(430): Wrote stack trace to '/data/anr/traces.txt'
    11-04 02:04:25.083: ERROR/ActivityThread(117): Failed to find provider info for android.server.checkin
    11-04 02:04:25.083: ERROR/Checkin(117): Error reporting crash
    11-04 02:04:25.283: DEBUG/dalvikvm(117): GC freed 18475 objects / 904864 bytes in 131ms
    11-04 02:04:25.343: WARN/WindowManager(117): No window to dispatch pointer action 1
    11-04 02:04:25.494: INFO/AndroidRuntime(423): AndroidRuntime onExit calling exit(92)
    11-04 02:04:26.043: DEBUG/dalvikvm(314): GC freed 3499 objects / 171848 bytes in 432ms
     
     
     
    3。  Monkey测试出现错误后一般查错步骤:
        1。找到是哪个monkey的哪个动作出的错:
            1。查看monkey出错前的一些事件动作,并手动执行该动作。
            2。若还不能找出,可以使用命令monkey -p com.hskj.memo -s 100 -v -v -v --throttle 2000 500
     
    ///--------------Monkey中输出的信息----------------
    # monkey -p com.hskj.memo -s 100 -v -v -v --throttle 3000 500
    :Monkey: seed=100 count=500
    :AllowPackage: com.hskj.memo
    :IncludeCategory: android.intent.category.LAUNCHER
    :IncludeCategory: android.intent.category.MONKEY
    // Selecting main activities from category android.intent.category.LAUNCHER
    //   - NOT USING main activity com.android.settings.Settings (from package com.android.settings)
    //   - NOT USING main activity com.android.contacts.DialtactsActivity (from package com.android.contacts)
    //   - NOT USING main activity com.android.contacts.ContactsListActivity (from package com.android.contacts)
    //   - NOT USING main activity com.hskj.iphonemms.ui.ConversationList (from package com.hskj.iphonemms)
    //   - NOT USING main activity com.android.calendar.LaunchActivity (from package com.android.calendar)
    //   - NOT USING main activity com.android.deskclock.DeskClockGroupActivity (from package com.android.deskclock)
    //   - NOT USING main activity com.android.systemupdater.SystemUpdate (from package com.android.systemupdater)
    //   - NOT USING main activity com.android.camera.Camera (from package com.android.camera)
    //   - NOT USING main activity com.android.browser.BrowserActivity (from package com.android.browser)
    //   - NOT USING main activity com.android.music.MusicBrowserActivity (from package com.android.music)
    //   - NOT USING main activity com.android.email.activity.Welcome (from package com.android.email)
    //   - NOT USING main activity com.hskj.iphonecamera.GalleryPicker (from package com.hskj.iphonegallery)
    //   + Using main activity com.hskj.memo.ui.MemoMain (from package com.hskj.memo)
    //   - NOT USING main activity com.android.term.Term (from package com.android.term)
    //   - NOT USING main activity com.android.development.Development (from package com.android.development)
    //   - NOT USING main activity com.hskj.iphone.voicememor.VoiceRecordActivity (from package com.hskj.iphone.voicememor)
    //   - NOT USING main activity com.hskj.iphonecalculator.Calculator (from package com.hskj.iphonecalculator)
    // Selecting main activities from category android.intent.category.MONKEY
    //   - NOT USING main activity com.android.settings.ManageApplications (from package com.android.settings)
    //   - NOT USING main activity com.android.settings.RunningServices (from package com.android.settings)
    //   - NOT USING main activity com.hskj.iphonehome.Launcher (from package com.hskj.iphonehome)
    //   - NOT USING main activity com.android.launcher.Launcher (from package com.android.launcher)
    //   - NOT USING main activity com.android.googlesearch.GoogleSearch (from package com.android.googlesearch)
    // Seeded: 100
    // Event percentages:
    //   0: 15.0%
    //   1: 10.0%
    //   2: 15.0%
    //   3: 25.0%
    //   4: 15.0%
    //   5: 2.0%
    //   6: 2.0%
    //   7: 1.0%
    //   8: 15.0%
    :Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.hskj.memo/.ui.MemoMain;end
        // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.hskj.memo/.ui.MemoMain } in package com.hskj.memo
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 3000 milliseconds                     //----------此时每经过一个动作就会有3秒钟的停顿--------------
    :Sending Pointer ACTION_DOWN x=1.0 y=377.0
    :Sending Pointer ACTION_UP x=1.0 y=377.0
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_DOWN x=104.0 y=178.0
    :Sending Pointer ACTION_UP x=104.0 y=178.0
    Sleeping for 3000 milliseconds
        // activityResuming(com.hskj.iphonehome)
        // Rejecting resume of package com.hskj.iphonehome
        // Allowing start of Intent { act=android.intent.action.EDIT dat=content://com.hskj.provider.memo/memo/3 cmp=com.hskj.memo/.ui.MemoEdit } in package com.hskj.memo
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER
    :SendKey (ACTION_UP): 23    // KEYCODE_DPAD_CENTER
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_DOWN x=249.0 y=141.0
    :Sending Pointer ACTION_MOVE x=258.0 y=139.0
    :Sending Pointer ACTION_MOVE x=261.0 y=138.0
    :Sending Pointer ACTION_MOVE x=260.0 y=138.0
    :Sending Pointer ACTION_MOVE x=264.0 y=134.0
    :Sending Pointer ACTION_MOVE x=269.0 y=128.0
    :Sending Pointer ACTION_MOVE x=266.0 y=136.0
    :Sending Pointer ACTION_MOVE x=274.0 y=136.0
    :Sending Pointer ACTION_MOVE x=275.0 y=132.0
    :Sending Pointer ACTION_UP x=275.0 y=132.0
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 28    // KEYCODE_CLEAR
    :SendKey (ACTION_UP): 28    // KEYCODE_CLEAR
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 7    // KEYCODE_0
    :SendKey (ACTION_UP): 7    // KEYCODE_0
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 3000 milliseconds
    :Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.hskj.memo/.ui.MemoMain;end
        // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.hskj.memo/.ui.MemoMain } in package com.hskj.memo
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_MOVE x=-4.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=2.0 y=1.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=3.0 y=0.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=1.0 y=2.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=2.0 y=3.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=4.0
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 5    // KEYCODE_CALL
    :SendKey (ACTION_UP): 5    // KEYCODE_CALL
        // Rejecting start of Intent { act=android.intent.action.CALL_BUTTON cmp=com.android.contacts/.DialtactsActivity } in package com.android.contacts
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_DOWN x=281.0 y=162.0
    :Sending Pointer ACTION_UP x=281.0 y=162.0
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 78    // KEYCODE_NUM
    :SendKey (ACTION_UP): 78    // KEYCODE_NUM
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 20    // KEYCODE_DPAD_DOWN
    :SendKey (ACTION_UP): 20    // KEYCODE_DPAD_DOWN
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 22    // KEYCODE_DPAD_RIGHT
    :SendKey (ACTION_UP): 22    // KEYCODE_DPAD_RIGHT
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 7    // KEYCODE_0
    :SendKey (ACTION_UP): 7    // KEYCODE_0
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_DOWN x=306.0 y=55.0
    :Sending Pointer ACTION_UP x=306.0 y=55.0
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 60    // KEYCODE_SHIFT_RIGHT
    :SendKey (ACTION_UP): 60    // KEYCODE_SHIFT_RIGHT
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_MOVE x=-4.0 y=2.0
    :Sending Pointer ACTION_MOVE x=1.0 y=1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=0.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=4.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=-2.0
    :Sending Pointer ACTION_MOVE x=4.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=-5.0
    :SendKey (ACTION_DOWN): 22    // KEYCODE_DPAD_RIGHT
    :SendKey (ACTION_UP): 22    // KEYCODE_DPAD_RIGHT
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_MOVE x=2.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=-5.0
    :Sending Pointer ACTION_MOVE x=-2.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=-1.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=2.0 y=-1.0
    :Sending Pointer ACTION_MOVE x=-3.0 y=0.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=4.0 y=1.0
    :Sending Pointer ACTION_MOVE x=3.0 y=-4.0
    :Sending Pointer ACTION_MOVE x=-4.0 y=4.0
    :SendKey (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
    :SendKey (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
    Sleeping for 3000 milliseconds
    :SendKey (ACTION_DOWN): 82    // KEYCODE_MENU
    :SendKey (ACTION_UP): 82    // KEYCODE_MENU
    Sleeping for 3000 milliseconds
    :Sending Pointer ACTION_DOWN x=99.0 y=260.0
    :Sending Pointer ACTION_UP x=99.0 y=260.0
    Sleeping for 3000 milliseconds
    // CRASH: com.hskj.memo (pid 441)
    // Short Msg: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    // Long Msg: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    // Build Label: android:cyanogen/cyanogen/generic/:2.1-update1/ECLAIR/eng.root.20101029.152625:eng/test-keys
    // Build Changelist: -1
    // Build Time: 1288337269
    // ID:
    // Tag: AndroidRuntime
    // android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO dat=mailto: (has extras) }
    //   at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
    //   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
    //   at android.app.Activity.startActivityForResult(Activity.java:2749)
    //   at android.app.Activity.startActivity(Activity.java:2855)
    //   at com.hskj.memo.ui.MemoEdit.onClick(MemoEdit.java:183)
    //   at android.view.View.performClick(View.java:2364)
    //   at android.view.View.onTouchEvent(View.java:4198)
    //   at android.widget.TextView.onTouchEvent(TextView.java:6543)
    //   at android.view.View.dispatchTouchEvent(View.java:3728)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
    //   at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
    //   at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
    //   at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
    //   at com.hskj.iphone.app.IphoneMenuBottomPopActivity.dispatchTouchEvent(IphoneMenuBottomPopActivity.java:104)
    //   at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
    //   at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
    //   at android.os.Handler.dispatchMessage(Handler.java:99)
    //   at android.os.Looper.loop(Looper.java:123)
    //   at android.app.ActivityThread.main(ActivityThread.java:4363)
    //   at java.lang.reflect.Method.invokeNative(Method.java:-2)
    //   at java.lang.reflect.Method.invoke(Method.java:521)
    //   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
    //   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
    //   at dalvik.system.NativeStart.main(NativeStart.java:-2)
     
    ** Monkey aborted due to error.
    Events injected: 90
    :Dropped: keys=0 pointers=0 trackballs=0 flips=0
    ## Network stats: elapsed time=87504ms (87504ms mobile, 0ms wifi, 0ms not connected)
    ** System appears to have crashed at event 90 of 500 using seed 100
    #
     
     
    //-----------------eclipse中的LogCat的输出信息----------------------
     
    11-04 02:44:38.494: DEBUG/libEGL(451): Setting TLS: 0xafe43b74 to 0xac70a2ec
    11-04 02:44:38.693: DEBUG/AndroidRuntime(451): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
    11-04 02:44:38.693: DEBUG/AndroidRuntime(451): CheckJNI is ON
    11-04 02:44:38.913: DEBUG/AndroidRuntime(451): --- registering native functions ---
    11-04 02:44:39.244: DEBUG/ddm-heap(451): Got feature list request
    11-04 02:44:40.943: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.hskj.memo/.ui.MemoMain }
    11-04 02:44:40.963: DEBUG/LifeCryle(314): Launcher onSaveInstanceState!
    11-04 02:44:40.963: DEBUG/LifeCryle(314): Launcher onPause!
    11-04 02:44:41.114: DEBUG/MemoListView(441): MemoListView(Context context, AttributeSet attrs) mMaximumVelocity:4000
    11-04 02:44:41.244: DEBUG/mListView.getChildCount()(441): mListView.getChildCount()=0
    11-04 02:44:41.474: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:44:41.574: DEBUG/MemoMainListAdapter(441): formatCalendar days:0
    11-04 02:44:41.593: DEBUG/MemoMainListAdapter(441): formatCalendar days:0
    11-04 02:44:41.643: DEBUG/MemoMainListAdapter(441): formatCalendar days:0
    11-04 02:44:41.663: DEBUG/MemoMainListAdapter(441): formatCalendar days:0
    11-04 02:44:41.683: DEBUG/MemoMainListAdapter(441): formatCalendar days:0
    11-04 02:44:41.793: INFO/ActivityManager(117): Displayed activity com.hskj.memo/.ui.MemoMain: 824 ms (total 824 ms)
    11-04 02:44:41.823: DEBUG/LifeCryle(314): Launcher onStop!
    11-04 02:44:41.843: DEBUG/LifeCryle(314): Launcher onDestroy!
    11-04 02:44:41.843: DEBUG/IphoneHomeLoaders(314): aborting loaders
    11-04 02:44:44.083: WARN/KeyCharacterMap(441): No keyboard for id 0
    11-04 02:44:44.083: WARN/KeyCharacterMap(441): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    11-04 02:44:46.963: DEBUG/dalvikvm(314): GC freed 1549 objects / 89656 bytes in 140ms
    11-04 02:44:47.003: INFO/dalvikvm(314): Uncaught exception thrown by finalizer (will be discarded):
    11-04 02:44:47.013: INFO/dalvikvm(314): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@43a0e918 on panel that has not been deactivated or closed
    11-04 02:44:47.013: INFO/dalvikvm(314):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:599)
    11-04 02:44:47.013: INFO/dalvikvm(314):     at dalvik.system.NativeStart.run(Native Method)
    11-04 02:44:47.174: DEBUG/MemoListView(441): onTouchEvent case MotionEvent.ACTION_DOWN:
    11-04 02:44:47.214: DEBUG/MemoListView(441): onTouchEvent case MotionEvent.ACTION_UP:
    11-04 02:44:47.214: DEBUG/MemoListView(441): onTouchEvent case MotionEvent.ACTION_UP:   Math.abs(velocityX):0---Math.abs(velocityY):0
    11-04 02:44:50.234: DEBUG/MemoListView(441): onTouchEvent case MotionEvent.ACTION_DOWN:
    11-04 02:44:50.304: DEBUG/MemoListView(441): onTouchEvent case MotionEvent.ACTION_UP:
    11-04 02:44:50.314: DEBUG/MemoListView(441): onTouchEvent case MotionEvent.ACTION_UP:   Math.abs(velocityX):0---Math.abs(velocityY):0
    11-04 02:44:50.883: DEBUG/MemoProvider(441): getType uri = content://com.hskj.provider.memo/memo/3, match =2
    11-04 02:44:50.903: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.EDIT dat=content://com.hskj.provider.memo/memo/3 cmp=com.hskj.memo/.ui.MemoEdit }
    11-04 02:44:51.094: DEBUG/dalvikvm(441): GC freed 1717 objects / 82024 bytes in 63ms
    11-04 02:44:51.134: INFO/dalvikvm(441): Uncaught exception thrown by finalizer (will be discarded):
    11-04 02:44:51.144: INFO/dalvikvm(441): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@439b2be8 on memos that has not been deactivated or closed
    11-04 02:44:51.144: INFO/dalvikvm(441):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:599)
    11-04 02:44:51.144: INFO/dalvikvm(441):     at dalvik.system.NativeStart.run(Native Method)
    11-04 02:44:51.274: DEBUG/IphoneEditText(441): onSelectionChanged
    11-04 02:44:51.444: DEBUG/IphoneEditText(441): beforeTextChanged cancelShow()
    11-04 02:44:51.444: DEBUG/IphoneEditText(441): beforeTextChanged start: 0after: 3count: 0
    11-04 02:44:51.454: DEBUG/IphoneEditText(441): onSelectionChanged
    11-04 02:44:51.454: DEBUG/IphoneEditText(441): onSelectionChanged selStart: 0selEnd: 0
    11-04 02:44:51.524: DEBUG/IphoneEditText(441): onSelectionChanged
    11-04 02:44:51.534: DEBUG/IphoneEditText(441): onSelectionChanged selStart: 3selEnd: 3
    11-04 02:44:51.544: DEBUG/IphoneEditText(441): onWindowFocusChanged
    11-04 02:44:51.564: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:44:51.564: DEBUG/PinyinIME(171): onStartInput  ccontentType: 147457 Restarting:false
    11-04 02:44:51.866: INFO/ActivityManager(117): Displayed activity com.hskj.memo/.ui.MemoEdit: 922 ms (total 922 ms)
    11-04 02:44:53.344: WARN/KeyCharacterMap(441): No keyboard for id 0
    11-04 02:44:53.344: WARN/KeyCharacterMap(441): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    11-04 02:44:56.574: DEBUG/PinyinIME(171): onStartInputView  contentType: 147457 Restarting:false
    11-04 02:44:56.594: DEBUG/ViewFlipper(171): updateRunning() mVisible=true, mStarted=false, mUserPresent=true, mRunning=false
    11-04 02:44:56.594: DEBUG/ViewFlipper(171): updateRunning() mVisible=true, mStarted=false, mUserPresent=true, mRunning=false
    11-04 02:44:59.813: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:44:59.813: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:44:59.813: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:44:59.823: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:45:05.883: DEBUG/IphoneEditText(441): onTouchEvent x = 249, y = 234
    11-04 02:45:05.883: DEBUG/IphoneEditText(441): action = 0
    11-04 02:45:05.893: DEBUG/IphoneEditText(441): mStatus.hasSelection = false
    11-04 02:45:05.983: DEBUG/IphoneEditText(441): onTouchEvent x = 258, y = 232
    11-04 02:45:05.993: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.013: DEBUG/IphoneEditText(441): onTouchEvent x = 261, y = 231
    11-04 02:45:06.033: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.053: DEBUG/IphoneEditText(441): onTouchEvent x = 260, y = 231
    11-04 02:45:06.053: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.074: DEBUG/IphoneEditText(441): onTouchEvent x = 264, y = 227
    11-04 02:45:06.074: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.104: DEBUG/IphoneEditText(441): onTouchEvent x = 269, y = 221
    11-04 02:45:06.104: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.134: DEBUG/IphoneEditText(441): onTouchEvent x = 266, y = 229
    11-04 02:45:06.144: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.164: DEBUG/IphoneEditText(441): onTouchEvent x = 274, y = 229
    11-04 02:45:06.164: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.204: DEBUG/IphoneEditText(441): onTouchEvent x = 275, y = 225
    11-04 02:45:06.215: DEBUG/IphoneEditText(441): action = 2
    11-04 02:45:06.224: DEBUG/IphoneEditText(441): onTouchEvent x = 275, y = 225
    11-04 02:45:06.234: DEBUG/IphoneEditText(441): action = 1
    11-04 02:45:06.244: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:06.244: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:06.244: DEBUG/PinyinIME(171): onStartInput  ccontentType: 147457 Restarting:false
    11-04 02:45:06.254: DEBUG/PinyinIME(171): onStartInputView  contentType: 147457 Restarting:false
    11-04 02:45:12.404: DEBUG/IphoneEditText(441): beforeTextChanged cancelShow()
    11-04 02:45:12.414: DEBUG/IphoneEditText(441): beforeTextChanged start: 3after: 1count: 0
    11-04 02:45:12.424: DEBUG/MemoEdit(441): EdtContentTextWatcher.onTextChanged()  str:9a00---s.length:4---split array count:1
    11-04 02:45:12.464: DEBUG/MemoEdit(441): edtContentTextWatcher.onTextChanged savaMemo()
    11-04 02:45:12.504: DEBUG/MemoEdit(441): savaMemo nextMemoId = 2
    11-04 02:45:12.524: DEBUG/MemoMainListAdapter(441): onContentChanged
    11-04 02:45:12.524: DEBUG/MemoMain(441): OnContentChangedListener.onContentChanged()
    11-04 02:45:15.514: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:15.514: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:15.514: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:45:15.524: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:45:18.484: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.hskj.memo/.ui.MemoMain }
    11-04 02:45:21.793: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:21.793: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:21.793: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:45:21.813: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:45:22.033: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:22.033: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:22.033: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:45:22.043: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:45:22.813: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:22.813: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:22.813: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:45:22.833: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:45:23.023: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:23.023: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:23.023: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:45:23.033: DEBUG/PinyinIME(171): onStartInputView  contentType: 0 Restarting:false
    11-04 02:45:26.294: INFO/ActivityManager(117): Starting activity: Intent { act=android.intent.action.CALL_BUTTON flg=0x10000000 cmp=com.android.contacts/.DialtactsActivity }
    11-04 02:45:32.524: DEBUG/IphoneEditText(441): onTouchEvent x = 281, y = 255
    11-04 02:45:32.535: DEBUG/IphoneEditText(441): action = 0
    11-04 02:45:32.535: DEBUG/IphoneEditText(441): mStatus.hasSelection = false
    11-04 02:45:32.603: DEBUG/IphoneEditText(441): onTouchEvent x = 281, y = 255
    11-04 02:45:32.603: DEBUG/IphoneEditText(441): action = 1
    11-04 02:45:32.623: DEBUG/IphoneMenuPopupWindow(441): popWindowWidth:120
    11-04 02:45:32.623: DEBUG/IphoneMenuPopupWindow(441): popWindowHeight:59
    11-04 02:45:32.645: DEBUG/IphoneMenuPopupWindow(441): before fixed x:281
    11-04 02:45:32.645: DEBUG/IphoneMenuPopupWindow(441): after fixed x:200
    11-04 02:45:32.645: DEBUG/IphoneMenuPopupWindow(441): before fixed y:162
    11-04 02:45:32.645: DEBUG/IphoneMenuPopupWindow(441): after fixed y:98
    11-04 02:45:32.645: DEBUG/IphoneMenuPopupWindow(441): setArrowMenuBackground:
    11-04 02:45:32.645: DEBUG/IphoneMenuPopupWindow(441): touchAndShowOffset:81
    11-04 02:45:32.663: DEBUG/IphoneMenuPopupWindow(441): when i = 0 hadFindArrowMenuPosition = false
    11-04 02:45:32.673: DEBUG/IphoneMenuPopupWindow(441): childWidth = 63
    11-04 02:45:32.673: DEBUG/IphoneMenuPopupWindow(441): touchAndShowOffset - childWidth = 18
    11-04 02:45:32.703: DEBUG/IphoneMenuPopupWindow(441): when i = 1 hadFindArrowMenuPosition = false
    11-04 02:45:32.703: DEBUG/IphoneMenuPopupWindow(441): childWidth = 63
    11-04 02:45:32.703: DEBUG/IphoneMenuPopupWindow(441): touchAndShowOffset - childWidth = -45
    11-04 02:45:32.713: DEBUG/IphoneMenuPopupWindow(441): i == menuCount- 1
    11-04 02:45:32.753: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:32.753: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:32.753: DEBUG/PinyinIME(171): onStartInput  ccontentType: 147457 Restarting:false
    11-04 02:45:32.763: DEBUG/PinyinIME(171): onStartInputView  contentType: 147457 Restarting:false
    11-04 02:45:41.903: DEBUG/PinyinIME(171): onFinishInputView.
    11-04 02:45:41.903: DEBUG/PinyinIME(171): onFinishInput.
    11-04 02:45:41.903: DEBUG/PinyinIME(171): onStartInput  ccontentType: 0 Restarting:false
    11-04 02:45:41.913: DEBUG/PinyinIME(171): onStartInputView&nb
  • case设计原则

    2008-10-31 12:51:22

    不管是从个人角度还是从公司角度,根据我这几年的经验我觉得case的设计应该符合以下几点:

    1,一个case一个功能点:每个case都要有个测点,找准一个测点则可,不能同时覆盖很多功能点,否则执行起来牵连太大

    2,case的易读:从执行者的角度去写case,最好不要有太多的术语在里面,如果要有最好指明具体位置;

    3,case的执行粒度:粒度越小越好;

    4,步骤清晰:一个case多个步骤,可一个重点,步骤指名人们怎么去操作,expect则指明这样操作之后应该看到什么结果---最好不要用正确,正常,错误之类的含糊主观的字眼。

    5,总体设计:先正常,后异常,这样可以确保正常情况下功能能够走通。

    总之:对于一个新来的tester,给他个case和我们的软件,他就能顺利取执行case,这是最佳状态,也是我们case设计的标准,按照这个标准,我想出了以上几点要求。这样做的好处是:1,执行者不会因为case看不懂再三的去烦扰你,你也不会因为时间长了,业务忘了,看不懂case;2,如果原来的designer有事,公司可以很快请人顶上,测试可以继续进行,不会被block住;3,执行case的人能更快的去掌握业务系统流程,不会因为要看懂一个case而大伤脑筋,更别说去真正的执行它了。

  • case设计原则

    2008-10-31 12:51:19

    不管是从个人角度还是从公司角度,根据我这几年的经验我觉得case的设计应该符合以下几点:

    1,一个case一个功能点:每个case都要有个测点,找准一个测点则可,不能同时覆盖很多功能点,否则执行起来牵连太大

    2,case的易读:从执行者的角度去写case,最好不要有太多的术语在里面,如果要有最好指明具体位置;

    3,case的执行粒度:粒度越小越好;

    4,步骤清晰:一个case多个步骤,可一个重点,步骤指名人们怎么去操作,expect则指明这样操作之后应该看到什么结果---最好不要用正确,正常,错误之类的含糊主观的字眼。

    5,总体设计:先正常,后异常,这样可以确保正常情况下功能能够走通。

    总之:对于一个新来的tester,给他个case和我们的软件,他就能顺利取执行case,这是最佳状态,也是我们case设计的标准,按照这个标准,我想出了以上几点要求。这样做的好处是:1,执行者不会因为case看不懂再三的去烦扰你,你也不会因为时间长了,业务忘了,看不懂case;2,如果原来的designer有事,公司可以很快请人顶上,测试可以继续进行,不会被block住;3,执行case的人能更快的去掌握业务系统流程,不会因为要看懂一个case而大伤脑筋,更别说去真正的执行它了。

  • 08年快过去了,也许该留下点什么

    2008-10-24 19:46:46

    好快,08年就要过去了,也许我该留下点什么,可......我不知道要写些什么,今年好像经历了很多,好像长大了很多,同时也好像一切和从前还是一样。

    呵呵,这么无厘头的话,可能有人要用砖头拍我了,不过,我还是有种冲动,想要留点什么。

    以后待续,现在还要加班,忙完了回头来整理......

  • 无话可说

    2008-01-26 19:41:14

        今天对他撒了个谎,他信以为真的很伤心的挂了电话,我听得出来他的伤心和愤怒。

        我不知道说什么了,更不知道要不要告诉他实话。他问我哪句是实话,我想让他自己去判断,告诉他自己确定下自己真正想要的是什么,自己对我的真实感觉。前一秒还说喜欢我,什么都不在乎,然后我就和他开了个天大的玩笑,他的男女不同的论调让我为那些被他这样的男子认识而又未负责的女子不平并且愤怒了。做了就做了,不要后悔,更不要去约束别人,除非你很严格的要求自己,否则你就没有资格去要求别人,这就是我,这个偏激的人,喜好公平的人。

       也许我这个谎言会让我失去一个很好的姻缘,而且也许我做这个谎言的不愤之由显得极为可笑,可是我就是这样做了。我不能忍受他这样放纵自己,认为理所当然,而与别人却认为这样不能容忍。我严格要求着自己,可我从来不限制别人,别人有自己的自由,而我有自己的原则。我不在乎我的他以前是什么样子,我在乎他的责任感和以后是否会真正的对我好。

       我不知道明天会怎么样,周围世界变迁万般,我仍然会坚持自己的原则,我相信我能够找到我的需要,我不允许自己因为大家都不在乎了而放纵自己,我把一切留给我的未来的他--那个伴我走过一生的人,那个真正会为别人考虑会负起责任的人。

  • 07年的最后一天下雨了

    2007-12-31 18:50:43

            2007年到了年末了,今天是最后一天,外面刮着五六级大风,我一点都不想出去。

            在家里看了一部电影《监狱风云》,老片子了,可我是第一次看,很喜欢,喜欢里面的人,有血有肉,喜欢里面的演员。然后听歌,看书,可突然间觉得好无聊了。

            找个朋友打了个电话,可话不到几句我们都不开心了,感觉大家说话都是小心翼翼的,不敢说实话,原本就心情不好的,让他一个对女孩很反感的话激的我半开玩笑的对他说“那我可要挂了,以免......”,谁知他也很痛快,就是啊,快挂了吧,然后我真就挂了。

            心中酸酸的,眼睛红了,然后电话响了,我没有接,不是生气不接,而是我真的不知道接起来还要说些什么,我们之间好像没有什么话说,从来都是那么少,可我有时候废话好多的,可面对他我不敢说,他总是很忙的样子,总是他在说:“好了,不和你说了”,不知道我是不是想多了,感觉他不喜欢和我说话,可他说不是这样的。他发短信了,说我还真挂啊,其实我不是真要挂,我只想听他说一句和你开玩笑呢,可直到我挂他都没有说。

             然后打开音乐,好好唱了几首,同时,天也下起了雨,灰蒙蒙的,雨过了,心情也好点了,给他个电话,我也不知道要说什么,只是拿起了电话,拨通了,可他没有接--我习惯性的认为他是在忙,不是不愿意接。呵呵,我不知道自己怎么了。也许不需要找那么多理由吧,自然而然的最好了。

             我需要做的就是调整自己的心态,乐观而快乐的去生活~

  • 说出你的问题

    2007-12-17 18:51:53

        有问题的时候应该说出来,其实有的问题说出来,问明白就没有什么事情了。不要等待别人过来告诉你结果和答案;有的问题看似需要等待别人的答案和反馈,可实际上有时候你主动去询问可能会收到意外收获--这个时候不要犹豫不决---不过话有三说看你怎么说了,也要看别人的情况而定。

        还有该谁的问题就是谁的,应该交由他本人去解决(不管他是谁),而不应该由你代劳--如果这不是你的职责的话,你就不应该去犹豫,而应该告诉他请他将此任务安排了--因为也许他给你说完了,可能已忙给忘了,这就会造成任务分配的短线现象出现。其实说出来,一切都没有想象的那么复杂--这本身就是对的。:)

  • 说出你的问题

    2007-12-17 18:48:47

        有问题的时候应该说出来,其实有的问题说出来,问明白就没有什么事情了。不要等待别人过来告诉你结果和答案;有的问题看似需要等待别人的答案和反馈,可实际上有时候你主动去询问可能会收到意外收获--这个时候不要犹豫不决---不过话有三说看你怎么说了,也要看别人的情况而定。

        还有该谁的问题就是谁的,应该交由他本人去解决(不管他是谁),而不应该由你代劳--如果这不是你的职责的话,你就不应该去犹豫,而应该告诉他请他将此任务安排了--因为也许他给你说完了,可能已忙给忘了,这就会造成任务分配的短线现象出现。其实说出来,一切都没有想象的那么复杂--这本身就是对的。:)

  • 一辈子的孤单

    2007-12-15 23:22:13

    曲名:一辈子孤单 歌手:刘若英 专辑:

    我想我会一直孤单
    一辈子都这么孤单
    我想我会一直孤单
    这样孤单一辈子
    天空越蔚蓝
    越怕抬头看
    电影越圆满
    就越觉得伤感
    有越多时间
    就越觉得不安
    因为我总是孤单
    过着孤单日子
    喜欢人不出现
    出现人不喜欢
    爱犹豫不决
    还在想他就离开
    想过要将就一点
    却发现将就更难
    于是我学着乐观
    过着孤单日子
    孤单已经变成一种习惯
    习惯到我已经不再去想该怎么办
    就算心烦意乱
    就算没有人作伴
    自由和落寞之间怎么换算
    我独自走在街上看着天空找不到答案
    我没有答案
    天空已蔚蓝
    我会抬头看
    电影越圆满
    就越珍惜伤感
    有越多时间
    就越习惯不安
    因为我总会孤单
    过着孤单日子

     

    到现在才慢慢读懂歌词的含义,以前一直以为自己明白且能体会。

  • 触动

    2007-12-14 13:40:00

      今天在网上看到一个人的日志,对我的触动很大。

      近日我总是安逸于现有的生活,有很多的无奈,却仍旧选择继续这样过着和尚敲钟的日子,想想学习英语的苦累,学习linux的迷茫,我胆怯了--不会,不知道怎么学都成了我的借口。同样的,她也是个女生,可以很犀利的剖析自己的人;可以下定决心就去学习的一个人。我没有她的勇气,其实最主要的是缺乏她的勤劳。

      我自己很清楚,要想真正把测试做好,技术是很重要的,尤其是数据库,编程---而我一直以自己不适合编程为借口为自己开脱着,还对别人宣称这是我的瓶颈。可实际上我并没有去真正的尝试,只是一种心理上的怯懦和认输。我没有那个女孩的勇气去剖析自己,更没有那么毅力去做决定了的事情。这就是目前我的生活停滞不前的主要原因。

       前段时间嚷嚷着买电脑学习,可电脑买回来了我却从来没有用它学习过,知道的人都会问我怎么没有见你学习来着,我羞愧无言以对。

       懒惰,成了我的最大障碍;其实真正的原因是我害怕失败,所以习惯性的将自己藏起来;我讨厌写简历,面试,其实只是我回避再次失败的一个心态反映。真正的成功着是不会惧怕失败的,他们会迎头而上欢迎它,克服它的。

       一切的道理好像我都懂,可我现在却偏偏成了行动的矮子。历史不会倒流,不要去怀念初出道时的壮志情怀和勤奋刻苦,你需要做的是做好今天--这一刻。

  • 认真过好每一个今天

    2007-11-30 23:18:01

        最近三周总感觉时间过得好快啊,每周的周一刚一开始,当我的意识还停留在周二的时候,事实告诉我今天是周四了,然后就周末了,我开始怀疑,怀疑时间究竟是怎么溜走的,我甚至怀疑是有人偷走了我的时间,让我的时间变得如此的快的以至于无法把握;我怀疑自己大脑不清楚,也开始怀疑一天是不是真正的有二十四小时,每小时六十分钟,每分钟六十秒......;我把这想法告诉了头,她说我好浪漫,呵呵,我那有那个心情,是真的,时间过得太快了,她说是我过得太充实了,是这样吗?

        今天晚上打开看自己的日志,才意识到是我自己对人生的理解和态度让我的心态发生了改变,而当我感觉到的时候时间已经飞逝。曾几何时,我顿悟,人这一辈子真正活着的就是自己睁开眼睛有知觉的这几个小时,昨天已经过去,明天还没有来,所以属于我们的只有今天,而且应该除去休息的时候,也就是人应该珍惜的就是自己睁开眼睛能看到东西,能正常思维的每个今天的这十来个小时。只要能让我们有意识的这几个小时快乐起来,那一生也就快乐了---没有必要为过去懊悔什么,也没有必要为未来去担心什么,必要的是今天一定要快乐,当然了,并不是说今天不努力--但一切的前提是你今天必须快乐起来,快乐的去为下个今天而奋斗,否则这个今天就过得没有意义。我母亲经常会和我们说“人眼前的路是黑的,谁也不知道自己明天怎么样,今晚把鞋脱下了,谁也不知道明天能不能穿上”。也许有人说这很消极,可我觉得这是一种人世无常的无奈,却也是人生的真实写照---所以我们唯一能做的就是过好每一个今天。

        我快乐的过着每一个今天,只为今天舒心,家人开心。当然不是家财用尽那种了---我还是不是很赞同“今朝有酒今朝醉”的哦。快乐是我今天的前提,为了下个今天更快乐是我今天努力奋斗的动力。这样,人一辈子岂不快乐?很多人为若干年后的某个日子发愁,到最后到了那天仍旧发愁,就这样愁了一辈子--这也是我大学四年发愁而未行动的惨痛教训喽~

        明白了时间为什么这么快了,那我也要和时间竞赛了。我有自己的目标,朝着它努力,过好每一个今天,这一辈子都会快乐,若干年后的今天还是快乐,人生,本身就是个过程而已。

  • 喜事

    2007-11-22 18:41:42

       我姐姐生了,给我生了个小外甥 ,家里人都好高兴.
       我也好高兴,并不是说我重男轻女,而是为我姐姐高兴,这样一来的话她以后可以不用再生了.
    其实这次我真的很害怕,怕她生个闺女,因为这样的话,她就要走农村里我姨的老路,还要继续再生,那些人直到生到儿子才甘心为此我一直为我姐姐捏把汗呢.其实呢,在十一我回家之前我做了个梦,梦见我摸姐姐的肚子,然后里面出来个小男孩,而且最近我也老梦见小男孩,好象是我的外甥---不过我一直没有敢说出来,按照我妈妈说的,好梦不要说出来,说出来会不灵的,虽然我不相信梦,可我多希望这是真的,所以我不愿意去破坏它,不然我不会原谅自己.
    哈哈,现在终于可以说出来了,其实十一的时候我就好想告诉我姐姐这个梦,让她也高兴,可又一想真正的高兴是他出生之后的而不是现在的,不然就成了一种安慰了,我可以换成其他的安慰方式呀.
       姐姐不容易,她的身体一直都不好,所以我很希望她不要再要孩子了,第一个是闺女,隔了四五年之后又想要了还是农村老传统,她不能躲避的,感谢真主,赐了个儿子,让我姐姐不再走农村老辈人的老路.
  • 心情感悟

    2007-11-21 13:57:50

       好久没有来testing转了,今天就想上来看看业界有什么新的变化了。

       可一上来后,我那颗被封装和压制的心一下子就收敛不住了,千奇百味俱全。看了每日一帖里的测试培训,结合了我们公司的现状,我的心很痛,我不知道怎么去表达,怎么去说,说出来好像都是一种倾诉和无奈,还是一种无能的表现。

       在我们公司,测试的地位很低,这是大家公认的,也是我最近才体会到的。以前呢,也听说过,可自己从来不去那么想,心里唯一想的是就是干好自己手中的活,将它干出色,证明给他们看。

      可事实是公司做的好的测试人员要么走了,要么被调到其他的组去做分析和设计了(除非是像我这样认定了测试而要求留下来的人,也还在做着测试),而测试一般都由新进来的人员进行,然后再进行人员分流。这么一来,真正做测试的就没有几个人了,然而真正想要去把测试做好的人就更是少之又少了。公司发展这么多年,测试这方面没有任何的进步,还是最古老的方式--尤其是在进行性能测试的时候,大家好像都认为这是理所当然的,事情也就这样理所当然的下去了。

      测试没有个标准--让测试人员自己去把握,不出问题没什么,出了问题就是测试者的问题;可问题测得过了又是测试人员太较真,测得太细,没有把握好尺寸---没有明文规定,没有白纸黑字,你怎么就说我做过了还是没做到,一切都凭到时候发生的事情来评断的。大家都学会了听从,包括我也是;大家都不提出来,我也不知道怎么提出来--因为我心里也还没有底,目前我只能感觉到这种现状,可是我不知道怎么去做,怎么做更有效。

      心,很难受,那个滋味,像是万针穿肠;想,好好在这干着,不想跳,因为都好不容易熟悉了;可是,当我去学习,了解业界动态的时候,心中是动荡不已,好矛盾的心理,狠,怒,无奈,忍,都有了。剩下的是我究竟该怎么做。

      怪,也就怪我不能当机立断;怪,也就怪我不能安于现状;怪,也就怪我笨嘴笨舌。我是要明哲保身,还是去尝试一下?我......写完这些,我还是没有答案,只是将心中的那颗火球抛了出来,展现给同仁;敬请大家出谋划策。在此先谢过~

  • 好开心

    2007-11-13 23:38:18

        今天晚上好开心啊,不管是真是假,算是对自己的一种安慰了。

        今天晚上在网上做了下EF的英语测试,整体上感觉很简单,很基础,测试成绩下来之后我的水平竟然是9-10,而且来信还说什么其他的测试者的平均是7-8,心里那个美。

       回想九月的时候,有一次我去了EF,在那做了测试,当时觉得题好多--确实比这次的多。感觉还行,可结果下来我的水平竟然是初级水平,我惊呆了,我知道那不是我的真实水平,是因为我好久没有学习了的缘故。

       语法对我而言已是固有的了,剩下的就是加强;而听力和口语是我一直要努力提高的,最近一直在有意无意的听英文,可怎么都没有想到我的水平能到此程度---不免对测试结果有所怀疑了。

      可不管怎么样,我也很高兴,当时差点花了好几万去做培训了呢,没想到短短几个月,我还是可以捡回来的,我当时就是认为肯定是我好久没有管英语才有那个结果的--那只是暂时的,不是我的真正实力。

      可现在的这个是吗?不也怀疑,不过自己还是很开心,对自己的学习更加有信心了,人活着就要自信,还要坚持,我下步就是做好说写~

     

  • NTFS和FAT的区别(摘)

    2007-10-22 00:22:28

     
    在推出FAT32文件系统之前,通常PC机使用的文件系统是FAT16。像基赣S-DOS,Win 95等系统都采用了FAT16文件系统。在Win 9X下,FAT16支持的分区最大为2GB。我们知道计算机将信息保存在硬盘上称为“簇”的区域内。使用的簇越小,保存信息的效率就越高。在FAT16的情况下,分区越大簇就相应的要增大,存储效率就越低,势必造成存储空间的浪费。并且随着计算机硬件和应用的不断提高,FAT16文件系统已不能很好地适应系统的要求。在这种情况下,推出了增强的文件系统FAT32。同FAT16相比,FAT32主要具有以下特点:

    1. 同FAT16相比FAT32最大的优点是可以支持的磁盘大小达到2TB(2047GB),但是不能支持小于512MB的分区。基于FAT32的Win 2000可以支持分区最大为32GB;而基于 FAT16的Win 2000支持的分区最大为4GB。

    2. 由于采用了更小的簇,FAT32文件系统可以更有效率地保存信息。如两个分区大小都为2GB,一个分区采用了FAT16文件系统,另一个分区采用了FAT32文件系统。采用FAT16的分区的簇大小为32KB,而FAT32分区的簇只有4KB的大小。这样FAT32就比FAT16的存储效率要高很多,通常情况下可以提高15%。

    3. FAT32文件系统可以重新定位根目录和使用FAT的备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了计算机系统崩溃的可能性。
    ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
    NTFS 和 FAT32 分区的区别到底是啥呢???
    http://www.inbase.org/home/printpage.asp?ArticleID=583
    当然了NTFS 和 FAT32 都是目前比较流行的磁盘分区格式,由FAT到FAT16----FAT32---NTFS,NTFS功能强一些。
    1. NTFS 支持文件加密和分别管理功能(也就是著名的EFS加密格式),可为用户提供更高层次的安全保证。
    2. NTFS 具有更好的磁盘压缩性能,可进一步满足小硬盘用户的需要(读取会慢一些)。
    3. NTFS 最大支持高达 2TB (1TB=1024GB)的大硬盘,而且它的性能不会随着磁盘容量的增大而降低。
    由此可见,NTFS 格式具有许多独特的优点
    不过,呵呵,它也有一个缺点,那就是该磁盘文件格式不能被除它自己之外的其他操作系统所识别(NT 4.0也不例外),这就对数据交流造成了一定的影响,也就不支持DOS操作系统了,不过还是值得支持。

    所以呀....只使用 Windows 2000 的用户应首选使用 NTFS 格式,要是同时使用 Windows 2000 和其他操作系统,则应谨慎从事。最好将磁盘划分为多个不同的磁盘分区,将 Windows 2000 安装到其中的一个磁盘分区并选择使用 NTFS 格式;将其他操作系统安装到另外的磁盘分区中并使用 FAT 或 FAT32 格式。

    NTFS文件系统(下有详解)
    NTFS文件系统是一个基于安全性的文件系统,是Windows NT所采用的独特的文件系统结构,它是建立在保护文件和目录数据基础上,同时照顾节省存储资源、减少磁盘占用量的一种先进的文件系统。使用非常广泛的Windows NT 4.0采用的就是NTFS 4.0文件系统(下面讲的是5.0,不好意思,哈哈),相信它所带来的强大的系统安全性一定给广大用户留下了深刻的印象。Win 2000采用了更新版本的NTFS文件系统NTFS 5.0,它的推出使得用户不但可以像Win 9X那样方便快捷地操作和管理计算机,同时也可享受到NTFS所带来的系统安全性。
    ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎
    注意了!!!!!1
    ----------再看一下NTFS-------
    NTFS 5.0的特点主要体现在以下几个方面:

    1. NTFS可以支持的分区(如果采用动态磁盘则称为卷)大小可以达到2TB。而Win 2000中的FAT32支持分区的大小最大为32GB。

    2. NTFS是一个可恢复的文件系统。在NTFS分区上用户很少需要运行磁盘修复程序。NTFS通过使用标准的事物处理日志和恢复技术来保证分区的一致性。发生系统失败事件时,NTFS使用日志文件和检查点信息自动恢复文件系统的一致性。

    3. NTFS支持对分区、文件夹和文件的压缩。任何基于Windows的应用程序对NTFS分区上的压缩文件进行读写时不需要事先由其他程序进行解压缩,当对文件进行读取时,文件将自动进行解压缩;文件关闭或保存时会自动对文件进行压缩。

    4. NTFS采用了更小的簇,可以更有效率地管理磁盘空间。在Win 2000的FAT32文件系统的情况下,分区大小在2GB~8GB时簇的大小为4KB;分区大小在8GB~16GB时簇的大小为8KB;分区大小在16GB~32GB时,簇的大小则达到了16KB。而Win 2000的NTFS文件系统,当分区的大小在2GB以下时,簇的大小都比相应的FAT32簇小;当分区的大小在2GB以上时(2GB~2TB),簇的大小都为4KB。相比之下,NTFS可以比FAT32更有效地管理磁盘空间,最大限度地避免了磁盘空间的浪费。

    5. 在NTFS分区上,可以为共享资源、文件夹以及文件设置访问许可权限。许可的设置包括两方面的内容:一是允许哪些组或用户对文件夹、文件和共享资源进行访问;二是获得访问许可的组或用户可以进行什么级别的访问。访问许可权限的设置不但适用于本地计算机的用户,同样也应用于通过网络的共享文件夹对文件进行访问的网络用户。与FAT32文件系统下对文件夹或文件进行访问相比,安全性要高得多。另外,在采用NTFS格式的Win 2000中,应用审核策略可以对文件夹、文件以及活动目录对象进行审核,审核结果记录在安全日志中,通过安全日志就可以查看哪些组或用户对文件夹、文件或活动目录对象进行了什么级别的操作,从而发现系统可能面临的非法访问,通过采取相应的措施,将这种安全隐患减到最低。这些在FAT32文件系统下,是不能实现的。

    6. 在Win 2000的NTFS文件系统下可以进行磁盘配额管理。磁盘配额就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。设置磁盘配额后,可以对每一个用户的磁盘使用情况进行跟踪和控制,通过监测可以标识出超过配额报警阈值和配额限制的用户,从而采取相应的措施。磁盘配额管理功能的提供,使得管理员可以方便合理地为用户分配存储资源,避免由于磁盘空间使用的失控可能造成的系统崩溃,提高了系统的安全性。

    7. NTFS使用一个“变更”日志来跟踪记录文件所发生的变更。

    小提示(选取FAT32和NTFS的建议)

    在系统的安全性方面,NTFS文件系统具有很多FAT32文件系统所不具备的特点,而且基于NTFS的Win 2000运行要快于基于FAT32的Win 2000;而在与Win 9X的兼容性方面,FAT32优于NTFS。所以在决定Win 2000中采用什么样的文件系统时应从以下几点出发:

    1. 计算机是单一的Win 2000系统,还是采用多启动的Win 2000系统;
    2. 本地安装的磁盘的个数和容量;
    3. 是否有安全性方面的考虑等。

    基于以上的考虑,如果要在Win 2000中使用大于32GB的分区的话,那么只能选择NTFS格式。如果计算机作为单机使用,不需要考虑安全性方面的问题,更多地注重与Win 9X的兼容性,那么FAT32是最好的选择。如果计算机作为网络工作站或更多的追求系统的安全性,而且可以在单一的Win 2000模式下运行,强烈建议所有的分区都采用NTFS格式;如果要兼容以前的应用,需要安装Win 9X或其它的操作系统,建议做成多启动系统,这就需要两个以上的分区,一个分区采用NTFS格式,另外的分区采用FAT32格式,同时为了获得最快的运行速度建议将Win 2000的系统文件放置在NTFS分区上,其它的个人文件则放置在FAT32分区中。
  • 简直崩溃

    2007-10-21 21:01:23

       今天上网突然间查得口香糖里面含有甘油和明胶,而这两种成分大多数情况是从动物身上提取的,绿箭口香糖中的甘油直接就是猪油提取物,而且绿箭还就此写过道歉信,声称口香糖不清真。

       前些天老爸牙疼,我就查询可以缓解的好办法,觉得口腔卫生很重要,得知除了刷牙漱口外口香糖也可以帮忙就建议他用,当时老爸就告诉我好像不清真,我还不信。后和个穆斯林朋友说起这事他说好像是真的。

       今天上网看了,果有其事,我简直就疯了,而且这两种东西很多情况下会用于软糖,冰激凌中。再往下查,目前好多食物我们是都不能去吃的了,因为明胶的用处实在太广,以后买没有清真表示的食品的时候还真要注意。还有香皂,牙膏之类的,这些呢,我不知道,目前还无法证实。

       崩溃而外我还有个疑问,经典上是不让吃猪肉和好多死物及非清真宰杀的动物之肉,可是从此类动物身上获取的成分也不可以吗?这些成分是经过了化学提炼,又经过了化学合成,它还是以前的它吗?真的是晕了,此时也很惭愧,自己本身对宗教方面的知识知道的太浅显。真希望有人能够回答此类问题。

501/3123>
Open Toolbar