• 老婆甜甜的睡着

    心里很内疚

    为了等李博的生日祝福

    不能和老婆一起入梦乡

    明天她要去外面活动

    一上午都没机会吃饭

    突然想到早上早点起

    准备好热腾腾的早饭迎接老婆

    嘿嘿

    做什么呢

    于是想到了煎荷包蛋

    可是才发现自己都不会做。。。

    临时从网上找了教程

    老婆

    就等着吃我做的爱心荷包蛋吧~

    嘿嘿!

  • 除了Robotium相关的资料外,在这里记录测试过程中其他的心得体会。

    2010.11.25

    对于测试代码来说,也要做到规范,例如log的可控,冗余部分的整合,命名规则是否符合java规范。有个findbugs专门做静态代码检验工作,最近准备学习一下使用方法,检验开发代码的同时,也可以对本地的测试代码进行校验。

    ----------------------------------------------------------------------

    2010.11.26

    之前就遇到过装不上apk的情况,报的错是

     

    [2010-11-26 10:14:40 - ] Re-installation failed due to different application signatures.

    [2010-11-26 10:14:40 - ] You must perform a full uninstall of the application. WARNING: This will remove the application data!

    [2010-11-26 10:14:40 - ] Please execute 'adb uninstall com.baidu.resmanager.filemanager' in a shell.

    [2010-11-26 10:14:40 - ] Launch canceled!

    查了资料,主要原因是我模拟器的image是由编译机在linux下mmm整体编译的,而且把我想要写test app的app写进了system app,这样mmm出来的和我在本地eclipse编译出来的签名是不一样的,无法覆盖之前的app,导致报错。

     

    今天终于找到了解决方法

    adb remount

    adb shell rm system/app/xxx.apk

    adb uninstall com.xxx.xxx.xxx    //卸载整个app的package

    然后再从本地run case的时候就没问题了。

    写了个脚本,省着每次都重复的敲命令

    set packagename=com.baidu.resmanager.filemanager

    set emulatorpath=/system/app/ResManager.apk

    @echo off

    adb remount

    adb shell rm %emulatorpath%

    adb uninstall %packagename%

    pause


     

     

  • 最近一直在学习robotium case的编写,确实好用。

    可以根据当前所处的情况,分别进行白盒,黑盒,灰盒测试。

    Robotium是基于Android测试框架InstrumentationTestCase2进行的2次封装,把一些基本操作又简化了一遍。参考资料都可以从网上查到,当前好像更新到了1.8.0。不过我们还是用自己基于1.7基础上稍作改动的版本,而且测试过程中发现Robotium的drag()方法有问题,在文件list过长的时候,它采用的翻页方式由于stepCount分成了太多份,有时候performance稍差的时候,就会把拖拽动作当成longtouch。解决方法目前暂时用了个偷懒的方法,把stepcount直接定义成了13,目前没再发生异常情况。

    另外今天写case的时候学到了检查软键盘弹出收回的方法:

    InputMethodManager imm = (InputMethodManager) solo.getCurrentActivity().getSystemService(Context.INPUT_METHOD_SERVICE);

    assertTrue(imm.isActive());

    而且今天知道了testcase一定要是以"testcase"开头,其他的方法不会被误认为case,这样一些duplicate的验证方法都可以封装在独立的方法里而不会和case混淆了。

    -------------------------------------

    Nov. 9, 2010

    今天又学会了一个新东西,Android SDK下面的hierarchyviewer.bat

    通过它可以找到我当前窗口所有的view,并可以查看每个view的属性,对于不熟悉代码的时候编写case,真的是相当重要啊。这样,我就不用从代码里查看每个控件的id,想进行操作的时候直接通过hierarchyviewer.bat就能找到id直接操作。

    另外判断当前焦点可以通过.getCurrentFocus()来找到,设置焦点有requestFocus(),之前都没用过。

    刚才发现solo.searchText(); 虽然会拖动屏幕来扫描多个页面内匹配的文本,但因为assert是逐行判断,假如一个testcase里有多条searchText(),这时候case内的代码排列顺序就很重要,比如我第一条要验证是否存在一个文件包含字符串“videoplayer”,那屏幕势必会翻到最后面才能找到,这时候如果第二条要验证一个“a”开头的文件“android”,由于屏幕不能再往下滚动了,系统直接认为不包含该文件。这样判断就会出错。

    解决方法暂时每判断一行,返回上一界面再进入,再判断下一行。。。

    又踩了一个坑,在searchText()的时候 如果文本中包含特殊的预定义字符,需要在前面添加\\,不然被转译成了别的字符。

    -------------------------------------

    Nov 10, 2010

    今天花了很多时间去找判断软键盘是否弹出或隐藏的方法,因为之前找到的判断软键盘的方法isActive()是判断的输入法而不是软键盘。找了半天材料,结果要么实现起来太复杂,要么就是方法根本不对。最后相当了曲线救国,通过判断焦点是否为null来判断键盘的状态。当然这有个前提就是焦点和键盘弹出隐藏的关系必须是正确的,如果这里有bug,那后面的判定也都过不去了。

    刚才用solo.enterText(); 发现源代码中在输入了文本后有两行:

    inst.sendKeyDownUpSync(KeyEvent.KEYCODE_ENTER);

    导致我如过在文本框里输入的话,默认会多两行回车,已经给暂时注释掉了。。。

     

    -------------------------------------

    Nov. 12, 2010

    这两天的工作进展还算顺利,优化了测试代码,加上了一些关键步骤的log输出,为将来track test info打好基础,而且好的习惯早养成的话,后面update code的时候也能省不少力气。

    今天学到了一个比较简单的东西,发送sendkey命令时,用sendKeys (String keysSequence)可以指定发送动作重复的次数,唯一需要注意的就是这里面KeysSequence不用想普通命令时写上KeyEvent.KEYCODE_这些,直接写sendKeys(i*KEYEVENT),比如sendKeys(256*DEL)就是重复256次删除动作。

    另外对于toast的测试目前没想到什么好的方法,暂时还是用的solo.searchText方法,但这样有一个问题就是如果因为performance原因导致toast弹出时没来的及searchText操作,toast在2秒后就消失了,容易导致判断错误。

    另外对于在testcase中增加或修改的内容,应该在执行完case后进行初始化的方法让它们回复之前的状态,这样每次run case的时候就不用重新设置测试数据了,这个工作会在这几天来做。

     

  • 好久没晚上关着灯听着音乐工作了

    因为明天有个会需要评审讨论 只好提前先看相关的文件 好发现问题 提出问题

    丫头已经呼呼大睡了

    刚才还说没我抱睡不好

    转眼就眼球打转

    估计梦见和狗抢吃的呢吧

    看着你这么睡着

    责任感突然就变得那么真实

    要好好的工作

    才能照顾好我爱的人

    才能撑起我爱的家

    虽然前方的路还看不清楚 

    我想 没有谁能看清前方的路吧

    本来就是未知的

    但多一份努力 就多一份收获

    日子就会慢慢的变好吧

    课间休息胡思乱想时间结束

    继续干活

    然后赶紧去抱着傻丫头睡觉

  • 代码测试还是第一次接触,以前从来没用过。这次基于开发的StopWatch,编写一个StopWatchTest app,通过Android JUnit Test来完成测试。记录一些重点:

    1. 程序开始要通知系统我要测的app是什么

     

        //Add the test case constructor

        public StopWatchTest() {      

            super("com.sample.stopwatch", StopWatch.class);    

        }

    2.  添加setup()方法,每一个test case都会调用setup来进行初始化,可以通过tearDown()方法来结束case,这样可以指定清空或结束此case曾经调用过的一些资源,如果不写tearDown()方法,系统会自动调用tearDown()来清空或结束所有资源

    protected void setUp() throws Exception {        

            super.setUp();        

    3. InstrumentationTestCase可以用来模拟触摸屏和按键的处理,为了避免误操作,在测需要触摸和按键的case前最好关闭模拟器或设备的触摸功能:setActivityInitialTouchMode(false);

    4. 触摸和按键可以通过TouchUtils.clickView(this, button/view);来实现

     

     

  • 为期一周的新人入职学习工作已经结束

    开发了一个秒表的app用作熟悉Android的开发环境和流程

    虽然以前也自己做过一个小的android app 但早就忘的一干二净

    在这里 对这次学习到的东西做简短的积累和总结

    1. 获得系统时间的方法System.currentTimeMillis();

    2. 通过sleep()来控制循环响应速度

    3. 通过setText()来定义Button的显示信息

    4. ListView通过ArrayAdapter实现数据绑定,通过setAdapter()实现数据更新

    5. Android默认的List Item可以直接引用android.R.layout.simple_list_item_1

    6. 绑定textview, buttom, litview通过findViewById实现

    现在开始学习写test case

  • 换工作已经2周了

    不同的工作环境

    不同类型的同事

    不同的工作重心

    不同的工作内容

    适应中

    一切都在循序渐进的进行着

    虽然觉得自己的差距很大

    但毕竟这不是第一次换工作

    不是第一次尝试融入一个新的集体

    因此一切都还好

    久违的求知欲

    好像再一次被激发了

    期待着那种每天都能看到自己进步的日子再次到来!

     

  • 明天就要正式验车提车了

    小白科 俺来了。。。

     

  • 亲爱的兄(弟)姐(妹)们,

     

    不知道你们还是否记得我入职的第一天,曾经给全组发过一封信,大致内容是我虽然刚毕业,但自信自己的学习能力,希望自己能迅速的融入到这个团队中,不辜负大家对我的信任,让大家看我的实际行动。时光荏苒,原来的信早已不见踪影,但我可以开心的说,我履行了我所承诺的,坚持自己的原则,努力做到最好。

     

    在这里我学到了很多,不论工作能力,还是沟通技巧,亦或是其他等等技能,我都得到了充分的锻炼和提高。能够在初别象牙塔,刚刚踏入职场的时候就遇到你们,是我的荣幸。谢谢大家对我的包容和理解,谢谢大家对我的支持和信任!

     

    记得第一次和大家打招呼,记得第一次执行case,记得第一次在会上发言,记得第一次和test leader沟通,记得第一次写报告,记得第一次写case。

    从洛娃,到科技园,到东煌,到CDK,到东煌。

    从Accessory,到DIOT,到FIOT,到Sony IOT。

     

    我随着team的成长而成长,和team的发展变迁一样,我的人生轨迹也在不停歇地前行,变迁。向好的,我希望的方向。这些,有我的努力,更有你们的帮助。

     

    今天,是我在这里的最后一天。希望今后大家都能生活幸福,工作顺心,向着自己的目标前行。

    一切尽在不言中。

    常联系!

     

     

  • 空山新雨后 天气晚来秋

    北京终于迎来了秋天

    即便暑伏未止

    虽然闷热犹在

    但清晨梦醒时分

    或暮色渐浓之际

    分明的

    分明的

    感受到了阵阵秋意

    收获的季节

    新的旅程即将开始

     

    刚刚度过了五周年纪念日

    本命年之后

    果然一切都重新回到了正轨

    不论 事业

    还是 感情

    都从本命年的不顺中归位

    在纪念日之前

    完全的

    完全的

    回到了对的路上

     

    我们在一起五年了

    经历了这样那样的困难

    但回味时

    却只看到幸福

    你快乐 所以我快乐

    我幸福 所以你幸福

     

    在SE卧薪尝胆三年

    终于事业上也有所收获

    至少找到了一个自己满意的工作

    不论 发展

    还是 待遇

    都有了很大的提高

    不求成为人上人

    只要平凡 中等偏上

    就是我的目标

     

    终于的

    终于的

    开始真正的把买车列为了最近的计划之一

    虽然还是要家里出资

    但毕竟

    我能养得起车

    也算是对自己三年磨练的一种肯定吧

    关注了一年多的Cruze

    终于好像离我很近很近了

    现在没有任何的折扣

    所以还想再等一等

    一是为了自己再攒点钱 

    让家里少出一些

    二是等优惠

    让自己也少出一些

    毕竟后面装修 结婚 

    都是花钱的事

     

    一分耕耘

    一分收获

    希望明年秋天

    我能有更多的收获

    和你携手与共

    走在我们幸福的路上

    简单

    快乐

     

  • 9天 一共45个小时以上的时间在车上或者飞机上

    累的我和老婆都要散架了

    12点到的家

    到现在耳朵还别扭

    从大巴车就开始堵得慌

    一直到飞机上

    下了飞机

    机场巴士

    回家

    还是堵

    难受的睡不着觉

    所以开始看照片

    一共2277张照片

    我和老婆还真是厉害

    难忘昆明会算算术的peter

    难忘泸沽湖会接球的英雄

    难忘泸沽湖带我们去观景台的皮蛋

    难忘泸沽湖的满天星

    难忘丽江的彩虹

    难忘香格里拉的云

    难忘普达措的碧塔海

    昆明 丽江 泸沽湖 香格里拉 大理

    我把你们的美丽通通记在了脑袋里

    好多东西 值得回味

    最后两天和法国母女的相识更是给旅途增添了快乐

    第一次彻底的实践

    和老外交流竟然没什么障碍了

    既帮助她们解决了旅途中的种种不便 交了朋友

    又锻炼了自己的口语和听力 真是一举多得

    耳朵还是别扭

    实在坚持不住了 睡觉!

  • 人的一生究竟有多长 不得而知 但总比大多数人想象的要短 如果穷尽一生中大部分的时光 最美好的时光 去追逐 去伤害 去痛苦 去悔恨 去猜忌 去彷徨 去犹豫 那真是可悲的事情 更可悲的是 我们大多数的人 每天都在上演着这样的故事

    为什么不能放下这些 为什么不能活的简单 快乐 甜美 幸福 为什么自寻苦恼 难道偏要等到年过古稀 再回过头 去检讨年轻时的种种 然后满怀遗憾么 更何况 我们未必能有留给自己遗憾的时间和机会

    人生苦短 这是前人对遗憾的诠释 可是我们依旧重蹈着覆辙 挥霍着本该幸福的时光

    忘掉一切的不快吧 也许很难 但却必须尝试 不求别的 只为将来没有遗憾

    也许这很可笑 也许是我很可悲 但我愿意坚持我笃定的东西 去呵护 去包容 去经营 用心去爱

    ------------------------------------------------

    无论如何

    请你记住

    我做的每一个决定 都与你有关

    我计划的每一种未来 你都在其中

    因为你 我会努力工作

    因为你 我会倾心付出

    因为你 我会学着坚强

    因为你 我会热爱生活

    所以

    请你不要轻易放开我的手

    因为有时候 有些事 一去不回

    ------------------------------------------------

    你见,或者不见我

    我就在那里

    不悲不喜

    你念,或者不念我

    情就在那里

    不来不去

    你爱,或者不爱我

    爱就在那里

    不增不减

    你跟,或者不跟我

    我的手就在你手里

    不舍不弃

    来我的怀里

    或者

    让我住进你的心里

    默然 相爱

    寂静 欢喜

  • 我们已经痊愈了

  • 弄了半天 只在自己的chrome上测试了 发现IE浏览器看blog就是一片白

    一切一切的效果都没体现出来

    只能希望大家用Firefox或Chrome吧

    吼吼。。

  • 又费了好久的劲 又是改CSS 又是找JS的

    终于把blog改头换面

    还有很多不完善的地方

    过几天慢慢改吧