发布新日志

  • 遗留缺陷如何处理?

    2010-10-25 16:48:20

    遗留缺陷如何处理?
    在产品发布后,我们把存在产品内的缺陷成为遗留缺陷。

    首先,将遗留缺陷分为已知的缺陷和未知的缺陷。已知的缺陷是指在产品发布前,我们已经知道的的缺陷;未知的缺陷是指产品发布后,发现的缺陷。

    其次,不同种类的bug处理方式不同。
    对已知的缺陷,采取的办法一、bug先存储于bug系统里;二、在考虑成本、研发周期的情况下,一部分bug修复后,给客户发布补丁包;三、对于优先级和重要程度比较低、修复成本高、下一版本的产品中不涉及的bug,我们会一直存放在系统内,方便日后查询;
    对于未知的bug, 采取的办法一、将新发现的bug记录到bug系统内;二、对于客户发现的bug,尽量尽快解决。解决后,给客户发布补丁包;对于公司内部的人发现的问题, 如果重要的bug,要及时解决, 反之存放于bug系统内,后期在解决三、如果暂时无法解决的客户发现的重要问题, 要告诉客户解决该问题的其他途径; 四、测试和开发分析问题的原因,并记录下来,以防止该错误下次再发生。

    最后,对于客户是公共客户,就把补丁包放在网站上,方便下载;对于特定的客户, 直接把补丁包和更新的步骤发给客户。

  • 如何写测试策略(转载)

    2010-10-13 17:01:13

    如何写测试策略

      简单的说,测试策略的意思就是说“你如何测试目标产品或应用程序?”。你要在测试策略中很明确的提出你进行测试时所使用的方法和步骤。

      我看到过很多公司严格地按照一些测试策略模板来写。但是,其实不用模板,你也可以并且更高效地写测试策略。下面是一些简单的写测试策略的技巧,

      1)在测试策略中要包括产品的背景信息。在测试策略文档的第一段回答- stakeholder(项目利益相关者)为什么要开发这个产品?回答这个问题会帮助你更好更快地理解项目,并为所做的事情优先级排序。

      2)测试环境,它应该包括你在那个操作系统平台上做测试,系统是基于那些补丁和安全更新。例如,一个测试环境可能必须包含Window XP SP2

      3)列出你将要测试的所有重要特征。如果你认为有些特征不属于本次发布的一部分,那么就标注“不会被测试的特征”。

      4)写下在此项目测试中将应用到的测试方法。清楚的列出你将以那些类型的测试作为测试引导。例如:功能测试,用户交互界面测试,集成测试,压力测试安全测试等等。

      5)回答以下问题:你如何进行功能测试?手动还是自动化?测试工具是什么?你将执行在测试管理工具中的所有测试用例吗?

      6)用什么作为测试错误报告跟踪工具?当测试人员发现一个新的bug之后,流程应该是什么?

      7)测试进入和结束的标准分别是什么?

      8)如何去跟踪测试进度?什么度量可以用来记录测试结束?

      9)任务分布 – 定义每个组员的角色和职责,包括测试组长,测试员,项目经理等。测试战略将由开发人员review,确保测试的覆盖率全面且没有重叠处。测试经理和部门经理都要同意测试策略之后,测试工作才能展开。测试小组的划分及分工。

      10)有哪些风险会阻碍测试的完成?例如,代码的依赖性,测试工具的局限性等等。要提前想到风险发生的解决办法。

       11)测试日程表- 每个测试计划都应该包含一个预估时间来估计完成测试所需要的时间。这需要几个阶段:一,测试人员必须至少完成一次的执行全部用例。二,如果一个错误被测试 人员发现,开发人员将修复此错误。测试员重新测试此用例,直到其功能正确为止。最后,但很重要的一点是测试员必须对修改过的地方执行回归测试以保证开发人 员在修复一个错误的时候没有引入另外的代码错误。测试日程表要包含每个测试部分涉及的测试人员。时间往往很难估计,因为测试中有很多不确定性的事情发生。 其中一个比较好的办法是参照前一个发布来估计。

      12)回归测试的方法- 一个错误被修复后,必须要保证产品功能按用例标准运行。回归测试是为了在修复一个问题时不引入另外的错误。因此相关的测试用例要在被执行一次,从而确保没有特殊的东西被引进。在这个阶段,就要定义回归测试的方法。有的公司讲相关模块的单元测试用例全部遍历一遍,从而确保产品的质量。

      弄清楚这些问题,你就可以写一个详细的测试策略出来了
  • 测试用例评审(转载)

    2010-10-11 16:23:31

    测试用例评审步骤
    测试用例的评审能够使用例的结构更清晰,覆盖的用户场景更全面;对于测试工程师来说也是一个快速提高用例设计能力的过程。
    1、需要评审的原因
    测试用例是软件测试的准则,但它并不是一经编制完成就成为准则。由于用例开发人员的设计经验和对需求理解的深度各不相同,所以用例的质量难免会有不同程度的差异。
    2、进行评审的时机
    一般会有两个时间点。第一,是在用例的初步设计完成之后进行评审;第二是在整个详细用例全部完成之后进行二次评审。如果项目时间比较紧张,尽可能保证对用例设计进行评审,提前发现其中的不足之处。
    3、参与评审人员
    这里会分为多个级别进行评审。
    1) 部门评审,测试部门全体成员参与的评审。
    2) 公司评审,这里包括了项目经理、需求分析人员、架构设计人员、开发人员和测试人员。
    3) 客户评审,包括了客户方的开发人员和测试人员。这种情况在外包公司比较常见。
    4、评审内容
    评审的内容有以下几个方面:
    1) 用例设计的结构安排是否清晰、合理,是否利于高效对需求进行覆盖。
    2) 优先极安排是否合理。
    3) 是否覆盖测试需求上的所有功能点。
    4) 用例是否具有很好可执行性。例如用例的前提条件、执行步骤、输入数据和期待结果是否清晰、正确;期待结果是否有明显的验证方法。
    5) 是否已经删除了冗余的用例。
    6) 是否包含充分的负面测试用例。充分的定义,如果在这里使用2&8法则,那就是4倍于正面用例的数量,毕竟一个健壮的软件,其中80%的代码都是在“保护”20%的功能实现。
    7) 是否从用户层面来设计用户使用场景和使用流程的测试用例。
    8) 是否简洁,复用性强。例如,可将重复度高的步骤或过程抽取出来定义为一些可复用标准步骤。
    个人认为,一个“健康”的测试用例至少要通过前5个标准。
    5、评审的方式
    1) 召开评审会议。与会者在设计人员讲解之后给出意见和建议,同时进行详细的评审记录。
    2) 通用邮件与相关人员沟通
    3) 通用IM工具直接与相关人员交流
    方式只是手段,得到其它人员对于用例的反馈信息才是目的。
    无论采用那种方式,都应该在沟通之前把用例设计的相关文档发送给对方进行前期的学习和了解,以节省沟通成本。
    6、评审结束标准
    在评审活动中会收集到用例的反馈信息,在此基础上进行用例更新,直到通过评审。

    以下是测试用例评审过程中主要评审项:

    1《需求规格说明书》是否评审并建立了基线?
    2 是否按照测试计划时间完成用例编写?
    3 需求新增和变更是否进行了对应的调整?
    4 用例是否按照公司定义的模板进行编写?
    5 测试用例是否覆盖了《需求规格说明书》?
    6 用例编号是否和需求进行对应?  
    7 非功能测试需求或不可测试需求是否在用例中列出并说明?
    8 用例设计是否包含了正面、反面的用例?
    9 每个测试用例是否清楚的填写了测试特性、步骤、预期结果?
    10 步骤/输入数据部分是否清晰,是否具备可操作性?
    11 测试用例是否包含测试数据、测试数据的生成办法或者输入的相关描述?
    12 测试用例是否包含边界值、等价类分析、因果图、错误推测、等测试用例设计方法?是否针对需求不同部分设计使用不同设计方法?
    13 重点需求用例设计至少要有三种设计方法?
    14 每个测试用例是否都阐述预期结果和评估该结果的方法?
    15 需要进行打印、表格、导入、导出、接口是否存在打印位置、表格名称、指定数据库表名或文件位置;表格和数据格式是否有说明或附件?
    16 用例覆盖率是否达到相应质量指标?
    17 用例预期缺陷率是否达到相应质量指标?

  • how to use WScript object in qtp

    2010-09-15 21:31:44

    Dim oShell
    Dim returnvalue
    Set Shell = CreateObject("WScript.shell")
    returnvalue = oShell.Run("notepad.exe",4,True)
    reporter.ReportEvent micPass,"test_passed","executed"
  • vbs-求两个字符的公共字符串

    2010-09-13 11:58:36

    Option Explicit

    Function findPublicStr ( str1 ,  str2  )
     Dim shortStr, longStr
     
      Dim maxlength
      If len(str1) > len(str2)Then
       maxlength = len(str2)
       shortStr = str2
       longStr = str1
      
       else
        maxlength = len(str1)
        longStr  = str2
        shortStr = str1
      End If
     
      Dim i, j
     Dim str , pubstr, temp, result
     temp = 0
      For i = 1 to maxlength step 1
       For j =  maxlength  to 1 step -1
        str =mid (shortStr, i, j)
     
        If instr(longStr, str) >0  Then
         pubstr = str
     
         If len(pubstr) > temp Then
          result  = pubstr
          temp =  len(pubstr)
         End If    
     
        End If 
     
       Next
     
      Next
     
     findPublicStr = result

    End Function


    msgbox findPublicStr( "2341234", "245412")

  • QTP中如何快速获取Page中的对象个数(转)

    2010-07-24 20:48:22

    Option Explicit

    Dim BaseObject

    Set BaseObject = Browser("name:=百度.*").Page("title:=百度.*")
     


    MsgBox GetObjectCount( BaseObject, "Link" )


    MsgBox GetVisibleObjectCount( BaseObject, "Link" )

     
    Function GetObjectCount (BaseObject, classname)
       BaseObject.Init

       Dim objectFound

       set bjectFound = Description.Create()
       objectFound("micclass").value = classname
       GetObjectCount = BaseObject.ChildObjects(objectFound).count

    End Function


    Function GetVisibleObjectCount (BaseObject, classname)
       BaseObject.Init

       Dim objectFound

       set bjectFound = Description.Create()
       objectFound("micclass").value = classname
       objectFound("x").value =0
       GetVisibleObjectCount = BaseObject.ChildObjects(objectFound).count
    End Function
     
  • ChildObjects函数

    2010-05-27 14:56:31

    dim indexListPage, pageChildrens
    set indexListPage = Browser("ERMIS v3.0").Page("ERMIS v3.0_2").Frame("bodyFrame")

    Dim subObject
    Set  subObject = Description.Create
    subObject("micclass").value = "WebEdit"

    set pageChildrens = indexListPage.ChildObjects(subObject)
    For i = 0 to pageChildrens.count -1
         pageChildrens(i).set "WebEdit"&cstr(i)
    Next
  • QTP第三方调试器PowerDebug Beta

    2010-05-26 14:22:10

    下载地址:http://knowledgeinbox.com/products/powerdebug/powerdebug-beta-now-available-for-download/
  • qtp连接oralce 10g

    2010-05-26 14:18:38

    要从QTP链接Oracle,前提是已安装好Oracle客户端。然后在 Oracle Net Configuration Assistant 中完成配置:

    1.    监听程序配置,默认即可。

    2.    命名方法配置:本地。

    3.    本地Net服务名配置-添加-选择<Oracle8i或更高版本数据库或服务>-DBName(可以写成你要链接的数据库名,也可以自己定义,但是要记住,因为这个名字会在QTP数据库链接设置<TNS Service Name>中用到)-选择协议<TCP>(根据实际情况)-设置主机名:192.168.6.245(数据库所在电脑的IP 或是机器名),并根据实际情况设置段口号,默认为1521-进行测试,提示成功就说明在 Oracle客户端建立数据库链接成功了。恭喜你。

    4.    QTP端设置:Insert-CheckPoint(也可以是Output Value)-DataBase CheckPoint-Specify SQL statement manually-Create-机器数据源-新建-用户数据源(或是系统数据源)-选择<Oracle in OraHome92>-下一步-完成-(真正的数据库链接来了)-Data Source Name <DBName>(数据库名)-Descrīption,可以随便填息-TNS Service Name <DBName>(这里的设置要和第4步中的DBName一致,这个就是QTP和Oracle管理的地方)-User ID <loginDBName>(登陆数据库的用户名)-测试连通:Test Connection-Password(用户登陆数据库的密码)-ok-        如果连通了,说明设置成功了。


    代码:
    Dim rs,sq,pkey
    set conn=createobject("adodb.connection")
    set rs=createobject("adodb.recordset")

    ' 需要安装Oracle客户端
    conn.open  "DSN=192.168.0.2:orcl;UID=ermis_dts;PWD=fhdadmin;DBQ=FHD02;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;BTD=F;BAM=IfAllSuccessful;NUM=NLS;DPM=F;MTS=T;MDI=F;CSR=F;FWC=F;FBS=64000;TLO=O;"
    sql="select * from rm_risks"
    rs.open sql,conn
    rs.MoveFirst
    i = 0
    Do While rs.Eof<>true
        i = i +1
    reporter.ReportEvent micDone, rs.Fields(5), rs.Fields(7)
    rs.MoveNext
    Loop
    rs.close
    set rs=nothing
    conn.close
    set conn=nothing

  • 问题: 重新安装qtp10.0后, 导航的菜单的内容变空。

    2010-05-25 14:25:28

    问题: 重新安装qtp10.0后, 导航的菜单的内容变空。

    解决方法:在菜单栏上点击右键,在弹出菜单中选择customize...,然后在customize窗口中选择Toolbars标签页,在页面上点击 “Restore All”即可!
  • qtp 正则表达式(RegExp)对象(转载)

    2010-05-25 14:23:50

    正则表达式(RegExp)对象

      属性:

      Global 属性:

      设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。

      IgnoreCase 属性:

      设置或返回一个Boolean值,指明模式搜索是否区分大小写。

      Pattern 属性:

      设置或返回被搜索的正则表达式模式。

      方法:

    •   Execute 方法:

      对指定的字符串执行正则表达式搜索。

      object.Execute(string)

      参数:

      object:必选项。总是一个 RegExp 对象的名称。

      string:必选项。要在其上执行正则表达式的文本字符串。

      说明:

      正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。

      Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。

    •   Replace 方法:

      替换在正则表达式查找中找到的文本。

      object.Replace(string1, string2)

      参数:

      Object:必选项。总是一个 RegExp 对象的名称。

      string1:必选项。string1 是将要进行文本替换的字符串。

      string2:必选项。 string2 是替换文本字符串。

      说明:

      被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。

      Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本,将返回原来的 string1 的副本。

    •   Test 方法:

      对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。

      object.Test(string)

      参数:

      Object:必选项。总是一个 RegExp 对象的名称。

      String:必选项。要执行正则表达式搜索的文本字符串。

      说明:

      正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。

      如果找到了匹配的模式,Test方法返回True;否则返回False
  • vbs 随机数生成

    2010-05-21 10:01:15

    cstr((1000 * Rnd) + 0)
  • 通过xslt将xml显示成网页形式的资料 [2010年04月09日]

    2010-04-09 09:13:52

      这个资料我是搜集的,供大家学习!
       地址:http://blog.csdn.net/huwei2003/archive/2009/03.aspx
  • XML 解析 解析XML有两种基本方式(转载)

    2010-03-29 10:28:08

    XML 解析

    解析XML有两种基本方式:
    1)DOM
    2)SAX
    DOM解析器把 XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用 navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要 求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。

    SAX解析器 采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找 到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩 展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。

    通俗点讲,Dom 解析器是将xml文档整个读入内存中以便查找,而SAX解析器只是依次解析读到的tag数据,当找到想要的数据时便可停止解析,不用读取整个XML文档至 内存。有很多开源项目提供了各种用于解析xml的包,其原因无非是在dom和sax的原理基础上做一些优化工作。Java中比较常用的操作xml的开源包 有 dom4j、JDOM、Crimson、Commons-Digester等等。。(后两者均为apache开源包)。

    当然JAVA 里也自带了一些包用于解析、保存xml:javax.xml包、org.w3c.dom、org.xml.sax,更多具体的操作方法可以查看java api文档(这几个包都是内置的,官方API文档里就其详尽的包描述)

    这里我们使用javax.xml,org.w3c.dom,给出如 何创建Dom树、如何从.xml文件中生成Dom树,如何将Dom树保存到xml文件中。

    生成一个Document空的文档对象:
    org.w3c.dom.Document doc = javax.xml.parsers.DocumentBuilderFactory.newInstance().
    newDocumentBuilder().newDocument();
    可 以这样理解和记忆:要建立一个Document对象(这是一个产品),那么先要有一个工厂DocumentBuilderFactory,由工厂“招聘 “一个制造者DocumentBuilder,然后由制造者来生产Document对象。
    工厂DocumentBuilderFactory没有 公有的构造方法,只能用newInstance()取得一个工厂。同样DocumentBuilder也没有公共构造方法。这里涉及到设计模式里的“工厂 方法模式”和“单态模式”,这样做的意义我们以后将在“设计模式”一块给出。

    从.xml文件中生成Document对象:
    javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(“fileName”));
    其中parse方法可以是多种参数,可参看java api文档。

    取得根结点:
    doc.getDocumentElement().childNodes().item(0);
    可 以看到对dom树操作就类似于在javascript里用dom api操作xml了,事实上,两者都是有w3c标准化组织提供的。

    文件 存放xml Document对象。
    javax.xml.transform.Transformer tf =
    javax.xml.transform.TransformerFactory.newInstance().newTransformer();
    tf.transform(new javax.xml.transform.dom.DOMSource(doc),
    new javax.xml.transform.stream.StreamResult(new FileOutputStream(fileName)));

    下面是一些简单的包装过的方法:
    /**
    *将dom树对象 doc存入fileName提定的文件中
    **/
    public void saveToFile(Document doc, String fileName) throws TransformerFactoryConfigurationError, FileNotFoundException, TransformerException{
                  javax.xml.transform.Transformer trans = javax.xml.transform.TransformerFactory.newInstance().newTransformer();
                  trans.transform(new javax.xml.transform.dom.DOMSource(doc),
                                new javax.xml.transform.stream.StreamResult(new FileOutputStream(fileName)));
          }

    /**
    *生成一个带根结点名为 rootName的Dom树对象。
    **/
    public Document createXMLDoc(String rootName) throws FileNotFoundException, SAXException, IOException, ParserConfigurationException{
                  Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
                  doc.appendChild(doc.createElement(rootName));             
                  return doc;
          }

    /**
    *由给定文件名的xml文件生成一个Dom 树。
    */
    public Document createXMLFromFile(String fileName) throws SAXException, IOException,
                        ParserConfigurationException {
                  File xmlFile = new File(fileName);
                  if (!xmlFile.exists()) {
                        System.err.println("File " + fileName + "doesn't exist!");
                        System.exit(0);
                  }
                  return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
                                fileName);     
          }
    本贴标签:
  • (转载)QTP DotNetFactory使用解析

    2010-03-24 14:32:02

    http://docs.google.com/View?id=ddnrfkv6_1917fjkgm9hk
    QuickTest Professional 9.x 增加了一项新功能DotNetFactory,它能让你创建.NET对象实例,它封装了CreateInstance方法。如果你想使用一个.NET对象 作为QuickTest中一个方法的一个参数,你必须使用CreateInstance方法首先为该.NET对象创建一个COM接口:

    Set var_CreateInstance = DotNetFactory.CreateInstance (TypeName [,Assembly] [,args])

    Argument

    Type

    Description

    TypeName
    String
    The full name of the object type, for example, System.Windows.Forms.Form.
    Assembly
    Any
    Optional. If the assembly is preloaded in the registry, you do not need to enter it. Otherwise, you should enter the full path name, for example, System.Windows.Forms. If you want to create an instance of a type in the GAC (Global Assembly Cache), you can enter the short name, for example, Forms.
    Note: If you do not pass this argument, QuickTest assumes that the assembly is resident in memory. If QuickTest does not find the assembly, an error message is displayed during the run session.
    args
    Any
    Optional. The required arguments, if any, for the specified TypeName and/or Assembly.
    支持DotNetFactory这项功能的DLL位于%programfiles%\HP\QuickTest Professional\bin\DotNetFactory.dll
     

    Mscorlib.dll代表微软的Common Language Runtime Library,是.NET框架 通用库的主要程序集。它定义了如下命名空间(v2.0.50727):

    Microsoft.Win32

    Microsoft.Win32.SafeHandles

    System

    System.Collections

    System.Collections.Generic

    System.Collections.ObjectModel

    System.Configuration.Assemblies

    System.Deployment.Internal

    System.Deployment.Internal.Isolation

    System.Deployment.Internal.Isolation.Manifest

    System.Diagnostics

    System.Diagnostics.CodeAnalysis

    System.Diagnostics.SymbolStore

    System.Globalization

    System.IO

    System.IO.IsolatedStorage

    System.Reflection

    System.Reflection.Cache

    System.Reflection.Emit

    System.Resources

    System.Runtime

    System.Runtime.CompilerServices

    System.Runtime.ConstrainedExecution

    System.Runtime.Hosting

    System.Runtime.InteropServices

    System.Runtime.InteropServices.ComTypes

    System.Runtime.InteropServices.Expando

    System.Runtime.InteropServices.TCEAdapterGen

    System.Runtime.Remoting

    System.Runtime.Remoting.Activation

    System.Runtime.Remoting.Channels

    System.Runtime.Remoting.Contexts

    System.Runtime.Remoting.Lifetime

    System.Runtime.Remoting.Messaging

    System.Runtime.Remoting.Metadata

    System.Runtime.Remoting.Metadata.W3cXsd2001

    System.Runtime.Remoting.Proxies

    System.Runtime.Remoting.Services

    System.Runtime.Serialization

    System.Runtime.Serialization.Formatters

    System.Runtime.Serialization.Formatters.Binary

    System.Runtime.Versioning

    System.Security

    System.Security.AccessControl

    System.Security.Cryptography

    System.Security.Cryptography.X509Certificates

    System.Security.Permissions

    System.Security.Policy

    System.Security.Principal

    System.Security.Util

    System.Text

    System.Threading

    .NET类继承体系的根类Sytem.Object也定义在这个类集当中,几乎所有的托管应用程序都必须引用这个类集,所以C#编译器在编译过程中自动加上对mscorlib类集的引用,所有程序集也都自动引用了它。延伸阅读mscorlib.dll & System.dll

     
     
    例子:
    1. Set objBtn1 = DotNetFactory.CreateInstance(”System.Windows.Forms.Button”)
    2. Set myList = DotnetFactory.CreateInstance("System.Collections.ArrayList")
    3. Set File = DotNetFactory.CreateInstance("System.IO.File")
    4. Set p1 = DotNetFactory.CreateInstance(”System.Drawing.Point”,”System.Drawing”,x,y)
    5. Set objReader1 = DotNetFactory.CreateInstance(”System.Xml.XmlTextReader”, “System.Xml”,”C:\Documents and Settings\kmohankumar\Desktop\11.xml”)
     
    附录:
    [Description("Enables you to create an instance of a .NET object, and access its methods and properties."), Guid("15494157-E302-4a17-95C7-24C545CA8F53"), ClassInterface(ClassInterfaceType.None), ProgId("Mercury.DotNetFactory.1"), ComVisible(true)]
    public class DotNetFactory : IObjFactory, IReflect, IObjFactoryServices
    {
    // Fields
    private ArrayList _ArgList;

    // Methods
    static DotNetFactory()
        {
        Trace.WriteLine("ObjectFactory");
        RegistryKey currentUser = Registry.CurrentUser;
        RegistryKey key2 = currentUser.OpenSubKey(@"Software\Mercury Interactive\QuickTest Professional\MicTest\ReservedObjects\DotNetFactory");//见下图

        string str = (string) key2.GetValue("PreloadAssemblies", null);
        if (str != null)
        {
            string[] strArray = str.Split(new char[] { ';' });
            DotNetFactory factory = new DotNetFactory();
            currentUser.Close();
            key2.Close();
            foreach (string str2 in strArray)
            {
                try
                {
                    Trace.WriteLine(str2);
                    factory.LoadAssembly(str2);
                    Trace.WriteLine("Loaded");
                }
                catch
                {
                    Trace.WriteLine("Failed");
                }
            }
        }
        }

    public DotNetFactory();
        {
           this._ArgList = new ArrayList();
        }

    private void AddArg(object arg)
        {
            if (arg is DispWrapper)
            {
                arg = ((DispWrapper) arg)._object;
            }
            this._ArgList.Add(arg);
        }
     private void ClearArgs();
     
     public object CreateInstance(string TypeName, object assembly, params object[] CtorArgs)
        {
            object obj3;
            ConstructorInfo[] constructors;
            this._ArgList.Clear();
            if (CtorArgs != null)
            {
                foreach (object obj2 in CtorArgs)
                {
                    this.AddArg(obj2);
                }
            }
            if ((assembly is string) && (((string) assembly).Length > 0))
            {
                this.LoadAssembly(assembly as string);
            }
            Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();//获取当前应用程序域加载的所有程序集
            Type conversionType = null;
            foreach (Assembly assembly2 in assemblies)
            {
                conversionType = assembly2.GetType(TypeName);//如果CreateInstance仅有一个参数无须带任何可选参数,帮助里说程序集已在内存中,如例2和例3             
                 if (conversionType != null)
                {
                    break;
                }
            }
            if (conversionType == null)
            {
                throw new Exception("Type '" + TypeName + "' not found in any loaded assembly");
            }
            if (this._ArgList.Count == 0)
            {
                constructors = conversionType.GetConstructors();//值来自于如果CreateInstance仅有一个参数
                if ((constructors == null) || (constructors.Length == 0))
                {
                    if (conversionType.IsValueType)
                    {
                        string str = "0";
                        try
                        {
                            obj3 = Convert.ChangeType(str, conversionType);
                        }
                        catch (InvalidCastException)
                        {
                            obj3 = new DispWrapper(conversionType);
                        }
                    }
                    else
                    {
                        obj3 = new DispWrapper(conversionType);
                    }
                }
                else
                {
                    obj3 = conversionType.Assembly.CreateInstance(TypeName);
                }
            }
            else
            {
                object[] args = new object[this._ArgList.Count];
                for (int i = 0; i < this._ArgList.Count; i++)
                {
                    args[i] = this._ArgList[i];
                }
                this.ClearArgs();
                constructors = conversionType.GetConstructors();//值来自于如果CreateInstance仅有一个参数
                if ((constructors == null) || (constructors.Length == 0))
                {
                    obj3 = new DispWrapper(conversionType);
                }
                else
                {
                    obj3 = conversionType.Assembly.CreateInstance(TypeName, false, BindingFlags.CreateInstance, null, args, null, null);//此步能接受例4和例5的输入
                }
                if (obj3 == null)
                {
                    throw new Exception("Cannot create instance of " + TypeName);
                }
            }
            if (!(obj3 is string) && !(obj3 is DispWrapper))
            {
                obj3 = new DispWrapper(obj3);
            }
            return obj3;
        }
     
     public void LoadAssembly(string partialName)
        {
        string str = partialName.ToLower();
        if (str.IndexOf(".dll") > 0)
        {
            this.LoadAssemblyByPath(partialName);
        }
        else if (str.IndexOf(".exe") > 0)
        {
            this.LoadAssemblyByPath(partialName);
        }
        else if (Assembly.LoadWithPartialName(partialName) == null)
        {
            throw new FileNotFoundException("Cannot load Assembly " + partialName);
        }
        }

    private void LoadAssemblyByPath(string path)
        {
        Assembly.LoadFrom(path);
        }

        FieldInfo IReflect.GetField(string name, BindingFlags bindingAttr);
        FieldInfo[] IReflect.GetFields(BindingFlags bindingAttr);
        MemberInfo[] IReflect.GetMember(string name, BindingFlags bindingAttr);
        MemberInfo[] IReflect.GetMembers(BindingFlags bindingAttr);
        MethodInfo IReflect.GetMethod(string name, BindingFlags bindingAttr);
        MethodInfo IReflect.GetMethod(string name, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers);
        MethodInfo[] IReflect.GetMethods(BindingFlags bindingAttr);
        PropertyInfo[] IReflect.GetProperties(BindingFlags bindingAttr);
        PropertyInfo IReflect.GetProperty(string name, BindingFlags bindingAttr);
        PropertyInfo IReflect.GetProperty(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers);
        object IReflect.InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters); public object Unwrap(object wrapper);
    // Properties
    protected virtual Type MyType { get; }
    Type IReflect.UnderlyingSystemType { get; }
    }
      
     
    [ComVisible(true), ClassInterface(ClassInterfaceType.AutoDispatch)]
    internal class DispWrapper : IReflect
    {
    // Fields
    internal Exception _exception;
    internal object _object;
    private Type _ObjectType;

    // Methods
    internal DispWrapper(object obj)
    {
        this._object = obj;
        this._ObjectType = obj.GetType();
    }

    internal DispWrapper(Type t)
    {
        this._object = null;
        this._ObjectType = t;
    }
     public FieldInfo GetField(string name, BindingFlags bindingAttr);
    public FieldInfo[] GetFields(BindingFlags bindingAttr);
    public MemberInfo[] GetMember(string name, BindingFlags bindingAttr);
     public MemberInfo[] GetMembers(BindingFlags bindingAttr);
     public MethodInfo GetMethod(string name, BindingFlags bindingAttr);
     public MethodInfo[] GetMethods(BindingFlags bindingAttr);
     public PropertyInfo[] GetProperties(BindingFlags bindingAttr);  public PropertyInfo GetProperty(string name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers);
     public object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target, object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] namedParameters); MethodInfo IReflect.GetMethod(string name, BindingFlags bindingAttr, Binder binder, Type[] types, ParameterModifier[] modifiers); PropertyInfo IReflect.GetProperty(string name, BindingFlags bindingAttr);
     
     // Properties
    public Type UnderlyingSystemType { get; }
    }
     
  • vbs 操作xml文件

    2010-03-24 13:37:43

  • QTP(Quick Test Professional)插件破解 (转载)

    2010-03-12 08:57:22

    QTP(Quick Test Professional)插件破解

    下面是激活插件的步骤

    第一步:完成安装.net插件,这是,插件界面会显示出.net和WPF插件,并且有14天的测试license

    第二步:正常使用,等14天过完之后,也就是插件的状态变为 no license 之后,将HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive备份

    第三步:找到HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\QuickTest Professional\Add-In Manager\WPF,将名称为“默认”的键值修改为“QTCoreAddin”,再将“ProgID”的键值修改为 “Mercury.AddinBaseObj”

    第四步:同理,找到HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive\QuickTest Professional\Add-In Manager\WinForms,将将名称为“默认”的键值修改为“QTCoreAddin”,再将“ProgID”的键值修改为 “Mercury.AddinBaseObj”

    第五步:关闭注册表,重启软件,.net插件和WPF插件的状态都已经变成了licensed状态

    http://hi.baidu.com/bianxuehui/blog/item/e771fa117e5acd0a203f2e0d.html

    本教程只为学习使用,请勿用于商业用途,否则,后果自负。

  • vbscript 对象判断

    2010-02-24 10:51:26

    basic语言中对普通类型赋值用=,对象赋值用set

    dim a,b
    a=12
    set b=document.getElementById("btnTest")

    普通数据类型用=比较,对象类型用is



     <input type="button" id="btnTest" name="btnTest" value="测试"/>
    <script. language="vbscript">
         dim btn
         set btn=document.getElementById("btnTest1")
              
         if btn is nothing then
                msgbox "无法找到对象"
         else
             msgbox "对象值:" & btn.value
         end if
    </script>
  • 小鹏点评:最应知道的10条心理学规律(转载)

    2010-02-23 13:13:34

    转载地址:

    http://bbs.vsharing.com/Article.aspx?aid=1017824

    http://bbs.vsharing.com/Article.aspx?aid=1041059

    家庭教育实际上是一门“动心”的艺术,如果不能把工作做到孩子的心坎上,其教育的 效果往往会苍白而无力。

     

    因此, 在教育孩子的过程中,每位母亲都应努力探索一些“心理规律”的积极或消极影响,并趋利避害地发挥它们的作用,从而科学地引导孩子成为自己理想中的人中之 龙、人中之凤!

     

    作为一名管理 者,带团队、带员工有时更像是带小孩,用一颗宽容的心、慈悲的心、呵护的心、成长的心去对待你的团队的每个成员,现将管理学中的十大心理规律与管理实践相 结合,与大家一起分享。

     

    心理规律一:罗森塔尔效应

     

    美国著名的心理学家罗森塔尔曾做过这样一个试验:

     

    他把一群小白鼠随机地分成两 组:A组和B组,并且告诉A组的饲养员说,这一组的老鼠非常聪明;同时又告诉B组的饲养员说他这一组的老鼠智力一般。几个月后,教授对这两组的老鼠进行穿 越迷宫的测试,发现A组的老鼠竟然真的比B组的老鼠聪明,它们能够先走出迷宫并找到食物。

     

    于是罗森塔尔教授得到了启发,他想这种效应能不能也发生在人的身上呢?他来到了一所普通中学,在一个班里随便地走了一趟,然后就在学生名单 上圈了几个名字,告诉他们的老师说,这几个学生智商很高,很聪明。过了一段时间,教授又来到这所中学,奇迹又发生了,那几个被他选出的学生现在真的成为了 班上的佼佼者。

     

    为什么会出现这种现象呢?正是“暗示”这一神奇的魔力在发挥作用。

     

    每个人在生活中都会接受这样或那样的心理暗示,这些暗示有的是积极的,有的是消极的。妈妈是孩子最 爱、最信任和最依赖的人,同时也是施加心理暗示的人。如果是长期的消极和不良的心理暗示,就会使孩子的情绪受到影响,严重的甚至会影响其心理健康。相反, 如果妈妈对孩子寄予厚望、积极肯定,通过期待的眼神、赞许的笑容、激励的语言来滋润孩子的心田,使孩子更加自尊、自爱、自信、自强,那么,你的期望有多 高,孩子未来的成果就会有多大!

     

    小鹏点评:

    你会经常用暗示的方法来促进你的下属成长吗?你是不是经常抱怨下属的无能,训斥着下属的幼稚,你是否一直 用消极来延伸着下属,因为你忽略了对下属及时的赞扬,而促使着你的下属不断的建立一层防范之心。你为什么不试着用一颗更宽广的心去包容、引导你的下属呢? 为什么不用你那可爱的大拇指代替食指呢?从现在开始,不要吝啬你的赞扬之语。相信你的下属不比别人差。

     

    心理规律二:超限效应

     

    美国著名作家马克·吐温有一次在教堂听牧师演讲。最初,他觉得牧师讲得很好,使人感动,准备捐款。过了10分钟,牧师还没有讲完,他有些不 耐烦了,决定只捐一些零钱。又过了10分钟,牧师还没有讲完,于是他决定1分钱也不捐。等到牧师终于结束了冗长的演讲开始募捐时,马克·吐温由于气愤,不 仅未捐钱,还从盘子里偷了2元钱。

     

    这种刺激过多、过强和作用时间过久而引起心理极不耐烦或反抗的心理现象,被称之为“超限效应”。

     

    超限效应在家庭教育中时常发生。如,当孩子犯错时,父母会一次、两次、三次,甚至四次、五次重复对一件事作同样的批评,使孩子从内疚不安到 不耐烦乃至反感讨厌。被“逼急”了,就会出现“我偏要这样”的反抗心理和行为。

     

    可见,妈妈对孩子的批评不能超过限度,应对孩子“犯一次错,只批评一次”。如果非要再次批评,那也不应简单地重复,要换个角度、换种说法。 这样,孩子才不会觉得同样的错误被“揪住不放”,厌烦心理、逆反心理也会随之减低。

     

    小鹏点评:

    你是否在工作把下属犯的错误反复“强调”,如果你曾经这样做过,那么请明天起,你要去改正的这个恶习。之所以称之为恶 习,是因为他会为你的工作带来无尽的烦恼。试想一下,下属犯错,谁最难受,肯定是当事人,这是人之常情,特别是对于成年人来说,能够非常清晰的认识到自身 的错误,如果此时你换个方式与之沟通的话,不但可以将失误变成为一个教训,更能成为下属成功的垫脚石,而不是绊脚石。如何将绊脚石变成垫脚石,你想过吗?

     

    心理规律三:德西效应

     

    心理学家德西曾讲述了这样一个寓言:

     

    有一群孩子在一位老人家门前嬉闹,叫声连天。几天过去,老人难以忍受。于是,他出来给了每个孩子 10美分,对他们说:“你们让这儿变得很热闹,我觉得自己年轻了不少,这点钱表示谢意。”孩子们很高兴,第二天仍然来了,一如既往地嬉闹。老人再出来,给 了每个孩子5美分。5美分也还可以吧,孩子仍然兴高采烈地走了。第三天,老人只给了每个孩子2美分,孩子们勃然大怒,“一天才2美分,知不知道我们多辛 苦!”他们向老人发誓,他们再也不会为他玩了!

     

    在这个寓言中,老人的方法很简单,他将孩子们的内部动机“为自己快乐而玩”变成了外部动机“为得到 美分而玩”,而他操纵着美分这个外部因素,所以也操纵了孩子们的行为。

     

    德西效应在生活中时有显现。比 如,父母经常会对孩子说:“如果你这次考得100分,就奖励你100块钱”、“要是你能考进前5名,就奖励你一个新玩具”等等。家长们也许没有想到,正是 这种不当的奖励机制,将孩子的学习兴趣一点点地消减了。

     

    在学习方面,家长应引导孩子树立远大的理想,增进孩子对学习的情感和兴趣,增加孩子对学习本身的动 机,帮助孩子收获学习的乐趣。家长的奖励可以是对学习有帮助的一些东西,如书本、学习器具,而一些与学习无关的奖励,则最好不要。

     

    小鹏点评:

    什么是使命?什么是愿景?为什么企业在初创时期,全员激情高涨,像兄弟姐妹般的为整个企业不断奋斗,然而到了成长阶段 后,却没有当初创业的热情却是不断内耗。关键因素在哪里?其实关键因素就在企业的当家人。当家人在初创时期是靠个人魅力影响着企业的发展,但是到了企业规 范管理阶段,人多了,规模大了,部门多了,如果仅靠当家人的个人魅力来影响企业的发展是一件相当危险的事情,应着重加强制度建设、企业文化建设,通过一手 硬,一手软来加强企业的发展,保证企业双条腿走路。这就是当家人塑造公司的企业文化,形成行为规范,刻画企业形象,打造发展基因。唯有如此,才能带领企业 朝一个方向发展,实现企业的目标。

    心理规律四:南风效应

     

    南风”效应也称“温暖”效应,源于法国作家拉·封丹写过的一则寓言:

     

    北风和南风比威力,看谁能把行人身上的大衣脱掉。北风首先来一个冷风凛凛、寒冷刺骨,结果行人为了抵御北风的侵袭,便把大衣裹得紧紧的。南 风则徐徐吹动,顿时风和日丽,行人觉得春暖上身,始而解开纽扣,继而脱掉大衣,南风获得了胜利。

     

    故事中南风之所以能达到目的,就是因为它顺应了人的内在需要。这种因启发自我反省、满足自我需要而产生的心理反应,就是“南风效应”。

     

    由此我们可以知道,家庭教育中采用“棍棒”、“恐吓”之类“北风”式教育方法是不可取的。实行温情教育,多点“人情味”式的表扬,培养孩子 自觉向上,才能达到事半功倍的效果。

     

    小鹏点评:

        激励是什么?激励就是让你增加快乐,减少痛苦!在工作中,你会以此为标准来激励你的员工、你的团队吗?效果如何?为什么没有效果?你可以带着这些的问题, 去思考你的激励方式、制度是如何设计并优化。在工作中,我们激励一定要做到:三关四不一 ——即关心员工、关注需求、关爱人性;不一,就是每位员工的思想不一、追求不一、需求不一、价值观不一。

     

    心理规律五:木桶效应

     

    “木桶”效应的意思是:一只沿口不齐的木桶,它盛水的多少,不在于木桶上那块最长的木板,而在于木桶上最短的那块木板。

     

    一个孩子学习的学科综合成绩好比一个大木桶,每一门学科成绩都是组成这个大木桶的不可缺少的一块木 板。孩子良好学习成绩的稳定形成不能靠某几门学科成绩的突出,而是应该取决于它的整体状况,特别取决于它的某些薄弱环节。因此当发现孩子的某些科目存在不 足时,就应及时提醒孩子,让其在这门学科上多花费一些时间,做到“取长补短”。

     

    小鹏点评:

        木桶效应,一个管理学的经典定律!但是,很多人却误用了此定律。假设你是一位新进公司的大学生,你认为是先补最短的板块还是扬长板呢?很多人会说,应补最 短的那块。你也是这样认为吗?如果你也这样认为的话,你会很惨!首先,你会经常因为做不擅长的事情而受到打击,而逐步丧失信心,退化工作热情;然后,你不 能将有限的资源聚焦,人的精力是有限的,你不能同时专注于几块领域;其次,你如果专注补短,你的机会将比别人更少,机会永远是相对的,如果你在陌生的领域 中,你是很难清醒的认识到此刻就是一个机会。所以,如果你是一个新进的大学生,你要将你的长板借助于某个平台进行发扬,让更多的人认识你的能力,然后,肩 负起更大的责任,责任此时就是机会。

    心理规律 六:霍桑效应
     
    美国芝加哥郊外的霍桑工厂是一个制造电话交换机的工厂,有较完善的娱乐设施、医疗制度和养老金 制度等,但工人们仍然愤愤不平,生产状况很不理想。后来,心理学专家专门对其进行了一项试验,即用两年时间,专家找工人个别谈话两万余人次,规定在谈话过 程中,要耐心倾听工人对厂方的各种意见和不满。
    这 一谈话试验收到了意想不到的结果:霍桑工厂的产值大幅度提高。
    孩子在学习、成长的过程中难免有困惑或者不满,但又不能充分地表达出来。作为母亲,要尽量挤出时间与孩子谈心,并且在谈的过程中,要耐 心地引导孩子尽情地说,说出自己生活、学习中的困惑,说出自己对家长、学校、老师、同学等的不满。
    孩子在“说”过之后,会有一种发泄式的满足,他们会感到轻松、舒畅。如此,他们在学习中就会更加 努力,生活中就会更加自信! 
     
    小鹏点评:此规律带给我们管理者 是显而易见的效果。我们在管理过程中,其实我们有时忽略了员工倾诉的需求。没有倾诉就是在不断地砌墙,把我们的员工拒之于千里之外,为什么不俯下身去倾 听,去了解员工的需求呢?
     
    心理规律七:增减 效应
     
    人际交往中的“增减效应”是指:任何人都希望对方对自己的喜欢能“不断增加”而不是“不断减 少”。比如,许多销售员就是抓住了人们的这种心理,在称货给顾客时总是先抓一小堆放在称盘里再一点点地添入,而不是先抓一大堆放在称盘里再一点点地拿出。
    我们在评价孩子的时候难免将他的缺点和优点都要诉说一番,并常常采用“先褒后贬”的方法。其 实,这是一种很不理想的评价方法。在评价孩子的时候,我们不妨运用“增减效应”,比如先说孩子一些无伤尊严的小毛病,然后再恰如其分地给予赞扬……
     
    小鹏点评:赞美永远是一种艺术。作为管理者,在日常事务的处理中,必定会 遇到如何赞美,何时赞美。如果我们能有效运用增减效应,我们就可以激励员工的积极性。
     
    心理规律八:蝴蝶效应
     
    据研究,南半球一只蝴蝶 偶尔扇动翅膀所带起来的微弱气流,由于其他各种因素的掺和,几星期后,竟会变成席卷美国德克萨斯州的一场龙卷风!紊乱学家把这种现象称为“蝴蝶效应”,并 作出了理论表述:一个极微小的起因,经过一定的时间及其他因素的参与作用,可以发展成极为巨大和复杂的影响力。
     “蝴蝶效应”告诉我们,教育孩子无小事。一句话的表述、一件事的处理,正确和恰当的,可能影 响孩子一生;错误和武断的,则可能贻误孩子一生。
     
    小鹏点评:前因后果。一切事情皆出有因。一名有效的管理者是发现问题的高手,即使是在形势大好的情况下,都要保 持一颗旁观者的心态,去冷静地分析、判断事情。唯有如此,才能防患于未然。
     
    心理规律九:贴标签效应
     
    在第二次世界大战期间, 美国由于兵力不足,而战争又的确需要一批军人。于是,美国政府就决定组织关在监狱里的犯人上前线战斗。为此,美国政府特派了几个心理学专家对犯人进行战前 的训练和动员,并随他们一起到前线作战。
    训练 期间心理学专家们对他们并不过多地进行说教,而特别强调犯人们每周给自己最亲的人写一封信。信的内容由心理学家统一拟定,叙述的是犯人在狱中的表现是如何 地好、如何改过自新等。专家们要求犯人们认真抄写后寄给自己最亲爱的人。三个月后,犯人们开赴前线,专家们要犯人给亲人的信中写自己是如何地服从指挥、如 何地勇敢等。结果,这批犯人在战场上的表现比起正规军来毫不逊色,他们在战斗中正如他们信中所说的那样服从指挥、那样勇敢拼搏。后来,心理学家就把这一现 象称为“贴标签效应”,心理学上也叫暗示效应。
    这 一心理规律在家庭教育中有着极其重要的作用。例如,如果我们老是对着孩子吼“笨蛋”、“猪头”、“怎么这么笨”、“连这么简单的题目都不会做”等,时间长 了,孩子可能就会真的成为了我们所说的“笨蛋”。
    所以,妈妈必须戒除嘲笑羞辱、责怪抱怨、威胁恐吓等语言,多用激励性语言,对孩子多贴正向的标签。
     
    小鹏点评:暗示效应,是管理者必须深知的。在培养属下时,要多用大拇指, 少用食指,大拇指代表赏识,食指代表指责。赏识其实是你在不断地引导你的员工走向优秀,当你引导时,你的员工就会树立信心,当你指责时,你的员工只会被动 等待着指示。而我们需要是主动积极的员工,所以,你必须暗示你的员工,在你的心中,他是主动的、积极的、最棒的!
     
    心理规律十:登门槛效应
     
    日常生活中常有这样一种 现象:在你请求别人帮助时,如果一开始就提出较高的要求,很容易遭到拒绝;而如果你先提出较小要求,别人同意后再增加要求的分量,则更容易达到目标,这种 现象被心理学家称为“登门槛效应”。
    在家庭教 育中,我们也可以运用“登门槛效应”。例如,先对孩子提出较低的要求,待他们按照要求做了,予以肯定、表扬乃至奖励,然后逐渐提高要求,从而使孩子乐于无 休止地积极奋发向上。
     
    小鹏点评:如果把“登门槛效应” 运用于管理上,最直接的就是如何设定目标。在设定目标时,我们一定要很清晰的明了属下的优势、劣势,并能为属下做SWOT分析(即优势、劣势、机会、威 胁),设定合理的目标能更有效的开展工作。
     
    结束语:
    作为一名管理者,遇到的 问题可以说千变万化,但都可以体现在沟通上。下面就如何沟通进行点评。
    同 理心永远是沟通最重要的心态!其实,沟通首先是一种心态,然后才是技巧、方法。经常有人问:“小鹏老师,为什么我与他无法进行沟 通,每次沟通时都会不欢而散。”作为一名管理者,在工作中,沟通工作占据的工作时间为70%至80%,然而,我们很多的管理者在沟通时,都只是站在自己的 所处的部门、角色与其他同事进行沟通,这显然是一种强卖的行为。如果你不能清晰的知道别人在想什么,你不愿用同理心去理解对方所处的情境,你的沟通是无效 的。
    沟通中“有效果比有道理更重要”!“讲道理”是 把焦点放在过去的事上,注重实效则容易把注意力放在未来。效果是计划的基础,也是所有行动的指针。因为没有两个人的信念、价值观是一样的,所以,没有两个 人的“道理”是一样的。那么,坚持道理,只不过是坚持一套不能放在另一个人身上的信念、价值观。真正推动一个人的力量是在感性的一边,要有效果就要加上理 性方面的认同才会出现。
    沟通的意义决定于对方的回应。沟 通没有对与错,只有“有效果”或者“没有效果”之分。自己说得多么“正确”没有意义,对方收到你想表达的信息才是沟通的意义。因此,自己说什么不重要,对 方接受什么才重要。话有很多种方法说出来,使听者完全接受或大部分接受讲者意图传达的信息,便是正确的方法。
  • 关于 onBlur,onChange,onClick,OnKeyDown,OnKeyUp,OnKeyPress

    2010-02-08 14:01:59

    onblur:控件在失去焦点的时候触发

    OnChange:当控件的内容发生改变时触发该事件

    OnClick:点击该控件时触发

    OnKeyDown:在控件有焦点的情况下,按下键时发生

    OnKeyUp:在控件有焦点的情况下,释放键时发生

    OnKeyPress:在控件有焦点的情况下,按下键时发生

    键事件按下列顺序发生;
    1.KeyDown

    2.KeyPress

    3.KeyUp

    非字符键不会引发KeyPress,但是非字符键可以引发KeyDown,KeyUp

    OnMouseEnter:当鼠标指针进入控件时发生

    OnMouseDown:当鼠标指针在控件上,按下鼠标键时发生

    OnMouseUp:当鼠标指针在控件上,释放鼠标键时发生

    OnMouseLeave:当鼠标指针离开控件时发生

1953/10<12345678910>
Open Toolbar