----天道酬勤 思者常新 博观约取 厚积薄发 心如止水 气贯长虹 淡泊明志 宁静致远

我的最新日志

  • 咖啡和茶

    2007-12-17

         看过很多博客讨论咖啡和茶的区别,

         Love coffee or tea?

         无论是那种情结,

         对两种事物都有统一的感受,

         感官享受!

         专业点的说法就是舌头上的突状物对味道产生的一种化学反应刺激了神经并将其传送到大脑皮层,

         从而达到愉悦的感觉.

         并且在初尝者感官中,

         这两者再品尝初期有着惊人的一致性,

         ---苦涩,过后香浓或甘甜

        

         得到通知已经过了两周了,

         从一开始的愤恨,埋怨到后来的自我反省再到消沉,

         到如今竟以是一种心如止水的境界.

         年轻时得到教训比年老得到更好,

         人生有如咖啡和茶

         在喝之前都有苦涩,

         过后则无论香浓无比还是满口清香,

         终是香浓甘甜的让人回味,

         竟而欢喜.

        

         心如止水,

         不代表心死

         反而是一种阔达.

         表面平静而内含深蕴.

     

         曾怀疑过,

         人生真要如此?

         避世,少言,

         则可明则保身,登高直上?

         这或是长大?或是另一种滋长某种另人窒息的风气?

         可如今则是慢慢明白

         这世界不是每一个角落都有太阳,

         有太阳的地方也就有阴暗,

         人生不能因为阴暗而为之淡然,

         或许换种心境去看,

         或许阴暗则变成阴凉,

         犹如烈日下一汪树阴下的清池,

         在你兴奋焦躁过头的同时给你一丝清凉保持冷静.

         冷静过后则是一段奋进,

         一波热情.

        

         咖啡和茶

         都爱!!

         有香浓,也有满口清香

         但次之前都要经历苦涩,

         苦涩过后则有美好的感官享受.

         犹如地狱和天堂

         有了对比才能体现出美好.

         才能时刻感激人生.

        

  • 一种心境:波澜不兴,恬淡而宁静至极

    2007-12-12

    夫君子之行,静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学须静也,才须学也,非学无以广才,非志无以成学。淫慢则不能励精,险躁则不能治性。年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐,将复何及!

                                                                        ---诸葛亮《诫子书》

    古人曰:"浩浩世途,是非同轨;齿牙相轧,波澜四起。公独何人,心如止水;风雨如晦,鸡鸣不已"

    则有一种心境,波澜不兴,恬淡而宁静;有一种态度,博观约取,厚积而薄发.

  • 给自己的忠告..

    2007-12-10

    职场少走弯路的十条忠告


    1.买个闹钟,以便按时叫醒你。贪睡和不守时,都将成为你工作和事业上的绊脚石。不仅要学会准时,更要学会提前。“闹钟”只是一种简单的标志和提示,真正灵活、实用的时间,掌握在每个人的心中。
    2.如果你不喜欢现在的工作,要么辞职不干,要么就闭嘴不言。初出茅庐,往往眼高手低,心高气傲,大事做不了,小事不愿做。不要养成挑三拣四的习惯,处处表现出不满的情绪。记住,不做则已,要做就要做好。
    3.每个人都有孤独的时候,要学会忍受孤独,这样才会成熟起来。千万不要浮躁,要学会静心,更不要因为寂寞去做无聊无益的事情,白白浪费了宝贵的时间。
    4.走运时要做好倒霉的准备,退路同样重要。饱带干粮,晴带雨伞,点滴积累,水到渠成。有的东西今天似乎一文不值,但有朝一日也许就会身价百倍。
    5.不要像玻璃那样脆弱。有的人眼睛总盯着自己,所以长不高看不远,总是喜欢怨天尤人。没有苦中苦,哪来甜中甜?既然睁开眼睛享受风的清凉,就不要埋怨风中细小的沙粒。
    6.管住自己的嘴巴。不要谈论自己,更不要议论别人。谈论自己往往会自大虚伪,在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠缠不清。背后议论别人的短处,会降低你的人格。
    7.机会从不会“失掉”,你失掉了,自有别人会得到。不要凡事在天,守株待兔,更不要寄希望于“机会”。机会是相对于充分准备而又善于创造机会的人而言的。也许,你正为失去一个机会而懊悔、埋怨的时候,机会正被你对面那个同样的“倒霉鬼”给抓住了。没有机会,就要创造机会,有了机会,就要巧妙地抓住。
    8.若电话老是不响,你该打出去。很多时候,电话会给你带来意想不到的收获。交际的一大诀窍就是主动。好的人缘好的口碑,往往助你的事业更上一个台阶。
    9.千万不要因为自己已经到了结婚年龄而草率结婚。想结婚,就要找一个能和你心心相印相辅相携的伴侣。不要因为放纵和游戏而恋爱,不要因为恋爱而影响工作和事业,更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。
    10.写出你一生要做的事情,把单子放在皮夹里,经常拿出来看。人生要有目标,要有计划,要有提醒,要有紧迫感。
  • Choosing a test automation framework

    2007-5-30

    Document options requiring Javascrīpt are not displayed


     


    Level: Introductory

    Michael Kelly, Software Engineer, QA, Liberty Mutual

    A test automation framework is a set of assumptions, concepts, and practices that provide support for automated software testing. This article describes and demonstrates five basic frameworks.

    Basing an automated testing effort on using only a capture tool such as IBM Rational® Robot to record and play back test cases has its drawbacks. Running complex and powerful tests is time consuming and expensive when using only a capture tool. Because these tests are created ad hoc, their functionality can be difficult to track and reproduce, and they can be costly to maintain.

    A better choice for an automated testing team that's just getting started might be to use a test automation framework, defined as a set of assumptions, concepts, and practices that constitute a work platform or support for automated testing. In this article I'll attempt to shed a little light on a handful of the test automation frameworks I'm familiar with -- specifically, test scrīpt modularity, test library architecture, keyword-driven/table-driven testing, data-driven testing, and hybrid test automation. I won't evaluate which framework is better or worse but will just offer a descrīption and a demonstration of each and, where appropriate, some tips on how to implement it in the IBM Rational toolset.

    The Test scrīpt Modularity Framework

    The test scrīpt modularity framework requires the creation of small, independent scrīpts that represent modules, sections, and functions of the application-under-test. These small scrīpts are then used in a hierarchical fashion to construct larger tests, realizing a particular test case.

    Of all the frameworks I'll review, this one should be the simplest to grasp and master. It's a well-known programming strategy to build an abstraction layer in front of a component to hide the component from the rest of the application. This insulates the application from modifications in the component and provides modularity in the application design. The test scrīpt modularity framework applies this principle of abstraction or encapsulation in order to improve the maintainability and scalability of automated test suites.

    To demonstrate the use of this framework, I'll automate a simple test case for the Windows Calculator program (see Figure 1) to test the basic functions (add, subtract, divide, and multiply).

    Figure 1: The Windows Calculator

    At the bottom level of the scrīpt hierarchy are the individual scrīpts testing addition, subtraction, multiplication, and division. As examples, the first scrīpt that follows tests addition and the second scrīpt tests subtraction.

    The two scrīpts at the next level of the hierarchy would then be used to represent the Standard view and the Scientific view available from the View menu. As the following scrīpt for the Standard view illustrates, these scrīpts would contain calls to the scrīpts we built previously.

    And finally, the topmost scrīpt in the hierarchy would be the test case to test the different views of the application.

    From this very simple example you can see how this framework yields a high degree of modularization and adds to the overall maintainability of the test suite. If a control gets moved on the Calculator, all you need to change is the bottom-level scrīpt that calls that control, not all the test cases that test that control.





    The Test Library Architecture Framework

    The test library architecture framework is very similar to the test scrīpt modularity framework and offers the same advantages, but it divides the application-under-test into procedures and functions instead of scrīpts. This framework requires the creation of library files (SQABasic libraries, APIs, DLLs, and such) that represent modules, sections, and functions of the application-under-test. These library files are then called directly from the test case scrīpt.

    To demonstrate the use of this framework, I'll automate the same test case as above but use an SQABasic library. The library contains a function to perform the operations. Following are the header file (.sbh) and the library source file (.sbl).

    Using this library, the following test case scrīpt can be made.

    From this example, you can see that this framework also yields a high degree of modularization and adds to the overall maintainability of the test suite. Just as in test scrīpt modularity, if a control gets moved on the Calculator, all you need to change is the library file, and all test cases that call that control are updated.





    The Keyword-Driven or Table-Driven Testing Framework

    Keyword-driven testing and table-driven testing are interchangeable terms that refer to an application-independent automation framework. This framework requires the development of data tables and keywords, independent of the test automation tool used to execute them and the test scrīpt code that "drives" the application-under-test and the data. Keyword-driven tests look very similar to manual test cases. In a keyword-driven test, the functionality of the application-under-test is documented in a table as well as in step-by-step instructions for each test.

    If we were to map out the actions we perform with the mouse when we test our Windows Calculator functions by hand, we could create the following table. The "Window" column contains the name of the application window where we're performing the mouse action (in this case, they all happen to be in the Calculator window). The "Control" column names the type of control the mouse is clicking. The "Action" column lists the action taken with the mouse (or by the tester). And the "Arguments" column names a specific control (1, 2, 3, 5, +, -, and so on).

    Window Control Action Arguments
    Calculator Menu View, Standard
    Calculator Pushbutton Click 1
    Calculator Pushbutton Click +
    Calculator Pushbutton Click 3
    Calculator Pushbutton Click =
    Calculator Verify Result 4
    Calculator Clear
    Calculator Pushbutton Click 6
    Calculator Pushbutton Click -
    Calculator Pushbutton Click 3
    Calculator Pushbutton Click =
    Calculator Verify Result 3

    This table represents one complete test; more can be made as needed in order to represent a series of tests. Once you've created your data table(s), you simply write a program or a set of scrīpts that reads in each step, executes the step based on the keyword contained the Action field, performs error checking, and logs any relevant information. This program or set of scrīpts would look similar to the pseudocode below:

    
    Main scrīpt / Program 
    Connect to data tables. 
    Read in row and parse out values. 
    Pass values to appropriate functions. 
    Close connection to data tables. 
    Menu Module 
    Set focus to window. 
    Select the menu pad option. 
    Return. 
    Pushbutton Module 
    Set focus to window. 
    Push the button based on argument. 
    Return. 
    Verify Result Module 
    Set focus to window. 
    Get contents from label. 
    Compare contents with argument value. 
    Log results. 
    Return.
    

    From this example you can see that this framework requires very little code to generate many test cases. The data tables are used to generate the individual test cases while the same code is reused. The IBM Rational toolset can be extended using interactive file reads, queries, or datapools, or you can use other tools (freeware, other development tools, and such) along with IBM Rational tools in order to build this type of framework.





    The Data-Driven Testing Framework

    Data-driven testing is a framework where test input and output values are read from data files (datapools, ODBC sources, cvs files, Excel files, DAO objects, ADO objects, and such) and are loaded into variables in captured or manually coded scrīpts. In this framework, variables are used for both input values and output verification values. Navigation through the program, reading of the data files, and logging of test status and information are all coded in the test scrīpt.

    This is similar to table-driven testing in that the test case is contained in the data file and not in the scrīpt; the scrīpt is just a "driver," or delivery mechanism, for the data. Unlike in table-driven testing, though, the navigation data isn't contained in the table structure. In data-driven testing, only test data is contained in the data files.

    The IBM Rational toolset has native data-driven functionality when using the SQABasic language and the IBM Rational datapool structures. To demonstrate the use of this framework, we'll test the order form from the test sample application Classics A (see Figure 2).

    Figure 2: Order form from the sample application Classics A

    If we record data entry into this window, we get the following:

    We can use datapools to set up test cases that test valid and invalid credit card numbers and expiration dates. The datapool shown in Figure 3, for example, would be for a test case that would test the date field.

    Figure 3: Sample datapool for a test case that would test the date field

    If we modify the scrīpt to accept this data, we get the following:

    I had to add SQABasic commands to manipulate the datapools. I also added a While loop to allow for the processing of each row in the datapool. I should also mention the use of the SQABasic command UCase within the If Then statement. UCase is used to make the argument (in this case, the datapool return value) all uppercase. This way the comparisons aren't case sensitive, making the code more robust.

    This framework tends to reduce the overall number of scrīpts you need in order to implement all of your test cases, and it offers the greatest flexibility when it comes to developing workarounds for bugs and performing maintenance. Much like table-driven testing, data-driven testing requires very little code to generate many test cases. This framework is very easy to implement using the IBM Rational toolset, and there's a lot of detailed documentation available with how-tos and examples.




    The Hybrid Test Automation Framework

    The most commonly implemented framework is a combination of all of the above techniques, pulling from their strengths and trying to mitigate their weaknesses. This hybrid test automation framework is what most frameworks evolve into over time and multiple projects. Figure 4 gives you an idea of how you could combine the approaches of the different frameworks within the IBM Rational toolset.

    Figure 4: A hybrid test automation framework

     

  • 爱或不爱,从胃开始

    2007-4-26

      爱一个人就是爱他所长,宽容他所短.爱一个人就是一边怨恨他一边思念他,一边骂他的坏一边担心他.刚刚宣布永不相见,转而又颠七倒八打电话找他.爱一个人,可以为了他满大街寻找他爱吃的绿豆糕,甚至在洗他的臭袜子时,心中都充满了幸福感.不爱了,一切都是厌倦.

                                                  -----------<<爱或不爱,从胃开始>>

  • 大妈做饭腰给做折了~~~

    2007-4-24

    天啊~~~

    没天理了,周五兴高采烈的去大妈家准备周末去松江玩,结果,乐极生悲,大姐的腰给做饭做的痛了,我好心帮她揉了几下,大姐叽哩哇啦的给鬼叫了一通,然后.....第二天,惨局发生了....

    我和大妈估计我们和东方医院比较有缘,半年不到进了两次,上次是我的腿摔瘸了,这次是大妈的腰....重度腰肌老损了... 这两天我在深刻的反省当中,我不该去大妈家吃饭,不改让她做饭的热情高涨的时候不进行劝阻,我错了,下次一定不在让大妈做饭了....

    发现和大妈见面没啥好事,咱俩属于互克的那种,从我们认识开始,逛街遇小偷,回家遭窃贼,然后不是肺炎就是腿瘸的....下次不去大妈家了,大妈也不来咱家,想的时候么就约个地方碰面身上不带钱就带个车卡就OK,然后就各自回家,这样比较保险点

  • 小由走路竟然是外八字~~

    2007-4-03

    近日发现偶家那只破猫走路竟然是外八子~~好丑~~~疯了

  • 搬家啦~~

    2007-3-29

    啊呀,好久不来这里逛了~~怀恋中~~

    上班这噶达子地方哪个叫远啊...日平均坐车消费20元....哭~~没天理了...班车要改到8点钟,那启不是要6点就起床~~~决定2周不回家了...偶还是继续在乡下生活生活,享受着有钱没处花的感觉也蛮好.酬钱准备装修!!

    太开心了租到一个带花园的屋子.房东人很好,两只屁猫也有地方呆了.准备种棵葡萄,院子里有个很大的葡萄架,想象一下~~~恩~~~夏日里园子里放一张桌子,2个椅子.花园里移出一块地种上草坪.清晨有股湿湿的青草的味道~~葡萄架上长满绿叶,挂满紫色的葡萄,一串串的~夏风吹起.满院叮当.空气中还弥漫着玉兰花的香味.对的~~院子里有两棵树,一棵玉兰,一棵桂花.还有月季和一棵不知名的花.哈哈.下次回去一定要好好的弄弄院子!!太兴奋了!!喜欢一楼~

     

  • 自动化工具使用之个人心得(二)

    2006-12-27

      The article is only my personal experience to learn and use. Here, I use my English is designed to improve the standard of English. So if I have any technical and grammatical mistakes, please give me your propose, I will thanks for you.  
      Why we used the automated testing tools? You know, when we use manual testing, we will hard to repeat, not always reliable, and costly and time consuming, so we using the automation to solve these problems. And if you are just beginning to use automated tools, you have to know what it can give you?
      Ok, you know after completing the using tools course, you will be able to: create a basic test by recording the steps of the business process, enhance basic test with synchronization and verification, parameterize test to run with multiple sets of data. create and reuse modular actions, and understand and use the object repository, create and use recovery scenarios. So one of biggest benefits of automated testing tools is that they can save you time if they are implemented properly.
      Now, let we talk about the automated testing framework. what is the automated testing framework? we know if we want recording a operation, the first we need set the address of record and operation; and secondly will add the property of object's; and then we record test scrīpts and repeat its, in these we need attention a importance -- add the checkpoint; The last to optimized its.  But the fact so is by no means simple. Basing an automated testing effort on using only a capture tool such as IBM Rational Robot to record and play back test cases has its drawbacks. Running complex and powerful tests is time consuming and expensive when using only a capture tool. Because these tests are created ad hoc, their functionality can be difficult to track and reproduce, and they can be costly to maintain.

      A better choice for an automated testing team that's just getting started might be to use a test automation framework, defined as a set of assumptions, concepts, and practices that constitute a work platform or support for automated testing.

  • 面试感悟(二)

    2006-12-27

     肚子帮我算命说我年底会转运的,拜她吉言,整三个月我刚好面试成功,很感谢朋友们对我的顶力相助,以及各方诚恳的建议,因为有了你们让我能够有信心获得成功,当然面试不管别人怎么帮忙使劲最关键的还是自己,要学的东西真的很多,三个月我几乎饿补了各方面的专业知识,才发现自己就象个刚刚学会走路的孩子,很多东西都还没有接触就想跑的很快,我想我会谨记这个教训,至少让我学会很多东西,也在这里和所有有过我类似经历或是有类似想法的人能够以我为教训,切记浮躁要不得.

     面试的时候我还是强调一点,不要迟到,也不要赶巧整点到达,提前一段时间坐下来休息一下平复一下心情.给自己信心,同时也可以把准备好的东西都过一边,当然我现在已经养成一个习惯,每晚临睡前给自己鼓励一下,同时关了灯开始演示一下面试的内容和回答(这段时间一直是用因为自问自答的),这样效果不错,而且有助于睡眠,大家不妨试试.

     剩下的就是每日总结一下自己所缺的知识由其是面试所必须的,自己学过的会的重新温习一下,加强一下记忆,不会的看一下大概,也没必要搞的很透彻,一时半会的也不可能学的非常好,但必须别人提到的时候你有个概念.

     另外面试的时候别让面试官的思维带着你走,因为很有可能很多东西你是没遇过也不会的.这样面试下来肯定不成功而且影响心情.尽可能的用简短的语言去表达自己所会的东西,同时时刻注意面试官的表情,从他的反映中你可以知道你说的东西是否满足了他的要求,同时也能捕捉到他感性趣的话题,这个时候可以把这个话题扩大一下.这个时候你就成功一半了.另外你要表达的是,你对不会不熟的东西有很好的学习能力.并能快速的参与工作中来换句话说就是可以马上上手.那么基本你的面试就成功了.

     余下的就是薪水问题,如果你把握不大,你可以告诉对方.你目前的薪水是多少.当然你可以稍微说高一点.这样没关系,只要你原来公司的领导人事和你的关系不错.那么在你估量的范围内,他会酌情给你适合的价格.如果有把握你可以开你所期望的薪水,但是这个薪水不能脱离实际.这样,你基本上第二天就可以收到你心仪以久的offer了.祝所有在面试道路中遇到问题的朋友们面试成功!

     

我的最新图片

Open Toolbar