发布新日志

  • 用QTP来操作DOS命令行

    2009-03-18 14:18:23

    Objectives

    The objectives of this article are :

    • Learn how to use DOS command lines in QTP.
    • Alternative complex tasks.
    • Alternative .NET methods.

    The following content is viewable because you are logged-in.
    Thanks for registering!

    cmd.exe allows access to the Microsoft Windows Command Prompt, also known as Microsoft DOS.
    To-date, cmd.exe is a 32-bit command prompt used in Windows NT, 2000, and XP and offers disk and file maintenance functions to your computer as well as network functions. cmd.exe can be found under System32 folder.

    SystemUtil.Run "cmd.exe","","C:\WINDOWS\system32″,"open"

    image

    Capture the window by QTP

    image

    image

    Window( "object class:=ConsoleWindowClass" )

    Print Window( "object class:=ConsoleWindowClass" ).GetROProperty( "title" )

    Typing to DOS window

    The Type method types the specified string in the window.

    Syntax: object.Type KeyboardInput.

    KeyboardInput : A String value. The text string and/or constants representing non-alphanumeric keys.

    imageimage

    Window( "object class:=ConsoleWindowClass" ).Type "Ping advancedqtp.com"

    Window( "object class:=ConsoleWindowClass" ).Type micReturn

    image

    Catching the Response

    The GetVisibleText method returns the text from the specified area. The text to capture must be visible in the application window when the step runs. The area is defined by pairs of coordinates that designate two diagonally opposite corners of a rectangle.

    Syntax : object.GetVisibleText ([Left], [Top], [Right], [Bottom])

    txt = Window( "object class:=ConsoleWindowClass" ).GetVisibleText()

    print txt

    image

    Problems…

    SystemUtil.Run "cmd.exe","","C:\WINDOWS\system32″,"open"

    Window( "object class:=ConsoleWindowClass" ).Type "dir"

    Window( "object class:=ConsoleWindowClass" ).Type micReturn

    txt = Window( "object class:=ConsoleWindowClass" ).GetVisibleText()

    print txt

    The GetVisibleText method "catches" only the text that is visible. large commands with large responses are useless…

    Solution

    Wscript.Shell Object

    The WSript.Shell object provides functions to read system information and environment variables, work with the registry and manage shortcuts. You create a WSript.Shell object whenever you want to run a program locally, manipulate the contents of the registry, create a shortcut, or access a system folder.

    Dim wShell

    Set wShell = CreateObject( "WScript.Shell" )

    image

    you will see this detailed description if you are using PDM.DLL version 9

    Exec Method

    Runs an application in a child command-shell, providing access to the StdIn/StdOut/StdErr streams.

    Syntax : object.Exec( strCommand )

    strCommand : String value indicating the command line used to run the script. The command line should appear exactly as it would if you typed it at the command prompt.

    The Exec method returns a WshScriptExec object, which provides status and error information about a script. run with Exec along with access to the StdIn, StdOut, and StdErr channels.

    %compsec%

    What if your colleague installed MS-Windows on D:\ Drive?  –> The C:\Windows\System32\cmd.exe will not work.

    Since every machine can have different installation directory, the environment %compsec% returns the full path of the cmd.exe file. image

    Executing a command

    • /C – Carries out the command specified by string and then terminates.
    • /K – Carries out the command specified by string but remains.

    image

    Executing the command

    Dim wShell, exec

    Set wShell = CreateObject( "WScript.Shell" )

    Set exec = wShell.Exec( "%comspec% /C ping advancedqtp.com" )

    WshScriptExec Object

    Provides status information about a script. run with Exec along with access to the StdIn, StdOut, and StdErr streams.

    WshScriptExec.Status Property

    Provides status information about a script. run with the Exec() method.

    • WshRunning ( = 0 ) - The job is still running.
    • WshFinished ( = 1 ) - The job has completed.

    WshScriptExec.ExitCode Property

    Returns the exit code set by a script. or program run using the Exec() method. Executables set an exit code when they finish running. This conveys the status information when a process ends. Often, it is used to send an error code (or some other piece of information) back to the caller. If the process has not finished, the ExitCode property returns 0. The values returned from ExitCode depend on the application that was called.

    WshScriptExec.StdOut Property

    The StdOut property contains a read-only copy of any information the script. may have sent to the standard output.

    • AtEndOfStream - Returns a Boolean value indicating whether the end of an input stream has been reached.
    • ReadAll - Returns all characters from a stream.
    • ReadLine - Reads an entire line from a stream.

    Handling Errors

    Run the following code. why is the result empty?

    Dim wShell, exec

    Set wShell = CreateObject( "WScript.Shell" )

    Set exec = wShell.Exec( "%comspec% /C png advancedqtp.com" )

    print exec.StdOut.ReadAll

    WshScriptExec.StdErr Property

    since the "png" command has a syntax error ( ping ), the STDOUT remains empty.

    Now, run the following code :

    Dim wShell, exec

    Set wShell = CreateObject( "WScript.Shell" )

    Set exec = wShell.Exec( "%comspec% /C png advancedqtp.com" )

    print exec.StdErr.ReadAll

    image

    Since we have a syntax error, the STDERR buffer is filled, instead of the STDOUT. but, what about a "bad" command ( without syntax errors )?

    Dim wShell, exec

    Set wShell = CreateObject( "WScript.Shell" )

    Set exec = wShell.Exec( "%comspec% /C ping no-exists" )

    print exec.StdOut.ReadAll

    in this case STDOUT will be filled, but not STDERR.

    image

    How could we know when an error occurred?

    Dim wShell, exec, outStr

    Set wShell = CreateObject( "WScript.Shell" )

    Set exec = wShell.Exec( "%comspec% /C ping arrdvancedqtp.com" )

    Do While exec.Status = 0

        If Not exec.StdOut.AtEndOfStream Then

            outStr = exec.StdOut.ReadAll

            If exec.ExitCode = 1 then

                Reporter.ReportEvent micWarning, "Command failed", outStr

            End If

          Exit Do

       End If

       If Not exec.StdErr.AtEndOfStream Then

          outStr = "STDERR: " & exec.StdErr.ReadAll

          Reporter.ReportEvent micFail, "Command failed", outStr

          Exit Do

       End If

       Wait 1

    Loop

    Print outStr

    Alternative .NET

    Set nt = DotNetFactory.CreateInstance( "Microsoft.VisualBasic.Devices.Network" )

    If CBool( nt.Ping( "www.advancedqtp.com" ) ) Then

       MsgBox( "Server pinged successfully." )

    Else

       MsgBox( "Ping request timed out." )

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

  • Mantis缺陷管理系统 搭建手册

    2009-02-06 09:47:25

    还没听说过这个工具拿来学了解一下
  • 怎样成为一个合格的测试工程师

    2009-02-05 10:56:34

    文章出处:bbs.51testing.com 作者:51testing会员 发布时间:2006-08-28
     前段时间和几个测试朋友聊天,说到06年上半年测试界的新闻,我想最大新闻莫过于智联招聘网站的一个测试行业的调查报告吧。

     该报告指出“目前测试从业人员不会超过5万,合格的测试人员不会超过3万,而工作超过5年的更不会超过1万”,姑且不说数据是否准确(据我经验,应该八九不离十)。单在这里说说怎样才算是一个合格的测试工程师,怎么才能成为一个合格的测试工程师。

        首先说说怎样才算是一个合格的测试工程师。

     一个测试工程师应该具备的素质我想在很多介绍软件测试的书里已经都列举过了,这里就不在重复,而一个合格的测试工程师和一个测试工程师的最大区别在哪儿?不外乎就在与测试思想。合格就在于他接受到测试任务后所做的第一件事情是想而不是做。合格就在于他将他自己的想法始终贯穿于整个测试中,包括测试设计中,测试执行中,测试分析中。

        许多人都会说测试思想是一个空洞的东西,而我也曾经写过或说过太多的例子用以证明它,这里只建议想做合格测试工程师的人去看一本书吧,它的名字是,在我眼里,它并不是一本讲技术的书,同时它也并不只适用于开发人员。

        接着说说怎样才可以成为一个合格的测试工程师。

        不是有一个玩笑说某某公司扫地的大妈都可以做软件测试,某某公司看门的大爷都可以做软件测试。由此可见人们对软件测试的误解和测试工程师的尴尬。其实并不 是任何一个人都可以成为测试工程师的,其实并不是任何一个测试工程师都可以成为合格的测试工程师的,要想成为一个合格的测试工程师,你必须有血有肉还的有 思想。技术没有可以学,思想是学不来的,思想是需要实践的。毛泽东思想也不是他老人家凭空想象出来的,你说是否?

        于是我建议大家:

        1. 每半年读一本测试书籍(现在的测试书籍也多起来了,尽管很多都是东抄西抄的,能力够的话去读英文原版,译本基本都不能完全领会作者的思想,人家老外的测试发展要比我门多几十年呢)

        2. 每半年学一门测试技术(IT行业变化很快,测试技术也同样,每年都有新的测试技术出现,不希望大家对每一个新出现的技术都掌握,只希望每一个测试人员对本人从事的这个行业要充分了解和熟悉,因为在你现在和将来测试的项目中,你要选择最合适和最有效于这个项目的测试技术,如果你连所选对象都不知,那谈何选择,又谈何合适呢?)

        3.  每半年学一门IT技术(这里的IT技术范围要更广一些,做测试人员要了解更多的知识,如你做性能测试,你需要了解操作系统,你需要了解软件架构,你需要了解低层实现,你需要了解中间件,你需要了解数据库,你需要了解他们的配置与实现方式,你还需要了解硬件,了解网络,了解内存管理机制,了解磁盘I/O原理等等)

        4. 要学会思考(测试人员要学会在测试前思考,测试中思考,测试后思考,思考的结果要记录下来,每有一个人敢说他自己是天才,可以记住所有的东西。想好后那就去做吧,去验证吧,如果不对,那返回重新思考,然后再去做,只有这样,你才会做的更好。)

        5. 要重视测试设计(某 开发人员曾说过他精通JAVA,精通C,我于是和他说,那给你10年或20年,你用你精通的JAVA来写出一个可以替换WINDOWS的操作系统。他从此 不在这样说,因为他知道即使给他一辈子,这对他也是一个梦。测试何尝不是,你测试技术再高,你也不可能测试的更好,重视测试设计吧,这才是测试之关键。)

        6. 多和测试同行交流(在一个封闭的圈子里,或在一个公司里,你觉得你是测试高手,当有一天你走出这个封闭圈子的时候,你才发现,天外有天,或许捆饶你一个月的难题某些测试同行轻描淡写的一句话就可以为你解决。测试是相通的,测试思想更是相通的,多去做一些比较,才可以看到自己的不足。)

     我是崇尚测试技术的,所以相信, 尊重源于实力!因此希望更多的测试人员能得到测试同行的尊重,能得到开发人员的尊重,能得到企业的尊重。

        同时我更崇尚测试思想,所以我更相信,在软件行业更加规范化后,企业对测试工程师的要求必定是测试思想第一,经验第二,而测试技术只能排第三了.



  • QTP正则表达式

    2008-09-26 17:41:11

    QTP正则表达式

     

    字符

    描述

    \

    将下一个字符标记为特殊字符或字面值。例如"n"与字符"n"匹配。"\n"与换行符匹配。序列"\\""\"匹配,"\(""("匹配。

    ^

    匹配输入的开始位置。

    $

    匹配输入的结尾。

    *

    匹配前一个字符零次或几次。例如,"zo*"可以匹配"z""zoo"

    +

    匹配前一个字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"

    ?

    匹配前一个字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"

    .

    匹配换行符以外的任何字符。

    (pattern)

    与模式匹配并记住匹配。匹配的子字符串可以从作为结果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括号字符( ),可使用"\(" "\)"

    x|y

    匹配 x y。例如 "z|wood" 可匹配 "z" "wood""(z|w)oo" 匹配 "zoo" "wood"

    {n}

    n 为非负的整数。匹配恰好n次。例如,"o{2}" 不能与 "Bob 中的 "o" 匹配,但是可以与"foooood"中的前两个o匹配。

    {n,}

    n 为非负的整数。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o"o{1,}"等价于"o+""o{0,}"等价于"o*"

    {n,m}

    m n 为非负的整数。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三个o"o{0,1}"等价于"o?"

    [xyz]

    一个字符集。与括号中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"

    [^xyz]

    一个否定的字符集。匹配不在此括号中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p".

    [a-z]

    表示某个范围内的字符。与指定区间内的任何字符匹配。例如,"[a-z]"匹配"a""z"之间的任何一个小写字母字符。

    [^m-z]

    否定的字符区间。与不在指定区间内的字符匹配。例如,"[m-z]"与不在"m""z"之间的任何字符匹配。

    \b

    与单词的边界匹配,即单词与空格之间的位置。例如,"er\b" "never"中的"er"匹配,但是不匹配"verb"中的"er"

    \B

    与非单词边界匹配。"ea*r\B""never early"中的"ear"匹配。

    \d

    与一个数字字符匹配。等价于[0-9]

    \D

    与非数字的字符匹配。等价于[^0-9]

    \f

    与分页符匹配。

    \n

    与换行符字符匹配。

    \r

    与回车字符匹配。

    \s

    与任何白字符匹配,包括空格、制表符、分页符等。等价于"[ \f\n\r\t\v]"

    \S

    与任何非空白的字符匹配。等价于"[^ \f\n\r\t\v]"

    \t

    与制表符匹配。

    \v

    与垂直制表符匹配。

    \w

    与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"

    \W

    与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"

    \num

    匹配 num个,其中 num 为一个正整数。引用回到记住的匹配。例如,"(.)\1"匹配两个连续的相同的字符。

    \n

    匹配 n,其中n 是一个八进制换码值。八进制换码值必须是 1, 2 3 个数字长。例如,"\11" "\011" 都与一个制表符匹配。"\0011"等价于"\001" "1"。八进制换码值不得超过 256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。

    \xn

    匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。例如,"\x41"匹配"A""\x041"等价于"\x04" "1"。允许在正则表达式中使用 ASCII 码。

     

     

     

    说明

    把下面代码拷贝到QTP中运行(替换“正则表达式”和“原字符串”):

     

    Function RegExpTest(patm,strng)

       Dim regEx,retVal

       Set regEX = New RegExp

       regEx.Pattern=patm

       regEx.IgnoreCase=False

       retVal = regEx.Test(strng)

       If retVal Then

           RegExpTest = "匹配成功."

           Else

           RegExpTest = "匹配失败."

       End If

    End Function

     

    MsgBox(RegExpTest("正则表达式","原字符串"))

     

     

     

     

     

     

     

     

    了解和使用正则表达式
    通过正则表达式QuickTest可以使用不同的值来标识对象和文本字符串。您可以在以下操作中使用正则表达式
    •       
    在对话框或编程描述中定义对象的属性值
    •       
    参数化步骤
    •       
    使用不同的值来创建检查点
    例如,如果要创建日期文本字符串的文本检查点,可以使用正则表达式,但显示的日期随当前日期变化。如果将日期定义为正则表达式,则检查点检查捕获的文本字符串是否与期望的日期格式匹配,而不是检查准确的日期值。
    正则表达式是指定复杂搜索短语的字符串。通过使用特殊字符,例如句点 (.)、星号 (*)、插字号 (^) 和方括号 ([ ]),您可以定义搜索条件。
    注意:
    您可以只将正则表达式应用于字符串类型的值。
    正则表达式的任何特殊字符前面带有反斜杠 (\) 时,QuickTestVuser 将搜索文字字符。

    定义正则表达式
    可以在编程描述中定义常量值、数据表参数值、环境参数值或属性值的正则表达式。有关定义属性值的详细信息,请参阅配置常量和参数值。
    常量值选项对话框或参数选项对话框的框中输入字符串的正则表达式语法,可以定义正则表达式。选中正则表达式复选框,以指示 QuickTest 将该值作为正则表达式处理。
    所有编程描述属性值都均自动作为正则表达式处理。有关编程描述的详细信息,请参阅使用编程描述。
    注意: 您可以只将正则表达式应用于字符串类型的值。
    默认情况下,除了句点 (.)、连字符 (-)、星号 (*)、插字号 (^)、方括号 ([ ])、圆括号 (())、货币符号 ($)、垂直线 (|)、加号 (+)、问号 (?) 和反斜杠 (\) 以外,QuickTest 正则表达式中的所有字符作为文字处理。当一个特殊字符前面带有反斜杠 (\) 时,QuickTest 将其作为文字字符处理。
    如果在常量值选项参数选项对话框的框中输入一个特殊字符,QuickTest 会询问您是否要在每个特殊字符前面添加一个反斜杠 (\)。如果单击,则相应的特殊字符前面就会加上一个反斜杠 (\),以指示 QuickTest 将该字符作为文字处理。如果单击QuickTest 将该特殊字符作为正则表达式字符处理。
    本节描述某些更常用的选项,可用于创建正则表达式
    •       
    使用反斜杠字符 ( \ )
    •       
    匹配任意单个字符 ( . )
    •       
    匹配列表中的任意单个字符 ( [xy] )
    •       
    匹配不在列表中的任意单个字符 ( [^xy] )
    •       
    匹配某个范围内的任意单个字符 ( [x-y] )
    •       
    特定字符的零次或多次匹配 ( * )
    •       
    特定字符的一次或多次匹配 ( + )
    •       
    特定字符的零次或一次匹配 ( ? )
    •       
    正则表达式进行分组 ( ( ) )
    •       
    匹配几个正则表达式中的一个表达式 ( | )
    •       
    在一行的开始进行匹配 ( ^ )
    •       
    在一行的结尾进行匹配 ( $ )
    •       
    匹配包括下划线在内的任一字母数字字符 ( \w )
    •       
    匹配任意非字母数字字符 ( \W )
    •       
    组合正则表达式操作符

    补充2

    正则表达式用法
    正则表达式的概念

      什么是UBB代码?什么是正则表达式

      UBB代码是HTML的一个变种。一般情况下,UBB论坛不允许你使用HTML代码,而只能用UBB代码替代HTML代码。
      UBB代码是一套由流行的UBB标签组成了固定代码,代码有统一的格式。用户只要遵循代码规则就可以实现用户想要的功能。如:
      想要显示粗体的how are you 字样,就应该输入 how are you而不是输入<b>how are you</b>

      你也许会问:ASP是怎样把 h

  • Quality Center 9.0 ,不同以往……(一)

    2008-09-18 10:42:59

    QC9.0出来也有大半年了,相关的文章却不多。呵呵,没有了License,Mercury阵营的fans少了不少。51Testing软件测试网;uI-^1v2PTbW z#~
    言归正传,先贴几张图,看图作文
    oY[&G|xk9O(Au)tq152935
    5P gry{&`G3A152935 51Testing软件测试网?/T0|;q G2q#E4^L
    QC9.0.JPG: 这是9.0系列的登录首页,和8.2有什么不同,看出来了吗?新版的9.0已经统一成Mercury官方网站的style(包括QTP/LR),不知道下一个版本是否会打上HP的logo?51Testing软件测试网lVEy1L.\NF

    &\yVMf(b'sg5W7TT152935 QC9.0A.JPG这是QC 9.0最大的外在变化之一,我认为这是一个不小的进步(虽然只是一个细节)。很多朋友看到这个界面就晕了——甚至不知道如何登录系统了。呵呵,我不知道QC9.0的设计师是不是读过《Don't make me think(别 让我思考)》才做的改变。为什么这么说呢?以前的QC/TD的控制是什么风格?是:提供所有项目供用户选择,不管这个用户能否进入。而现在的风格则是:提 供可进入的项目供用户选择。理念是什么呢?两点:第一,吸收了EPM思想,只允许用户可以选择自己所能登录的Project,至于其他项目,这个用户根本 就不应该知道!第二,扭转用户思维模式:先log in自己的身份,再提供属于自己的任务。这两点可能大家不是很明白,我举个例子:假设现在你的公司是跨国企业,通过外网架设QC系统,那么你公司所承接的 项目有可能多多少少大大小小都会有“成千上万”个项目,那么你作为一名工程师,可能所涉及的项目任务仅仅只是其中之一,那么你想想:首先你要在一大堆的 Domain里选择属于自己的域,然后再在一大堆的Project里选择属于自己的项目……哇,下拉菜单那么多东西,你找晕了没?你是不是还没登录进系 统,就已经开始烦了?你是不是在想:这么多东西又不都是要我做的。所以……现在改用了传统的email、BBS式的登录形式:我,只要先输入自己的账号、 密码,登录进“my space(我的空间)”,就行了。属于我的项目任务无非就是这两三个,而且在不同的项目间切换都不用重登录(relogin)了——简洁、方便、赏心悦 目、爽。51Testing软件测试网%@YA\%p2Y&w y_&]
    说了这么多,大家现在应该明白了吧——很多网友一直在问:“为什么输入系统管理员的用户名密码,下面的Domain和Project还是无法选择”,一直 在问“用户名密码必须是什么?”。答案很简单,刚安装好的QC 9.0只有一个自带的DEFAULT域的QualityCenter_Demo项目,想进这个项目“先睹为快”,首先必须用这个项目所属的成员才能登录。 现在你用alex_qc登录(密码为空),然后点Authenticate,是不是发现下面的domain和project有“东西”了?呵呵。
    51Testing软件测试网(\9q+BDc)`
    51Testing软件测试网%d-z4^ n:_)cc3HJ4{
    小结:改变都是有原因的,决不是哪天大师头脑发热兴之所致而作出的。
    .H~u}PF]0Q152935 推荐:大家有空去china-pub 、dearbook 、当当之类的地方可以找找Don't make me think这本书,一个做Web测试的人必读的经典之作。51Testing软件测试网yv^2Yq
    51Testing软件测试网|OLNfJ4jLvK
    QC9.0pdf.JPG :这就是QC 9.0的帮助文档之一,所有的QC 9.0的资料大家请查阅我另一个帖子http://bbs.51testing.com/thread-48974-1-1.html
    u*hz2pq152935
    Y(xB Rf1LZ152935 QC9.0Welcome.JPG :进入QualityCenter_Demo后的页面后,Mercury对您的光临表示欢迎(“Welcome to Mercury Quality Center”) 51Testing软件测试网Y7?kq1h [

    )o2eF(_7gBy152935 QC9.0Doc.JPG :这是QC文档库(以前叫Books Online,现在模仿微软改名了,呵),有点类似MSDN一样的,其实这里提供你的都是文件资料,也就是上面提到的QC 9.0的所有资料,包括pdf和chm文件。
    |CH:Ai ^eZ152935
    _8HA};^152935 QC9.0Help.JPG :这个是QC的联机帮助(Online Help),也就是用户指南。51Testing软件测试网'b8m1n(u/[p
    51Testing软件测试网)\@%S |.D} W!@ ?
    QC9.0ProjectAdmin.JPG 这也是QC 9.0最大的外在变化之一,呵呵。之前的QC/TD提供给我们的实际上是三个不同的登录入口 (entrance):SiteAdministrator(站点管理,用以管理QC的配置)、Project Customization(项目定制,用以对各自项目的个性化管理设置)、Quality Center(项目成员真正的工作区,通俗的说,就是我们测试工程师写测试用例和提交BUG的地方)。现在的QC 9.0只提供两个入口,即:SiteAdministrator和Quality Center——它把“项目定制”整合到项目工作区里去了。51Testing软件测试网/T.BA{ f$} N
    道理很简单:进行项目定制的人也应该是项目成员(项目成员才了解自己的项目需要定制些什么),所以对于这个人(Project Admin)来说,无论工作区还是项目定制区都只要有统一的portal就行了,不必在两个不同的地方登录来登录去(现在只需要点右上方的 “RETURN”就可以返回了)。比如QualityCenter_Demo库中的alex_qc这个用户就是这么一个角色(tdadmin)。而这里 admin用户默认的只有viewer的角色了,原先默认的guest用户也取消了。51Testing软件测试网 Ql-YzNa

    V9G V,WT152935
    K6@6~Z$kVBmE e152935 QC9.0Site.JPG :这就是前面说的站点管理员的工作区,图中是添加新用户。顺便提醒一下,在QC 中SiteAdministrator的登录地址 http://IP:PORT/sabin/SiteAdmin.htm 不是http://IP:PORT/qcbin/SiteAdmin.htm,可别到时候连错了还以为自己站点管理页面登录不了了。
    +@e X:qN9?152935
    .|Qh'd2d}6}6_152935 QC9.0Site1.JPG :字符集设置地方。其中有段描述:The character set used by Quality Center to send e-mails to users. By default, the value is set to UTF-8.翻译过来就是:Quality Center 用来将电子邮件发送到用户的字符集。默认情况下,该值设置为UTF-851Testing软件测试网%hC[,DqC)h+ia
    51Testing软件测试网(v%E%q&K U0M*TP&\]J
    QC9.0Site2.JPG :这是QC 9.0多出的一个功能。用来监视Licenses的,对我们这些玩家来说真是一个鸡肋(没什么用处的东西)。图中的Defect License和Full Licenses大家可以对应以前Project Custmization里的Customize Module Access模块,指的是“QC许可证”和“缺陷许可证”,只拥有后者的其实就是少花点钱买了QC的缺陷管理部分,把它当作缺陷管理系统来用。51Testing软件测试网1o)]]3n[d7@Op/T

    J`1kwU1d:sO.uy\5S152935 QC9.0AddDefect.JPG :为什么要把这张图截出来呢?因为我要严厉批评一下Mercury的人!!为什么?因为mercury内部的文档编辑工作人员对工作不负责任——SetFieldApp这个TD自带的函数在升级为QC后,已经更名为SetFieldProperties了!!QC 8.2已经错了一次了,在QC 9.0居然一错再错(至少帮助文档里的说明和workflow里的内容已经对应不上了)!他们的文档编辑人员为何视而不见?在我看来,一个做测试工具的厂 商犯这样的错误是非常不应该的,我不禁开始怀疑他们内部的变更管理是如何做的??细节决定成败,希望我这篇文章能引起Mercury公司的重视(其他错误 还有,我就不一一列举了)。
    `(_w+q `5so152935 51Testing软件测试网"Eg ~2XQ9L$uZ9OpA;v
    QC9.0BugFunc.JPG :这张图的内容大家仔细看看,看到了么?这是数据库表结构的描述!真是宝物啊!呵呵,不错,Database Reference和Custom Test Type Guide 是QC 9.0 里多出的两个文档。至于具体内容,在我那篇资料贴里也有,大家自己去down吧。51Testing软件测试网3n#o2ZM8n2iq,L{

    nAxG G's152935 QC9.0Chat.JPG:其实在Site Connections里多出了一个标签页,可以给当前连接着的用户发消息(send message),当向用户发消息后,这个用户过一会儿就会收到一个像msn弹出窗口一样的消息框来,呵呵,有意思吧?51Testing软件测试网p(MD {,v Y.Mw

    *} ^%C3q"S3Bb152935 QC9.0Checker.JPG :大家看出它和QC 8.2 的checker的区别了吗?
    :I#a g Db1rc5z;N E152935
    5FUe$\ D6_O l*_152935 QC9.0Migration.JPG :迁移工具。
    ]6jA2u }pO152935
    9J/Ty$P0s+~'_ X1[152935 其实QC 9.0 还有一些新的特性,比如说需求(现在被设计成很像Defect模块了,呵呵),还有缺陷的Linked Entities,……时间有限,本人已经犯困了 ,呵呵,下一期介绍吧,如果读者还有兴趣的话。51Testing软件测试网D1k5ZqL+QP/Y
    51Testing软件测试网@eg9qn9i F7zb'T
    注:51Testing软件测试网_1[,K6].G$wMA2K
    文中的图片对应的QC是Quality Center 9.0 Starter Edition,也就是 所谓的Quality Center 9.0 的精简版(abridged entry-level version)——其实主要就是精简了BTO模块而已,所以Quality Center 9.0 Starter其实就是真正意义上的TD 9.0 。51Testing软件测试网2UyW`;Q5^
    51Testing软件测试网}'Tc(mp c!Y+S
    [ 本帖最后由 songfun 于 2006-11-18 23:10 编辑 ]51Testing软件测试网i,}|:P2{8dT

    3X;E'r[6Et]jB152935QC9.0.JPG
  • HP Mercury Quality Center ActiveX控件溢出漏洞

    2008-09-18 10:15:16

    受影响系统:
    HP Mercury Quality Center 9.0
    HP Mercury Quality Center 8.2

    不受影响系统:
    HP Mercury Quality Center 9.0 (Patch 12.1)
    HP Mercury Quality Center 8.2 Sp1 (Patch 32)

    描述:
    HP Mercury Quality Center是基于web界面的自动化软件测试工具。

    HP Mercury Quality Center的ActiveX控制处理畸形参数数据时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制用户机器。

    Mercury Quality Center所安装的以下ActiveX控件:

        Progid: SPIDERLib.Loader
        Clsid: 98C53984-8BF8-4D11-9B1C-C324FCA9CADE
        File: C:\WINDOWS\Downloaded Program Files\Spider90.ocx

    在处理超长的ProgColor属性时存在栈溢出漏洞,允许攻击者远程执行任意指令。

    临时解决方法:
    为上述控件设置kill-bit以防在IE中加载。

    厂商补丁:
    HP已经为此发布了一个安全公告(HPSBGN02199)以及相应补丁:
    HPSBGN02199:SSRT071312 rev.1 - Mercury Quality Center ActiveX, Remote Unauthorized Arbitrary Code Execution
    链接:http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?print=true&objectID=c00901872&printver

    补丁下载:
    http://webnotes.merc-int.com/patches.nsf/c4d68388a23535dc422567d0004bbae2/7a0f7f0efc7905fdc225729f004cf387?OpenDocument
    http://webnotes.merc-int.com/patches.nsf/c4d68388a23535dc422567d0004bbae2/cf109e434c7765eac22572a4006c6e94?OpenDocument

    来自:来源:绿盟科技

  • HP Quality Center 指南1

    2008-09-18 10:14:34

    1.理解SiteAdministration

    作为Quality Center管理员,需要创建和维护Quality Center项目、用户、服务器。Site Admistration包括以下内容:

    1.       Site Projects 管理quality center工程。包括增加新的域和项目,查询项目数据,存储项目,项目重命名,激活和挂起项目。

    2.       Site Users 增加用户、定义用户属性、修改用户密码。

    3.       Licenses 监控所有正在使用的Quality Center licenses ,修改license关键字。

    4.       Servers 修改服务器信息,比如日志文件和邮件协议。

    5.       DB Servers 管理数据库服务器。增加新数据库服务器,编辑服务器的连接串,改变服务器默认管理员用户名、密码,修改用户密码。

    6.       Site Configuration 修改Quality Center的配置参数。

    7.       Site Analysis 监控连接到Quality Center用户

    2QualityCenter项目管理

    新建Domain

                     1.进入”Site Projects”页面

    2。点击“Creat Domain”按钮,打开新建domain的对话框,输入domain的名称,点击“OK”。

    新建project

    点击 ,新建一个project,按照对话框的提示填写项目信息。

    为项目添加用户

    在左侧项目列表中选中一个项目,在右侧面板中选择“Project Users”标签,点击“Add”按钮增加用户。

    查询项目表

    可以用sql语句查询表中内容。



  • QC 9.0的下载地址

    2008-09-18 09:56:56

    QC 9.0的下载地址

    http://222.92.117.84/download/QC90_CN.zip       <-----中文版


    http://222.92.117.84/download/QC_9.0.iso          <-----英文版
  • Quality Center 8.2下载

    2008-09-18 09:53:53

    • 界面语言: 简体中文
    • 授权方式: 商业
    运行平台: Win9X/Win2000/WinXP
    Mercury测试管理工具Quality Center 8.2下载
    远程下载


    Quality Center 8.2下载
  • QTP与QC的完美结合实现自动化测试框架-业务组件测试

    2008-09-18 09:45:28

    QTP与QC的完美结合实现自动化测试框架-业务组件测试

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿  | 每周一问,答贴有奖

            摘要:利用QTP和QC相结合搭建功能自动化测试框架

            关键词:自动化测试    测试框架    组件

            做功能自动化测试都会不约而同的遇到一个比较棘手的问题-测试框架的搭建。这也是直接影响功能自动化测试成功与否的关键。框架做的好可以使测试事半功倍,反之轻则很难看到工作的 成果重则会使整个测试失败。目前网上有很多关于测试框架的讨论,其中也有成型的测试框架,其中有很多好的思想在里边,很值得借鉴。但今天要讨论的不是网上 已有的,而是HP已经为我们设计好的一个测试体系,业务组件测试。他是利用QTP与QC的完美结合组成的一个体系架构。它可以轻易实现目前比较流行的三层 测试架构:脚本层,业务层,数据层相分离,为开展功能自动化测试提供一个高效、稳定、容易的测试实现。

            一.概述

            1.1业务组件(Bussiness Process Testing)简介

            业务组件是组成流程测试的基本单元,组合不同的业务组件可以实现不同的业务流程测试。如将fligt系统的登录最为一个组件,选择航班最为一个组件等。这样可以实现组件的复用,提高开发效率。

             1.2 Bussiness Process Testing的优点

            1)   相关业务人员可以在没有脚本的环境下组合业务组件,实现业务流程。

            2)   对业务人员的编程能力没有要求,业务人员只需了解系统的业务流程,不用关心具体的脚本实现。这一点也实现了业务层和脚本层的分离。

            3)   一旦某个组件开发完毕,即可在不同的流程中使用该组件,实现高可复用性,从而加快业务流程测试的速度。

            4)   明确的角色分工,业务人员负责流程的开发、组织;QTP工程师负责脚本的开发、维护以及相应函数库的开发、维护。

            5)   因为实现了脚本的复用,提高了自动化开发的效率,无形中就降低了测试过程中维护的时间和成本。

            1.3 Bussiness Process Testing的简易流程

    软件测试

            如图所示,整个过程分为2条线:第一个是由业务测试人员划分组件并组合不同的组件实现不同的流程测试;其次QTP专家负责组件的脚本具体实现并负责调试成功,上传到QC供业务测试人员调用。

            注:测试数据的组织后边介绍,以便实现三层的测试架构;此过程需要QC有Bussiness Process Testing组件许可的支持,也就是需要单独向HP购买。

            下边以QTP自带的示例程序演示整个流程的开发过程

            2.1划分组件

            本次将系统划分为:登录;选择航班并插入;打开订单;更新订单;删除订单;注销。这样划分仅为演示之用,不用在实际的测试之中。

            2.2组织业务测试流程

            本次只是用于演示,所以流程不会100%覆盖,在实际的测试过程中要达到100%的流程覆盖。本次测试流程如下:

            流程1:登录-选择航班并插入-注销

            流程2:登录-选择航班并插入-更新订单-注销

            流程3:登录-选择航班并插入-更新订单-删除订单-注销

            流程4:登录-打开订单-更新订单-删除订单-注销

            下边需要根据划分的组件来实现组件脚本的实现。

            2.3创建应用程序区域

            在开发脚本之前首先要做的是要创建一个应用程序区域。应用程序区域提供创建业务组件所需的所有资源和设置,每个业务组建都居于一个应用程序区域,并从这些应用程序区域集成这些资源和设置。在此创建一个名为“订票系统流程测试”的区域,如图所示。

            创建过程:依次选择:file-New-Function library。保存后自动上传至QC默认目录。

    软件测试

            在此也可以加载自己的函数库,对象库,恢复场景等,这样以后创建的组建都可以共享该应用程序区域的资源。同时也方便维护,这也是一个优点所在,例如一旦函 数库改变在此从新加载新的函数库即可,不用在脚本理修改。总之这个应用程序区域很重要,以后所有的脚本均是基于这个区域。应用程序路径一定要加载正确,否 则录制时不能生成脚本。

            2.4创建脚本

            在创建脚本之前最好在QC中组织好目录树,方便保存及调用。关于脚本的开发过程,每个人、每个公司都有自己的方法。在此源代码也没法一一贴出。所以在此只 列出输入参数和输出参数,方便后边的参数化以及数据组织。本次也采用最通用的方式即对象库解决对象识别问题。脚本的开发规范以及参数命名也以我自己惯用方 式。

    软件测试

  • GHOST备份还原使用图解

    2008-09-12 15:39:46

    GHOST的日常使用主要分为备份系统与恢复系统两部份。下面我们以图解的形式来给大家做讲解

    备份系统

      出现图1的窗口,回车确认。然后在图2的窗口中选择Local→Partition→To Image菜单。

    弹出硬盘选择窗口开始分区备份操作。如图3,点击该窗口中白色的硬盘信息条,选择硬盘,进入窗口,选择要操作的分区(若没有鼠标,可用键盘进行操作:TAB键进行切换,回车键进行确认,方向键进行选择)。如图4。
    在弹出的窗口中选择备份储存的目录路径并输入备份文件名称,如图5,注意备份文件的名称带有GHO的后缀名。

     接下来,程序会询问是否压缩备份数据,并给出3个选择:No表示不压缩,Fast表示压缩比例小而执行备份速度较快,High就是压缩比例高但执行备份速度相当慢。如图6。

    最后选择Yes按钮即开始进行分区硬盘的备份。如图7。
    Ghost备份的速度相当快,不用久等就可以完成,如图8。备份的文件以GHO后缀名储存在设定的目录中。

      备份完成后按回车确认,即可回到GHOST主菜单,如图9。如果不进行其它操作,即可退出


     

    恢复系统


      恢复系统时象开头所说的那样启动GHOST程序,要恢复备份的分区,就在界面中选择菜单Local→Partition→From
    Image,如图10。

      在弹出窗口中选择还原的备份文件,如图11
    再选择还原的硬盘和分区,如图12、13、14。点击Yes按钮即可,如图15。

    最后会出现正在还原的画面,如图16。
    还原完成后,会有两个按钮,分别是继续与重启动计算机,默认的是重启(第二个按钮),如图17,如果不进行其它操作重启即可。


     

    本文网上转载,看起来图截的不错,人家把广告都写上了……

    放到这

    这是个老版本的GHOST,现在经过改的GHOST都特easy,汉化之后的一键操作

  • cygwin的命令

    2008-09-12 15:35:20

    基本操作命令:
    ----------------------------------------------------------------------
    ----------------------------------------------------------------------
    ls #以默认方式显示当前目录文件列表
    ls –a #显示所有文件包括隐藏文件
    ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行
    ls --color=never *.so > obj #不显示文字颜色,将所有so文件记录到obj文件中

    ----------------------------------------------------------------------
    cd dir #切换到当前目录下的dir目录
    cd / #切换到根目录
    cd .. #切换到到上一级目录
    cd ../.. #切换到上二级目录
    cd ~ #切换到用户目录,比如是root用户,则切换到/root下

    ----------------------------------------------------------------------
    rm file #删除某一个文件
    rm -fr dir #删除当前目录下叫dir的整个目录

    ----------------------------------------------------------------------
    cp source target #将文件source 复制为 target
    cp /root/source . #将/root下的文件source复制到当前目录
    cp –av soure_dir target_dir #将整个目录复制,两目录完全一样
    cp –fr source_dir target_dir #将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同

    ----------------------------------------------------------------------
    mv source target #将文件source更名为target

    ----------------------------------------------------------------------
    diff dir1 dir2 #比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出
    diff file1 file2 #比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的
    comm file1 file2 #比较文件,显示两个文件不相同的内容

    ----------------------------------------------------------------------
    echo message #显示一串字符
    echo "message message2" #显示不连续的字符串
    cat:
    cat file #显示文件的内容,和DOS的type相同
    cat file | more #显示文件的内容并传输到more程序实现分页显示,使用命令less file可实现相同的功能
    more #分页命令,一般通过管道将内容传给它,如ls | more

    ----------------------------------------------------------------------
    export LC_ALL=zh_CN.GB2312 #将环境变量LC_ALL的值设为zh_CN.GB2312
    export DISPLAY=0:0 #通过该设置,当前字符终端下运行的图形程序可直接运行于Xserver
    date #显示当前日期时间
    date -s 20:30:30 #设置系统时间为20:30:30
    date -s 2002-3-5 #设置系统时期为2003-3-5
    clock –r #对系统Bios中读取时间参数
    clock –w #将系统时间(如由date设置的时间)写入Bios

    ----------------------------------------------------------------------
    eject #umout掉CDROM并将光碟弹出,但cdrom不能处于busy的状态,否则无效

    ----------------------------------------------------------------------
    du #计算当前目录的容量
    du -sm /root #计算/root目录的容量并以M为单位
    find -name /path file #在/path目录下查找看是否有文件file
    grep -ir “chars” #在当前目录的所有文件查找字串chars,并忽略大小写,-i为大小写,-r为下一级目录

    ----------------------------------------------------------------------
    vi file #编辑文件file
    vi 原基本使用及命令:
    输入命令的方式为先按ctrl+c, 然后输入:x(退出),:x!(退出并保存) :w(写入文件),:w!(不询问方式写入文件), :r file(读文件file) ,:%s/oldchars/newchars/g(将所有字串oldchars换成newchars) 这一类的命令进行操作

    ----------------------------------------------------------------------
    man ls #读取关于ls命令的帮助
    man ls | grep color #读取关于ls命令的帮助并通过grep程序在其中查找color字串

    ----------------------------------------------------------------------
    startx #运行Linux图形有环境
    Xfree86 #只运行X图形server

    ----------------------------------------------------------------------
    reboot #重新启动计算机
    halt #关闭计算机
    init 0 #关闭所有应用程序和服务,进入纯净的操作环境
    init 1 #重新启动应用及服务
    init 6 #重新启动计算机

    ----------------------------------------------------------------------
    扩展命令
    ----------------------------------------------------------------------
    ----------------------------------------------------------------------
    tar xfzv file.tgz #将文件file.tgz解压
    tar xfzv file.tgz -C target_path #将文件file.tgz解压到target_path目录下
    tar cfzv file.tgz source_path #将文件source_path压缩为file.tgz
    tar c directory > directory.tar #将目录directory打包成不压缩的directory.tar
    gzip directory.tar #将覆盖原文件生成压缩的 directory.tar.gz
    gunzip directory.tar.gz #覆盖原文件解压生成不压缩的 directory.tar。
    tar xf directory.tar #可将不压缩的文件解包

    ----------------------------------------------------------------------
    dmesg #显示kernle启动及驱动装载信息
    uname #显示操作系统的类型
    uname -R #显示操作系统内核的version

    ----------------------------------------------------------------------
    strings file 显示file文件中的ASCII字符内容

    ----------------------------------------------------------------------
    rpm -ihv program.rpm #安装程序program并显示安装进程
    rpm2targz program.rpm program.tgz #将rpm格式的文件转换成tarball格式

    ----------------------------------------------------------------------
    su root #切换到超级用户
    sulogin /dev/tty4 #在tty4即alt+F4终端等待用户登陆或直接登陆开启一个shell
    chmod a+x file #将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bash file才能执行
    chmod 666 file #将文件file设置为可读写
    chown user /dir #将/dir目录设置为user所有

    ----------------------------------------------------------------------
    mknod /dev/hda1 b 3 1 #创建块设备hda1,主设备号为3,从设备号为1,即master硬盘的的第一个分区
    mknod /dev/tty1 c 4 1 #创建字符设备tty1,主设备号为4,众设备号为1,即第一个tty终端

    ----------------------------------------------------------------------
    touch /tmp/running #在/tmp下创建一个临时文件running,重新启动后消失

    ----------------------------------------------------------------------
    sleep 9 #系统挂起9秒钟的时间

    ----------------------------------------------------------------------
    lpd stop 或 cups stop #停止打印服务程序
    lpd start 或 cups start #启动打印服务程序
    lpd restart 或 cups restart #重新启动打印服务程序
    lpr file.txt #打印文件file.txt

    ----------------------------------------------------------------------
    fdisk /dev/hda #就像执行了dos的fdisk一样
    cfdisk /dev/hda #比fdisk界面稍为友好些
    mount -t ext2 /dev/hda1 /mnt #把/dev/hda1装载到 /mnt目录
    df #显示文件系统装载的相关信息
    mount -t iso9660 /dev/cdrom /mnt/cdrom #将光驱加载到/mnt/cdrom目录
    mount-t smb //192.168.1.5/sharedir /mnt -o username=tomlinux,password=tomlinux #将windows的的共享目录加载到/mnt/smb目录,用户名及密码均为tomlinux
    mount -t nfs 192.168.1.1:/sharedir /mnt #将nfs服务的共享目录sharedir加载到/mnt/nfs目录
    umount /mnt #将/mnt目录卸载,/mnt目录必须处于空闲状态
    umount /dev/hda1 #将/dev/hda1设备卸载,设备必须处于空亲状态
    sync #将cache中的内容与磁盘同步,在Linux中复制文件,一般要系统空闲才去写文件
    e2fsck /dev/hda1 #检查/dev/hda1是否有文件系统错误,提示修复方式
    e2fsck -p /dev/hda1#检查/dev/hda1是否有错误,如果有则自动修复
    e2fsck -y /dev/hda1#检查错误,所有提问均于yes方式执行
    e2fsck -c /dev/hda1#检查磁盘是否有坏区
    mkfs /dev/hda1 #格式化/dev/hda1为ext2格式
    mkfs.minix /dev/hda1 #格式化/dev/hda1为minix格式文件系统
    mfks /dev/hda9 #格工化/dev/hda9为Linux swap格式
    swapon /dev/hda9 #将swap分区装载当作内存来用
    swapoff /dev/hda9 #将swap分区卸载

    ----------------------------------------------------------------------
    lilo #运行lilo程序,程序自动查找/etc/lilo.conf并按该配置生效
    lilo -C /root/lilo.conf #lilo程序按/root/lilo.conf配置生效
    grub #在Linux shell状态下运行boot loader设置程序
    grub-install #安装grub磁盘引导程序,成功后升级内核无须像lilo一样要重新启动系统,只需修改/etc/grub.conf即可实现新引导配置
    rdev bzImage #显示kernel的根分区信息
    rdev bzImage /dev/hda1 #将kernel的根分区设置为/dev/hda1,这在没有lilo等引导程序的系统中非常重要.

    ----------------------------------------------------------------------
    dd if=/dev/fd0 ōf=floppy.fd #将软盘的内容复制成一个镜像,功能与旧石器时代常用的hd-copy相同
    dd if=/dev/zero ōf=root.ram bs=1024,count=1024 #生成一个大小为1M的块设备,可以把它当作硬盘的一个分区来用
    mkfs root.ram #将块设备格式化为ext2格式
    dd if=root.ram ōf=/dev/ram0 #将init.rd格式的root.ram的内容导入内存
    mount /dev/ram0 /mnt #ramdisk /dev/ram0装载到/mnt 目录

    ----------------------------------------------------------------------
    gcc hello.c #将hello.c编译成名为a.out二进制执行文件
    gcc hello.c -o hello #将hello.c编译成名为hello的二进制执行文件
    gcc -static -o hello hello.c #将hello.c编译成名为hello的二进制静态执行文件
    ldd program #显示程序所使用了哪些库
    objcopy -S program #将程序中的符号表及无用的调试信息去掉,可以小很多

    ----------------------------------------------------------------------
    strace netscape #跟踪程序netscape的执行,看调用的库,环境变量设置,配置文件,使用的设备,调用的其它应用程序等,在strace下,程序干了什么东东一目了然。
    ps #显示当前系统进程信息
    ps –ef #显示系统所有进程信息
    kill -9 500 #将进程编号为500的程序干掉
    killall -9 netscape #将所有名字为netscape的程序杀死,kill不是万能的,对僵死的程序则无效。
    top #显示系统进程的活动情况,按占CPU资源百分比来分
    free #显示系统内存及swap使用情况
    time program #在program程序结束后,将计算出program运行所使用的时间

    ----------------------------------------------------------------------
    chroot . #将根目录切换至当前目录,调试新系统时使用
    chroot /tomlinux #将根目录切换至/tomlinux目录
    chroot /tomlinux sbin/init #将根目录切换至/tomlinux并执行sbin/init
    adduser id #增加一个叫id的用户
    userdel id #增除叫id的用户
    userlist #显示已登陆的用户列表
    passwd id #修改用户id的密码
    passwd -d root #将root用户的密码删除
    chown id /work #指定/work目录为id用户所拥有

    ----------------------------------------------------------------------
    ifconfig eth0 192.168.1.1 netmask 255.255.255.0 #设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0
    ifconfig eth0:1 192.168.1.2 #捆绑网卡1的第二个地址为192.168.1.2
    ifconfig eth0:x 192.168.1.x #捆绑网卡1的第二个地址为192.168.1.x
    ifconfig down eth1 #关闭第二块网卡,使其停止工作
    hostname -F tomlinux.com #将主机名设置为tomlinux.com
    route #显示当前路由设置情况
    route add default gw 192.168.1.1 metric 1 #设置192.168.1.1为默认的路由
    route del default #将默认的路由删除
    dhcp #启动dhcp服务
    dhclient #启动dhcp终端并自动获取IP地址
    ping 163.com #测试与163.com的连接
    ping 202.96.128.68 #测试与IP 202。96.128.68的连接

    ----------------------------------------------------------------------
    probe rtl8139 #检查驱动程序rtl8139.o是否正常工作
    lsmod #显示已装载的驱动程序
    insmod rtl8139.o #装载驱动程序rtl8139.o
    insmod sb.o io=0x280 irq=7 dma=3 dma16=7 mpu_io=330 #装载驱动程序并设置相关的irq,dma参数
    rmmod rtl8139 #删除名为rtl8139的驱动模块
    gpm -k #停止字符状态下的mouse服务
    gpm -t ps2 #在字符状态下以ps2类型启动mouse的服务

    ----------------------------------------------------------------------
    telnet 192.168.1.1 #登陆IP为192.168.1.1的telnet服务器
    telnet iserver.com #登陆域名为iserver.com的telnet服务器
    ftp 192.168.1.1 或 ftp iserver.com #登陆到ftp服务

    Linux开发中的常用命令(cygwin环境也同样适用)
  • 基于Trac的项目管理系统构建(Windows篇)

    2008-09-12 15:24:47

    关于Trac的介绍请参见前一篇文章

    这里我们要构建一个基于Trac的项目管理系统。代码管理使用subversion,项目管理使用Trac。所需要的软件包如下:

    很遗憾subversion现在仍然不支持最新的Apache 2.2系列,因此我们只能使用Apache 2.0系列。 而pyPgSQL 2.5.1版和ClearSilver 0.9.4不支持Python 2.5,因此只能用 Python 2.4。

    另外,虽然Trac支持SQLite,但SQLite支持的SQL语法有限,实际应用中会有诸多不便, 因此我们选择了PostgreSQL作为后台数据库。

    安装错误时怎么办?

    如果你安装过程中发现某些地方不正常,记住按照下面的方法来纠正:

    1. 查看错误信息,看是否能找到提示
    2. 检查有无忘了装的软件
    3. 检查httpd.conf是否有误
    4. 修改之后记得重新启动Apache

    安装Apache和subversion

    Apache官方网站上下载2.0.59版的msi安装包,执行即可。 为方便起见,建议将Apache安装到根目录下,例如 D:\Apache。 安装时的一些细节可以参考这篇文章。 安装完毕后用浏览器访问 http://localhost/ ,如能看到Apache的起始页面即安装成功。

    subversion上下载zip包解压缩即可, 目前最新版本为svn-win32-1.4.3.zip。假设解压到 D:\svn下。

    然后将subversion与Apache集成在一起(也可参考这篇文章)。 将 D:\svn\bin 下的以下文件复制到 D:\Apache\Apache2\modules 目录下:

    • mod_authz_svn.so
    • mod_dav_svn.so

    将 D:\svn\bin 下的以下文件复制到 D:\Apache\Apache2\bin 目录下:

    • libdb44.dll
    • intl3_svn.dll

    然后建立代码仓库目录 D:\repos。

    然后修改 D:\Apache\Apache2\conf\httpd.conf,查找下面这一行,去掉前面的 # 号。

    LoadModule dav_module modules/mod_dav.so

    然后在其附近添加以下这一行:

    LoadModule dav_svn_module modules/mod_dav_svn.so

    之后在 httpd.conf 的末尾添加以下内容:

    <Location /repos>
    DAV svn
    SVNParentPath D:/repos
    </Location>

    然后重新启动Apache。之后试着访问一个不存在的页面,如 http://localhost/abc, 你会看到Not Found页面下方的内容如下:

    Apache/2.0.59 (Win32) SVN/1.4.3 DAV/2 Server at localhost Port 80

    如果这里显示了 SVN/1.4.3 则说明安装成功。

    安装Python、mod_python和SVN binding

    Python官方网站下载Python 2.4的msi安装包进行安装, 假设安装到D:\Python24目录下。

    mod_python的下载页面 上下载mod_python 3.3.0b的Win32版(mod_python-3.3.0b.win32-py2.4-Apache2.0.exe)。 安装时它会问你Apache的安装位置,输入 D:\Apache\Apache2 即可。

    最后打开 D:\Apache\Apache2\conf\httpd.conf,查找 LoadModule,加入下面这一行:

    LoadModule python_module modules/mod_python.so

    然后重新启动Apache。之后试着访问一个不存在的页面,如 http://localhost/abc, 你会看到Not Found页面下方的内容如下:

    Apache/2.0.59 (Win32) SVN/1.4.3 mod_python/3.3.0b Python/2.4.4 DAV/2 Server at localhost Port 80

    如果这里显示了 mod_python/3.3.0b Python/2.4.4 则说明安装成功。

    最后要安装subversion binding使Python支持subversion。 到刚才下载subversion的地方 下载 svn-win32-1.4.3_py2.4.exe 文件并安装。

    安装PostgreSQL和pyPgSQL

    PostgreSQL官方主页下载最新版8.2.3(postgresql-8.2.3-1.zip)并安装。

    为了让Python支持PostgreSQL,我们还需要安装pyPgSQL模块。 到pyPgSQL主页下载2.5.1版并安装。

    安装结束之后,需要将 bin 目录下的以下文件复制到 D:\Python24\Lib\site-packages\pyPgSQL\libpq 下。

    • libpq.dll
    • comerr32.dll
    • libeay32.dll
    • libintl-2.dll
    • libiconv-2.dll
    • krb5_32.dll
    • ssleay32.dll

    安装ClearSilver和mxDateTime

    ClearSilver的下载页面选择0.9.4的py2.4版下载 (win32/clearsilver-0.9.14.win32-py2.4.exe)并安装。

    Trac官方文档中虽然没有说明mxDateTime, 但是建立项目时Trac会报错,要求你安装mxDateTime库。 从mxDateTime主页下载并安装。

    安装Trac

    最后终于轮到主角Trac出场了。在Trac下载页面上下载 Trac安装程序(trac-0.10.3.win32.exe)并安装。

    然后建立项目目录 D:\projects。

    然后打开 D:\Apache\Apache2\conf\httpd.conf,在最末尾添加以下内容:

    <Location /projects>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnvParentDir D:/projects
    PythonOption TracUriRoot /projects
    </Location>

    然后重新启动Apache,访问 http://localhost/projects/,你会看到Available Projects字样, 则说明安装成功。至此安装全部完毕。

    建立项目

    下面我们要建立一个实际开发中使用的项目。我们为这个项目命名为 hello。

    首先要建立一个代码仓库。打开命令行,输入以下命令:

    D:
    cd D:\repos
    md hello
    cd hello
    D:\svn\bin\svnadmin create .

    然后打开浏览器,访问 http://localhost/repos/hello/ 。如果你上面的设置都正确, 你将会看到下面的内容:

    Revision 0: /
    ----------------------------------------------
    Powered by Subversion version 1.4.3 (r23084).

    即说明代码仓库建立成功,而 http://localhost/repos/hello/ 就是代码仓库的 URL。

    然后建立数据库。从开始菜单中启动PostgreSQL的 pg Admin III工具,新建一个数据库 hello, 注意将字符编码设置为UTF8。

    然后建立Trac项目。打开命令行,输入以下命令:

    D:
    cd D:\projects
    D:\Python24\python.exe D:\Python24\scrīpts\trac-admin hello initenv

    trac-admin 为Trac的管理工具,hello为项目名,initenv命令指示Trac新建一个项目。 然后按照下面的内容输入:

    Project Name [My Project]> Hello World
    Database connection string [sqlite:db/trac.db]> postgres://<username>:<password>@localhost/hello
    Repository type [svn]> svn
    Path to repository [/path/to/repos]> D:/repos/hello
    Templates directory [D:\Python24\share\trac\templates]>

    数据库连接那一行,<username>和<password>分别为安装PostgreSQL时设置的用户名和密码。 如果创建失败,则需要删除 D:\projects\hello 之后再重试。

    最后打开浏览器,访问 http://localhost/projects/hello 即可看到Trac的界面了。

    设置HTTP认证

    在Trac界面右上方有个Login菜单,通过这个菜单登录之后, 创建bug或者做其他修改时就不用每次都输入用户名。 不过这个菜单需要单独配置才能正常工作。

    首先我们要生成密码文件。打开命令行,输入以下命令:

    D:
    cd D:\projects
    D:\Apache\Apache2\bin\htpasswd -c .htpasswd admin
    Automatically using MD5 format.
    New password: *****
    Re-type new password: *****
    Adding password for user admin

    即可生成密码文件 .htpasswd。以后向该密码文件里追加用户只需这样即可。

    D:\Apache\Apache2\bin\htpasswd .htpasswd user

    然后编辑 httpd.conf,在最末尾加入以下内容:

    <LocationMatch "/projects/[^/]+/login">
    AuthType Basic
    AuthName "Trac"
    AuthUserFile D:/projects/trac.htpasswd
    Require valid-user
    </LocationMatch>

    然后重新启动Apache。

  • Trac 介绍

    2008-09-12 15:22:08

    今天介绍一下Trac,一个基于Web的bug管理系统。

    Trac拥有强大的bug管理功能,并集成了Wiki用于 文档管理。它还支持代码管理工具Subversion,这样可以在 bug管理和Wiki中方便地参考程序源代码。

    bug管理

    在Trac中,项目中出现的问题称为ticket。像bug、功能改进、 TODO等都可以写成一个ticket。

    • 可设置ticket的优先级别。
    • 可以设置ticket的里程碑,表明这个ticket应在何时完成,并能够通过条形图方式显示里程碑的完成度。
    • 可以自定义条件生成bug报告,并可以通过SQL语句自定义报告的格式。

    Subversion集成

    通过Subversion集成,开发者可在Trac中以Web方式浏览代码库中各个版本的代码 和代码的修改历史,并可方便地比较各个版本间的差别。

    Wiki

    支持常用的Wiki语法。同时增加了许多bug管理的专用标记, 可以方便地创建到ticket、代码行甚至修改历史的链接。

    Trac使用Python写成,后台使用SQLite或PostgreSQL数据库, 因此构筑一个完整的Trac系统需要安装以下软件:

    • Apache
    • Python
    • Subversion
    • PostgreSQL(可选)

    下回继续介绍Trac的安装方法。

Open Toolbar