发布新日志

  • QuickTest Pro 8.2 企业级自动化测试工具介绍

    2007-06-25 10:10:51

     

    QuickTest Pro 8.2 企业级自动化测试工具介绍

    QuickTest 8.2 Pro最新正式版发行,QTP 8.2是一个B/S系统的自动化功能测试的利器,软件程序测试工具。Mercury的自动化功能测试软件QuickTest Professional 8.2,可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。
    Mercury QuickTest Pro 8.2是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。
    Mercury QuickTest Pro 8.2为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。

    创建测试:用QuickTest Professional创立一个测试,您只需记录下一个标准的业务流程,如下一张订单或建立一个新的商家帐户。QuickTest Professional直观的记录流程能让任何人在GUI上轻轻点击鼠标就可建立测试,即使技术知识有限的用户也能生成完整的测试。您还可以直接编辑测试指令来满足各种复杂测试的需求。QuickTest Professional将2种测试创建方式结合在一个环境下,来适应不同的背景支持和您团队的喜好。

     插入检查点:在记录一个测试的过程中,可插入检查点,在查寻潜在错误的同时,比较预想和实际的测试结果。在插入检查点后,QuickTest Professional会收集一套性能指标,在测试运行时对其一一验证。QuickTest Professional允许使用几种不同类型的检查点,包括文本的,GUI,位图和数据库。

     检验数据:除了创立并运行测试,QuickTest Professional还能验证数据库的数值,从而确保交易的准确性。例如,在测试创建时,您可以设定哪些数据库表格和记录资料需要检测。在重放时,您的测试程序就会核对数据库内的实际数值与预想的数值。QuickTest Professional能自动显示检测结果,在有更新/修改,删除或插入的记录上会用突出标识以引起注意

     增强测试:为了彻底全面地测试一个应用程序,您需要了解对于不同类型的数据它是如何运行的。QuickTest Professional的DataDriverTM Wizard,让您只需点击几下鼠标,就能简单地将一个记录下的业务流程转化为一个数据驱动的测试,来反映多个用户各自独特且真实的操作行为。目前有相当数量的企业应用程序仍然使用非标准的对象。QuickTest Professional的Virtual Object Wizard能识别以前未知的对象,不必特别编写代码。使用Virtual Object Wizard界面,您会看到一张的对象类型列表,能用其来代表您未知的对象。您可以为您的对象设定标识,如一个按钮,并为其命名。

     运行测试:建立起您的测试,并插入检查点和做一些必要的功能添加后,您就可以开始运行测试。当WinRunner和QuickTest Professional执行您的测试时,它会自动操作应用程序,正如一个真实用户根据记录流程执行着每一步的操作。而且,它的意外处理功能为测试排除干扰,包括消息和警报

     分析结果:一旦测试运行后,您就需要分析测试结果。QuickTest Professional的互动式的报告工具通过提供详尽的,易读的报告,其中会列出在测试中发现的差错和出错的位置,来帮助您解释所得的结果。这些报告对在测试运行中发生的重要事件进行描述,如出错内容和检查点等。点击按钮,您还能进一步获取任何未被包括在此测试范围内的错误的详尽资料

     维护测试:随时间推移,开发人员会对应用程序做进一步的修改,并需要另加额外的测试。有了QuickTest Professional,您不必应用程序改动一次,就得重新建一个新的测试。而WinRunner会帮助您创立在程序应用周期内可重复使用的测试。这样大大地节省时间和资源,充分利用测试投资。

    特点和优势

    ·具有行业领先的便于使用的特性,以及支持提前配置环境的功能,确保了快速的投资回报。
    ·可独立运行,也可以同Mercury Business Process Testing和Mercury质量中心集成。
    ·引进了QuickTest Professional 8.0中新一代的“零配置关键词驱动测试技术,从而实现了快速建立测试、测试脚本更易维护,和更强大的数据驱动能力。
    ·通过集成的数据表,可数据驱动任意对象、方式、检查点和输出值等。

    QuickTest Professional 8.2 新功能:
    Keyword View: Lets you easily build and maintain tests without writing VBscrīpts.
    Auto-Documentation: Provides improved test clarity and the ability to view test steps in plain English.
    Step Generator: Allows you to quickly insert custom-built functions into your tests.
    Mercury Business Process Testing: Enhanced integration with BPT -- Business Components, scrīpted Components, and Application Areas.
    Enhanced Expert View: Provides greater efficiency when generalizing test components.
    Action Parameters: Allows you to generalize testing actions for greater reusability.
    Data Parameters: You can now specify test or action parameters to pass values into and from your test, and between actions in your test.
    Open XML Report Format for Test Results: Test results are now stored in an open XML format, enabling you to easily customize the reports according to your own requirements, and to integrate the test result information with other applications.
    Unicode Support: Lets you test global deployments of your enterprise applications.
    Function Definition Generator: You can use the new Function Definition Generator to generate definitions for user-defined functions, add header information to them, and register functions to a test object.

     

  • QTP的登陆脚本设计

    2007-06-25 10:09:26

    由于一直以来事情都比较多,最近上课还有其它的事情,所以本来答应一个朋友把脚本帮他写一些,但是耽误了3-4天了,实在不好意思。这里把脚本简单说一下,我们分析一下。
        当时问题是这样的,“我的错误的用户名就没办法登陆”,其实含义就是脚本最好能处理成功的用户名错误的用户名,那么这里涉及到脚本的设计。

    目标如下:
    1.    脚本需要处理成功和失败的用户的登陆
    2.   数据驱动

    设计开发脚本如下:


    第一步录制脚本如下
    Browser("智能变电巡检仪系统4.0").Page("智能变电巡检仪系统4.0").WebEdit("txtLoginName").Set "吕巍"
    Browser("智能变电巡检仪系统4.0").Page("智能变电巡检仪系统4.0").WebButton("登 录").set ""
    Browser("智能变电巡检仪系统4.0").Page("Page").Syn
    Browser("智能变电巡检仪系统4.0").Close

    以上为录制的正确的用户名,下边录制错误的用户名
    Browser("智能变电巡检仪系统4.0").Page("智能变电巡检仪系统4.0").WebEdit("txtLoginName").Set "xx"
    Browser("智能变电巡检仪系统4.0").Page("智能变电巡检仪系统4.0").WebButton("登 录").set ""
    出现错误提示“该用户不存在”

    第二步 增强脚本

    现在需要设计的是一套脚本驱动所有的测试数据,这样可以驱动所有的用例数据,qtp中提供了datatable。
    但是有数据驱动也要做一个事情就是如何处理错误的用户名和正确的用户名,如何结合起来呢?
    这里我把datatable看作存放测试用例的地方,里面放入测试数据,还放入测试的预期结果。这样我的设计已经出现雏形了。
    我把datatable设计为三列

    username  password status
    吕x               
    xxx       xxxx     该用户不存在

    第三列放入最后执行的结果,我设计的是空为成功登陆,如果有信息就用实际运行的结果和这一列对比.好了万事俱备只欠东风了

    修改脚本如下:
    Dim iStatus

    Browser("智能变电巡检仪系统4.0").Page("智能变电巡检仪系统4.0").WebEdit("txtLoginName").Set DataTable("username", dtLocalSheet)
    Browser("智能变电巡检仪系统4.0").Page("智能变电巡检仪系统4.0").WebButton("登 录").set DataTable("password", dtLocalSheet)
    iStatus = DataTable("status", dtLocalSheet)

    If   iStatus=""  Then
      Browser("智能变电巡检仪系统4.0").Close
    End If


    If   iStatus="该用户不存在"    Then
         Reporter.ReportEvent micFail, "登陆", "登陆失败."
    End If

    Browser("智能变电巡检仪系统4.0").Close

    第三步,设置脚本运行过程

    打开tests-〉settings
    设置RUN TAB页面下Datatable iterations中Run On all rows

    这样就完成了整个脚本的设计工作,以上通过一个简单例子吧脚本的设计和软件的功能结合起来,达成脚本的设计效果。

  • QTP中一些基础代码结构累积

    2007-06-25 10:08:27

    1.        生产随机数列

    第一种方法:

    randomize'更新反回的数据

    funcation rand(k,n)

    n=int((k-1)*rnd+1)

    rand=n

    end funcation

    第二种方法:

    n=randomnumber.value(1,255)

    2.        当运行到表中的某一行,自动导出表中的所有数据

    row=datatable.getcurrentrow

    if row="5" then

      datatable.export("d:\data.xml")

    end if

    3.        webedit("txtpass").setsecure"sdsdf...."

    如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set

    4.        如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证

    if browser("web_name".dialog("dialog_name").exist(1) then

    //如果不出现=false

    error_message=browser("web_name".dialog("diaglog_name".static("用户密码错误!").getRoproperty("text")))

      if error_message<>(datatable.value("error_info")) then

            msgbox(error_message)

        end if

        browser("web_name").dialog("diaglog_name").close

    end if

    这里我总结了两点技巧:

      一是:对于dialog中,虽然提示信息对象名称是“用户密码错误”,但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性。

        二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理。

    5.        在运行时,向某一个单元格赋值: datatable.value("kai",dtlocalsheet)="nanjing"

    datatable.value("num")只在global形式下的一种省略形式;完整形式是datatable.value("num",dtlocalsheet)

    ——取得某一具体行的值:

    datatable.setcurrentrow(n);

    msgbox(datatable.getsheet("global").getparameter("kai").Rawvalue)

    或者

    kk=datatable.Rawvalue("kai","action1")

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

    for i=1 to 3

    DataTable.SetCurrentRow(i)

    DataTable.Value("A","Global")=I            //DataTable.SetNextRow

    next

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

    ——在run-time期间,添加一个action和参数

    kk=datatable.addsheet("name").addparameter("kai","ddd"). name'/value

    6.         

    with dialog("name")                                  //可以省好多代码,看着也简洁

    content=.wintreeview

    end with

    7.         

    wintreeview.select(item)                    (根是0,列表第一个也是0)

    wintreeview.getcontent

    wintreeview.getitem(整行)+";"+

    winlistview.getitem(行中的第一个字符段)

    wincheckbox("").set"off"'/on

    8.        数据库检查点:

    sub getdata

    set con=createobject("adodb.connection")

    con.open("descrīption=mod;driver=sqlserver;server=hp\sqlserver;uid=sa;"&_

             "pwd=11111;APP=qtp;WSID=hp;database=MOD31" 

                                                  //sqlserver方式

    Con.open "DRIVER = {Microsoft Access Driver (*.mdb)};DBQ=D:\Testdb.mdb"

    //access方式

    set record=createobject("adodb.recordset")

    sql="select * from m3_program"

    //选择具体满足一条件的:sql="select* from m3_program where "

    record.open sql,con

    if(record("p_name")="kai") then

    num=num+1;

    end if          

    if(not record.eof) then

    record.movenext

    msgbox("p_name")

    end if

    record.close

    set record=nothing

    con.close

    set con=nothing

    end sub                             //如果没有查到内容,在结果中不会报错,也不会弹出窗口

    9.         

    vbcr----chr(13)回车符

    vblf----chr(10)换行符

    vbcrlf----chr(13)+chr(10)结合

    10.    stel run has two ways

    11.    对于时间,日期等的格式检查(一种是正则表达式,另一种是输出对比,如果不好对比,用mid截取一部分对比)

    12.    对于一些列表框或树结构,如果发生结点名称发生变化,此时如果报没有彼配的对象,此时可以把更改后面的名称如_2

    13.    对于动态变化的对象,要分清是对像还是属性;对于属性可以用gettoproperty("ddd");得到,而对于由于动态无法识别对像可以用描述性脚本,如:

    Set ōbject= Descrīption.Create()

    Object("regexpwndclass").Value="HtmlButton"

    Object("regexpwndtitle").Value="登陆"

    browser("ss").page("a").button(Object).click

    14.    对于属性是变化的,有时可以把该属性从识别对象里删除

    15.    从系统的文件中获取信息及删除文件get_file_infor("c:\she.mpg")

    function get_file_infor(url)

    dim fso,f

    set fso=createobject("scrīpting.filesystemobject")

    set f=fso.getfile(url)

    msgbox(f.datecreated)

    f.name:f.size:f.type

    fso.deletefile(url)'/////删除文件

    end function

    --------获取文件夹里所有文件信息get_folder_infor("c:\kai")

    function get_folder_infor(folder)

    dim fso,f,f1,n

    set fso=createobject("scrīpting,filesystemobject")

    set f=fso.getfolder(folder)

    set fc=f.files

    for each f1 in fc

    select case f1.name

    case"kai.mpg","she.mpg","dd.mp3"

    end select

    next

    end function

    16.    四舍五入可以在后面+0.5,进行自动解决

    17.    y=-------waitproperty("visible",true,10000)

    18.     

    on error resume next

    on error goto o

    19.    window("").wintreeview("systreeview32").type micctrldown+"p"+micctrlup

    20.    定义数组 name=array(1,2,"aa","bb");name(0)=1

    21.    进行日期YYYY-MM-DD的格式检查:

    Function RegExpTest(patrn, strng)

    Dim regEx, Match, Matches                //Create variable.

    Set regEx = New RegExp                        //Create a regular expression.

    regEx.Pattern = patrn                                    //Set pattern.

    查看(430) 评论(2) 收藏 分享 管理

  • QTP基础代码

    2007-06-25 10:07:19

       这两周我开始学习QTP测试我们的web服务了;大体的软件使用操作流程是懂了,但具体实施起来特别是代码的组织及函数应用还有一些困难,因为自己只会vb没学习vbscrīpt,所以想和大家交流一下代码等一些基础知识;呵呵,一起学习,加强记忆与应用。

     

    1 生产随机数列
    第一种方法
    randomize'更新反回的数据
    funcation rand(k,n)
    n="int((k-1)*rnd+1) rand=n
    end funcation
    第二种方法
    n="randomnumber.value(1,255)

    2  当运行到表中的某一行,自动导出表中的所有数据
    row=datatable.getcurrentrow
    if row="5" then
      datatable.export("d:\data.xml")
    end if

     

    3 参数化密码
    webedit("txtpass").setsecure"sdsdf...."
    如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set

     

    4 如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证
    if browser("web_name").dialog("dialog_name").exist(1) then'如果不出现="false     error_message=browser("web_name").dialog("diaglog_name").static("用户密码错误!".getRoproperty("text")
       if error_message<>(datatable.value("error_info"))then
             msgbox(error_message)
          end if
         browser("web_name").dialog("diaglog_name").close
      end if
    这里我总结了两点技巧:
      一是:对于dialog中,虽然提示信息对象名称是"用户密码错误",但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性
         二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理

     

    5  datatable.value("num")只在global形式下的一种省略形式;完整形式是:
    datatable.value("num",dtlocalsheet)
    -----向某一列的单元格赋值:
    datatable.value("column_name",dtlocalsheet)="nanjing"
    -----取得某一行具体值:
    datatable.setcurrentrow(n)
    msgbox(datatable.getsheet("global").getparameter("column_name").Rawvalue)
    或者kk=datatable.Rawvalue("column_name","action1")
    ----在run-time时,动态添加表格与数据
    kk=datatable.addsheet("sheet_name").addparameter("column_name","value").name;

     

    7   wintreeview一些操作
    选择一个条目:wintreeview.select(item)'根是0
    根的名称:wintreeview.getitem(0)

     

    8   数据库检查点模块:
    sub database_check
    set con="createobject(""adodb.connection")
    con.open "Descrīption="IBM_ODBC;DRIVER=SQL" Server;SERVER="IBM;UID=sa;""&_
                     "PWD="123456;APP=Quick" Test Pro;WSID="IBM;DATABASE=IBM_table""
    'access方式:con.open "DRIVER="{Microsoft" Access Driver (*.mdb)};DBQ="d:\test.mdb""
    'Orocle方式:con.open "DRIVER="{Oracle" in OraHome92};SERVER="CESHI;UID=CND_TEST;PWD=CND;DBQ=CESHI;DBA=W;APA=T;

    EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BA

    M=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;""
    set record="createobject(""adodb.recordset")
    sql="select*from ibm_one_table"
    record.open sql,con
    DO
    if(record("ibm_table_column")="kai")then'//查找表格中有多少kai
    num=num+1;
    end if
    record.movenext
    loop until record.eof="true record.close
    set record="nothing con.close
    set con="nothing end sub

     

    9   换行符
    vbcr----chr(13)回车符// vblf----chr(10)换行符
        vbcrlf----chr(13)+chr(10)结合//type(chr(13)就相当于按了一上键盘上的enter

     

    10  Run from step有两种方式:
    在Keyword View模式会从本步骤运行到所有action结束
    在expert view模式仅会将本action运行结束

     

    11  由于对象属性原因,无法识别对象
    -----对于对象属性是变化的,可以参数化/或者用正则表达式
    -----报匹配多个对象错误,可以spy查看对象,添加一个该对象另一个唯一标识属性
    -----有时可以删除对象的变化的属性来解决识别问题
    ------对于多个完全相同的对象,可以采用添加index,location,createtime等特殊属性来识别
      (index:按照程序源码,绘制对象的先后标识对象,所以与其它相同对象是相互依赖,当其它对象发生
      变化后,原先的所有对象index属性要发生变化,开始是0;如index:="0;         location:根据对象的位置进行确定,从上到下,从左到右;
      CreateTime:按照对象被浏览器打开的先后标识对象)
    ------另外换一种思维方式,采取等效的方法;比如用键盘代替鼠标或用操作系统本身特性去解决问题

     

    12  对系统文件的操作
    -------从系统的文件中获取信息及删除文件
      get_file_infor("c:\she.mpg")
       function get_file_infor(url)
        dim fso,f
        set fso="createobject(""scrīpting.filesystemobject")
        set f="fso.getfile(url)"
        f.name:f.size:f.type:f.datacreated'///获取文件信息
        fso.deletefile(url)'/////删除文件
       end function
    --------获取文件夹里所有文件信息
    get_folder_infor("c:\kai")
    function get_folder_infor(folder)
    dim fso,f,f1,n
    set fso="createobject(""scrīpting,filesystemobject")
    set f="fso.getfolder(folder) set fc="f.files for each f1 in fc
    select case f1.name
    case"kai.mpg","she.mpg","dd.mp3"'//检查文件夹里是否含有这些文件
    end select
    next
    end function

     

    13   等待某个对象出现方法
    y="......waitproperty(""visible",true,10000)

     

    14   防程序中断方法
    On error resume next
    On error goto handle

     

    15  数组的应用:
    name="array(1,2,""aa","bb")
    name(2)="aa"

     

    16  正则表达式应用模板
    进行日期YYYY-MM-DD的格式检查 :
    Function RegExpTest(patrn, strng)
      Dim regEx, Match, Matches      ' Create variable.
      Set regEx = New RegExp         ' Create a regular expression.
      regEx.Pattern = patrn         ' Set pattern.
      regEx.IgnoreCase = True         ' Set case insensitivity.
      regEx.Global = True         ' Set global applicability.
      Set Matches = regEx.Execute(strng)   ' Execute search.
      For Each Match in Matches      ' Iterate Matches collection.
        RetStr = RetStr & "Match found at position "
        RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
        RetStr = RetStr & Match.Value & "'." & vbCRLF
      Next
      RegExpTest = RetStr
    End Function
    date_pattern="^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"
    result_message=RegExpTest(date_pattern, inputbox("请你输入要检查的时间:"))'用其它正则表达式更改此处
    Select case result_message
    Case ""
             msgbox("你输入的日期格式与标准不匹配")
    case else  MsgBox(result_message)
    end select

     

    17   返回一个字符串在另一字符串中的位置
    instr(string1,string2)

     

    18   有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的操作系统等设置问题;
    举例说明1:
    比如:你录制一个选择磁盘中的文件动作
    会录制为:
    .winlistview("  ").drap 46,99
    .winlistview("  ").draponitem "she.mp3"
    下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到she;
    举例说明2:
    有时由于不同操作系统以及不同的ie,导致有些窗口不能识别,比如在2000下弹出的网页对话框的标题是:
    “web对话框",而在2003上是”网页对话框"

     

    19  "is+*"类型function
    isarray'是否是数组
    isconnected'判断QTP是否连接到TD
    isdate'是否是合法的日期类型
    isempty'判断是否初始化
    isNull'判断是否为空值
    isNumeric'判断是否是数字型
    isobject'判断是否一个功能对象
    isready'判断设备是否准备就绪
    isRootFolder'是否是根目录

     

    20 Action之间的参数传递
    例如:在Action1中,有如下代码:
    out_str="This is out_string"
    RunAction "Action2",oneIteration,out_str
    在Acton2中,在其step->Action Properties中的,input参数栏,加入out_str后,
    msgbox(parameter("out_str")),就能正确显示参数了 

     

    21 Wscrīpt.Shell的一些应用
    set WshShell ="CreateObject(""Wscrīpt.Shell")
    WshShell.SendKeys "{ENTER}"     '模拟键盘进行操作
    WshShell.AppActivate "Calculator"             '启动应用程序

     

    22 获取对象属性名称用法:
    GetRoProperty----从应用程序界面上获取对象属性(即,是脚本运行时,获取的对象动态属性值)例如:获取对象库中index属性值,似乎只能用GetToProperty,因为应用程序界面上对象没有该属性,只是QTP为识别该对象创立的描述属性;
    GetToproperty----从对象库中描述对象的属性,静态值
    GetToProperties----获取用于标识对象的属性集;对于这个集合,有count等属性方法

     

    23 FireEvent的使用可以对一个对象进行更复杂的操作
    如:FireEvent("onfocus")   '使一个控件获取焦点
         FireEvent("ondblclick")  '实现双击/也可以在事件设定中针对该对象事件响应  

     

    24 模板的应用
    -----新建一个文本,输入一些新建Action时常包含的信息,然后保存为ActionTemplate.MST文件,
     并复制到QTP/dat目录下;这样每次新建action都会包含固定的信息了;
    例如:
    '-------------------脚本说明---------------
    '产品版本:      __Build(  )
    '测试员:
    '编写日期:
    '测试功能:
    '脚本类型:
    '被测试对象初始状态:
    '进展程度:
    '基本思路:
    '主要功能函数:
    '历史修改:
    '没解决的问题:
    '--------------------脚本内容-------------

     

    25 在对象库中,两个对象有时不能通过更改属性或命名来达到两个对象完全一致的替换;
    在web-mod项目中,我在对象库里添加了一个自动含有index标识属性的对象,然后每次通过SetToproperty来改变
    index值,对对象进行数据驱动,使其操作另一个对象,但脚本始终操作原先index属性值的对象;后来,把该对象
    删除掉,重新添加一个不自动含有index标识属性的该类对象,然后,手工添加,index标识属性,后来脚本能正常工作了,可见两次的对象属性完全一致,但形成方式不一样,导致的结果往往也不一样;

     

    26 childobject的应用
    childobject可以返回界面上满足条件的对象集合,而且与对象库里是否有这些对象无关,这就可以简化对象库;
    返回的对象集合的count方法可以返回对象个数,这就可以通过下标对单个对象进行操作;在出现index标识对象时
    可以进行运用
    如:Set m_WinCheck="Descrīption.Create()       m_WinCheck("nativeclass").Value="Button"
          set All_WinCheck="Window(""").Dialog("").Childobject(m_WinCheck)
          n="All_WinCheck.Count()      for i="0" to n-1
          All_WinCheck(i).Set "ON"
         next

    --以上是一些简单基础内容及我的经验心得,欢迎大家贴一些特色代码或具体应用的核心代码,谢谢

  • 什么是weblogic?

    2007-06-25 09:15:40

    BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、 网络应用和数据库应
    用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的
    开发、集成、部署和管理之中。
    BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能 、可扩展性和高可用性。
    与BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可为部署适应性个性化
    电子商务应用系统提供完善的解决方案。
    BEA WebLogic Server具有开发和部署关键任务电子商务Web应用系统 所需的多种特色和优
    势,包括:
    1)领先的标准
    对业内多种标准的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web应用系统的实
    施更为简单,并且保护了投资,同时也使基于标准的解决方案的开发更加简便。
    2)无限的可扩展性
    BEA WebLogic Server以其高扩展的架构体系闻名于业内,包括客户机连接的共享、资源
    pooling以及动态网页和EJB组件群集。
    3)快速开发
    凭借对EJB和JSP的支持,以及BEA WebLogic Server 的Servlet组件架 构体系,可加速投
    放市场速度。这些开放性标准与WebGain Studio配 合时,可简化开发,并可发挥已有的技能,
    迅速部署应用系统。
    4)部署更趋灵活
    BEA WebLogic Server的特点是与领先数据库、操作系统和Web服务器 紧密集成。
    5)关键任务可靠性
    其容错、系统管理和安全性能已经在全球数以千记的关键任务环境中得以验证。
    6)体系结构
    BEA WebLogic Server是专门为企业电子商务应用系统开发的。企业电 子商务应用系统需
    要快速开发,并要求服务器端组件具有良好的灵活性和安全性,同时还要支持关键任务所必需
    的扩展、性能、和高可用性。BEA WebLogic Server简化了可移植及可扩展的应用系统的开发,
    并为其它应用 系统和系统提供了丰富的互操作性。
    凭借其出色的群集技术,BEA WebLogic Server拥有最高水平的可扩展 性和可用性。BEA
    WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或
    操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错,如Web购物车;
    组件群集则处理复杂的复制、负载平衡和EJB组件容错,以及状态对象(如EJB实体)的恢复。
    无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关
    重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它
    Web应用系统所不具备的。
  • 80常识20知识!

    2007-06-24 13:08:52


    这是两年前在网络上流传的一则故事:有一位工程师在一家公司工作三十年,退休了。他对该公司的机器及产品了如指掌。几年后,该公司的一套机器故障,全公司的人都没法找出问题来。绝望中,他们只好把退休的工程师找回来。这位工程师看了一个小时后,从上衣口袋拿出一枝粉笔,用粉笔在一个零件上画了一个大叉叉指出:「这就是你们的问题。」

    知识与常识
    杜书伍:懂八○%叫常识,
    真正的专业在二○%,那才是知识


    公司把零件换了,机器操作正常。但是不久,公司收到一张十万元的帐单,是这位退休工程师的收费。公司老板火大了,认为一个小时不值这么多钱,就要求送一张明细表。这位退休工程师的回函是:「粉笔,一元;知道在哪里画叉叉,九万九千九百九十九元。」

    就在工程师画下叉叉的同时,他脑中三十年的工作经验正以电影浓缩快转速度进行,顷刻间他闪过四个与该问题相连的可能解决方案、综合了同样问题场景却失败二十七次的经验值、和一百五十三次独自思索突破工作瓶颈的深层反省。

    决定工程师拿到九万九千九百九十九元的那一笔,究竟是什么?联强国际总裁兼执行长杜书伍说,在一个行业里,你懂八○%叫做「常识」,而不是「知识」,因为大家都懂八○%。而且,可能只要花二○%的时间就能学会这八○%。其实,真正的专业在最后的二○%,那才是真正的「知识」。他谈到多年的用人经验,刚入行的年轻人,很可能前两年所学到的都只是该行业的常识:「他学习一下,就说『喔,我学会了!』实际上他学的非常浅薄。只是像烟火一样,『砰』的一声好象看起来不错,但事实上不会产生效益!」

    「光靠常识的人,犹如只会一招半式。」杜书伍接着说,应付一般性的运作尚可,有时也可运作得很熟练,但针对每一次应用时可能遇到的细节不同,不见得能精准拿捏每个环节该使几分力、该如何变通,使得执行起来有隔靴搔痒之感,好象做了,却又总觉得少了什么。

    当一个人拥有「决胜二○%」的知识与能力后,手上握有的粉笔,就不只值一元,而能附加出九万九千九百九十九元的价值。不过,从「常识阶级」进入「知识阶级」,必须经历一段漫长的浸泡与思考。然后,脑袋会产生许多促使事件成功的直觉。

    二十八分钟练习
    大前研一在电车上思考问题解决方案
    三年成为全球客户最多的管理顾问


    日本管理大师大前研一是个绝佳的例子。他本来是一位从事核子反应炉设计工作九年的工程师,当他进入刚成立的麦肯锡东京事务所,若没有将企管用语转换为熟知的核子学用语,脑子就无法思考;而连「break-even analysis」是损益平衡分析都不懂的他,还被顶头上司骂出「你真是公牛乳头」的话(编按:公牛的乳头无法哺乳,意指一无是处)。于是,在找寻学习材料的过程,他发现公司图书室有一大批麦肯锡客户资料的个案微卷,白天他负责翻译、答复海外有关日本的市场调查,晚上就投入研究微卷,每天夜里搭十点四十八分的电车回家,假日也不间断。

    此外,他也尝试在短时间进行问题分析与提出对策大纲。好比说,把搭车看到第一眼的广告做为当天练习题目,利用二十八分钟的车程,思考问题解决方案。像是看到一则西红柿酱广告,大前研一将问题设定为「如何扩大某一品牌的西红柿酱市场」,在抵达公司前,他就思考「这样的广告看板是否能增加销路」以及「西红柿酱与西红柿汁的不同」等问题。久了,一天就不再限于一个题目。经过长达一年的电车训练,只要他的客户一提出问题与要求,大前研一都能立即在脑中形成解决图案。

    一年后,他整理笔记并出版《企业参谋》一书,接下来的一年,大前研一至少演讲数百场,使得原本几乎无案可做的日本麦肯锡业务量骤增,他自己也在进入公司第三年成为全球拥有最多客户、最忙碌的管理顾问,甫三十岁的他与「新力」的盛田昭夫、「富士」的小林阳太郎等多位日本重量级企业经营者,在国际会议上一起列席,介绍日式企业经营模式,顾问费高达每日一百五十万日圆(约合新台币四十三万元)。

    关键行销策略
    行销顾问建议说出酿制啤酒的故事
    六个月让施丽兹啤酒由第八变第一


    另一个例子出自《选对池塘钓大鱼》一书,内容提到,施丽兹啤酒(schlitz beer)在一九二年早期,约有十家不同的啤酒在市场上竞争,当时施丽兹啤酒排名第八。后来,因为一位行销顾问,让施丽兹的排名跃升到第一。

    当时,这名顾问为了弄懂这个领域的专业知识以及制酒过程,特别到酿制厂跑了一趟。施丽兹啤酒工厂设在密西根湖畔,当时的湖水非常清澈,即使如此,他们仍钻了两口五百呎深的自流井,因为他们必须钻到够深,才能找到正确的水质,并且把其中酒的矿物质调到完美的地步。工厂人员解释他们在五年内进行了一千六百二十三次的实验,以开发出最好的酵母,并展示如何在进行酿制前三次蒸馏水的程序。在装酒时,每个瓶子都用摄氏六百度的蒸汽消毒过,以确保杀死所有细菌。

    这位顾问建议公司管理层把这不寻常的酿制过程告诉消费者,管理层说:「为什么要这么做?所有的啤酒商都是做一样的事!」行销顾问指出,所有的啤酒商在广告上都传达同样讯息:「我们的啤酒最纯。」但他们都没有对饮者解释「纯」是什么意思,只是「纯、纯、纯」说个不停。这件事情的关键在于:谁能成为第一个说出故事,并且解释原因及过程的人,谁就会在市场上得到领先地位。

    这位行销顾问拟定的新行销策略,在六个月后,让施丽兹在啤酒市场一跃为龙头。

    专注一道菜
    杨妈妈研究发燕窝二十几年
    连日本大饭店都请她赴日指导


    施丽兹行销顾问、大前研一的脑袋都蕴藏了决胜二十的知识,这样的知识或能力只存在白领的脑袋里吗?馥园的杨妈妈与斐瑟发廊的发型师林锦惠显然不属于前述的归类,然而,她们也拥有影响事情成败的关键能力。

    坐落在临沂街,一栋古色古香的仿古建筑里,经营了二十四年的高价餐厅馥园是政商界公认最私密豪华的高级餐厅,包括蒋经国、李登辉、陈水扁总统、撒切尔夫人、戈尔巴乔夫、张大千等,都曾是座上客。馥园的灵魂人物是七十六岁的杨妈妈。从她五十四岁开始,即专注研究燕窝这道名菜,日本大饭店在去年元宵节前夕,更是特别请她飞一趟日本,为的就是品尝她发的燕窝。

    发燕窝有何学问?

    首先挑燕窝是一门深学问,因为卖相越好的燕窝,越有可能被动手脚,一整斤燕窝应该有色差才是天然未经漂白,并且含水性约在百分之十五到百分之三十五之间,一些商人会涂胶锁住水分、增加重量。以外形来看,窝形完整、窝碗大而肥厚、燕毛少、色洁白并透明、底座小为上品。上品燕窝发性强,发出来的量多;若燕窝色泽黄或是带灰,摸起来又薄,涨性就不若前者。杨妈妈又特别注意底座部分,若底座大,很可能是商人掺加碎燕窝、或是做果冻的燕菜,冒充重量。

    发燕窝过程也是重头戏,一斤燕窝成本五万五千元,发到六、七斤,只有八十碗分量。如果发燕窝的功力不够,就会蚀本。杨妈妈表示,在她一开始测试的四、五年间,很难控制燕窝的分量,像是以热水发燕窝、泡的时间不够。至于口感部分,泡水太久,燕窝糊了;换水次数不够,燕窝会发出一股腥味。

    日复一日,年复一年,她每天守着两桶待发的燕窝与一本小册子,记录发燕窝的变化,终于研发出夏天、冬天各要换几次水,要浸泡多久的独门心得。现在,只要天气的温度上升一度或下降一度,她就能精准而直觉地判断出当天发燕窝的水温该如何调整。「我不随便、不马虎、也不能『差不多』。这是我们二十几年都不会被淘汰的菜。」杨妈妈笑着说。

    有思想的发型师
    林锦惠每隔一段时间就出国充电
    客户宁愿等上七个月,也不愿找别人


    台北的高价发廊─斐瑟的首席发型设计师林锦惠也拥有同样的专注特质,让她在全台湾数万名发型师当中显得突出。

    走进发廊,个子迷你的林锦惠正与其中一位顾客沟通造型。然而,在一旁乖乖等待她的客人多达六人,让林锦惠剪一次头发要两千五百元,这是一般发型师的四倍,全台北市价钱在这之上的,不超过二十人。她的客人包括艺人张小燕、张清芳、庹宗康……等不计其数。一位电视台主播观察,林锦惠的职业在社会上的地位或许不高,但她的年收入不见得少于中小企业的总经理。

    「我从台中来,四个朋友包一车上来专给她剪,七点半就起床了。」太太说,她以前觉得自己剪法拉头很漂亮,直到林锦惠分析她外型的优劣,才明白原来并不合适。「我台中的发型设计师明天也要上来给锦惠剪。」她说。

    在场的客人一听林锦惠要被报导,人人抢着发言:「她很有想法,每次剪都不一样」、「让她剪完我会变得很有自信」、「剪完后平常不用花时间整理,六个月后还要回去剪时,竟有人问我是不是昨天剪完头发的,让我很惊讶」……。五年以上的客人,一数竟有四位。从十五岁就找林锦惠、今年已二十五岁的先生说:「我曾看过锦惠一天剪二、三十个人,但她对每一个人总是认真对待,剪得好的定义其实就是型不易走调,而且她的信息很快,足球明星贝克汉还没红到台湾的时候,她就已经在帮客人剪『贝克汉头』了。」另一位小姐说,林锦惠很用功,常常出国取经,「我怕她不回来,每天写电子邮件与她保持联络,最后我足足等了七个月,忍耐着让头发留长,不敢给别人剪。」

    认真,不断的进修,是林锦惠保持决胜二十的秘诀。她永远不满足当下所拥有的技术。三十三岁的她每隔一段时间就自费跑到欧洲、美国上课进修,最长的一次还花了一年时间待在纽约与伦敦,以至于存款所剩无几。课程和美发并无相关,而是去上塑料、石头材质为主的雕塑课程。与发型设计唯一相同的,是透过手的触感,在硬和软之间找到转折点,临场造一个型,并从中找出主题。她说:「原来的生活太安逸,若要产生发的新意,就要来自心理上的冲突,所以我去看别人的生活、民情、态度,为什么他们早上洗澡,为什么他们的院子一定有灯?」她时常停下脚步,思考,沈淀,进步。

    林锦惠顺着自己的逻辑,将头发的元素拆、合、解构、建构,现在的她,连在餐厅看到香菇般的灯饰、树上的叶子、光、水波、等着被切割的木头,都能连结到头发裁剪时的创作。斐瑟发廊负责人邓泰华分析,林锦惠从剪一个头六百元涨到今天的两千五百元身价,平均一个月仍有一百到一百五十个预约客人,证明她在做的是「一件有思想的工作」,而同期设计师常常自我设限。

    强烈学习动机
    彼得杜拉克:每两年要更新专业知识
    每四年要重新建立自己的基础能力


    「成功者会说,『我想找出一个可以使制作动画更快的方法』,或者『我对怎样黏合很有兴趣』。」《财星》杂志一九九五年访问的南加州大学教授约翰古德曼(John Goodman)如此分析。这些人对于自己有兴趣的领域,往往比别人多出千百倍的强烈学习动机,一再对自己有兴趣的事物,追根究柢、向下钻研所得到的成就。

    百分之二十的知识并不难取得,热情、专注、坚持,重要的是不断想要前进的心态。管理大师彼得杜拉克曾说:「一个人每两年要更新专业知识,每四年要重新建立自己的基础能力。」台湾IBM软件事业处副总经理丁瑞麟也指出,知识经济就是要从产能波走向脑力波,一个出类拔萃的员工必须把自己从过去的人力转为人才,这两者之间的差别,就是人才用心,且尽心尽力。

    不过,大部分的人并不认为决胜在最后的百分之二十有什么了不起,一些菜鸟总在学到百分之八十的常识后振翅离去。

    菜鸟与老鸟
    菜鸟学到八○%常识后忙着飞走
    老鸟不深思,轻易就被后进取代


    杜书伍感慨的说:「他们广而不精,就像走进吃到饱餐厅,东西很多每样都吞。问他吃了没有,都说吃到了。但问他味道好不好,却说不出个什么来,变成缺乏体悟,缺乏深度的现象。」去年,因为掌握到西红柿汁趋势的爱之味总裁陈哲芳也观察到,一位成熟的企画人员如果没有五、六年的磨练,成不了最起码的气候。

    另外一方面,一些老鸟的问题则在于不深思究竟自己学的是什么,最后,成为裁员风波下的被淘汰的高危险群。杜书伍观察:「有多数人永远无法掌握专业的精髓,即使经过很长时间,能力依旧停在初学者的层级。此时只要来一位新人,稍加训练,就可以轻易地将前面的人取代掉。」

    就好象人生有许多个知识水桶,到处乱飞的菜鸟每个水桶装水一半,不深思的老鸟则总是一个水桶都装不满,他们共有的最大问题就是认为自己:「已经学会了!」

    ING安泰执行长潘燊昌在他的《听老板的,就错了》书中提到:「年轻人不该担心绩效,而要担心我今天做的事是不是跟昨天一样。若工作十年只有一天经验,还有什么前途可言;而倚老卖老者最可怜,因为他们只有年龄『高人一等』。」

    等待的三十岁世代
    在三十岁就停止思考、拒绝改变
    从那时起就算已步入老年


    大前研一在《工作鸡汤》的两集里,都不约而同谈起纵横二十一世纪职场的成功秘诀。

    他把日本职员三十五到五十岁称为「魔力的十五年」。以一般日本企业而言,多数员工进入公司十年后大致已近三十五岁,此时多半已完全了解公司整体业务。

    他指出,之后若没有任何知识上的成长,那么在公司将赋予重任的五十岁之前,大概只是从事例行工作。越是大型的企业,三十多岁的职员越容易成为一种所谓「等待的三十岁世代」。从三十一到四十一岁的阶段,多数人都在从事没有变化与挑战的例行工作,个人能力与知识相对不会有进步,这无异浪费了一生原本最具创造力与颠覆力的黄金时段。

    「进入二十一世纪数字科技时代,若不能思变图强,就是输家。」他提到,日本人的平均寿命已延长为八十岁,但若在三十或四十岁就停止思考、拒绝改变,从那时起就算已步入老年。许多人拒绝改变的理由,竟是:「我已经大学毕业,受过高等教育。」

    大前研一不仅批评这种心态,同时也提出了因应之道。

    他认为,从学生时代一直接受单方面的僵化教育所产生的「信息吸收型」头脑,今后一定得想办法转变为「信息发射型」头脑。

    这个头脑必须对周遭不断提出质疑,而质疑的先决条件,就是必须对各种事务保持兴趣、强烈的好奇心与追根究柢的毅力与态度。

    不过,在最初几年的训练过程,必须暂时拋弃所学的方法,一开始要尽量减少所接收的信息,并锁定单一的目标进行研究。若能持之以恒,相信五年后,就能成功转变思考模式,建立独立思考问题的习惯。

    经验快速贬值
    今天的知识将成为明天的常识
    知识怠惰者绝对无法生存


    「我在麦肯锡的时候,经常提醒年轻人『知识怠惰者绝对无法生存』。」大前研一在书上强调今后将是「知识爆炸、经验快速贬值」的时代。

    因为今天的知识将成为明天的常识,两者之间的分界线正在加速崩解、移动。汇丰直接投资亚洲有限公司董事陈伯昌认为,建构知识的过程中,就像编织一张网,网织得越密,对世界的原貌、真理,掌握就越多。

    年轻人常犯的毛病,就是织的网洞很大、粗糙,才织一下,他们就认为可以了,拿着这张网去捕鱼。结果,网洞太大,根本捕不到什么鱼。所以一个人的知识网,应该是又细又广。

    建构知识像织网
    陈伯昌:知识网不仅要又细又广,
    更要全面,才能胜任新的挑战


    不过,他也说,看看一些高阶经理人,他们也许网织得又细又广,但为什么还是被淘汰?好比一个制造经理,他原本只管机器生产,等到升到副总,就开始必须了解原物料价格、供货商、必须管理人员、成本要低、产品品质要高、……。这个时候,他的知识网必须全面,不能片面的一张网就够了。

    陈伯昌看过一位财务副总,在公司里一路擢升上来,但是在企业开始走向国际化时遇到瓶颈,对于国际资本市场、大陆市场、与国外的会计师沟通、国外律师请教意见,甚至是国际的商业习惯,都无法胜任,最后集团老板无法再重用他,从外面找来专家取代他的地位。这位财务副总大叹「只见新人笑」,愤然离职。

    这些因为知识网不够全面而遭淘汰的高阶经理人,每天都在发生,这些事情也非一朝一夕,而是有轨迹可循。学无止境,年轻的时候可能会有网织得不细的问题,等到年纪大了,若自己只有片面的网,也将胜任不了新的挑战。

    在瞬息万变的时代里,决胜二十%代表着时时保持唯恐落后的危机意识。如此,才能成为特定领域的顶尖人物。

  • 31个工作习惯!

    2007-06-23 16:58:16

    有许多方法可以帮助我们明确工作思路提高工作效率,例如个人的工作习惯、团队力量、企业中有一套完整软件等,首先要明白,效率的关键在于良好的工作习惯,而不是学会一两个方法,这决非一日之功.
    1.         每天提前15分钟上班,推迟15分钟下班
    提前15分钟上班,把今天的工作做个列表式的计划
    推迟15分钟下班,总结一下今天的不足,计划明天的工作
    2.         选择好自已办工的工具,了解好其性能
    ——电脑、办公软件、电话等
    结合工作重心,发挥自已办公工具的最大作用
    记得在温州雪歌服饰时,我的好同事小郑,负责湖南片区30多个专卖店,他说整天忙的要死。
    我就问“那你每天最忙的事情是什么呢?”
    他想了想说“具体忙什么也说不上来,就是那些鸡毛蒜皮的事。。。。。”
    我为他泡了杯茶,在休息区坐了下来。
    让我们一起来分析下你为什么觉得忙?
    首先分清你大多时间做些什么工作。
    他说“每家要上的订单、首期款与补货的出货,再次就是接客户打来的电话,而后就是了解各家店货品现状,及一些锁碎之事。
    我注意到他说的第一个“忙点” (往往人说的第一个观点也是最值得我们去关注的观点)发现他在货品分配上占了很多时间。
    我又问“可其他的同事每天花在分配货品上的时间也不只过十几分钟?怎么你花了这么多时间呢?………
    后来才发现,他不了解软件功能同时,也不与同事或其他人请教好的对应方法。只是用自已传统的方法,一款一款查寻数据,每家要花费10分钟,每天下来要花4个多小时,当做好配货单后,人都是晕的了,哪有心情做别事呢?
    顿挫的工具会使你事倍功半,锋利的工具会使你事半功倍。
     
    3.         让自已的办工桌面变清爽
    文件归类,常用的东西放一定的位置等
    公司桌面上最难找到的是什么?(笔+记事本)
    如:一客户打电话来,希望你记录些东西,但你一时半刻找不到笔或记事本。还让他“你稍等下,等下噢”接下来就是四处寻找……是不是你也遇到这样的问题呢?如果让客户知道你对自已办公工具都遗失,那他又能指望你能帮到他什么呢?
    4.         永远坐在前排
    不管是开会还是培训我都在要坐在最前排
     20
    世纪30年代,在英国一个不出名的小镇里,有一个叫玛格丽特的小姑娘。玛格丽特自小父亲经常向她灌输这样一个观点:无论做什么事情都要力争一流,永远在别人前面,而不落后于人,即使坐公共汽车时,你也要永远坐在前排。父亲从来不允许她说我不能或者太困难之类的话。对于年幼的孩子来说,父亲的要求可能太高了,但他的教育在以后的年月里证明是非常宝贵的。这种残酷的教育,培养了玛格丽特积极向上的决心和信心。无论是学习生活、工作,她时时牢记父亲的教导,总是抱着一往无前的精神和必胜的信念,克服一切困难,做好每一件事。。
     
    我们去游乐园坐过山车也是这样——“坐在前排是我们的梦想。因为,一旦我们没有坐在前排,就意味着我们可能被遗忘得不到重视、就意味着不能很好展现自我。难道我们不该以积极向上的态度去追求坐在前排吗?
        ——
    玛格丽特40年后,她连续四年当选英国保守党领袖,成为英国第一位女首相,雄踞英国政坛11年之久,被世界誉为铁娘子,她就是我们非常熟悉的玛格丽特.撒切尔夫人。
     
    5.         随时记录
    随时记录下自已的工作想法,对事的观念,把它贴在自已最易看到的地方,时常提醒自已
    6.         克制抱怨
    克制抱怨是把造成自己处境的责任推到别人身上从而减轻自己心理压力的一种倾向。
    为什么我们那么顽固地坚持这样一种习惯,总是寻找别人的缺点而看不到别人优点呢?看一件事情为什么只看到负面的东西呢?儿童时代我们还不太会想到抱怨和批评别人,因为我们觉得自己做的不好,认为父母大人不可能有错; 可是到了成人阶段,我们知识进步的结果就学会了发现别人有错,而自己不可能有错了。人们之所以喜欢抱怨,因为这样做可以潜在给我们带来道德上的优越感,我们通过抱怨别人可以比通过做好我们自己的工作能够更快更直接地带来心理上优越感的满足。
    如果我们想更积极更有效地实现自己的价值,就应该训练自己克制从抱怨别人行为中寻找满足的冲动。从这样的行为中得到的满足只能是虚幻的满足,而且由于容易得罪人,对我们个人的发展会带来更大的障碍。训练自己做到停止抱怨并不容易,需要克服人性弱点。人们喜欢快乐积极的人并愿意花时间与之相处。如果你让人害怕,别人不愿意见到你,你也会很郁闷。所以我们要学会选择积极状态,从所遇到的人和事上寻找好的一面,发现优点,发现机会。为什么要这样做?因为你寻找什么,你就会得到什么。你关注什么,你就会吸引它们到你自己身上。虽然思想上知道抱怨的行为不健康,但根深蒂固的行为习惯是需要下决心花时间克服的。当我们一旦觉察到抱怨别人的行为就要并立即停止。当我们养成了自我警惕的习惯,就可以有效地克制这种人性弱点。
    7.        克服人类的天敌——惰性
    “这件事我一定要做了,真的要做了,现在太累了,休息下,再等一会儿再做”
    “先听下音乐放松下,聊下QQ
    “唉!这件事还是明天再做吧”(人的一生只有今天,明天不会来)
    我们每个人都会有这样的经验,一些事情需要我们完成,而惰性往往占了上风。如何能克服惰性去完成任务:
    肯定辛苦的过程,更看重的是愉快的结果,如同我们喜欢吃到美食而不愿去洗碗筷一样。渴望成果却不愿意忍受痛苦的过程。
    提高对辛苦的承受能力,如举重锻炼一样,开始是举起自已能承受的重量,之后每天加一点,每月增至几公斤,久而久之, 被举的重量就上来了.
    大事化小,把复杂的事情简单化,大的事情最小化,找到事情的突破口,
    意志是克服惰性的一种力量
    8.         勇于承认错误不找借口
    当同事或领导指出你某件事做的不理想、不正确时,
    你总会说:
    “我认为….
    “我以为……
    “我想应该是这样…..
    其实回想起来,错就是错了。“认为、以为、我想应该是这样”,这些都是在找理由找辩解!
    错就是错了,勇于承认错误,负起自已责任。
    凡事第一反应:找方法,而不是找借口,借口与成功永远不会同住一屋檐下。
    9.         不要出口伤人(打击别人)
    打击他人其实也是个人心里不平衡的一种释放:在某种程度上,对方的想法(做法)超过或者是突破了你个人的思维方式,但为了体现自已的实力或重要性,人有一种“否认对方的同时,来肯定自我的价值的表现”。
     
    说话之前,先考虑一下对方的感受,即使你平常与同事相处很好,但一句打击的话,通常可产生两种效果:
    一、他会对你产生反感,因为你不尊重他个人的思路或成果,无条件地否定了他。
    二、如果你一直是他工作中的偶像,那你可能会使他尚失信心。
    我们换种方式:你的方案确实不错,尤其第5条非常切合实际。。。。。(让他接受你的同时)如果把第2条改成***样,这样即人性化,又能很好地体现我们工作热情度。你觉得这样效果怎么样呢?
    学会肯定的同时再指出不足
    10.      换位思考
    一只小猪、一只绵羊和一头乳牛,被关在同一个畜栏里。有一次,牧人捉住小猪,牠大声嚎叫,猛烈地抗拒。绵羊和乳牛讨厌牠的嚎叫,便说:「他常常捉我们,我们并不大呼小叫。小猪听了回答道:「捉你们和捉我完全是两回事,他捉你们,只是要你们的毛和乳汁,但是捉住我,却是要我的命呢!
       
    立场不同、所处环境不同的人,很难了解对方的感受;
    对别人的失意、挫折、伤痛,不宜幸灾乐祸,而应要有关怀、了解的心情。要有宽容的心
    11.       懂得谦虚
    谦虚是一切伟大灵魂共有的品质
    美国著名政治家、科学家富兰克林拜访一位前辈,当他从小门进入时,由于门框低矮,他被狠狠地撞了一下。出来迎接的前辈笑着对他说:“很疼吧,可是,这应该是你今天最大的收获。你要记住,要想平安地活在世上,你就必须时时记住学会低头。”什么时候应该低头?那就是犯错误时、有求于人时,有成绩时。)
    古人云:山外有山,天外有天,当你傲视同事或上级时,你已经被某些人孤立了,得不到同事的欢迎?
    海之所以大,在于它是所有河流的最低处
    12.      善于倾听
    卡耐基曾说过:如果你希望成为一个善于谈话的人,那就先做一个注意静听的人,要使人对你感兴趣:那就先使人感兴趣.问别人喜欢回答的问题,鼓励他谈论自已及他所取得的成就.
    不要忘记在与你谈话的人,对他自已、他的需要、他的问题,比对你及你的问题要感兴趣100倍。他注意他颈上的小痣比注意非洲的40次地震还要多!
    在与同事交谈时,要注意倾听他的讲话,并给予适当的反馈。聚神聆听代表着理解和接受,是连接心灵的桥梁。在表达自己思想时,要讲究含蓄、幽默、简洁、生动。含蓄既表现了您的高雅和修养,同时也起到了避免分歧、说明观点、不伤关系的作用,提意见、指出别人的错误,要注意场合,措词要平和,以免伤人自尊心,产生反抗心理。幽默是语言的调味品,它可使交谈变得生动有趣。简洁要求在与人谈话时掌握该说的说,不该说的不说。与人谈话时要有自我感情的投入,这样才会以情动人。此谓之生动。当然要掌握好表达自己的技巧,需要不断的实践,并不断的增加自己的文化紊养,拓宽自己的视野。
     
    13.      好的工作方法一定要懂得用方法与同事分享
    互相交流信息、切磋自己的体会都可融洽人际关系
    如果你直接把自已好的工作方法与他人分享,在一定程度你就变为重要的人物了,他人不一定能完全接受你,因为人天性有个爱好,就是喜欢别人重视自已,所以分享的前提,我们要找对办法。
    巧妙地把重要人物设为第三方
    如:发现她花了很长的时间从一张表格中提取数据,但你有个更好的公式时。你可礼貌对他说“朋友教给我一个不错的数据提取公式,不防你也试试”相信他巴不得马上学会,因为他现在这种工作方式累的够呛了,出自人的惰性,当然要找个更简单的办法,重要的是你把重要人物设为第三方,而不是你们之间的对比!
    一个苹果交换一个苹果,还是一个平果,一个经验交换一个经验,就成了两个经验!
    14.      保持工作焦点和热情
    每天早晨先确立今天的目标,让工作焦点清晰,然后以最大的热情地去做。
    学会调整工作状态,用积极的意识去激发热情;
    想办法避免干扰。各种兴趣爱好很影响工作状态,把它们放到合适的孤立的时间段,例如午餐之后午休之前,或者重要工作完成之后,不要放在重要时间段之前
    15.      工作前要建立框架意识
    工作前要在脑海中建立“框架”意识,凡事问题要简单化
    每项工作前有3件事要做:沟通、预案、检查是否有遗漏
    一、工作前你将要做好哪些沟通事项?
    二、从不同层面来考虑某一个具体问题,提前做出预案。如:哪些会给他人带来不便?
    三、再次回想,有什么事情还没有想到,但必需要去做?
    16.      建立工作列表
    随时记下要做的工作,所有事情一目了然。注意:
    区分轻重缓急,先做重要的事情,注重效率更注重效果。
    设置并重视完成期限,就像对自己的承诺。
    具体明确,如果太大就分解成简单的工作。
    这一方法比较容易,大多数人都可以使用。
    既减少记忆,又避免遗忘。
    能快速着手工作。
    有效利用琐碎时间。
    17.      利用日程安排
    当工作列表上的工作很多,让你感到烦乱的时候,就要考虑使用日程安排了。
    日程安排与工作列表的不同在于,工作列表只是说明要做什么,而日程还确定了按什么顺序去做,什么时间去做。养成制定日程的习惯有些难度。我们可以:
    先从时间已确定的事务开始,例如会议、会面等。
    逐渐培养日程安排能力,根据个人习惯,将事务安排在合适的时间。
    不要安排得太满,留下必要的缓冲时间。
    相似的工作在一起,尽量减少角色的变化。
    特别要养成习惯,随时利用琐碎时间做一些琐碎的小事。
     
    18.      怎样做好与客户的沟通:(首先要做的是:分析客户心里,他想要的是什么?)
    答应客户的事情及时做到,即使不能完成,也要提前通知顾客,不能保证完成的不要轻易答应。
    每天上班前适当时间给客户一个电话,对今天的工作提示如:要补些什么货品等?
    下班前给客户一个电话,问是否还有哪些地方没有做好的等
    此外还要对你所服务的客户做些了解;比如生日,家里老人、孩子等情况,当生日时给予祝福,过节时给老人一声问候(学会关心他人,他人才会来关心你)
    切记,不要忘记说些客套话,肯定与赞美他人,不要吝啬自已的微笑
    负起自已的责任,建立好在客户心中的诚信感
     
    19.       不要害怕浪费时间
    工作中有个难题,想去花时间搞清楚吧?又怕浪费时间!
    切记,只要开始做就不可能是完全的浪费,哪怕失败多次也是有价值的,每次从失败中我们都可以获得很多经验。最为重要的是:在尝试中,我们除了获得失败,还能获得很多经验
    20.      勤于观察
    理清楚哪些是自已工作重点
    重心工作自已能否胜任,为什么不能胜任?是自已方法不对,还是工作的“工具”本身存在欠缺。如果方法不对,你可借鉴同事的方法,因为他生活在你的身边,他的方法你当然易学会,学会观察优秀的同事,他一天中所做的事情,比如:行动,与客户对话中的言语,面部表情与肢体语言等,对一个突发事情的处理…..如果这些你都作到了,你不仅是学会了“观察他人”更为重要的是你学会了处理事情的另一种方法-----借鉴。
    21.      改良自已的工作方式
    不要把自已搞的太忙一样,如果自已是个大忙人,可见你要更新自已的工作方法了----提高工作效率
    一个大忙人,连与别人说句话的时间都好像没有,想必工作上会让你非常烦恼
    首先我们来找下原因:
    是你所管辖的客户太多而烦忙?
    还是相比之下客户太难搞定呢?
    还是自已的工具不实用?
    可能你会说“我的客户确实太难搞定”如果有这样观念,就是分别的客户给你,也会是这样的
    鄙人曾在雪歌做销售主管时,浙江区的客户没有一个人愿去管,都说浙江区的刻薄,要求多难说话,而当时的我就没有这么样过,我心中唯一的想法就是:懂得有要求的人,他们就是在改良自已经营方法而做出的反映!生活中我从没有遇到一大群这样的人,如果在这里遇见,那我岂不是太幸运了,又给我锻炼成长的一次机会!
    当时我就用了三点法则:万事提前一个电话,
    承诺对方的事,及时办到,负起自已的责任
    事后电话中问是否还可以帮助对方的。。。
    半年后,浙江省区的销售业绩一直排行全国第一,单店排名前十位中七层都是浙江区的
     
    犹如“汽车”的发展史一样,如果人类不去大胆多次尝试改进,可能还是坐着卡尔.本茨造出的第一辆三轮汽车以每小时18公里的速度,跑到现在。
    对工作方法,要改进、改进、再改进
     
     
    22.       独立思考,学会自已想办法解决
     
     
     
    学会与同事之间的相处时刻要记得:助人是一种美德!同时才能得取他的信任感
    配合好同事的工作做好一项工作,经常要与别人合作,在取得成绩之后,要求共同分享,切忌处处表现自己,将大家的成果占为己有。提供给他人机会、帮助其实现生活目标,对于处理好人际关系是至关重要的。
     
     
    23.     怎样减轻自已的压力
       
    印度有一个师傅对于徒弟不停地抱怨这抱怨那感到非常厌烦,于是有一天早上派徒弟去取一些盐回来。
      当徒弟很不情愿地把盐取回来后,师傅让徒弟把盐倒进水杯里喝下去,然后问他味道如何。
      徒弟吐了出来,说:“很苦。”
      师傅笑着让徒弟带着一些盐和自己一起去湖边。
      他们一路上没有说话。
      来到湖边后,师傅让徒弟把盐撒进湖水里,然后对徒弟说:“现在你喝点湖水。”
      徒弟喝了口湖水。师傅问:“有什么味道?”
       徒弟回答:“很清凉。”
      师傅问:“尝到咸味了吗?”
      徒弟说:“没有。”
      然后,师傅坐在这个总爱怨天尤人的徒弟身边,握着他的手说:“人生的苦痛如同这些盐有一定数量,既不会多也不会少。我们承受痛苦的容积的大小决定痛苦的程度。所以当你感到痛苦的时候,就把你的承受的容积放大些,不是一杯水,而是一个湖。”
    压力的反应在于我们自己的意识,而责怪环境或公司肯定无济于事。所以,面对压力最好暗示自己,激发积极兴奋的心态。如果公司采用了任务管理制度,使工作更透明,责任更明确,完成期限也作了明确规定,这会给人一种压力。应该适当利用这种压力,而不是消极抵制。养成高效的工作习惯于己于人都有利。
      启示:工作中的压力同这些盐有一定数量,既不会多也不会少。我们承受压力的容积的大小决定压力的程度。所以当你感到压力的时候,就把你的承受的容积放大些,不是一杯水,而是一个湖。
     
    科学家们曾做过这样一个实验。
    在只有窗户打开的半密闭的房间里,将6只蜜蜂和同样数目的苍蝇装进一个玻璃瓶中,把瓶子放平在桌上,瓶底朝着窗户。
     然后,观察蜜蜂和苍蝇会有什么样的举动。
    科学家们发现,蜜蜂们会不紧不慢地在瓶底徘徊,认为能找到出口,直到它们力竭倒毙或饿死;而苍蝇们则会不停地在瓶中横冲直撞,在瓶中的飞行速度明显高于蜜蜂,不到两分钟之内,他们穿过另一端的瓶颈逃逸一空。
     
    蜜蜂们以为,囚室的出口必然在光线最明亮的地方,一定会找到出口。于是,它们不紧不慢地行动着,等待它们的结果是死亡。而苍蝇们却成功地逃离了,这并不在于它们有什么特长,也不在于它们懂得快速行动、求得生存。
    不要花太多时间整理和规划,不要觉得没把所有事情安排好就无法开始一样。只着眼于整体会让你看到做这件事多难多辛苦,你应该找出可以付诸行动的小的突破点,马上开始行动
    25.      脑海计划
    史蒂芬柯维曾提到:所有的事情都经过两次的创造:先是在脑海里酝酿,其次才是实质性的创造。
    一提到工作计划,大家一定想到的是纸上写某某时间要以什么方法做什么事情将达到什么样效果……
    我们的工作计划首先可尝试不用写在纸上,我们要把它印在脑海中,这样会时刻明确工作方向与方法,多次酝酿,当主管问起你的工作计划时,可回答道:我的工作计划是……如果他自已记不下来,就让他用笔去记去吧…….
    计划:明确自已计划的核心所在,用多长时间完成什么项目达到什么样的预期效果,计划开始不易过多,比如本第一次2条,下一次3…..这样锻炼下去,你做什么事情前,脑海中会自动产生一个计划(将计划的细节与你的领导做个汇报,让他提出几点意见,毕竟,人家比你经历的多,同时能让上级了解你的工作状况)
     
    26.      纸张计划:
    工作计划是为提高工作效益减轻自已工作量而做,并不是为了应付他人拿来写写
    常见的有日计划周计划、月计划、季度计划、年度计划等
            我们采取最简洁明了的方法,列下计划框架,当然可以用口途的方法与领导叙述一翻。
    翻翻你的以前所做的计划,看看达成没有,为什么没有达成,在笔记中分析原因没有。
    没完成计划:在笔记中再写出上周工作计划,列出当初的方案,回故失败的地方
    找出三个以上别的可行方法,把每个方案再明细化,你可把每天想到的,遇到的与方案相关的写在“明细表”中,不久,发现明细不少时,你再回顾,期初在错误在哪了吧?
    虽然方案一样,但执行的细节不一样,结果当然也是不一样。
    细节决定成败
    27.      每天下班前用5分钟做一天的整理工作
    把今天未完成的工作、完成的工作、明天将要做的工作做整理,
    把今天的单据、表格、数据等做个归类存放,舍去不要的。
    方法:先实行淘汰再归类整理
    比如:先淘汰对工作不起作用的东西:(学会舍弃)
      1.桌面上很久没用过的表格等,简直快忘了它的存在。
      2.有些表格与数据根本不合理,用起来费时没效率。
      3.去除那些难以理解复杂的工式,寻找简单实用的。
      4.重复的东西,去除。
      
    28.      时常总结分析
     “以心情变化为期段的非纸张总结
     
    在这,没有提到每天、每周等总结?
    “时常总结”并不是要写在纸上,哪天纸不见了,总结也随之不见,我所倡导的是“以心情变化为期段的非纸张总结”因为心情变化,那一定有与平常不一样的事情发生。
    方法:一杯咖啡或一杯茶+一个宁静的地方(比如自已的床上)+一个易思考的姿势
    这样让你学会放松自我的同时做分析,此环境中大脑才能清楚地回忆每一个已发生故事的片段。
         步骤:首先进行回忆工作中哪些问题出现?
               其次当时我采取了什么工作方法?(脑海中画个叉,因为是错误的)
               试用返推法,如果想不出来,可追忆曾经那时的成功:请回想当初同事或领导称赞你的情形,为什么称赞你,而不是别人,对!因为你某事做的很棒,得到大家的肯定与信任.你帮他们修好了电脑、打印机、你帮他们解决了一个公式运用上的问题等等,后来同事都很配合你的工作,发现那时候的问题很好地迎刃而解了。那么你就试用着以前对待事情的办法与态度,对待现在的事情。或者采取换位思考,换位思考其实就是换个立场去看待问题,正所谓"横看成岭侧成峰,远近高低各不同,换位思考可以让我们明白主管的辛酸与不易,让我们体会同事的关爱......让我们多一些理解,少一分抱怨.把方便留给别人,困难留给自己,我们的工作开展起来也就会更加得心应手
    打破现在的思维方式,找到曾经对待事的办法可能对你有所帮助
    29.      适当了解其它部门工作细节
    不仅了解本部门的细节,也要适当了解其它部门工作细节
    工作见过很多同事,时常会指着别的部门说“那些鬼,不知在忙些什么?………..”如果这样,你又怎能做好接口部门工作呢?
    往往这样,看特事情不全面,也会做出错误的评价
    30.    坚持不懈
    坚持不懈与充分的自信一样,都是取得成功的必备素质,当工作一半遇到挫折就止步不前,怎么又会达到成功呢?
           有一个士兵,要经过一个大沙漠到另一边去。他带着食品朝他的方向走去,他在沙漠里走了七天七夜,眼看就只乘下一天的食品啦,他就想反正也走不出去了,倒不如干脆把乘下的最后一天的食品吃掉,也省得去累,于是他坐在那里把最后一天的食品吃完了。
      
    后来,他的战友经过此地找到了他的尸体,发现其实他只要再走一天的时间就可以到达他的目地地了,因为从他那到绿洲只有几十里路。
    如果你想与众不同,如果你想工作中取得成就,那么你要拥有的最重要的素质就是你能够比任何其他人坚持得更久的能力。这正如有人挖井找人,很多人挖了深浅不一的井,没有找到水就放弃了,只有一人坚持往下挖,挖的比别人都深,最后出水了。只要坚持才能见到效果,只有坚持才能走向成功。
     
    31.      懂得付出的人 你才是最大的赢家
    每当同事调休或因事请假,您是否做到主动要把他担当一天的工作呢?
    要替他人着想还表现在当他人遭到困难、挫折时,伸出援助之手,给予帮助。良好的人际关系往往是双向互利的。您给别人的种种关心和帮助,当您自己遇到困难的时候也会得到回报。只有懂得帮助他人的人,别人才会同样帮助你!
  • 测试用例设计

    2007-06-15 15:14:58

    测试用例设计

      测试需求收集完毕后,开始测试设计。测试用例是什么?测试用例就是一个文档,描述输入、动作、或者时间和一个期望的结果,其目的是确定应用程序的某个特性是否正常的工作。设计测试用例需要考虑以下问题:

      测试用例的基本格式

      软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果,下面逐一介绍。

      用例编号: 测试用例的编号有一定的规则,比如系统测试用例的编号这样定义规则: PROJECT1-ST-001 ,命名规则是项目名称+测试阶段类型(系统测试阶段)+编号。定义测试用例编号,便于查找测试用例,便于测试用例的跟踪。

      测试标题: 对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。比如测试用户登录时输入错误密码时,软件的响应情况

      重要级别: 定义测试用例的优先级别,可以笼统的分为两个级别。一般来说,如果软件需求的优先级为,那么针对该需求的测试用例优先级也为;反之亦然,

      测试输入: 提供测试执行中的各种输入条件。根据需求中的输入条件,确定测试用例的输入。测试用例的输入对软件需求当中的输入有很大的依赖性,如果软件需求中没有很好的定义需求的输入,那么测试用例设计中会遇到很大的障碍。

      操作步骤: 提供测试执行过程的步骤。对于复杂的测试用例,测试用例的输入需要分为几个步骤完成,这部分内容在操作步骤中详细列出。

      预期结果: 提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。

      软件测试用例的设计主要从上述 6 个域考虑,结合相应的软件需求文档,在掌握一定测试用例设计方法的基础上,可以设计出比较全面、合理的测试用例。具体的测试用例设计方法可以参见相关的测试书籍,白盒测试方法和黑盒测试方法在绝大多数的软件测试书籍中都有详细的介绍,这里不作赘述。

      重用同类型项目的测试用例

      如果我看得远,那是因为我站在巨人的肩上 --牛顿。

      一般来说,每个软件公司的项目可以分为固定的几大类。可以按业务类型划分,比如 ERP 软件、产品数据管理软件、通信软件、地理信息系统软件等等;可以按软件结构来划分,比如 B/S 架构的软件、 C/S 架构的软件、嵌入式软件等等。参考同类别软件的测试用例,会有很大的借鉴意义。如果,公司中有同类别的软件系统,千万别忘记把相关的测试用例拿来参考。如果,系统非常接近,甚至经过对测试用例简单修改就可以应用到当前被测试的软件。拿来主义可以极大的开阔测试用例设计思路,也可以节省大量的测试用例设计时间。

      利用已有的软件 Checklist

      在上面一个小节中,按照不同的规则划分了不同的软件类型。每种类型的软件都有一定的测试规范,比如, WEB 软件系统在系统测试过程中,会有一系列的范式,比如针对 Cookie 就会有很多测试点。在设计测试用例的时候,不妨到网上去搜索相关的 Checklist ,不过国内外的网站很少有这方面的资料,即便有,也不是特别系统。可以先找一份粗糙的 Checklist ,然后,在设计测试用例的时候不断的去完善它,以作为下次测试用例设计的基础。

      加强测试用例的评审

      测试用例设计完毕后,最好能够增加评审过程。同行评审是 CMM3 级的一个 KPA ,如果因为公司没有通过 CMM3 级,就不开展同行评审是不恰当的。测试用例应该由产品相关的软件测试人员和软件开发人员评审,提交评审意见,然后根据评审意见更新测试用例。 如果认真操作这个环节,测试用例中的很多问题都会暴露出来,比如用例设计错误、用例设计遗漏、用例设计冗余、用例设计不充分等等;如果同行评审不充分,那么,在测试执行的过程中,上述本应在评审阶段发现的测试用例相关问题,会给测试执行带来大麻烦,甚至导致测试执行挂起。

      定义测试用例的执行顺序

       

        在测试用例执行过程中,你会发现每个测试用例都对测试环境有特殊的要求,或者对测试环境有特殊的影响。因此,定义测试用例的执行顺序,对测试的执行效率影响非常大。比如某些异常测试用例会导致服务器频繁重新启动,服务器的每次重新启动都会消耗大量的时间,导致这部分测试用例执行也消耗很多的时间。那么在编排测试用例执行顺序的时候,应该考虑把这部分测试用例放在最后执行,如果在测试进度很紧张的情况下,如果优先执行这部分消耗时间的异常测试用例,那么在测试执行时间过了大半的时候,测试用例执行的进度依然是缓慢的,这会影响到测试人员的心情,进而导致匆忙地测试后面的测试用例,这样测试用例的漏测、误测就不可避免,严重影响了软件测试效果和进度。因而,合理地定义测试用例的执行顺序是很有必要的。

      测试用例执行

      测试用例设计完毕后,接下来的工作是测试执行,测试执行中应该注意以下几个问题:

      搭建软件测试环境,执行测试用例

      测试用例执行过程中,搭建测试环境是第一步。一般来说,软件产品提交测试后,开发人员应该提交一份产品安装指导书,在指导书中详细指明软件产品运行的软硬件环境,比如要求操作系统系统是 Windows 2000 pack4 版本,数据库是 Sql Server 2000 等等,此外,应该给出被测试软件产品的详细安装指导书,包括安装的操作步骤、相关配置文件的配置方法等等。对于复杂的软件产品,尤其是软件项目,如果没有安装指导书作为参考,在搭建测试环境过程中会遇到种种问题。

      如果开发人员拒绝提供相关的安装指导书,搭建测试中遇到问题的时候,测试人员可以要求开发人员协助,这时候,一定要把开发人员解决问题的方法记录下来,避免同样的问题再次请教开发人员,这样会招致开发人员的反感,也降低了开发人员对测试人员的认可程度。

      测试执行过程应注意的问题

      测试环境搭建之后,根据定义的测试用例执行顺序,逐个执行测试用例。在测试执行中需要注意以下几个问题:

      全方位的观察测试用例执行结果: 测试执行过程中,当测试的实际输出结果与测试用例中的预期输出结果一致的时候,是否可以认为测试用例执行成功了?答案是否定的即便实际测试结果与测试的预期结果一致,也要查看软件产品的操作日志、系统运行日志和系统资源使用情况,来判断测试用例是否执行成功了。全方位观察软件产品的输出可以发现很多隐蔽的问题。以前,我在测试嵌入式系统软件的时候,执行某测试用例后,测试用例的实际输出与预期输出完全一致,不过在查询 CPU 占用率地时候,发现 CPU 占用率高达 90 %,后来经过分析,软件运行的时候启动了若干个 1ms 的定时器,大量的消耗的 CPU 资源,后来通过把定时器调整到 10ms CPU 的占用率降为 7 %。如果观察点单一,这个严重消耗资源的问题就无从发现了。

      加强测试过程记录: 测试执行过程中,一定要加强测试过程记录。如果测试执行步骤与测试用例中描述的有差异,一定要记录下来,作为日后更新测试用例的依据;如果软件产品提供了日志功能,比如有软件运行日志、用户操作日志,一定在每个测试用例执行后记录相关的日志文件,作为测试过程记录,一旦日后发现问题,开发人员可以通过这些测试记录方便的定位问题。而不用测试人员重新搭建测试环境,为开发人员重现问题。

      及时确认发现的问题: 测试执行过程中,如果确认发现了软件的缺陷,那么可以毫不犹豫的提交问题报告单。如果发现了可疑问题,又无法定位是否为软件缺陷,那么一定要保留现场,然后知会相关开发人员到现场定位问题。如果开发人员在短时间内可以确认是否为软件缺陷,测试人员给予配合;如果开发人员定位问题需要花费很长的时间,测试人员千万不要因此耽误自己宝贵的测试执行时间,可以让开发人员记录重新问题的测试环境配置,然后,回到自己的开发环境上重现问题,继续定位问题。

      与开发人员良好的沟通: 测试执行过程中,当你提交了问题报告单,可能被开发人员无情驳回,拒绝修改。这时候,只能对开发人员晓之以理,做到有理、有据,有说服力。首先,要定义软件缺陷的标准原则,这个原则应该是开发人员和测试人员都认可的,如果没有共同认可的原则,那么开发人员与测试人员对问题的争执就不可避免了。此外,测试人员打算说服开发人员之前,考虑是否能够先说服自己,在保证可以说服自己的前提下,再开始与开发人员交流。

      及时更新测试用例

      测试执行过程中,应该注意及时更新测试用例。往往在测试执行过程中,才发现遗漏了一些测试用例,这时候应该及时的补充;往往也会发现有些测试用例在具体的执行过程中根本无法操作,这时候应该删除这部分用例;也会发现若干个冗余的测试用例完全可以由某一个测试用例替代,那么删除冗余的测试用例。

      总之,测试执行的过程中及时地更新测试用例是很好的习惯。不要打算在测试执行结束后,统一更新测试用例,如果这样,往往会遗漏很多本应该更新的测试用例。

      提交一份优秀的问题报告单

      软件测试提交的问题报告单和测试日报一样,都是软件测试人员的工作输出,是测试人员绩效的集中体现。因此,提交一份优秀的问题报告单是很重要的。软件测试报告单最关键的域就是问题描述,这是开发人员重现问题,定位问题的依据。问题描述应该包括以下几部分内容:软件配置、硬件配置、测试用例输入、操作步骤、输出、当时输出设备的相关输出信息和相关的日志等。

      软件配置: 包括操作系统类型版本和补丁版本、当前被测试软件的版本和补丁版本、相关支撑软件,比如数据库软件的版本和补丁版本等。

      硬件配置: 计算机的配置情况,主要包括 CPU 、内存和硬盘的相关参数,其它硬件参数根据测试用例的实际情况添加。如果测试中使用网络,那么网络的组网情况,网络的容量、流量等情况。硬件配置情况与被测试产品类型密切相关,需要根据当时的情况,准确翔实的记录硬件配置情况。

      测试用例输入 \ 操作步骤 \ 输出: 这部分内容可以根据测试用例的描述和测试用例的实际执行情况如实填写。

      输出设备的相关输出信息: 输出设备包括计算机显示器、打印机、磁带等等输出设备,如果是显示器可以采用抓屏的方式获取当时的截图,其他的输出设备可以采用其它方法获取相关的输出,在问题报告单中提供描述。

      日志信息: 规范的软件产品都会提供软件的运行日志和用户、管理员的操作日志,测试人员应该把测试用例执行后的软件产品运行日志和操作日志作为附件,提交到问题报告单中。

      根据被测试软件产品的不同,需要在问题描述中增加相应的描述内容,这需要具体问题具体分析。

      测试结果分析

      软件测试执行结束后,测试活动还没有结束。测试结果分析是必不可少的重要环节,编筐编篓,全在收口,测试结果的分析对下一轮测试工作的开展有很大的借鉴意义。前面的测试准备工作中,建议测试人员走读缺陷跟踪库,查阅其他测试人员发现的软件缺陷。测试结束后,也应该分析自己发现的软件缺陷,对发现的缺陷分类,你会发现自己提交的问题只有固定的几个类别;然后,再把一起完成测试执行工作的其他测试人员发现的问题也汇总起来,你会发现,你所提交问题的类别与他们有差异。这很正常,人的思维是有局限性,在测试的过程中,每个测试人员都有自己思考问题的盲区和测试执行的盲区,有效的自我分析和分析其他测试人员,你会发现自己的盲区,有针对性的分析盲区,必定会在下一轮测试用避免盲区。

      总结:

      限于文章的篇幅,本文不可能给出一个类似于 checklist 的指导性的软件测试新手入门。无论从事软件测试还是从事其它的工作,技术上的和技巧上的问题都可以通过查询相关的软件测试技术书籍获取,掌握一套基本的方法论是最重要的。以上文字,都是作者从事软件测试工作积累的经验之谈,如发现谬误之处请不吝指出。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 冒烟测试是什么?

    2007-06-15 14:35:19

    关于冒烟测试,应该是微软首先提出来的一个概念,和微软一直提倡的每日build有很密切的联系。具体说,冒烟测试就是在每日build建立后,对系统的基本功能进行简单的测试。这种测试强调功能的覆盖率,而不对功能的正确性进行验证。

    就象生产汽车一样,汽车生产出来以后,首先发动汽车,看汽车能否冒烟,如果能,证明汽车最起码可以开动了。说明完成了最基本的功能。

      冒烟测试一般用于每日构建(Nightly build),构建服务器首先从CVS服务器上,下载最新的源代码,然后编译单元测试,运行单元测试通过后,编译可执行文件,可执行文件若可运行,并能执行最基本的功能,则认为通过了冒烟测试,这时,构建服务器会把程序打包成安装文件,然后上传到内部网站,第二天一早,测试人员来了以后,会收到构建服务器发来的邮件提示昨晚是否构建成功。若构建成功,则测试人员进行相关的功能测试。所有这些功能的完成,一般是靠编写脚本完成的,目前比较常用的脚本有TCL,Perl,Python及功能弱弱的批处理。用这些可以完成系统的每日构建。

      简单的说,就是先保证系统能跑的起来,不至于让测试工作做到一半突然出现错误导致业务中断。目的就是先通过最基本的测试,如果最基本的测试都有问题,就直接打回开发部了,减少测试部门时间的浪费。

  • 软件项目测试管理经验谈

    2007-06-15 10:14:58

    一、软件测试员自身素质培养

        1 首先,应对软件测试感兴趣和对自己有自信,如果具备了这两点,那么在开发过程中不管遇到什么样的困难,我相信你一定能克服。

        2 善于怀疑,世界上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。别人认为是对的,我却认为不是对的。

        3 打破砂锅问到底的精神,对于只出现过一次的bug,一定找出原因,不解决誓不罢休。

        4 保持一个良好的心情,否则可能无法把测试作好。不要把生活中的不愉快的情绪带到工作中来。

        5 做测试时要细心,不是所有的bug都能很容易的找出,一定要细心才能找出这些bug

        6 灵活一些,聪明一点,多制造一些容易产生bug的例子。

        7 在有条件的情况下,多和客户沟通,他们身上有你所需要的。

        8 设身处地为客户着想,从他们的角度去测试系统。

        9 不要让程序员,以这种情况不可能发生这句话说服你,相反,你应该去说服他,告诉他在客户心里,并不是这样的。

        10 考虑问题要全面,结合客户的需求、业务的流程、和系统的构架,等多方面考虑问题。

        11 提出问题不要复杂化,这一点和前面的有点矛盾,如果你是一新手,暂时不要管这一点,因为最终将有你的小组成员讨论解决。

        12 追求完美,对于新测试员来说,努力的追求完美,这对你很好,尽管有些事无法做到,但你应该去尝试。

        13 幽默感,能和开发小组很好的沟通是关键,试着给你的开发小组找一个“BUG杀手,或对他们说我简直不敢相信,你写的程序居然到现在没有找到BUG”

        14 到此是不是对测试很有兴趣呢?不过我要告诉你,测试过程中有酸甜苦辣,其中的滋味只有你知道,也许你会感到枯燥,要学会放松自己,去溜冰或做你喜欢做的事,不过,别放弃,因为你的自信告诉过你你会是很优秀的测试员不是吗?

        二、浅谈软件测试之技巧

        
    软件测试虽然辛苦,但是掌握了一定的技巧之后将使你事半功倍。

        1 边界测试,测试用户输入框中的数值的最大数和最小数,以及为空时的情况。

        2 非法测试,例如在输入数字的地方输入字母。

        3 跟踪测试,跟踪一条数据的流程,保证数据的正确性。

        4 在开始测试时应保证数据的正确性,然后在从系统中找出各种BUG

        5 接口测试,程序往往在接口的地方很容易发生错误,要在此模块测试勿掉以轻心。

        6 代码重用测试,在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码上修改或修改不全面,而造成的错误。

        7 突发事件测试,服务器上可能发生意外情况的测试。

        8 外界环境测试,有些系统在开发时依赖于另外一个系统,当另外一个系统发生错误时, 这个系统所受到的影响的情况。

        9 在程序员刚修复Bug之后的地方,再找一找,往往程序员只修复报告出来的缺陷而不去考虑别的功能在修改时可能会重新造成错误。

        10 认真做好测试记录在做完一天的测试记录之后,第二天再根据第一天的测试记录重复测试你会发现有未修正的错误。

        11 文字测试,如果在系统中有用词不当的地方,我想这是不应该的。

        12 系统兼容测试,例如有些程序在IE6能运行正常,到IE5下不能运行。有些程序在WIN2000下能运行,而到WIN98却不能运行。像一些很特别的用户去使用系统,你很有可能发现BUG

        13 用户的易用性测试,往往用户的需求是不断的变化的,而其中的一部份变化的原因,是有用户操作上不方便引起的。

        软件测试是软件开发中的重中之重,没有一点可以马虎的,在项目管理过程,强调的是每个过程的每一个环节都要进行测试,保证系统在每个阶段可以控制。因为软件测试中考虑的问题基本上是项目管理中考虑的问题。 工作中真的需要多总结,多剖析,对于毛病:有则改之、无则加冕

        软件开发是一件很辛苦的事,只有在工作中多总结,才能找到符合自己的方式方法,才能在工作中事半功倍。

     

     

  • 测试用例设计版块一些经典的帖子(持续整理ing)

    2007-06-15 10:00:37

  • 系统测试用例的设计

    2007-06-15 09:57:13

    系统测试用例的设计

    系统测试计划阶段:分析出测试子项
                               从ISO9126质量模型,分析出需要的测试项
    系统测试设计阶段:对测试项细分,开成测试子项
    系统测试实现阶段:对每个子项以应的需求规格进行分析,用各种用例设计方法,从不同的角度设计用例,进行需求的覆盖。
    1、等价类划分:对输入的各种有效和无效等价类进行覆盖
    2、边界值:保证边界的覆盖
    3、输出域:补充用全的覆盖。输出和种种情况
    4、流程分析法:流程角度覆盖
    5、状态迁移法:对状态条件组合都覆盖到
    6、正交分析法:两两组合输入覆盖
    7、错误猜测法:进行加强测试,达到用例密度
  • 在QTP中将数据库的数据导入到EXCEL

    2007-06-14 12:04:20

     昨天遇到这个问题.自己也有点迷茫,在51上发帖后得到高人指点,在这里我将代码写出来,留个足迹,呵呵,谢谢风过无痕.

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

    Set excelObj = CreateObject("Excel.Applicaiton") '创建一个对象

    xlsUrl = "C:\QTP\0110\sql-excel-qtp\data.xls"  '指定一个已经存在的XSL文件路径

    excelObj.workbooks.open(xlsUrl)    '打开EXCEL

    Set sheetNew = excelObj.sheets.item(2)  '设置将数据放在EXCEL中的那一页上(索引从1开始)

    '相关的数据库操作

    Set conn = CreateObject("adodb.connection") set rs = createobject("adodb.recordset") conn.open "Provider=SQLOLEDB.1;Password=qaqc;Persist Security Info=True;User ID=test;Initial Catalog=test;Data Source=192.168.0.53" sql="select * from test" rs.open sql,conn

    Dim i while not rs.eof

        user_id = rs("user_id").value

        user_name = rs("user_name").value

        sheetNew.cells(i+1,1).value = user_id  '列付值

        sheetNew.cells(i+1,2).value = user_name  '列付值

    i = i + 1

        rs.movenext

    wend

    excelObj.activeworkbook.saveas "C:\QTP\0110\sql-excel-qtp\data.xls"  '保存数据

    excelObj.quit    '关闭对象

    set excelObj = nothing  '清空对象

    rs.close    '关闭数据库连接操作

    set rs=nothing

    conn.close

    set conn = nothing

     

    ------------这就是导出到EXCEL的全部过程:),后面如果要用到这些数据的话,直接导入进来就可以了


  • 无线通讯名词解释

    2007-06-14 12:00:41

    OTA(Over-the-Air Technology)空中下载技术:是通过移动通信(GSM或CDMA)的空中接口对SIM卡数据及应用进行远程管理的技术。空中接口可以采用WAP、GPRS、CDMA1X及短消息技术。OTA技术的应用,使得移动通信不仅可以提供语音和数据服务,而且还能提供新业务下载。这样,应用及内容服务商可以不受平台的局限,不断开发出更具个性化的贴近用户需求的服务,如信息点播、互动娱乐、位置服务以及银行交易等。通过OTA空中下载技术,手机用户只要进行简单操作,就可以按照个人喜好把网络所提供的各种业务菜单利用OTA机制下载到手机中,并且还可以根据自己的意愿定制具体业务。

    2.5G:是基于2G与3G之间的过渡类型。代表为GPRS。比2G在速度、带宽上有所提高 。可使现有GSM网络轻易地实现与高速数据分组的简便接入。

    3G:(third generation)表示第三代移动通讯技术。面向高速、宽带数据传输。 国际电信联盟(ITU)称其为IMT-2000(International Mobile Telecom-munication)。最高可提供2Mbp/s的数据传输速率。主流技术为CDMA技术代表有WCDMA(欧,日)、CDMA2000(美)和TD-SCDMA(中)。

    GSM:(Global system for Mobile communications)全球移动通讯系统。2G的主流技术,数据速率为9.6kb/s。

    GPRS:(General Packet Radio Service)通用分组无线业务。是一种基于GSM系统的无线分组交换技术。2.5G的主流技术。理论最高数据速率为171.2kb/s 。

    WAP:(Wireless Application Protocol)无线应用协议。它是无线互联网上的一系列协议的组合。面向移动电话等小型、窄带的移动设备。WAP能够运行于各种无线网络之上,如GSM、GPRS、CDMA等。

    J2ME: Java 2 Platform micro Edition 1999年6月诞生是JAVA2的一个组成部分,一种以广泛的消费品为目标的高度优化的JAVA的运行环境。现主要应用为掌上终端(PDA、手机)、电视机顶盒。

    CLDC:Connected Limited Device Configuration 连接限制设备配置。配置的作用是决定环境所使用的JVM J2ME使用的是KVM

    MIDP:Mobile Information Devices Profile 移动信息设备简表。J2ME有两种简表MIDP和KJava 手机上的开发使用的是MIDP。

    J2ME相关词汇FAQ

    1. J2ME是Java 2 Platform micro Edition的缩写。1999年6月诞生是JAVA2的一个组成部分,一种以广泛的消费品为目标的高度优化的JAVA的运行环境。现主要应用为掌上终端(PDA、手机)、电视机顶盒。

    2. MIDP:移动信息设备简表。J2ME有两种简表MIDP和KJava 手机上的开发使用的是MIDP。

    3. CLDC:连接限制设备配置。配置的作用是决定环境所使用的JVM J2ME使用的是KVM。

    4. J2SE SDK:支持J2ME的JDK 建议使用1.3版本。

    5. Palm:Palm是Palm公司生产的掌上电脑的名称,也是其*作系统的名称。经常使用的型号如Palm M505

    6. POSE :Palm*作系统在PC上的模拟器。

    常见的wireless名词整理
    -----------

    什么是1G/2G/2.5G/3G

    1G(first generation)表示第一代移动通讯技术。如现在以淘汰的模拟移动网。

    2G(second generation)表示第二代移动通讯技术。代表为GSM。以数字语音传 输技术为核心。

    2.5G是基于2G与3G之间的过渡类型。代表为GPRS。比2G在速度、带宽上有所提高 。可使现有GSM网络轻易地实现与高速数据分组的简便接入。

    3G(third generation)表示第三代移动通讯技术。面向高速、宽带数据传输。 国际电信联盟(ITU)称其为IMT-2000(International Mobile Telecom- munication)。最高可提供2Mbp/s的数据传输速率。主流技术为CDMA技术代表有WCDMA(欧,日)、CDMA2000(美)和TD-SCDMA(中)。

    -----------
    什么是GSM

    全球移动通讯系统(Global system for Mobile communications)的英文缩写。2G的主流技术,数据速率为9.6kb/s。

    -----------
    什么是GPRS

    通用分组无线业务(General Packet Radio Service)的英文缩写。是一种基于GSM系统的无线分组交换技术。是2.5G的主流技术。理论最高数据速率为171.2kb/s 。

    -----------
    什么是UMTS

    UMTS(Universal Mobile Telecommunication System)通用移动通信系统的英文缩写。由欧洲电信标准协会(ETSI)负责UMTS的标准化工作。并与ITU负责的IMT-2000协调一致。它是ITU IMT-2000的重要组成部分。UMTS使用ITU分配的、用于陆地和卫星无线通信的频带。它可通过移动或固定、公用或专用网络接入,与GSM和IP兼容。可支持2Mb/s的数据速率。
    -----------
    什么是CDMA(注:这里指3G的CDMA)码分多址的英文缩写,是目前公认的3G主流技术。目前存在3种3G的主流CDMA标准,分别是WCDMA、CDMA2000和TD-SCDMA。前两者分别由欧洲和美国提出,TD-SCDMA由中国提出(大唐电信),已被ITU和3GPP所接受。其中,WCDMA和CDMA2000是FDD模式,而TD-SCDMA是TDD模式(注:FDD-频分双工,需用两个频段进行收发;TDD-时分双工,采用同一个频段,但以不同的时隙进行。)

    -----------
    WAP和WML

    WAP是无线应用协议(Wireless Application Protocal)的英文缩写。它是无线互联网上的一系列协议的组合。面向移动电话等小型、窄带的移动设备。WAP能够运行于各种无线网络之上,如GSM、GPRS、CDMA等。

    WML是无线注标语言(Wireless Makeup language)的英文缩写。支持WAP技术的手

    机能浏览由WML描述的Internet内容。

    -----------
    I-mode 和 CHTML

    i-mode是日本电信(NTT)的子公司DoCoMo在日本市场推出的无线通讯服务。是目

    前世界上使用人数最多(都在日本)的无线互联网服务。I-mode 和 WAP 的主要

    区别在于:I-mode 的内容是用CHTML写成的,因此现行的大部分网络内容只要稍做修改可以使用;而WAP使用的是WML,现有的网络内容必须转化为WML才能被WAP所使用。CHTML(Compact HTML)HTML的一种变体。与HTML大部分兼容。

    -----------
    蓝牙(BlueTooth)

    蓝牙是一种支持设备短距离通信(一般是10m之内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。它的标准是IEEE802.15。工作在 2.4GHz 频带。带宽为1Mb/s(注:蓝牙这名字很有意思,来自公元10世纪统一丹麦和瑞典的斯堪的纳维亚国王的名字。)

    -----------
    Wireless LAN

    无线局域网,是由局域网发展而来,标准是IEEE802.11、IEEE802.11b 和IEEE802.11a。其中802.11b 工作在2.4GHz频带,带宽可达11Mbps。而802.11a定义在5GHz频带,带宽有望达到54Mb/s 。但相应地,Wireless LAN成本较高,使用昂贵。

    -----------
    HomeRF

    HomeRF主要为家庭网络设计的无线射频技术,是IEEE802.11与DECT的结合,旨在降低成本。HomeRF也采用了扩频技术,工作在2.4GHz频带,目前HomeRF的带宽为1~2Mb/s,未来会增到10Mb/s。
    -----------
    SyncML

    SyncML是一种行业通用的移动数据同步化协议。利用SyncML可使移动设备上的数据与远程数据保持同步状态。由Ericsson、 IBM、 Lotus、 Matsushita、Motorola、 Nokia、 Palm、 Psion和Starfish Software等公司组成的协会所开发。


    -----------
    VoiceXML

    VoiceXML(Voice eXtensible Markup Language)是W3C定义的可扩展标记语言(XML)的一种扩展,根据播放的提示信息、口述的命令、语音或按键音输入,实现人机交互。VoiceXML的标准化将简化Web上具有语音响应服务的个性化界面的创建,使人们能够通过语音和电话访问网站上的信息和服务。

  • 学习QTP方法

    2007-06-14 11:58:52

     我们使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。

            建议大家参照 Tutorial_oldsidney_cn.pdf 文件来认认真真、从头到尾地执行一遍,包括录制脚本、分析脚本、增加check point、Split Action等。我想这会减少你在学习QTP过程中的不少困惑和疑虑。


            这篇文档对如何使用QTP写的非常详细,是QTP初学者的经典教材。我就是看了这篇文档后才对QTP的整个测试流程有了一个初步的认识。在此,表示感谢。

            注意:
          1. 确保你的IE运行正常,依次点击菜单 查看 --> 工具栏,一定要上网助手等插件卸载掉,特别3721这个垃圾网站和其它拦截广告的插件(它也把测试过程中弹出的窗口当成广告,一样会拦截的!)
          2. 如果是按照Tutorial_oldsidney_cn.pdf 文件 中的订购飞机票的例子来练习 QTP的使用,那么只需选择Web 插件就可以了。如果是测试其它的应用程序或系统,就要根据需要来选择相应的插件了。
    在这个阶段你就要自己针对某个系统去录制脚本、维护脚本了。在录制后的回放过程中,你可能会遇到各种问题,这个时候就需要发挥你的主观能动性来解决遇到的问题。

            我想你可以按照下面的方法去解决:

           1. 查看QTP的有关文档,包括Help 、QTP User’s Guide等文档。这些都是比较系统全面的学习材料。你该好好利用呀。
           2. 在本论坛上查看以前别人是如何解决此类问题的(如果有的话)或者是发新贴寻求帮助,也可以搜索Google 等网站寻找问题的解决方法;
           3. 与自己部门的同事交流,例如与测试人员交流他们是如何解决的,与开发人员交流某个QTP无法识别的控件具体是是用什么来识别的等。毕竟他们对你测试的环境和测试的软件比论坛上的人熟悉呀。
           4. 自己通过学习VB scrīpt 等方式来提高自己的管理QTP scrīpt的能力。

            或许你会发现许多问题都是由提出问题的人来解决的,因为他们希望问题得到解决的迫切心比谁都强烈。
            如果你对VB scrīpt 、QTP和需要测试的程序或系统非常熟悉,你可能就想直接写QTP scrīpt来表现一下了。如果你能达到这个水平,那么恭喜你---你就是真正的高手了。这个时候你已经可以从宏观上把握QTP了,也能灵活自如地使用QTP了。


  • 使用基于 NFS 的网络安装方法安装多台 Linux 服务器

    2007-06-14 11:55:25

    简介

        在这个安装 Linux 服务器软件的系列文章的第 2 部分中,您将了解一些基本的配置和网络安装技术。本文着重介绍基于 NFS 的安装方法,这是很多 IT 组织安装大量服务器时通常采用的一种方法。基于 NFS 的安装方法让管理员可以同时安装多个服务器实例,这样可以节省大量的时间和资源据做其他事情。本文对这种 NFS 方法进行了介绍,并详细讨论了如何使用它来配置和安装服务器软件。

        在使用本文介绍的技术之前,您可以回顾以下本系列文章第 1 部分 在 IBM Systems 上安装 Linux 服务器,第 1 部分:基本 Linux 服务器的安装和配置 的内容。

    准备硬件、软件和设置

    本文使用了以下硬件和软件来执行任务:

    IBM System x346 - 02 NOS
    Red Hat Enterprise Linux Version 4.0, Update 4, for the x86 32-bit version
    图 1 给出了这种安装设置的概述图。


    图 1. 设置图
     


        配置 NFS 服务

        按照以下步骤先为 NFS 服务配置 netra.ibm.com:

        按照本系列文章 第 1 部分 介绍的方法在 netra.ibm.com 上安装 Linux。
    验证您的系统上已经安装好了与 NFS 有关的 RPM 包,如清单 1 所示。如果 RPM 尚未安装,就请安装它们,如清单 2 所示。

    清单 1. 检查与 NFS 有关的 RPM
                           
      #rpm -qa|grep nfs
      nfs-utils-lib-1.0.6-3
      system-config-nfs-1.2.8-1
      nfs-utils-1.0.6-70.EL4
       

     

    清单 2. 安装与 NFS 有关的 RPM
                           
      #rpm -ivh nfs-utils-lib* system-config-nfs* nfs-utils*
       


    验证 NFS 服务已经打开,如清单 3 所示。如果 NFS 服务还没有打开,请先将其打开,如清单 4 所示。

    清单 3. 检查 NFS 服务状态
                           
      #chkconfig --list|grep nfs
      nfs  0:off   1:off  2:off  3:off 4:off   5:off  6:off
       

    注意: 0-6 指定的是 Linux 的初始化模式。

     

    清单 4. 打开 NFS 服务
                           
      #chkconfig --level 35 nfs on
      #chkconfig --list|grep nfs
      nfs  0:off  1:off   2:off   3:on   4:off    5:on    6:off
       

    注意: NFS 服务被设置为在初始级别 3 和 5 中自动启动。

    将 RHEL4 ISO 文件或所有 CD 中的内容复制到一个临时文件夹中,如清单 5 所示。

    清单 5. 复制 ISO 文件或 CD 的内容
                           
      #cp *.iso /dump/RHEL4 [if you have ISO files available]
       OR
      #cp -R /media/cdrom/*  /dump/RHEL4
       


    编辑 /etc/exports 文件,使其包含保存 RHEL4 ISO 图像和文件的临时文件夹,如清单 6 所示。

    清单 6. 编辑 /etc/exports
                           
      #vi /etc/exports
      /dump/RHEL4  *(ro,no_root_squash,sync)
       


    验证 NFS 服务正在运行。如果 NFS 服务没有运行,请启动或重新启动它,如清单 7 所示。

    清单 7. 检查、启动并重新启动 NFS 服务
                           
      #service nfs status
      #service nfs start/restart
       


    验证所导出的文件夹可以使用 NFS 服务进行访问,如清单 8 所示。

    清单 8. NFS 导出的文件夹
                           
      #exportfs -ra  [Refresh Export List]
      #exportfs
      /dump/RHEL4  world
     OR
      #showmount -e localhost
      Export list for localhost:
      /dump/RHEL4 *
       
    现在已经在 netra.ibm.com 上配置好了 NFS 服务器。
     

    安装服务器

    现在您已经准备好使用基于网络的安装方法来安装一台新服务器了。在本文中,示例服务器的名称是 joy.ibm.com。请按照以下步骤执行安装:

    将 CD #1 或 DVD 插入 CD-ROM 驱动器,并重新启动新服务器。您会看到如图 1 所示的屏幕信息。
    在 boot:(即引导提示符) 之后输入 linux askmethod :

    图 1. 引导屏幕
     


    下一屏提示您为安装过程选择语言,如图 2 所示。对于本例来说,请选择 English。选择好语言之后,请单击 OK 按钮。

    图 2. 选择语言
     


    下一屏提示您选择键盘类型,这样就可以获得正确的键定义了,如图 3 所示。对于本例来说,请选择 us。然后单击 OK 按钮。

    图 3. 选择键盘
     


    接下来的一屏提示您选择安装方法,如图 4 所示。对于本例来说,请选择 NFS image。然后单击 OK 按钮。

    图 4. 选择安装方法
     


    接下来的一屏提示您为要安装的服务器输入 IP 详细信息,如图 5 所示。对于本例来说,请指定以下详细信息:
    IP 地址: 192.168.128.102
    掩码(也称为子网掩码):255.255.255.0
    默认网关:192.168.128.254
    在输入这些信息之后,请单击 OK 按钮。

    图 5. 配置 IP 详细信息
     


    接下来的一屏提示您输入 NFS 服务器的详细信息,如图 6 所示。对于本例来说,请使用以下信息:
    NFS 服务器名:192.168.128.101
    Red Hat Enterprise Linux 目录(dump 位置):/dump/RHEL4
    在输入信息之后,请单击 OK 按钮。

    图 6. 配置 NFS 服务器详细信息
     

     


     


    结束语

    就是这样。如果一切顺利,joy.ibm.com 应该与 netra.ibm.com 进行通信,获取所有需要的软件包。很快,您就应该看到一个 GUI 面板,提示您继续进行 本系列第 1 部分 中介绍的普通安装步骤。这两篇文章中介绍的这些步骤可以帮助您简化对 Linux 服务器的管理,省去您的时间和烦恼,这样就可以集中精力去完成一些更加困难的任务了。

  • 学会在Linux下对硬盘分区

    2007-06-14 11:54:02

     第一点也是最重要的一点,要知道当前安装LILO的版本,因为LILO2.21及早期版本对硬盘大小有限制,如果安装LILO到1023磁道以外即8G的空间以外,LILO就无法启动。 但一些BIOS较老的机器,LINUX仍然无法突破1024磁道的限制,因此这些BIOS无法认出大于1024的硬盘空间。

      1. 还需要考虑的问题有:
      2. 是否限制用户可使用的磁盘空间大小?
      3. 在系统中需要安装哪些软件?
      4. 交换分区需要多大?
      5. 系统是否有多个硬盘?

      下面,我们按系统工作性质的不同对分区的划分提出了一些建议。当然,根据实际情况,在满足系统工作需求的前提下,下面的分区大小也可以灵活的变动。

      一. 基本工作站的分区方案

      假设系统的硬盘大小是10G。

        /boot 20M
        Swap 128M
        /root 9.85G

      建立一个20M的/boot分区是为了避免将系统内核文件放到1024磁道以外,如果将/boot做为root分区的一个子目录,内核文件就会安装在root分区的任何地方,因为硬盘的大小超过了8G,所以在启动时就有可能出现问题。建议将交换分区的大小设置为内存的两倍,在这里我们假设系统的内存为64M。最后我们将硬盘的剩余空间全部分给了root分区。

      二. Red Hat Linux 6.2 及其早期版本上的基本服务器硬盘分区方案

      这里的服务器我们假设只提供几种通用的服务,如WWW服务及FTP服务等几种服务,通过telnet登录的用户数很少。假设其硬盘大小为25G。

        /boot 20M
        Swap 128M
        / 10G
        /home 13G
        /var 2G
     在硬盘的最前面创建20M大小的/boot分区,原因同上。交换分区的大小也是128M,因为内存的大小为64M。

      / ,即root分区设为10G这么大是因为其中有一个/usr目录,这个目录可能会占用很多硬盘空间,特别是在安装了X Server,运行图形界面的应用程序的时候。

      /home分区是硬盘中最大的分区,这似乎与我们假设系统用户数不多有些矛盾。实际上在/home目录下确实没有几个用户目录,但在Red Hat6.2及更早的版本中,Apache服务器和wu-ftpd FTP服务器被放在了/home/httpd及/home/ftp目录中。所以这个分区这么大也是有原因的。

      最后,/var目录独自占用了一个分区,因为系统的所有日志都写到了/var/log目录下,这将会占用很大的硬盘空间。如果系统日志记录得非常详细,整个目录很快会被写满,导致系统工作呆滞。当然,可以通过系统日志后台守护程序syslogd来修改日志配置,避免发生这种情况。

      三. Red Hat 7及以上版本的基本服务器分区方案

      这种情况同前一个方案的情况相同,不同的是LINUX版本为Red Hat 7.0及其以上版本。

      /boot 20M
      Swap 128M
      / 10G
      /var 15G

      与RedHat6不同,在RedHat7中HTTP服务和FTP服务的目录现在位于 /var/www/ 和/var/ftp/,因此/var分区有15G之大也就不难理解了。
      四. 多用户服务器分区方案

      在这种服务器系统中,同时有多个用户通过telnet, ssh, rlogin或其方式在远程访问系统。系统中有三个35G的硬盘驱动器,总共有105G的磁盘空间 。系统中用到了RAID 5技术做数据冗余。这种情况下,管理员必须为每个用户分配磁盘空间。对RedHat 6.2及更早的版本,分区如下:

      Disk 1:
        /boot 20M
        / 4G
        /var 3GB
        /home 27.98G
      Disk 2:
        swap 20MB
        / 4GB
        /var 3GB
        /home 27.98GB
      Disk 3:
        swap 20MB
        / 4GB
        /var 3GB
        /home 27.98GB

      这样分区的原因:首先,Disk1上的20M /boot分区不属于任何RAID阵列,否则如果你将/boot放至RAID阵列中,以后就不能系统内核升级了。

      为了方便管理,在其它两个硬盘中建立了20M的交换分区。这种服务器一般配有1G以上的内存,因此交换分区的大小不成问题。如果增大交换分区,就会减少RAID分区空间,所以20M是足够的。RAID分区的分组如下:

      1-A, 2-A, and 3-A 一起组成一个8G的 RAID 5 驱动器,做为/根目录打开。
      1-B, 2-B, and 3-B 组成 6GB的 RAID 5 驱动器,做为 /var目录。
      1-C, 2-C, and 3-C 组成 55.96GB RAID 5 驱动器, 做为 /home.目录。

      这种分配方案总共有55.96G的空间分配给所有用户及Apache和FTP服务,在/var下用6G空间用做记录日志、邮件,这么大的空间是足够的。

      如果安装Red Hat7或以上版本,应给/var分区更大的空间,因为它同时还存放着WEB和FTP服务的两个目录。
  • Linux 服务器的基本安装和配置

    2007-06-14 11:52:25


    简介

        正如您了解的一样,Linux 的应用正在迅猛发展,因此我们需要具备基于 Linux 的服务器的系统管理方面的知识。对于不熟悉这个系统的系统管理员来说,Linux 的安装是一个很普遍的话题。有多种方法可以完成第一次 Linux 安装,您可以在 Web 上找到有关在各种硬件上安装 Linux 的方法。安装一台独立服务器的过程非常简单,但是要想安装成功,需要考虑几点问题。最重要的一点是:系统是否会用于服务产品,例如 DHCP、DNS 或代理服务器,或者用于宿主,如数据库或应用程序。

        本文重点介绍如何在 IBM 机架服务器上安装和配置 Red Hat Enterprise Linux 4,尤其是在基于 x86 芯片架构的服务器上。本文介绍的内容也适用于 x86_64、 IA64、S/390 和 ppc64 这类架构。然而,Red Hat Enterprise Linux 发行版对于每种架构都是不同的 —— x86(32 位)系统使用的 CD 与 x86_64(64 位)、 S/390(64 位)或 ppc(POWER,64 位)系统使用的 CD 都不相同。另外,用户界面可能也会与本文中显示的图有所不同。

    硬件、软件和假定条件

    下面的硬件和软件都可以用来执行本文中描述的任务:

    IBM System x346
    Red Hat Enterprise Linux Version 4.0,Update 4,x86 32 位版本


    安装步骤

    本文介绍了 TEXT 模式的安装。要执行安装,请执行以下步骤:

    将 CD #1 或 DVD 插入计算机的 CD-ROM 设备,并重新系统。在重启之后,您会看到如图 1 所示的屏幕。

    图 1. 引导屏幕


    在命令行中输入 linux text(在 boot: 之后)。可以按 F2 获得更多安装选项,例如 linux noprobe 选项将禁用硬件配置,linux askmethod 可以指定安装类型。


    如果需要的话,可以对 CD 介质进行测试,或者通过点击 Skip 按钮跳过这个步骤,如图 2 所示。


    图 2. 找到 CD 屏幕



    现在会看到欢迎消息,如图 3 所示。



    图 3. 欢迎屏幕



    点击 OK 按钮。现在会看到一个如图 4 所示的屏幕,它提示您选择安装过程使用的语言。

    图 4. 语言选择屏幕


    选择 English,然后单击 OK 按钮。下一屏幕(图 5)提示您为正确的键定义选择键盘类型。

    图 5. 键盘选择屏幕


    选择 us,然后单击 OK 按钮。在下一屏幕中,您可以选择分区工具,可以是 Autopartition 或 Disk Druid,如图 6 所示。

    图 6. 磁盘分区设置屏幕

    Autopartition(或自动分区)会根据所选择的安装类型来设置分区。创建分区之后,您也可以对分区进行定制。Disk Druid 是手动磁盘分区工具。它让您可以在交互环境中创建分区。您可以使用它来设置文件系统类型、挂载点、分区大小等等。Disk Druid 工具只能在安装阶段使用。有关磁盘分区的详细信息,请参看 参考资料。


    请单击 Disk Druid 来设置自己的分区。下一个屏幕提示您定义所选的分区,如图 7 所示。在 Linux 中,最多可以使用 4 个主分区。如果需要超过 4 个分区,就需要放弃一个主分区来创建一个扩展分区。

    图 7. 分区屏幕


        按照下面这 3 个分区:
        /boot,100MB
        交换分区,1024MB
        根 “/” 分区(其余磁盘)
        在这个面板上还可以定义 Software RAID。Red Hat Enterprise Linux 提供了 Software RAID 的支持。有关 RAID 实现的更详细信息请参看 参考资料。


        在完成对分区的设置之后,单击 OK 按钮。


        选择适当的引导加载程序配置,如图 8 所示。更多信息请参看 参考资料。

    图 8. 引导加载程序配置屏幕


        选择 Use GRUB Boot Loader 并单击 OK 按钮。下一个步骤是定制 Boot Loader,如图 9 所示。


    图 9. 引导加载程序配置定制屏幕


        使该行为空,因为您不需要特定的引导时间内核参数,然后单击 OK 按钮。


        设置引导加载程序密码,如图 10 所示。

    图 10. 设置引导加载程序配置密码屏幕


        设置 GRUB 密码非常重要。您甚至可以在系统安装之后再设置密码。如果设置了 GRUB 密码,在重新启动时,系统在允许指定内核参数之前提示输入密码,这样就可以对系统进行保护。这个密码可以与 root 密码不同。这个图中没有指定密码。


    单击 OK 按钮。接着就会显示如图 11 所示的屏幕,提示您指定要从哪个分区上启动。

    图 11. 引导加载程序配置:引导管理器屏幕


        正如该屏幕所指示的一样,您也可以使用 Red Hat Enterprise Linux AS 引导管理器来引导其他操作系统。为此,您需要指定要从哪个分区上引导系统,要引导哪个操作系统,以及每个操作系统使用的标签。对于本例来说,我们只引导 Red Hat Enterprise Linux。


        单击 OK 按钮。显示的屏幕会提示您对引导加载程序配置进行定制,如图 12 所示。

    图 12. 引导加载程序配置:引导加载程序安装屏幕


        说明安装引导加载程序的位置,例如 主引导记录(MBR),然后完成定制过程,并单击 OK 按钮。通常您的系统中都会提供两个以太网卡。系统会检测到这两个网卡,分别为 eth0 和 eth1。您可以为这些网卡手工设置 IP 地址,或者使用动态主机控制协议(Dynamic Host Control Protocol,DHCP)服务器。DHCP 服务器是一个自动提供 IP 地址的服务器。对于本例来说,我们只使用了 eth0 网卡,如下个步骤所示。


        为 eth0 定制网络设置,如图 13 所示。

    图 13. 网络配置屏幕


        由于本示例设置了一个新服务器,因此我们选择手工指定 IP 地址,而不是从 DHCP 服务器自动选择一个 IP 地址。对于本例来说,可以将 IP 地址设置为 192.168.128.1,将子网掩码设置为 255.255.255.0。


        单击 OK 按钮。在下一个屏幕中仍然要设置一些网络设置,例如网关和 DNS 的详细信息,如图 14 所示。

    图 14. 其他网络设置屏幕


        请根据需要指定其他设置。网关地址可以是路由器的 IP 地址。本例中,只指定网关地址。


        单击 OK 按钮。在下一个屏幕中,可以定义服务器的主机名,如图 15 所示。

    图 15. 主机名配置屏幕


        指定主机名,然后单击 OK 按钮。对于本例来说,主机名是 netra.ibm.com。下一个屏幕提示您配置防火墙的设置,如图 16 所示。防火墙可以阻止外部网络对您的计算机进行未授权的访问。有关防火墙的更多信息,请参看 参考资料。

    图 16. 防火墙屏幕


        选择一个防火墙选项,然后单击 OK 按钮。对于本例来说,请选择 No firewall 选项,这样就禁用了防火墙。这将导致出现图 17 所示的警告信息,确认防火墙已经被禁用了。

    图 17. 防火墙警告屏幕


        单击 Proceed 按钮,因为此处不需要任何操作。下一个屏幕提示您定制系统的 Security Enhanced Linux(SELinux)特性,如图 18 所示。有关 SELinux 的更详细信息请参看 参考资料。

    图 18. 增强安全性的 Linux 屏幕

        正如屏幕上说明的一样, SELinux 提供了比普通 Linux 更多的安全选项。


        选择安全选项,并单击 OK 按钮。对于本例来说,请选择 Disabled。下一个屏幕如图 19 所示,会提示您选择系统上使用的其他语言。

    图 19. 语言支持屏幕


        选择所有适用的语言,并单击 OK 按钮。


        指定服务器的时区,如图 20 所示。

    图 20. 时区选择屏幕

        时区标识了服务器所在的区域,并可以自动调整日期和时间。对于本例来说,我们选择的是 ASIA/Calcutta。


        单击 OK 按钮。


        设置系统中 root 用户的密码。

    图 21. Root 密码屏幕


         单击 OK 按钮。 下一个屏幕提示您对要安装到服务器上的包进行定制,如图 22 所示。

    图 22. 默认包屏幕


         说明是否希望安装其他包。对于本例来说,请选择 Customize software selection。


        单击 OK 按钮。


        选择要安装的其他包,如图 23 所示。

    图 23. 分组包选择屏幕

         对于本例来说,请选择 Windows® File Server 和 Network Servers 包。


        单击 OK 按钮。 然后会出现如图 24 所示的消息。

    图 24. 开始安装屏幕


         单击 Back 对之前的选择做修改。如果您不需要再做任何修改,请单击 OK 按钮。 下一个屏幕说明了安装需要的介质集,这取决于所选择的包,如图 25 所示。

    图 25. 所需要的安装介质屏幕


         单击 Continue。现在开始安装,如图 26 所示。

    图 26. 包安装屏幕

         在所有包都安装好之后,系统会提示您重新启动,如图 27 所示。

    图 27. 完成屏幕


    单击 Reboot 按钮。在重启过程完成之后,系统会显示 FirstBoot 屏幕,如图 28 所示。

    图 28. FirstBoot 欢迎屏幕

         这个屏幕提示您启动 FirstBoot 脚本,将执行以下操作:
         接受许可
         设置日期和时间
         设置显示模式
         注册订阅信息以获取正常更新
         注册新用户
         配置声卡
         安装第 3 方插件和应用程序



         单击 Next 按钮,启动 FirstBoot 脚本。此时会出现登录屏幕,如图 29 所示。

    图 29. 登录屏幕


         使用在安装过程中设置的 root 密码登录系统。现在所有工作已经完成 —— 您的服务器可以工作了。
  • Linux新手系列之一

    2007-06-14 11:50:13

    那么Linux是什么呢?Linux是基于PC(其它平台也有的支持)的UNIX兼容系统,在跟UNIX的关系上,它不比任何其它UNIX兼容系统远

    OK,你的第一个问题是:什么是Linux,它和UNIX有什么区别?问这个问题的原因呢,多半是你还在大一的时候一次去实验室,看到高年纪学生在一个特大屏幕的机器上作题,你羡慕的看着他,问:"这是什么计算机啊,这么高级?"而他不无骄傲的说,"这是UNIX"。后来你懂的多了,知道那是SUN工作站,上面运行着Solaris,就是UNIX。现在你又听说Linux也是UNIX,是怎么回事呢?

      short answer:去看书,街上很多Linux的书第一章就是讲他们的历史和亲属关系的。

      long answer: UNIX是一个20还是30年前由几个研究生在实验室里开始后来一个大公司把它商业化了的一个操作系统。一来二去,它成长并且占领了市场。当时它只是运行在只有大学才买得起一两台的昂贵机器上。后来机器多了,公司多了,懂得人也多了,就分家了,而"UNIX"这个名字由于法律关系,谁也不能说自己的操作系统是"UNIX"而只能说是"UNIX兼容"系统了。所以现在"UNIX"系统是不存在的,存在的只是一个遥远的传说。那么现在那些Solaris,AIX,IRIS都是什么呢?那些都是各公司在他们硬件平提上作的商业UNIX,这些系统都遵循一个叫POSIX的古怪标准,对了,这个标准呢,是后来UNIX太多太乱,大家编程接口甚至命令都不一样了所以没办法座下来商量的一个协议。

      那么Linux是什么呢?Linux是基于PC(其它平台也有的支持)的UNIX兼容系统,在跟UNIX的关系上,它不比任何其它UNIX兼容系统远。所以如果你有"Solaris才是正统UNIX,Linux只是兼容"的想法,对不起你错了,起码你得把支持AIX的人打败才行,他们还认为AIX才是正统UNIX呢。所以用Linux你可以学到有关UNIX的知识,这些知识绝大部分在其它商业UNIX上可以用得上。当然,其核心思想绝对是相同的。那么在三年前只有你的读博士的辅导员才有机会在实验室那台宝贝SUN上学的知识,你现在在PC机上就可以实践了,这难道不是很妙的一件事情么?

     第二个问题:我想装一个Linux,最新的是哪个版本,我听说过xxxlinux,yyylinux,还有国内某个公司鼎力推出的zzzlinux,到底哪个更好呢?

      首先你需要明白,Linux不是windows,它不是一个由一家商业公司维护的软件,只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司都可以按照自己的想法,比如加一点功能,加中文支持,作一个Linux出来。这些Linux虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区别是用一种Linux 发布 (不同的Linux我们叫做不同的发布)也许硬件很好配置,各种软件也好安装,用另外一种也许速度快,再一种也许支持中文比较好。总之没有白吃的午餐,在windows下想当然的东西在linux下也许需要你熬夜才能得到。所以从一开始选择distribution就必须非常小心,否则因为自己刚好随某个杂志得到一个Linux发布就以为所有的都一样就开始安装,等硬盘数据毁了,或者网络哭天跄地也配不出来的时候,就晚了。不是开玩笑,我知道windows下安装驱动程序就是鼠标点几下,可是在Linux下,为了驱动一个网卡,折腾一夜是不希奇的--当然,我觉得这是值得的。

      所以,面对那么多Linux distribution,你应当选择哪个呢?

      比较著名的Linux distribution有:

      RedHat:最新版本6.2, 7.0beta。由于RedHat公司已经上市,获得了很多商业的支持,所以它在硬件软件兼容性上很好。实际上它已经是Linux的工业标准。想象一下如果你是一个比如Oracle这样厂商的老板,你需要为Linux开发一个版本,而不同的Linux dist需要单独开发维护,为成本考虑你自然会只认准一个Linux。

      Slackware(7.1)。很早就有的Linux,有很多老的忠实用户,但现在越来越不行了。

      SuSe Linux,德国人做的,在欧洲很流行,有一些驱动上的优势。

      另外还有Debian,CorelLinux等dist,不一一介绍了。

      还有你会看到国内媒体上吹捧的各种“中文Linux”,他们的优势主要是有中文处理。但是如前一篇文章提到的,想用中文,用windows 2000最好。实际上我觉得一个老7字班的前辈跟我说的一句话很好:“(对我们来说)在计算机上看到中文本身就是一件很古怪的事情”。如果你是抱着学习计算机的目的而来,那么你不可能避免阅读英文文档。即使是microsoft的文档,有关编程的文档,最新的也全是英文。当然,要上BBS,看中文网页等,用英文的dist一样能做到。

      作为我个人(个人观点,你不必相信我),我只用RedHat,因为我需要它作为一个操作系统能让我更快的掌握并且学习我想学习的知识,而不是跟愚蠢的网卡,声卡作斗争。尽管这些斗争对于学习Linux来说也是很有益的,但是对于一个新手来说,如果连系统都安装不上,无法配置,又怎么谈如何学习呢?

      Again,this is only my own opnion, and I could be wrong。

      在这个系列里,我会围绕RedHat 6.2来讲。
  • Linux命令使用技巧集锦

    2007-06-14 11:49:05

    初用Linux时可能有处处不方便的感觉, 可是等使用一段 时间掌握了一些技巧后就会感到越来越顺手了. 以下就是我 使用Linux以来积累的一些经验与技巧, 相信对初学者会有所帮助的.

      1. 使用虚拟控制台   

      登录后按Alt+F2键这时又可以看到"login:"提示符, 这 个就是第二个虚拟控制台. 一般新安装的Linux有四个虚拟控 制台, 可以用Alt+F1~Alt+F4来访问. 虚拟控制台最有用的时 候是当一个程序出错锁住输入时可以切换到其他虚拟控制台 ?

      2. 拷贝与粘贴  

      字符界面: 不管是Slackware 还是RedHat 安装后每次启 动时都会自动运行一个叫gpm的程序, 该程序运行后就可以用 鼠标来拷贝与粘贴了. 具体做法是按住鼠标左键拖动使要拷贝的地方反白, 这时反白的区域已经被拷贝, 再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了. X-Window下: 拷贝的操作与字符界面下一样, 三键鼠标的话 按中键粘贴, 两键鼠标的话同时按左右键粘贴(须在配置XF86 时在鼠标的设置里选择 Emulate 3 Button).

      3. 快速进入某些目录

      键入 cd ~ 可进入用户的home目录. 键入 cd - 可进入上一个进入的目录.

      4. 软驱的使用

      如果是Linux 的ext2文件系统用如下命令: #mount -t ext2 /dev/fd0 /mnt dos格式的软盘则用命令: #mount -t msdos /dev/fd0 /mnt 然后就可以在/mnt里访问软盘的内容了, 注意在取出软盘之 前要先卸掉软盘上的文件系统, #umount /mnt 否则会导致信息丢失. 在软盘上建立文件系统可用如下命令: #mke2fs /dev/fd0 1440

      5. RedHat下显示彩色目录列表   

      打开/etc/bashrc, 加入如下一行: alias ls="ls --color" 下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下: 蓝色-->目录 绿色-->可执行文件红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件

      6. 显示文件的类型   

      用命令 file 可以使你知道某个文件究竟是ELF格式的可执行文件, 还是shell scrīpt文件或是其他的什么格式 例如: #file startx

    初用Linux时可能有处处不方便的感觉, 可是等使用一段 时间掌握了一些技巧后就会感到越来越顺手了. 以下就是我 使用Linux以来积累的一些经验与技巧, 相信对初学者会有所帮助的.

      1. 使用虚拟控制台   

      登录后按Alt+F2键这时又可以看到"login:"提示符, 这 个就是第二个虚拟控制台. 一般新安装的Linux有四个虚拟控 制台, 可以用Alt+F1~Alt+F4来访问. 虚拟控制台最有用的时 候是当一个程序出错锁住输入时可以切换到其他虚拟控制台 ?

      2. 拷贝与粘贴  

      字符界面: 不管是Slackware 还是RedHat 安装后每次启 动时都会自动运行一个叫gpm的程序, 该程序运行后就可以用 鼠标来拷贝与粘贴了. 具体做法是按住鼠标左键拖动使要拷贝的地方反白, 这时反白的区域已经被拷贝, 再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了. X-Window下: 拷贝的操作与字符界面下一样, 三键鼠标的话 按中键粘贴, 两键鼠标的话同时按左右键粘贴(须在配置XF86 时在鼠标的设置里选择 Emulate 3 Button).

      3. 快速进入某些目录

      键入 cd ~ 可进入用户的home目录. 键入 cd - 可进入上一个进入的目录.

      4. 软驱的使用

      如果是Linux 的ext2文件系统用如下命令: #mount -t ext2 /dev/fd0 /mnt dos格式的软盘则用命令: #mount -t msdos /dev/fd0 /mnt 然后就可以在/mnt里访问软盘的内容了, 注意在取出软盘之 前要先卸掉软盘上的文件系统, #umount /mnt 否则会导致信息丢失. 在软盘上建立文件系统可用如下命令: #mke2fs /dev/fd0 1440

      5. RedHat下显示彩色目录列表   

      打开/etc/bashrc, 加入如下一行: alias ls="ls --color" 下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下: 蓝色-->目录 绿色-->可执行文件红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件

      6. 显示文件的类型   

      用命令 file 可以使你知道某个文件究竟是ELF格式的可执行文件, 还是shell scrīpt文件或是其他的什么格式 例如: #file startx

    初用Linux时可能有处处不方便的感觉, 可是等使用一段 时间掌握了一些技巧后就会感到越来越顺手了. 以下就是我 使用Linux以来积累的一些经验与技巧, 相信对初学者会有所帮助的.

      1. 使用虚拟控制台   

      登录后按Alt+F2键这时又可以看到"login:"提示符, 这 个就是第二个虚拟控制台. 一般新安装的Linux有四个虚拟控 制台, 可以用Alt+F1~Alt+F4来访问. 虚拟控制台最有用的时 候是当一个程序出错锁住输入时可以切换到其他虚拟控制台 ?

      2. 拷贝与粘贴  

      字符界面: 不管是Slackware 还是RedHat 安装后每次启 动时都会自动运行一个叫gpm的程序, 该程序运行后就可以用 鼠标来拷贝与粘贴了. 具体做法是按住鼠标左键拖动使要拷贝的地方反白, 这时反白的区域已经被拷贝, 再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了. X-Window下: 拷贝的操作与字符界面下一样, 三键鼠标的话 按中键粘贴, 两键鼠标的话同时按左右键粘贴(须在配置XF86 时在鼠标的设置里选择 Emulate 3 Button).

      3. 快速进入某些目录

      键入 cd ~ 可进入用户的home目录. 键入 cd - 可进入上一个进入的目录.

      4. 软驱的使用

      如果是Linux 的ext2文件系统用如下命令: #mount -t ext2 /dev/fd0 /mnt dos格式的软盘则用命令: #mount -t msdos /dev/fd0 /mnt 然后就可以在/mnt里访问软盘的内容了, 注意在取出软盘之 前要先卸掉软盘上的文件系统, #umount /mnt 否则会导致信息丢失. 在软盘上建立文件系统可用如下命令: #mke2fs /dev/fd0 1440

      5. RedHat下显示彩色目录列表   

      打开/etc/bashrc, 加入如下一行: alias ls="ls --color" 下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下: 蓝色-->目录 绿色-->可执行文件红色-->压缩文件 浅蓝色-->链接文件 灰色-->其他文件

      6. 显示文件的类型   

      用命令 file 可以使你知道某个文件究竟是ELF格式的可执行文件, 还是shell scrīpt文件或是其他的什么格式 例如: #file startx

     7 .命令文件的路径   

      当你键入一些命令如find, shutdown, mount, startx时是否 想过要知道这些文件究竟放在哪个目录里? 用命令 whereis 可以实现,如 #whereis startx

      8. 查找文件

      find 命令要加一些参数才能查到文件, 如: #find /usr -name XF86Setup -print 在/usr里查找文件XF86Setup.

      9. 删除无用的core文件

      程序运行出后有时候会产生一个名为core的文件, 这个文件一般很大而且没什么用, 可以删除掉以释放空间.

      10. 一次解开.tar.gz文件

      解开.tar.gz文件一般要先用gunzip解压再用tar解包, 在Linux下可以一次完成, 如: #tar zxpvf sample.tar.gz

      11. 显示win95分区里的长文件名   

      如果你发现win95分区里的长文件命不能显示, 可以重新 用vfat方式来mount. 对于启动时就mount的分区可以修改文 件/etc/fstab, 将里面的msdos字样改为vfat. 如果无法用 vfat mount, 则要重新编译一下核心, 加入对vfat的支持.

      12. Linux 里的Norton Commander   

      在提示符下键入命令mc后你就会看到一个与Norton Commander很相似的界面, 实际上功能也很相似甚至更强大, 比如可以直接对.tar.gz 压缩包里的文件进行操作(有点像 ZipMagic).

      13. 启动后直接进入X

      编辑/etc/inittab文件, 把id:3:initdefautl改为 id:4:initdefautl. 不过搜索路径可能会有些问题, 关机时 你得直接进入/sbin 里去执行 shutdown.

      14. 后台运行 X 程序

      执行一个X程序时别忘了在后面加一个&号,如 #netscape & 否则的话在你推出执行的程序之前再无法在那个终端窗口里输入命盍?

      15. 强行退出 X

      有时候在 X 里由于程序出错鼠标键盘都不起作用, 这时 候不用着急, 因为在Linux下几乎不会像在Win95里那样恶性 死机, 你只须键入Ctrl+Alt+BackSpace键就可以回到字符界 面下了.

     16. 重装Win9x后lilo失效无法启动Linux  

      只须先用软盘启动Linux然后运行一次lilo即可。对于 RedHat可以用命令mkbootdisk来制作启动盘,例如: mkbootdisk --devices /dev/fd0 2.0.34-1 其中2.0.34-1是 /lib/modules下的一个目录。

      17. 把dos/windows改为缺省启动的OS  

      RedHat把Linux作为lilo缺省启动的OS,即出现 boot: 提示符后直接回车启动Linux。如果想改为dos/Windows,修 改文件/etc/lilo.conf,把有关启动dos的部分放在前面,再 运行一次lilo即可。例如把lilo.conf从: boot=/dev/hda

      map=/boot/map

      install=/boot/boot.b

      prompt

      timeout=50

      image=/boot/vmlinuz-2.0.34-1

      label=linux

      root=/dev/hdc5

      read-only

      other=/dev/hda1

      label=dos

      table=/dev/hda

      改为:

      boot=/dev/hda

      map=/boot/map

      install=/boot/boot.b

      prompt

      timeout=50

      other=/dev/hda1

      label=dos

      table=/dev/hda

      image=/boot/vmlinuz-2.0.34-1

      label=linux

      root=/dev/hdc5

      read-only

      18. 去掉引导区内的lilo信息

      安装lilo后如果硬盘数量或分区情况有改变的话将导致硬盘不能启动,这时只须用软盘启动dos再运行 fdisk/mbr 即可。(这个方法还可清除任何引导区病毒)

      19. 让 X 支持 AGP 显卡

      下载一个 AX 4.1 即 AcceleratedX 4.1 , 一个商业版 的 X Server 。除 AGP 显卡外 AX 还支持很多牌号的显卡。 另外还可以用AX 带的设置程序 Xsetup 方便的对分辨率,刷 新率等参数进行设置。不过我也不知道用AGP卡效果如何,因 为我现在还在用老掉牙的 S3 765 。

     20. 把 man 或 info 的信息存为文本文件

      以 tcsh 为例: man tcsh   col -b > tcsh.txt info tcsh -o tcsh.txt -s

      21. 用当前路径作提示符

      对 bash 来说,在 .bashrc 里加一行: PS1="\$PWD\\$" 对 tcsh 来说,在 .tcshrc 里加一行: set prompt="%/>"

      22. 压缩可执行文件

      Linux 下有一个类似 dos 里的 pklite 和 lzexe 的命 令 -- gzexe 。而且压缩率一般都可以超过 50% ,在空间紧 张时很有用。比如:

      /dosc/temp# ls -al

      total 148

      -rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk

      /dosc/temp# gzexe

      gawk gawk: 54.5%

      /dosc/temp# ls -al

      total 216

      -rwxr-xr-x 1 root root 68710 Dec 8 15:36 gawk

      -rwxr-xr-x 1 root root 149564 Dec 8 15:33 gawk

      /dosc/temp#

      23. 查看 Linux 启动时的信息  

      Linux 启动时屏幕显示的信息来不及看清就一闪而过, 如果对这些信息感兴趣的话可以在启动完后用命令 dmesg 查看。

      24. 处理文件名内含有特殊字符的文件  

      如果有一个文件名叫 -file 如果想删除它,键入 rm -file 会显示 invalid option ,原来由于文件名的第一个字符为 - , Linux 把文件名当作选项了,可以加 -- 解决 这个问题, 如 rm -- -file 。如果是其他特殊字符的话可 以在特殊字符前加一个 \ ,或者用双引号把整个文件名括起来。

      25. 一次处理一整个目录

      Linux/UNIX 的很多常用命令如 rm , cp 等都有一个参 数---- -r , 是递归的意思, 命令里加了参数 -r 就可以对目标目录及其下所有子目录进行操作,如: rm -rf /test (f 是 force 意为强行) , 该命令完全删除 根目录下的子目录 test ,作用类似于 dos 下的 deltree ,当然使用这个命令时要特别小心。再如: cp -r /test /test1 有类似 dos 下 xcopy /s 的作用。

      26. 修改登录画面

      对本机: 先修改文件 /etc/issue 改为相要显示的内容, 再修改文件 /etc/rc.d/rc.local(RedHat) 或 /etc/rc.d/rc.S(Slackware) 把下面几句注释掉:

      # This will overwrite /etc/issue at every boot. So, make any changes you

      # want to make to /etc/issue here or you will lose them when you reboot.

      echo "" > /etc/issue

      echo "Red Hat Linux $R" >> /etc/issue

      echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue  

      cp -f /etc/issue /etc/issue.net

      echo >> /etc/issue

      不然的话每次重新启动 /etc/issue 都会被更改。

      对 telnet 的远地机器: 先把文件 /etc/usr/sbin/in.telnetd 改名,如改为 in.telnetd.exe ,再编一个名为 in.telnetd 的 shell 脚 本, 在显示完需要的内容后再调用 in.telnetd.exe 。如:  

      #!/bin/sh cat /etc/login.banner #需要在登录提示符前显示的内容 echo -n "" exec /usr/sbin/in.telnetd.exe

      27. 几个有用的别名

      几个能方便操作和减少误操作的别名,建议把它们放到启动 文件里, 如 /etc/bashrc 。   

      alias rm='rm -i'

      alias cp='cp -i'

      alias mv='mv -i'

      #前三个别名的作用是在删除、覆盖文件之前先提示确认, RedHat已经自动 #加上了,强烈建议Slackware的用户也加上,因为 Linux/UNIX下文件一旦删 #除就再也无法恢复了。  

      alias l='ls -l'

      alias cd..='cd ..'

      alias utar='tar xvfz' #解 *.tar.gz 文件

      alias inforpm='rpm -qpi' #显示rpm包的信息

      alias instrpm='rpm -Uhv' #安装rpm包

      alias listrpm='rpm -qpl' #列rpm包内的文件

      alias uistrpm='rpm -e' #反安装rpm包

      28. 使用命令补齐

      所谓命令补齐(Command-Line Completion)是指当键入的 字符足以确定目录下一个唯一的文件时只须按 Tab 键就可以 自动补齐该文件名的剩下部分,例如要把目录 /freesoft 下 的文件 gcc-2.8.1.tar.gz 解包,当键入到 tar xvfz /freesoft/g 时如果该文件是该目录下唯一以 g 起头的文件 的话就可以按下 Tab 键,这时命令会被自动补齐为:tar xvfz /freesoft/gcc-2.8.1.tar.gz ,非常方便。

      29. 最后一条技巧  

      有时间的话多看看系统提供的FAQ文件,因为通常遇到的 问题大多数都能在里面找到答案。
Open Toolbar