一切都不需争论,只需给出结果。

发布新日志

  • 我的测试人生

    2006-12-07 12:21:25Top 1

    好高兴能够在这里安家,我刚做测试不久,希望以后能够在这里留下我的经验、体会,也希望大家能够给我一些建议,大家一起学习。

  • Toad 中文乱码问题

    2011-07-13 16:21:08

    添加环境变量,中增加一项,其中变量为为NLS_LANG,变量值为"AMERICAN_AMERICA.ZHS16GBK"(不包括双引号)。
    重启toad后,即可看到原为乱码的内容,显示为正常中文.
  • 英文简历常用词汇

    2011-05-18 10:56:28

    个人品质常用词汇

    able 有才干的,能干的        adaptable 适应性强的
    active 主动的,活跃的      aggressive 有进取心的
    ambitious 有雄心壮志的      amiable 和蔼可亲的
    amicable 友好的          analytical 善于分析的
    apprehensive 有理解力的 aspiring 有志气的,有抱负的
    audacious 大胆的,有冒险精神的 capable 有能力的,有才能的

    careful 办理仔细的      candid 正直的
    competent 能胜任的          constructive 建设性的
    cooperative 有合作精神的 creative 富创造力的
    dedicated 有奉献精神的      dependable 可靠的
    diplomatic 老练的,有策略的 disciplined 守纪律的
    dutiful 尽职的 w       ell--educated 受过良好教育的
    efficient 有效率的           energetic 精力充沛的
    expressivity 善于表达       faithful 守信的,忠诚的
    frank 直率的,真诚的       generous 宽宏大量的
    genteel 有教养的            gentle 有礼貌的
    humorous 有幽默           impartial 公正的
    independent 有主见的      industrious 勤奋的
    ingenious 有独创性的      motivated 目的明确的
    intelligent 理解力强的 learned 精通某门学问的
    logical 条理分明的      methodical 有方法的
    modest 谦虚的           objective 客观的
    precise 一丝不苟的       punctual 严守时刻的
    realistic 实事求是的       responsible 负责的
    sensible 明白事理的       sporting 光明正大的
    steady 踏实的           systematic 有系统的
    purposeful 意志坚强的 sweet-tempered 性情温和的
    temperate 稳健的           tireless 孜孜不倦的
    教育程度常用词汇
    education 学历          educational history 学历
    educational background 教育程度 curriculum 课程
    major 主修 minor 副修
    educational highlights 课程重点部分         curriculum included 课程包括
    specialized courses 专门课程 courses taken 所学课程
    special training 特别训练    social practice 社会实践
    part-time jobs 业余工作     summer jobs 暑期工作
    vacation jobs 假期工作     refresher course  进修课程
    extracurricular activities 课外活动               physical activities 体育活动
    recreational activities  娱乐活动              academic activities 学术活动
    social activities 社会活动 rewards 奖励
    scholarship 奖学金 excellent League member 优秀团员
    excellent leader 优秀干部 student council 学生会
    off-job training 脱产培训 in-job training 在职培训
    educational system 学制 academic year 学年
    semester 学期(美) term 学期(英)
    supervisor 论文导师 pass 及格
    fail 不及格 marks 分数
    examination 考试 degree 学位
    post doctorate 博士后 doctor(Ph.D) 博士
    master 硕士       bachelor 学士
    graduate student 研究生 abroad student 留学生
    abroad student 留学生 undergraduate 大学肆业生
    government-supported student  公费生 commoner 自费生
    extern 走读生        intern 实习生
    prize fellow 奖学金生   boarder 寄宿生
    graduate 毕业生     guest student 旁听生(英)
    auditor 旁听生(美) day-student 走读生

    工作经历常用词汇

    work experience 工作经历 occupational history 工作经历
    professional history 职业经历 specific experience 具体经历
    responsibilities 职责      second job 第二职业
    achievements 工作成就,业绩 administer 管理
    assist 辅助          adapted to 适应于
    accomplish 完成(任务等) appointed 被认命的
    adept in 善于 analyze 分析
    authorized 委任的;核准的 behave 表现
    break the record 打破纪录     breakthrough 关键问题的解决
    control 控制            conduct 经营,处理
    cost 成本;费用        create 创造
    demonstrate 证明,示范 decrease 减少
    design 设计            develop 开发,发挥
    devise 设计,发明        direct 指导
    double 加倍,翻一番       earn 获得,赚取
    effect 效果,作用      eliminate 消除
    enlarge 扩大            enrich 使丰富
    exploit 开发(资源,产品)        enliven 搞活
    establish 设立(公司等);使开业 evaluation 估价,评价
    execute 实行,实施       expedite 加快;促进
    generate 产生 good at  擅长于
    guide 指导;操纵       improve 改进,提高
    initiate 创始,开创       innovate 改革,革新
    invest 投资          integrate    使结合;使一体化
    justified 经证明的;合法化的     launch 开办(新企业)
    maintain 保持;维修      modernize 使现代化
    negotiate 谈判      nominated 被提名;被认命的
    overcome 克服        perfect 使完善;改善
    perform. 执行,履行     profit 利润
    be promoted to 被提升为    be proposed as   被提名(推荐)为
    realize 实现(目标)获得(利润) reconstruct 重建
    recorded 记载的            refine 精练,精制
    registered 已注册的 regenerate 更新,使再生
    replace 接替,替换 retrieve 挽回
    revenue 收益,收入 scientific 科学的,系统的
    self-dependence 自力更生 serve 服务,供职
    settle 解决(问题等) shorten 减低……效能
    simplify 简化,精简 spread 传播,扩大
    standard 标准,规格 supervises 监督,管理
    supply 供给,满足 systematize 使系统化
    test 试验,检验 well-trained 训练有素的
    valuable 有价值的        target 目标,指标
    working model 劳动模范 advanced worker 先进工作者


    个人资料常用词汇
    name 姓名 in. 英寸
    pen name 笔名 ft. 英尺
    alias 别名 street 街
    Mr. 先生 road 路
    Miss 小姐 district 区
    Ms (小姐或太太) house number 门牌
    Mrs. 太太 lane 胡同,巷
    age 年龄 height 身高
    bloodtype 血型 weight 体重
    address 地址 born 生于
    permanent address 永久住址       birthday 生日
    province 省 birthdate 出生日期
    city 市 birthplace 出生地点
    county 县 home phone 住宅电话
    prefecture 专区     office phone 办公电话
    autonomous region 自治区     business phone 办公电话
    nationality 民族;国籍 current address 目前住址
    citizenship 国籍    date of birth 出生日期
    native place 籍贯     postal code 邮政编码
    duel citizenship 双重国籍    marital status 婚姻状况
    family status 家庭状况       married 已婚
    single 未婚           divorced 离异
    separated 分居       number of children 子女人数
    health condition 健康状况        health 健康状况
    excellent (身体)极佳     short-sighted 近视
    far-sighted 远视       ID card 身份证
    date of availability  可到职时间 membership 会员、资格
    president 会长 vice-president 副会长
    director 理事 standing director 常务理事
    society 学会 association 协会
    secretary-general 秘书长 research society 研究会

    应聘职位

    objective 目标       position desired 希望职位
    job objective 工作目标 employment objective 工作目标
    career objective 职业目标   position sought 谋求职位
    position wanted 希望职位 position applied for  申请职位

    离职原因

    for more specialized work 为更专门的工作             for prospects of promotion 为晋升的前途
    for higher responsibility 为更高层次的工作责任        for wider experience 为扩大工作经验
    due to close-down of company 由于公司倒闭        due to expiry of employment 由于雇用期满
    sought a better job 找到了更好的工作             to seek a better job 找一份更好的工作

    业余爱好

    hobbies 业余爱好         play the guitar 弹吉他
    reading 阅读           play chess 下棋
    play 话剧     long distance running 长跑
    play bridge 打桥牌   collecting stamps 集邮
    play tennis 打网球       jogging 慢跑
    sewing 缝纫          travelling 旅游
    listening to symphony 听交响乐 do some clay scultures 搞泥塑

  • Tomcat新手攻略【转】

    2010-01-22 11:21:00

    Tomcat新手攻略
    1、下载必要软件
    ①JDK 1.4.2
    ②Tomcat 4.0
    2、配置环境
    windows系统用户:
    我的电脑------〉右键-------〉属性-------〉详细-------〉环境变数
    path = x:\jdk1.4.2\bin

    JAVA_HOME=x:\jdk1.4.2
    CATALINA_HOME=x:\tomcat(这里有的是TOMCAT_HOME=x:\tomcat)
    注:这里x为安装的驱动器。

    这里要怎么设置取决于bin目录下的startup.bat文件。
    我们可以在编辑状态下打开startup.bat,看究竟这个文件需要读取那个系统变量,我们就设置那个。比如当前我的版本tomcat的startup.bat文件内容如下:


    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script. for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------

    rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome

    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

    rem Check that target executable exists
    if exist "%EXECUTABLE%" goto okExec
    echo Cannot find %EXECUTABLE%
    echo This file is needed to run this program
    goto end
    :okExec

    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs

    call "%EXECUTABLE%" start %CMD_LINE_ARGS%

    :end


    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script. for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------

    rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome

    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

    rem Check that target executable exists
    if exist "%EXECUTABLE%" goto okExec
    echo Cannot find %EXECUTABLE%
    echo This file is needed to run this program
    goto end
    :okExec

    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs

    call "%EXECUTABLE%" start %CMD_LINE_ARGS%

    :end


    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script. for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------

    rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome

    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

    rem Check that target executable exists
    if exist "%EXECUTABLE%" goto okExec
    echo Cannot find %EXECUTABLE%
    echo This file is needed to run this program
    goto end
    :okExec

    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs

    call "%EXECUTABLE%" start %CMD_LINE_ARGS%

    :end


    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script. for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------

    rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome

    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

    rem Check that target executable exists
    if exist "%EXECUTABLE%" goto okExec
    echo Cannot find %EXECUTABLE%
    echo This file is needed to run this program
    goto end
    :okExec

    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs

    call "%EXECUTABLE%" start %CMD_LINE_ARGS%

    :end


    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script. for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------

    rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome

    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

    rem Check that target executable exists
    if exist "%EXECUTABLE%" goto okExec
    echo Cannot find %EXECUTABLE%
    echo This file is needed to run this program
    goto end
    :okExec

    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs

    call "%EXECUTABLE%" start %CMD_LINE_ARGS%

    :end


    @echo off
    if "%OS%" == "Windows_NT" setlocal
    rem ---------------------------------------------------------------------------
    rem Start script. for the CATALINA Server
    rem
    rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $
    rem ---------------------------------------------------------------------------

    rem Guess CATALINA_HOME if not defined
    if not "%CATALINA_HOME%" == "" goto gotHome
    set CATALINA_HOME=.
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    set CATALINA_HOME=..
    :gotHome
    if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
    echo The CATALINA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    goto end
    :okHome

    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

    rem Check that target executable exists
    if exist "%EXECUTABLE%" goto okExec
    echo Cannot find %EXECUTABLE%
    echo This file is needed to run this program
    goto end
    :okExec

    rem Get remaining unshifted command line arguments and save them in the
    set CMD_LINE_ARGS=
    :setArgs
    if ""%1""=="""" goto doneSetArgs
    set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
    shift
    goto setArgs
    :doneSetArgs

    call "%EXECUTABLE%" start %CMD_LINE_ARGS%

    :end

    我们可以清楚的看到这个文件需要读取系统变量CATALINA_HOME的值,所以我们在环境变数中把CATALINA_HOME设置为tomcat的安装路径就可以了。

    3、启动、关闭tomcat
    有2种方法可以启动、关闭安装好的tomcat:
    ① 直接点击运行bin目录下startup.bat和shutdown.bat文件就可以。
    ② 由于前面我们设置了path,所以我们直接在Dos窗口中直接键入startup或shutdown亦可。

    4、设置虚拟目录
    编辑server文件(x:\tomcat\conf\server.xml)
    因为在tomcat启动时要读取server文件的信息,所以更改server文件后,一定要重新启动tomcat。

    举个例子:
    我们打算建立一个myJSP的虚拟目录,只要在server.xml文件中加入如下代码即可:
    <Context path="/myJSP" docBase="c:\myJSP" debug="0"
                    reloadable="true" crossContext="true">
    </Context>

    其中,path为我们要建立的虚拟目录,docBase为实际目录在硬盘上的位置。

    5、试我们前面工作的成果
    编一个简单的小例子,来测试一下我们的虚拟目录是否可用。
    refresh.jsp (c:\myJSP\refresh.jsp)

    <%@page language="java"%>
    <%@page import="java.util.Date"%>
    <HTML>
    <HEAD>
    <TITLE>AUTO REFRESH</TITLE>
    <%response.setHeader("refresh","5");%>
    </HEAD>
    <BODY bgcolor=#cc99dd><BR>

    <center><h1>auto refresh example</h1></center><BR>
    <center>refresh time : 5 sencords</center><BR>
    <CENTER>Now Time is: <%=new Date()%></CENTER>
    </BODY>
    </HTML>

    在地址栏键入http;//localhost:8080/myJSP/refresh.jsp,呵呵,看到效果了吧。

  • 自动化测试初体验<转帖>

    2009-09-22 19:14:33

     

    近两个月的自动化脚本编写,让我从一个门外汉终于进到了门里,下面想说一下这两个月学习QTP的一些体验想法:

      首先,学习自动化脚本要有一个好的思想去指导,没有思想指导的会让人无从下手,其实这点不管学习任何新东西都是必须的,这个思想一般来源于前辈、专家、高手的引导,学习了思想才知道如何去开始,脑子里形成了一个轮廓,甚至有点迫不及待想去自己动手做了。我们的思想大概包括了这些方面:如何维护对象库,执行case的组成,common的function、base的function,各个case要有自己的checkpoint及datainstall,如何去封装function以达到最少的代码重复,

      第二,学习方法:有了思想,可能已经觉得是这样,我应该会做了,但其实真动起手来,还是很盲目,东一下西一下,最好的方法,拿一个范本来学习一下,在阅读别人代码的同时,理清原本盲目的思路,然后自己去尝试写第一个脚本,这其中肯定会遇到各种各样的问题,不会使用对象的方法啊、不会使用已有的函数啊等等,不过解决方法更多:QTP的Help,关键要会使用索引搜索,英语都不是问题的,很简单;google很强大,上面有无数前辈们不同的解决方法;身边的前辈至关重要,因为很多实实在在的问题,google和help还真帮不上忙;偶尔还会碰到自己脑筋短路的时候,怎么都跑不通的脚本,别人一看就知道问题在哪里,而且也许很简单,这个时候最大的想法是拿块豆腐撞死算了!^_^

      第三:关于问题及总结:写完除了完成了任务,学到了东西,更重要的是可以拿出东西来可以跟大家分享,让后面的人更容易的走过我们这一步,所以问题及总结必不可少,每一个脚本都会遇到这样那样大大小小的问题,或许问题很“弱智”,既然自己会犯,别人也依然会犯,所以同样需要拿来给大家借鉴,唯一不能怕的是丢人!

      第四:关于代码优化及数据准备:现在我们的代码,几乎就是硬性使用某个用户,必须有某些数据才能跑的动,能跑脚本的准备会花费太多力气,后期在完成的基础上需要对代码做优化,不需要准备太多的硬性数据就可以跑的动我们的脚本。

      上面只提到了概括的内容,现在说一下在我写的过程中遇到的问题及一点点总结:

      一、不知道如何使用对象的方法:最简单的是使用QTP的help了,索引一下这个对象,就会有对象的所有方法,也会有例子,最常用的WebTable对象,GetCellData和ChildObject方法,如果是校验这个table的某行列中是否有对象,不用使用ChildObject.Exist,只要WebTable.GetCellData值是否为空即可。

      二、思路已经有了,却不会写代码:对于一个没有开发经验的测试工程师这很正常,经常是知道要怎样做,却不知道用哪个函数来实现这个想法,比如取字符串的某几个值,匹配字符串等等,关于字符串常用的方法有:instr、left、right、mid、trim、。。。等等,这些是经常要使用的,最好就是对于已用到的函数做一个记录,不用上次用了这次忘了,又去google一把,浪费太多时间,将函数的参数及使用方法用自己简单易懂的方式记录下来。

      三、学会使用DOM结构分析:越来越深刻的体会到DOM结构真的很有用,定义了对象唯一可以确认对象的几个属性就可以很方便的找到这个对象,不过有时候对象之间的childobjects关系弄不是很明白,尤其层级比较多的时候,谁是谁的child不是很清楚,到底该定义到哪个级别的对象再去定义其child呢?不过多尝试几次总会成功!

      Set bj=browser(”浏览器“).Page(”页面“).WebElement(”对象“)

      set desc1=description.Create

      desc1(”micclass”).value=”WebElement”

      desc1(”html tag”).value=”LI”—–此处value可以设定多个,直到完全可以确定一个或几个同类型对象即可。

      Set c_obj1=obj.ChildObjects(desc1)

      c_obj1可能会有多个使用c_obj1.count来计算其数量,而从c_obj1(0)开始便指其第一个对象

      这样就可以找到obj的一个子对象c_obj1,对其进行对象可以进行的操作了!

      四、调试代码是一个漫长的过程,多多使用msgbox,看下得到的内容是否与预期一样,或许就是这不一致的内容导致,尤其对于数据库校验的内容,会碰到校验的内容其实是错误的,但是并没有报错,单步执行是很有效的方法。

  • 巧破软件测试缺陷管理之痛 <转>

    2009-05-19 10:23:11

     人世间最痛苦的事莫过于——我所在项目开发正陷于混乱不堪的缺陷之中。因为缺乏一套缺陷管理的有效解决方案,使程序的缺陷无法回溯,无法跟踪,解决没解决不清楚,整一个就是一片模糊。
      
      由于没有得到足够的重视,软件缺陷管理处于失控状态。软件测试人员报告的缺陷常常被遗忘掉;或没有人知道在新的软件版本里究竟纠正了哪些缺陷,还有哪些缺陷未被纠正。更重要的是纠正过程是否引入了新的缺陷也没有人知道,再或者就是缺陷报告书写不规范,使得开发人员不得不一次次找到测试人员来面谈,还有许多无效的文档使缺陷状态混乱,相关人员无法及时获得有关的变更信息。

        什么是开发的缺陷管理?

      软件中的缺陷(Defect或BUG)是软件开发过程中的“副产品”。通常,缺陷会导致软件产品在某种程度上不能满足用户的需要。每一个软件开发团队都必须知道如何妥善处理软件中的缺陷,这关系到软件生存、发展的质量根本。可遗憾的是,并非所有的软件开发团队都知道如何有效地管理软件中的缺陷。
      
      软件缺陷管理是在软件生命周期中为确保缺陷被跟踪和管理所进行的活动。狭义地讲,BUG是写程序过程中造成的错误。广义地讲,BUG是影响客户正常使用的任何问题。就是说,BUG不仅仅是编程中出现的问题,还包括客户需求和功能规范等方面。
      
      (1)缺陷管理的目标
      一般而言,缺陷的跟踪和管理需要达到以下两个目标:一是确保每个被发现的缺陷都能够被解决,二是收集缺陷数据并根据缺陷趋势曲线识别和预防缺陷的频繁发生。
      
      在谈到缺陷管理时,一般人都会只想到如何修正缺陷,而对根据缺陷分析进行有效预防缺陷却很容易忽视。其实,在一个运行良好的项目开发中,缺陷数据的收集和分析是很重要的,从缺陷数据中可以得到很多与软件质量相关的数据。例如通过缺陷趋势曲线来确定测试过程是否结束是常用并且较为有效的一种方式。常见的的缺陷数据统计图表包括缺陷趋势图、缺陷分布图、缺陷及时处理情况统计表等。
      
      (2)缺陷管理重在预防缺陷
      正如我们所知,BUG应该尽早地在开发过程中被发现。修正处于开发阶段的BUG的成本远远低于修正处于验收阶段的BUG,而相对与修正已经发布给客户的产品BUG的成本更是可以忽略不计。因此,越晚修正BUG,需要重做的事情就越多。
      
      对很多人来说,零缺陷的软件产品似乎是不切实际的。因此,我们总是听到许多软件开发人员说:“软件永远有BUG”。软件产品含有BUG并不奇怪,不幸的是发布一个包含很多BUG的产品给客户仍然不让人感到惊讶,这就是一件值提深思的事情了。

        事实上,每个软件开发团队都可以通过一些简单的方法,在不增加额外资源的情况下预防BUG。为了能够预防BUG,我们首先需要了解BUG的来源。软件BUG可以分为几个类别:第一类BUG可能是随机的,它们通常是因为一时的疏忽造成的。尽管这些BUG可能由于其随机性很难预防。但是,适当的分析将有助于避免这些BUG。另一类的BUG来自于需求误解、开发环境的错误或者纯粹由于缺乏解决问题的相关技术,这类BUG共同的特点是都来自于开发人员。
      
      但有一个好消息是,软件中的BUG往往倾向于重复出现,即使是一个随机出现的BUG。软件BUG的不断出现不仅表现在同一个开发人员的工作上,而且表现在同一个项目上。这当然不是说项目中的每一个开发人员都会犯同样的错误。但是,至少其中一些的错误足以成为经常性出现的问题。因此,BUG的预防尤为重要。

        缺陷管理的核心:缺陷分析

      缺陷预防的着眼点在于缺陷的共性原因(Common Cause)。通过寻找、分析和处理缺陷的共性原因,实现缺陷预防。BUG预防并不是一个不切实际的目标,但是不能期望它在一夜之间发生。我们在开发过程中应该积极为开发小组提供缺陷分析,使BUG逐渐改善。因此,缺陷管理的最终目标是预防BUG,不断提高整个开发团队的技能和实践经验,而不只是修正它们。
        BUG预防策略非常简单和容易实现,策略是发现BUG,找出BUG的根源,然后寻找一个方法来预防类似的BUG在将来出现。这策略并不需要昂贵的花费,但是却可带来极大的额外价值。

    BUG预防策略非常简单和容易实现,策略是发现BUG,找出BUG的根源,然后寻找一个方法来预防类似的BUG在将来出现。这策略并不需要昂贵的花费,但是却可带来极大的额外价值。
      
      (1)BUG记录
      BUG分析的第一步是记录BUG,值得注意的是记录BUG不应该满足于记录BUG的表面症状。测试的一个重要职责就是试图发现BUG的根本原因,在测试时不应将产品看作一个黑盒,而应该像开发人员那样了解产品的内在,包括深入源代码,理解产品的设计和实现。
      
      (2)利用BUG分析了解开发质量趋势
      对于测试出来的BUG进行缺陷分类,找出那些关键的缺陷类型,进一步分析其产生的根源,从而针对性的制定改进措施。缺陷分析非常关键的一步就是寻找一个预防类似缺陷再次发生的方法。这一方法不仅涉及到开发、测试人员,还涉及到不直接负责代码编写的资深开发人员。利用这一阶段的实践成果,开发人员可以预防BUG的发生,而不仅仅是修正这些BUG。
      
      BUG预防分析是整个BUG分析过程的核心。这一阶段总结出的实践可以在更广泛的范围内预防潜在的缺陷。由于分析结果的广泛应用性,分析某个具体BUG的投入将很容易被收回。在这个时候,BUG分析提供了两个非常重要的参数,一个是缺陷数量的趋势,另一个是缺陷修复的趋势。缺陷趋势就是将每月新生成的缺陷数、每月被解决的缺陷数和每月遗留的缺陷数标成一个趋势图表。
      
      一般在项目的开始阶段发现缺陷数曲线会呈上升趋势,到项目中后期被修复缺陷数曲线会趋于上升,

    而发现缺陷数曲线应总体趋于下降。同时处于OPEN状态的缺陷也应该总体呈下降趋势,到项目最后,三条曲线都趋向于零。项目经理可通过持续观察这张图表,确保项目开发健康发展。同时,通过分析预测项目测试缺陷趋于零的时间,以制定产品质量验收和发布的时间。
      
      实际上,BUG分析图表会告诉我们很多有价值的信息。比如说,可分析开发和测试在人力资源的配比上是否恰当,可以分析出某个严重的缺陷所造成的项目质量的波动。对于异常的波动,如本来应该越测试越收敛的,却到了某个点发现的故障数反而呈上升趋势,那么意味着往往有一些特殊事件的发生。通过对测试缺陷分析,能够给予我们很多改进研发和测试工作的信息。

  • 盖茨十条职场箴言

    2007-10-24 09:43:46

     1.生活是不公平的,要去适应它;

     2.这世界并不会在意你的自尊,这世界指望你在自我感觉良好之前先要有所成就; 

     3.高中刚毕业你不会成为一个公司的副总裁,直到你将此职位挣到手;

     4.如果你认为你的老师严厉,等你当了老板再这样想;

     5.如果你陷入困境,不要尖声抱怨错误,要从中吸取教训;

       6.在你出生之前,你的父母并非像现在这样乏味。他们变成今天这个样子是因为这些年来他们一直在为你付账单,给你洗衣服,听你大谈你是如何的酷;

      7.你的学校也许已经不再分优等生和劣等生,但生活却仍在作出类似区分;

      8.生活不分学期,你并没有暑假可以休息,也没有几个人乐于帮你发现自我;

      9.电视并不是真实的生活,在现实生活中,人们实际上得离开咖啡屋去干自己的工作。 

      10.永远不要在背后批评别人,尤其不能批评你的老板无知、刻薄和无能。(因为这样的心态,会使你走上坎坷艰难的成长之路)

  • 今天一天!!

    2007-05-31 17:12:01

    一天又这样过了下来,今天看vs 2005似乎也没什么进展,还有一个小时就要下班了,整理一下,为明天备战吧!
  • 测试随笔

    2007-05-30 17:10:55

    好久没有上来写些什么了,一转眼作测试也快7个月了。最近一段时间真正的测试工作做的不多,由于之前我所测的一个比较大的项目上线(多家中心上线),一直在做着上线支持的工作(系统培训和问题解决)。去客户那边真的是很受气,因为所有的人对用新的东西总是会有一些抵触心理的,所以客户的‘啰嗦’我也只能忍着。就当是对自己的一种磨练吧!不过还好也交到几个朋友,客户中也有比较好的人呐!哈哈。。。

    感觉这段日子过得有点颓废,对于测试知识的积累不是很多,做的也不是很多。上司说希望将来开发和测试能够在同一个平台,于是我只能去学习集成在VS 2005中的测试工具,经过了一段时间的研究,了解到这上面的工具,主要应用在单元测试和Web测试上,而对于自动化功能测试的功能似乎没有实现,那就是说真正的一体化还是很难实现阿。目前用VS上测试工具来测试的企业似乎还不多,所以一些问题也没出可问,只能自己苦苦钻研,真的比较痛苦滴!公司的TD也被停掉了,被SharePoint 2007上的一个类似于TD功能的东西取代了,真的比较烦现在的bug管理工具,添加一个bug速度慢,而且没有项目之分,还看上去不是很明了,反正我是觉得没有TD好用,呵呵,真的和客户用新系统的心情一样啊,理解理解。。。

    这么长时间工作下来了,都搞不清楚自己到底掌握了些什么,学到了些什么。发现很多人也都有相同的体会阿,这该庆幸呢还是该悲哀呢!?本周五要给公司同事展示我研究VS 2005的成果了!!加油to myself!

     

  • 很漂漂桌面,心情大好哦!

    2006-12-25 15:55:01

    暂无
  • 我的测试经历,一起分享了

    2006-12-21 17:32:32Digest 1

    进入测试行业也两个多月了,在这两个多月中,不说掌握,但是可以是一个了解测试的人了。现在来说说我至今的测试旅程吧!献丑了。

    一直看到有很多朋友在论坛中问测试怎么做,这个答案真的很难回答,我刚开始接触测试时,只是看了一本软件测试的书籍,当时看完后只是知道测试的流程,和一些简单介绍,也摸不着头脑,也在论坛里问一些得不到答案的问题。记得那时候刚拿到公司项目需求的时候,面对着八十多页的需求文档不知如何下手,于是便去问别人要怎么来看,我要做些什么,记得别人给我的回复基本都是好羡慕你哦,有这么长的需求看.也有一些人给出过简单的意见,当时真的是纳闷,我看的头都大了,还羡慕我。而且在我看完两遍需求文档后,都不是很理解。在参加需求评审会议时,常常是问题最少的一个,有时候一个会议一两个小时下来,我都没有吱声!呵呵,后来才渐渐明白到需求的详细给我后期写用例提供了多大的帮助,而且后来也发现需求中有很明白的地方,只怪自己当时没有理解这个需求,不然对后期设计用例的思维肯定有更多的帮助。现在是要好好感谢那八十多页的文档啊!!

    现在我的第一个项目还正在测试中(项目比较大),在测试过程中,他们也给我提了不少建议,在他们给我建议的同时也觉得自己还有很多的不足,真是受益匪浅啊.发现要学习的东西真的很多。

    那天在msn上和一个也做测试的朋友聊天,聊天中发现对于我们这些进入测试行业不久的人来说,当一个模块和其他模块的关联多起来,就会觉得设计用例起来特别的头疼,相信很多朋友都有和我一样的经历吧!?

    不过现在我还没有什么技巧性的答案来帮助解决这个问题,我想对于这种情况我们不仅仅需要那些靠实践积累的经验,而且需要主动积极的去思考,对,一定要先把脑筋动起来,根据需求考虑这个功能的大概结构,当搞不清时,可以和开发人员去沟通,相信从与别人一起的探讨中,会把其中的逻辑理的比较清楚一些,而且会发现原本想不通的问题,一下子明白了,呵呵,这就是沟通妙处!!经验需要时间,需要实践,但是我们现在一定要先思考起来,沟通起来,一定不要犯懒哦!虽然能够一次性写出覆盖所有功能点及路径的人少之又少,不过我们还需努力,不断完善我们的用例。

    说一下个人的看法,测试的过程,如果有一个整体的规范流程,会大大提高测试的质量和效率。回归测试是一个高负荷的测试,需要有足够的耐性去对待,我们常常觉得用手工做回归测试很烦,不过还是得注重起来,听说WR是一个不错的回归测试工具,但我还没有用过,要学习啊。设计用例固然是一个很重要的环节,不过认为bug的整个管理流程,以及做好对bug的分析是最为重要的环节(不过这些正是难点)。

    希望有更好意见的朋友给我提供一些意见哦!

     

  • 数据库自动备份的方法

    2006-12-13 11:53:37

    1、进入企业管理器中->管理->sql server代理->作业;
    2、新建作业,作业名称随便取,例如:data备份,所有者选择sa,当然你也可以选择其他用户,前提是该用户有执行作业的权限;
    3、点击步骤标签,进入步骤面板。新建步骤,步骤名可以随便填写,如步骤1,类型和数据库默认,不需要修改。命令中写入以下语句:
    BACKUP DATABASE [数据库名] TO  DISK = N'F:\\data\\数据库备份' WITH  NOINIT ,  NOUNLOAD ,  NAME = N'数据库 备份',  NOSKIP ,  STATS = 10,  NOFORMAT
    注意:需要修改的地方,数据库名,DISK=(这里需要填写路径和你的数据库备份的名称)后面的Name=可以随便填写。
    4、点击调度标签,进入调度面板,新建调度,名称随便填写,选择反复出现,点更改可以选择你想要执行任务的随意调度。如每天,每2天,每星期,每月等。根据需要自己设置;
    5、确定后,不要忘记一件事情,在你刚才建立的工作上点右键,启动工作,如果你的工作没有问题,将会提示执行成功,并有相对应的备份文件在你的磁盘上出现;
    6、还有一个重要的问题就是你的sql server agent服务器已经启动。

    如果我们需要根据每天的日期来生成一个新的备份,以便我们区别备份文件。这时,我们需要修改一下刚才的sql语句。参考实例: declare @filename nvarchar(100) set @filename='F:\\AddIn\\备份\\data'+convert(char(10),getdate(),112) print @filename BACKUP DATABASE [addin] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'addin 备份', NOSKIP , STATS = 10, NOFORMAT

  • 十个受益匪浅的故事

    2006-12-08 16:13:30

    1、为生命画一片树叶

      只要心存相信,总有奇迹发生,希望虽然渺茫,但它永存人世。
      美国作家欧亨利在他的小说《最后一片叶子》里讲了个故事:病房里,一个生命垂危的病人从房间里看见窗外的一棵树,在秋风中一片片地掉落下来。病人望着眼前的萧萧落叶,身体也随之每况愈下,一天不如一天。她说:“当树叶全部掉光时,我也就要死了。”一位老画家得知后,用彩笔画了一片叶脉青翠的树叶挂在树枝上。
      最后一片叶子始终没掉下来。只因为生命中的这片绿,病人竟奇迹般地活了下来。

      温馨提示:人生可以没有很多东西,却唯独不能没有希望。希望是人类生活的一项重要的价值。有希望之处,生命就生生不息!

    2、飞翔的蜘蛛

      信念是一种无坚不催的力量,当你坚信自己能成功时,你必能成功。
      一天,我发现,一只黑蜘蛛在后院的两檐之间结了一张很大的网。难道蜘蛛会飞?要不,从这个檐头到那个檐头,中间有一丈余宽,第一根线是怎么拉过去的?后来,我发现蜘蛛走了许多弯路--从一个檐头起,打结,顺墙而下,一步一步向前爬,小心翼翼,翘起尾部,不让丝沾到地面的沙石或别的物体上,走过空地,再爬上对面的檐头,高度差不多了,再把丝收紧,以后也是如此。
      
      温馨提示:蜘蛛不会飞翔,但它能够把网凌结在半空中。它是勤奋、敏感、沉默而坚韧的昆虫,它的网制得精巧而规矩,八卦形地张开,仿佛得到神助。这样的成绩,使人不由想起那些沉默寡言的人和一些深藏不露的智者。于是,我记住了蜘蛛不会飞翔,但它照样把网结在空中。奇迹是执着者造成的。

    3、永远的坐票

      生活真是有趣:如果你只接受最好的,你经常会得到最好的。
      有一个人经常出差,经常买不到对号入坐的车票。可是无论长途短途,无论车上多挤,他总能找到座位。
      他的办法其实很简单,就是耐心地一节车厢一节车厢找过去。这个办法听上去似乎并不高明,但却很管用。每次,他都做好了从第一节车厢走到最后一节车厢的准备,可是每次他都用不着走到最后就会发现空位。他说,这是因为像他这样锲而不舍找座位的乘客实在不多。经常是在他落座的车厢里尚余若干座位,而在其他车厢的过道和车厢接头处,居然人满为患。
      他说,大多数乘客轻易就被一两节车厢拥挤的表面现象迷惑了,不大细想在数十次停靠之中,从火车十几个车门上上下下的流动中蕴藏着不少提供座位的机遇;即使想到了,他们也没有那一份寻找的耐心。眼前一方小小立足之地很容易让大多数人满足,为了一两个座位背负着行囊挤来挤去有些人也觉得不值。他们还担心万一找不到座位,回头连个好好站着的地方也没有了。与生活中一些安于现状不思进取害怕失败的人,永远只能滞留在没有成功的起点上一样,这些不愿主动找座位的乘客大多只能在上车时最初的落脚之处一直站到下车。

    温馨提示:自信、执着、富有远见、勤于实践,会让你握有一张人生之旅永远的坐票。

    4、心中的顽石

      阻碍我们去发现、去创造的,仅仅是我们心理上的障碍和思想中的顽石。
      从前有一户人家的菜园摆着一颗大石头,宽度大约有四十公分,高度有十公分。到菜园的人,不小心就会踢到那一颗大石头,不是跌倒就是擦伤。
      儿子问:“爸爸,那颗讨厌的石头,为什么不把它挖走?”
      爸爸这么回答:“你说那颗石头喔?从你爷爷时代,就一直放到现在了,它的体积那么大,不知道要挖到到什么时候,没事无聊挖石头,不如走路小心一点,还可以训练你的反应能力。”
      过了几年,这颗大石头留到下一代,当时的儿子娶了媳妇,当了爸爸。
      有一天媳妇气愤地说:“爸爸,菜园那颗大石头,我越看越不顺眼,改天请人搬走好了。”
      爸爸回答说:“算了吧!那颗大石头很重的,可以搬走的话在我小时候就搬走了,哪会让它留到现在啊?”
      媳妇心底非常不是滋味,那颗大石头不知道让她跌倒多少次了。
      有一天早上,媳妇带着锄头和一桶水,将整桶水倒在大石头的四周。
      十几分钟以后,媳妇用锄头把大石头四周的泥土搅松。
      媳妇早有心理准备,可能要挖一天吧,谁都没想到几分钟就把石头挖起来,看看大小,这颗石头没有想像的那么大,都是被那个巨大的外表蒙骗了。
      
      温馨提示:你抱着下坡的想法爬山,便无从爬上山去。如果你的世界沉闷而无望,那是因为你自己沉闷无望。改变你的世界,必先改变你自己的心态。

    5、追求忘我

      不要把自己当做鼠,否则肯定被猫吃。
      1858年,瑞典的一个富豪人家生下了一个女儿。然而不久,孩子染患了一种无法解释的瘫痪症,丧失了走路的能力。
      一次,女孩和家人一起乘船旅行。船长的太太给孩子讲船长有一只天堂鸟,她被这只鸟的描述迷住了,极想亲自看一看。于是保姆把孩子留在甲板上,自己去找船长。孩子耐不住性子等待,她要求船上的服务生立即带她去看天堂鸟。那服务生并不知道她的腿不能走路,而只顾带着她一道去看那只美丽的小鸟。奇迹发生了,孩子因为过度地渴望,竟忘我地拉住服务生的手,慢慢地走了起来。从此,孩子的病便痊愈了。女孩子长大后,又忘我地投入到文学创作中,最后成为第一位荣获诺贝尔文学奖的女性,也就是茜尔玛•拉格萝芙。
      
      温馨提示:忘我是走向成功的一条捷径,只有在这种环境中,人才会超越自身的束缚,释放出最大的能量。

    6、勇于冒险

      对于那些害怕危险的人,危险无处不在。
      有一天,龙虾与寄居蟹在深海中相遇,寄居蟹看见龙虾正把自己的硬壳脱掉,只露出娇嫩的身躯。寄居蟹非常紧张地说:“龙虾,你怎可以把唯一保护自己身躯的硬壳也放弃呢?难道你不怕有大鱼一口把你吃掉吗?以你现在的情况来看,连急流也会把你冲到岩石去,到时你不死才怪呢?”
      龙虾气定神闲地回答:“谢谢你的关心,但是你不了解,我们龙虾每次成长,都必须先脱掉旧壳,才能生长出更坚固的外壳,现在面对的危险,只是为了将来发展得更好而作出准备。”
      寄居蟹细心思量一下,自己整天只找可以避居的地方,而没有想过如何令自己成长得更强壮,整天只活在别人的护荫之下,难怪永远都限制自己的发展。
      
      温馨提示:每个人都有一定的安全区,你想跨越自己目前的成就,请不要划地自限,勇于接受挑战充实自我,你一定会发展得比想像中更好。

    7、再试一次

      什么东西比石头还硬,或比水还软?然而软水却穿透了硬石,坚持不懈而已。
      有个年轻人去微软公司应聘,而该公司并没有刊登过招聘广告。见总经理疑惑不解,年轻人用不太娴熟的英语解释说自己是碰巧路过这里,就贸然进来了。总经理感觉很新鲜,破例让他一试。面试的结果出人意料,年轻人表现糟糕。他对总经理的解释是事先没有准备,总经理以为他不过是找个托词下台阶,就随口应道:“等你准备好了再来试吧”。
      一周后,年轻人再次走进微软公司的大门,这次他依然没有成功。但比起第一次,他的表现要好得多。而总经理给他的回答仍然同上次一样:“等你准备好了再来试。”就这样,这个青年先后5次踏进微软公司的大门,最终被公司录用,成为公司的重点培养对象。
      
      温馨提示:也许,我们的人生旅途上沼泽遍布,荆棘丛生;也许我们追求的风景总是山重水复,不见柳暗花明;也许,我们前行的步履总是沉重、蹒跚;也许,我们需要在黑暗中摸索很长时间,才能找寻到光明;也许,我们虔诚的信念会被世俗的尘雾缠绕,而不能自由翱翔;也许,我们高贵的灵魂暂时在现实中找不到寄放的净土……那么,我们为什么不可以以勇敢者的气魄,坚定而自信地对自己说一声“再试一次!”
      再试一次,你就有可能达到成功的彼岸!

    8、天道酬勤

      没有人能只依靠天分成功。上帝给予了天分,勤奋将天分变为天才。
      曾国藩是中国历史上最有影响的人物之一,然他小时候的天赋却不高。有一天在家读书,对一篇文章重复不知道多少遍了,还在朗读,因为,他还没有背下来。这时候他家来了一个贼,潜伏在他的屋檐下,希望等读书人睡觉之后捞点好处。可是等啊等,就是不见他睡觉,还是翻来复去地读那篇文章。贼人大怒,跳出来说,“这种水平读什么书?”然后将那文章背诵一遍,扬长而去!
      贼人是很聪明,至少比曾先生要聪明,但是他只能成为贼,而曾先生却成为毛泽东主席都钦佩的人:“近代最有大本夫源的人。”
      “勤能补拙是良训,一分辛苦一分才。”那贼的记忆力真好,听过几遍的文章都能背下来,而且很勇敢,见别人不睡觉居然可以跳出来“大怒”,教训曾先生之后,还要背书,扬长而去。但是遗憾的是,他名不经传,曾先生后来启用了一大批人才,按说这位贼人与曾先生有一面之交,大可去施展一二,可惜,他的天赋没有加上勤奋,变得不知所终。
      
      温馨提示:伟大的成功和辛勤的劳动是成正比的,有一分劳动就有一分收获,日积月累,从少到多,奇迹就可以创造出来。

    9、大海里的船

      在大海上航行的船没有不带伤的。
      英国劳埃德保险公司曾从拍卖市场买下一艘船,这艘船1894年下水,在大西洋上曾138次遭遇冰山,116次触礁,13次起火,207次被风暴扭断桅杆,然而它从没有沉没过。
      劳埃德保险公司基于它不可思议的经历及在保费方面给带来的可观收益,最后决定把它从荷兰买回来捐给国家。现在这艘船就停泊在英国萨伦港的国家船舶博物馆里。
      不过,使这艘船名扬天下的却是一名来此观光的律师。当时,他刚打输了一场官司,委托人也于不久前自杀了。尽管这不是他的第一次失败辩护,也不是他遇到的第一例自杀事件,然而,每当遇到这样的事情,他总有一种负罪感。他不知该怎样安慰这些在生意场上遭受了不幸的人。
      当他在萨伦船舶博物馆看到这艘船时,忽然有一种想法,为什么不让他们来参观参观这艘船呢?于是,他就把这艘船的历史抄下来和这艘船的照片一起挂在他的律师事务所里,每当商界的委托人请他辩护,无论输赢,他都建议他们去看看这艘船。
      它使我们知道:在大海上航行的船没有不带伤的。
      
    温馨提示:虽然屡遭挫折,却能够坚强地百折不挠地挺住,这就是成功的秘密。

    10、驴的哲学

      人生必须渡过逆流才能走向更高的层次,最重要的是永远看得起自己。
      有一天某个农夫的一头驴子,不小心掉进一口枯井里,农夫绞尽脑汁想办法救出驴子,但几个小时过去了,驴子还在井里痛苦地哀嚎着。
      最后,这位农夫决定放弃,他想这头驴子年纪大了,不值得大费周章去把它救出来,不过无论如何,这口井还是得填起来。于是农夫便请来左邻右舍帮忙一起将井中的驴子埋了,以免除它的痛苦。
      农夫的邻居们人手一把铲子,开始将泥土铲进枯井中。当这头驴子了解到自己的处境时,刚开始哭得很凄惨。但出人意料的是,一会儿之后这头驴子就安静下来了。农夫好奇地探头往井底一看,出现在眼前的景象令他大吃一惊:
      当铲进井里的泥土落在驴子的背部时,驴子的反应令人称奇——它将泥土抖落在一旁,然后站到铲进的泥土堆上面!
      就这样,驴子将大家铲倒在它身上的泥土全数抖落在井底,然后再站上去。很快地,这只驴子便得意地上升到井口,然后在众人惊讶的表情中快步地跑开了!
      
      温馨提示:就如驴子的情况,在生命的旅程中,有时候我们难免会陷入“枯井”里,会被各式各样的“泥沙”倾倒在我们身上,而想要从这些“枯井”脱困的秘诀就是:将“泥沙”抖落掉,然后站到上面去!
Open Toolbar