希望能跟兄弟姐妹们一起探讨问题,共同努力,一起上进...

发布新日志

  • 制作帮助文档一般哪个工具最好用?

    2008-08-05 09:28:58

    以前都没有制作过帮助文档,这马上要做了,可以前也没做过帮助文档,所以不知道什么工具好用,我在网上下载一个powerCHM5.3的制作工具,可没有注册码,用起来感觉也不太方便?请教各位大仙谁有类似的工具,推荐一个,在下感谢不尽.如果有这个工具的话,最好帮我发过来一个,小妹在此感谢了!!!
  • TestDirector8.0(TD8.0)管理定制手册

    2008-07-10 13:11:45

    目录

    1:创建项目project或域domain

    2:新建用户组(角色)和用户组(角色)授权

    3:创建新用户并赋权流程

    4:定制TD使用模块

    5:自定义缺陷字段。

    6:缺陷字段显示定制

    7:缺陷单汉化

    8:问题

    1:创建项目project或域domain

            当一个新的项目需要测试介入时,我们就需要在TD中建立该项目资料库。本节讲述TD中项目和域的创建过程。

    步骤一:打开TD。

    22

    步骤二:点击左边的‘Site Administrator’

    222

    步骤三:输入密码,进入Site Administrator页面。

    1

    注:默认密码为空,可以点击change password修改密码。这个密码只针对这个页面。

    步骤四:选中default,右健,在弹出菜单中点击Create Project。

    2222

    步骤五:在project name 中输入项目名。并选择数据库

    注:在安装TD时,选择了多种数据库时,这里就需要选择将您的项目建在哪个数据库上了。

  • QTP的基础代码

    2008-07-10 13:09:22

    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)

  • Loadrunner 检查点函数总结

    2008-07-10 13:06:35

    Loadrunner 检查点函数总结

    最近项目比较紧,一直没有写博客,再一个发现之前写的一些文章被其它网站任意使用,也不注明出处,实在心寒,也罢谁让当今社会就是这样呢!!!还是继续做我想做的事!

    今天我来总结一下Loadrunner中的检查点函数,主要介绍两个函数:web_find()web_reg_find()

    这两个函数均用于内容的查找,但两者也有本质的区别,具体介绍如下:

    一、web_find()函数

    该函数的作用是“在页面中查找相应的内容”,常用参数及含义如下:

           web_find("web_find",    //定义该查找函数的名称51Testing软件测试网6bj(yX b C3B
                  "RightOf=a",       //定义查找字符的右边界

                  "LeftOf=b",        //定义查找字符的左边界

                  "What=name",      //定义查找内容

                  LAST);

    使用该函数注意以下事项:

    1、  位置

    该函数在页面内容显示出来以后,在页面中进行查找,所以只能写在要查找内容之后

    2、  录制模式

    该函数只能在基于HTML模式录制的脚本中进行查找

    3、  必须启用内容检查选项

    runtime setting->Preferences里面,把Enable image and text check选中,否则不执行该查找函数

    4、  VBJAVA语法中不支持该函数

    该函数有以下一个缺点:

    1、  执行效率较低

    2、  不返回查找结果情况,如想在执行该函数后根据查找结果做进一步操作时,没有返回值可以依据

    例如:

    在页面中查找“登录成功”的字符串,如果找到该字符串在日志中输出“登录成功”,如果找不到该字符串,则在日志中输出“登录失败”,此时使用该函数没有依据来做此判断,但使用web_reg_find()函数,使用它其中的SaveCount可以进行判断,具体方法我们下面介绍。

    二、web_reg_find()函数

    该函数的作用是“在缓存中查找相应的内容”,常用参数及含义如下:

               web_reg_find("Search=Body",   //定义查找范围

                  "SaveCount=ddd",             //定义查找计数变量名称

                  "Text=aaaa",                  //定义查找内容

                  LAST);

    使用该函数注意以下事项:

    1、  位置

    该函数写在要查找内容的请求之前,通常情况下写在如下六个函数之前:

    Web_castom_request();web_image();web_link();web_submit_data();web_submit_form();web_url()

    2、  使用技巧

    在该函数的参数中有个“SaveCount”,该参数可以记录在缓存中查找内容出现的次数,我们可以使用该值,来判断要查找的内容是否被找到,下面举个例子来说明:(引用LR的帮助中的例子)

      // Run the Web Tours sample

           web_url("MercuryWebTours",

                  "URL=http://localhost/MercuryWebTours/",

                  "Resource=0",

                  "RecContentType=text/html",

                  "Referer=",

                  "Snapshot=t1.inf",

                  "Mode=HTML",

                  LAST);

    // Set up check for successful login by looking for "Welcome"

           web_reg_find("Text=Welcome",

                  "SaveCount=Welcome_Count",

                  LAST);

    // Now log in

           web_submit_form("login.pl",

                  "Snapshot=t2.inf",

                  ITEMDATA,

                  "Name=username", "Value=jojo", ENDITEM,

                  "Name=password", "Value=bean", ENDITEM,

                  "Name=login.x", "Value=35", ENDITEM,

                  "Name=login.y", "Value=14", ENDITEM,

                  LAST);

    // Check result

           if (atoi(lr_eval_string("{Welcome_Count}")) > 0){    //判断如果Welcome字符串出现次数大于0

                  lr_output_message("Log on successful.");  }//在日志中输出Log on successful

            else{ //如果出现次数小于等于

                  lr_error_message("Log on failed"); //在日志中输出Log on failed

                  return(0);         }

    我觉得这个方法非常有用,我们可以举一反三,应用到我们实际的项目中

     

    三、插入函数的方法

    1、  手工写入,在需要插入函数的位置手工写入该函数

    2、  光标停留在要插入函数的位置,在INSERT菜单中,选择new step,在列表中选择或查找要插入的函数,根据提示填写必要的参数

    3、  tree view模式下,在树状菜单中选中要插入函数的位置,右键,选择insert afterinsert before,根据提示填写必要的参数

    四、总结

    1、  这两个函数函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数

    2、  WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制

    3、  WEB_FIND只能只用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制

    4、  WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在缓存中进行查找

    5、  WEB_FIND在执行效率上不如WEB_REG_FIND

  • Loadrunner 检查点函数总结

    2008-07-10 13:06:32

    Loadrunner 检查点函数总结

    最近项目比较紧,一直没有写博客,再一个发现之前写的一些文章被其它网站任意使用,也不注明出处,实在心寒,也罢谁让当今社会就是这样呢!!!还是继续做我想做的事!

    今天我来总结一下Loadrunner中的检查点函数,主要介绍两个函数:web_find()web_reg_find()

    这两个函数均用于内容的查找,但两者也有本质的区别,具体介绍如下:

    一、web_find()函数

    该函数的作用是“在页面中查找相应的内容”,常用参数及含义如下:

           web_find("web_find",    //定义该查找函数的名称51Testing软件测试网6bj(yX b C3B
                  "RightOf=a",       //定义查找字符的右边界

                  "LeftOf=b",        //定义查找字符的左边界

                  "What=name",      //定义查找内容

                  LAST);

    使用该函数注意以下事项:

    1、  位置

    该函数在页面内容显示出来以后,在页面中进行查找,所以只能写在要查找内容之后

    2、  录制模式

    该函数只能在基于HTML模式录制的脚本中进行查找

    3、  必须启用内容检查选项

    runtime setting->Preferences里面,把Enable image and text check选中,否则不执行该查找函数

    4、  VBJAVA语法中不支持该函数

    该函数有以下一个缺点:

    1、  执行效率较低

    2、  不返回查找结果情况,如想在执行该函数后根据查找结果做进一步操作时,没有返回值可以依据

    例如:

    在页面中查找“登录成功”的字符串,如果找到该字符串在日志中输出“登录成功”,如果找不到该字符串,则在日志中输出“登录失败”,此时使用该函数没有依据来做此判断,但使用web_reg_find()函数,使用它其中的SaveCount可以进行判断,具体方法我们下面介绍。

    二、web_reg_find()函数

    该函数的作用是“在缓存中查找相应的内容”,常用参数及含义如下:

               web_reg_find("Search=Body",   //定义查找范围

                  "SaveCount=ddd",             //定义查找计数变量名称

                  "Text=aaaa",                  //定义查找内容

                  LAST);

    使用该函数注意以下事项:

    1、  位置

    该函数写在要查找内容的请求之前,通常情况下写在如下六个函数之前:

    Web_castom_request();web_image();web_link();web_submit_data();web_submit_form();web_url()

    2、  使用技巧

    在该函数的参数中有个“SaveCount”,该参数可以记录在缓存中查找内容出现的次数,我们可以使用该值,来判断要查找的内容是否被找到,下面举个例子来说明:(引用LR的帮助中的例子)

      // Run the Web Tours sample

           web_url("MercuryWebTours",

                  "URL=http://localhost/MercuryWebTours/",

                  "Resource=0",

                  "RecContentType=text/html",

                  "Referer=",

                  "Snapshot=t1.inf",

                  "Mode=HTML",

                  LAST);

    // Set up check for successful login by looking for "Welcome"

           web_reg_find("Text=Welcome",

                  "SaveCount=Welcome_Count",

                  LAST);

    // Now log in

           web_submit_form("login.pl",

                  "Snapshot=t2.inf",

                  ITEMDATA,

                  "Name=username", "Value=jojo", ENDITEM,

                  "Name=password", "Value=bean", ENDITEM,

                  "Name=login.x", "Value=35", ENDITEM,

                  "Name=login.y", "Value=14", ENDITEM,

                  LAST);

    // Check result

           if (atoi(lr_eval_string("{Welcome_Count}")) > 0){    //判断如果Welcome字符串出现次数大于0

                  lr_output_message("Log on successful.");  }//在日志中输出Log on successful

            else{ //如果出现次数小于等于

                  lr_error_message("Log on failed"); //在日志中输出Log on failed

                  return(0);         }

    我觉得这个方法非常有用,我们可以举一反三,应用到我们实际的项目中

     

    三、插入函数的方法

    1、  手工写入,在需要插入函数的位置手工写入该函数

    2、  光标停留在要插入函数的位置,在INSERT菜单中,选择new step,在列表中选择或查找要插入的函数,根据提示填写必要的参数

    3、  tree view模式下,在树状菜单中选中要插入函数的位置,右键,选择insert afterinsert before,根据提示填写必要的参数

    四、总结

    1、  这两个函数函数类型不同,WEB_FIND是普通函数,WEB_REG_FIND是注册函数

    2、  WEB_FIND使用时必须开启内容检查选项,而WEB_REG_FIND则不没有此限制

    3、  WEB_FIND只能只用在基于HTML模式录制的脚本中,而WEB_REG_FIND没有此限制

    4、  WEB_FIND是在返回的页面中进行内容查找,WEB_REG_FIND是在缓存中进行查找

    5、  WEB_FIND在执行效率上不如WEB_REG_FIND

  • 回家咯...

    2008-06-05 12:50:35

        明天下午终于要回家了,可以轻松缓解下压力了,最近的心情一直处于波动起伏的状态,还好我心脏比较好,血压也比较正常,要不还不得个高血压,心脏病之类的...呸呸呸,又在这儿说不吉利的话了...

        知道我现在最想干嘛吗?就想回家先睡个懒觉,然后去逛逛超市,再去运动一下,溜个冰之类的,好久没有运动了,不知道还行不行了.总之回家的感觉就是好,可以让你忘记生活的担子,工作的压力,心情的郁闷,跟亲人一起淘醉在欢声笑语中...提前祝大家端午节快乐,记得一定要吃粽子哦

  • 加班

    2008-06-01 18:59:37

    来公司差不多快半个月,加班倒是不少,主要是俺比较幸运啊,刚上班就碰到这么个复杂并且急着发布的项目,实在是晕,平时加班也就算了,可这个礼拜居然占用了我的礼拜天,睡懒觉甭想了,逛街出去玩的计划也打乱了,好郁闷...一直到晚上十点左右才下班,连八通线也赶不上了,只能打的,还好,打的费公司给报.今天晚上估计又要很晚了,外边的风好大啊,又下着雨,真是天公不作美,只因俺今天穿了个漂亮的连衣裙,也不能这样吧,这可是俺今年第一次穿裙子啊....倒霉,可怜的人啊...

  • 上班有感

    2008-05-29 22:02:25

    上班有一个多礼拜了,感觉还不错,其实工作并没有像我以前想像的那么可怕,都是自己吓自己,真的上班了,又会觉得很苦燥,不过还是要学会自己调节了,测试本来就是一个很苦燥的工作,现在我终于知道为什么别人老在讨论,说什么做技术的女孩子大多都是长的丑了。哎,也是啊,天天都对着电脑整天做着同样的事情,时而还加班,累啊。。。。。如果我知道这样,就不去学习测试了,晕。当然了,这行也有很多好处的,我还在慢慢体验哦。。
  • 上班了

    2008-05-22 13:13:22

    今天是我上班的第二天,经理仍然没有给我分配项目,自己就瞎看看吧,公司的内网,公司常用的办公系统等等,从昨天一直熟悉到今天, 不知还要看多久?...这人啊就是挺奇怪的,不上班的时候挺犯愁,其实上了班更愁,晚上还老失眠、多梦。。。。好日子快点来吧,我可是已经做好准备了!!!
  • 软件测试基础

    2008-05-12 20:40:36

    软件测试基础

    1、 什么是软件测试

    测试的含义“以检验产品是否满足需求为目标“,软件测试的重要活动即发现错误

    软件测试的经典定义:在规定的条件下对软件进行操作,以发现错误,并对软件质量进行评估

    软件是由程序、数据和文档组成的,软件测试就是对软件形成过程中的文档、数据和程序进行测试,而不仅仅是对程序进行测试。

    60%以上的软件错误并不是程序错误,而是软件分析和设计的错误

     

    2、 什么是软件质量

    经典定义:软件特性的总和,软件满足规定或潜在用户需求的能力

    软件质量包括“内部质量“、“外部质量”以及“使用质量”,也就是说“软件满足规定或者潜在用户需求能力”要从“内部质量”、“外部质量”和“使用质量”三部分体现

    3、 软件测试和质量保证的区别:

    软件测试只是软件质量保证的一个工作环节

    质量保证:通过预防、检查和改进来保证软件质量。采用全面质量管理和过程改进的原理来开展质量保证工作,主要着眼于软件开发活动的过程、步骤和产物。

     

    软件测试:关心的并不是过程的活动,而是对过程的产物以及开发的软件进行剖析。通过执行软件来,对过程中的产物(开发文档和程序)进行走查,发现问题,报告质量

    4、 软件测试的目的:

    测试的目的不仅仅是为了发现软件错误和缺陷,而是也是对软件质量进行评估,以提高软件质量。

    测试是程序的执行过程,目的在于发现错误;

    一个好的测试用例在于发现了至今未发现的错误;

    一个成功的测试是发现了 至今未发现的错误的测试;

     

    5、 软件测试原则:

         所有的测试都应该追溯的用户的需求

         应该把“尽早的和不断的测试”作为软件测试者的座右铭

         完全测试是不可能的,测试需要终止

    输入量太大

    输出结果太多

    路径组合太多

    (中止测试原则)根据测试错误的概率以及软件可靠性要求,来确定测试的停止测试时间

         测试无法显示软件潜在的缺陷  

    软件测试只能证明软件存在错误而不能保证软件没有错误

         充分注意测试中的群集现象

         测试后程序中残存的错误数目和该程序中已经发现的错误数目成正比
      程序员应该避免检查自己的程序

         尽量避免测试的随意性

    6、 软件测试对象

         在整个软件生命周期中,各个阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。

         需求分析、概要设计、详细设计以及程序编码等阶段得到的不同的文档,例如需求规格说明书、概要设计规格说明书、详细设计规格说明书以及源程序,都应该成为测试对象。

    软件编码完成后,对每一模块进行测试,称为“模块测试”或“单元测试”。在模块集成后,对集成在一起的模块组件,称为“集成测试”,在集成测试后需要检测和证实软件是否满足软件需求说明书中规定的需求,这就称为“确认测试”,将整个软件集成为系统,安装在运行环境下,对硬件、网路、操作系统以及支撑平台构成的整体系统进行测试,称为“系统测试”。

    验证:保证软件正确实现特定功能的一系列活动和过程

    确认:保证软件满足用户需求的一系列活动或过程。

    7、 软件测试分类

     

    ⑴按照开发阶段划分

     

            单元测试

         又称为模块测试,检查各个程序单元能否正确的实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各个模块可能存在的各种错误  

        集成测试

          又称为组装测试,在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或系统

        确认测试

          通过检查和提供数据,证实软件是否满足特定预期用途的需求。确认测试时候检测和证实软件是否满足软件需求说明规格的需求

        系统测试

         对集成的硬件和软件进行测试。

        验收测试

    按照项目书或合同,供需双方约定的验收依据文档进行的对整个系统的测试和评审

     

    ⑵按照测试实施组织划分

     

        开发方测试

    通常也叫验收测试或a”测试,开发方在开发环境下,通过测试和提供数据,证实软件的实现是否满足规定的需求,是否满足软件设计说明或软件需求说明的需求。可以和软件的系统测试一同进行。

        用户测试

    在用户的应用环境下,用户检测与核实软件实现是否符合自己预期的要求。B测试通常被认为是用户测试,把软件有计划地免费地分发到目标市场,让用户大量使用、评价检查软件

     

        第三方测试

       由第三方测试机构来进行的测试,也称独立测试

     

    ⑶按照测试技术划分

     

    按照测试技术划分为:白盒测试黑盒测试、灰盒测试。也可以分为静态测试和动态测试

    静态测试:不运行程序,通过人工对程序和文档进行分析和检查,静态测试实际上是对软件中的需求说明书、设计说明书、程序代码进行非运行的检查。静态测试包括走查、符号执行以及需求确认等。

    动态测试:通过人工或工具运行程序进行检查、分析程序的运行状态以及外部表现

        白盒测试

         了解程序结构和处理过程,检查是否所有的结构和路径都是正确的,检查程序的内部动作是否按照设计说明的规定正常进行

         黑盒测试

    完全不考虑程序的结构和处理过程,在程序界面进行测试,它只是检查是否按照需求规格说明书的规定正确实现

        灰盒测试

       灰盒测试只是关注输出对于输入的正确性,同时也关注内部表现

    单元测试可以应用白盒测试方法

    集成测试应用灰盒测试方法

    系统测试以及确认测试可以应用黑盒测试方法

  • 流媒体的含义

    2008-05-09 09:02:16

    流媒体简单地说就是利用互联网以数据流的方式传递音频、视频等多媒体信息,并能被用户一边下载一边观看的活动媒体。<br>
       流媒体技术与传统播放技术的最大区别在于客户端不需要从服务器下载完整的文件后再进行播放,而是采用了流式传输方式,将整个多媒体文件压缩解析成多个包,然后向客户端顺序传送,用户可以一边解压播放前面传送过来的压缩包,一边下载后续的压缩包,从而节省了时间。 <br>
    <br>
      流媒体技术广泛用于新闻出版、证券、娱乐、电子商务、远程培训、视频会议、远程教育、远程医疗等互联网信息服务,它的应用将为网络信息交流带来革命性的变化,流媒体技术改变了传统互联网的呆板形象,丰富了互联网的功能,成为一种有强大吸引力的新媒体。 <br>
    <br>
  • 面试分析

    2008-05-06 10:49:59

    昨天下午去中关村一家公司面试,面试官估计是技术部门的项目经理,没有让我答卷,而是口头上问了我一些问题,只要是我简历上面涉及到的,他几乎都问到了,面试官问了我关于性能测试方面的,SQL语句,会使用的工具,比如:TD、QTP、loadrunner等等,还好了,总算是都答上来了,去之前还有些稍稍紧张, 不过真正面试的时候这种感觉到是荡然无存了。谈了许久,后来他问我期望多少薪金,我感觉已经有点戏了,后来他说他这儿也算是通过了,只是还得复试,老总负责复试,听他说老总天天在外,踪影飘忽不定的,说不定什么时候在京,让我三天之内等通知参加复试。昨天是我生日,也是毕业后第一次参加面试,不免有些担忧,我觉得我还是比较幸运的,我想这也是对我努力学习的一种肯定吧,昨天真的是双喜临门呐!!!

      不过我现在倒很是郁闷,不知道他们老总这关到底好不好过,我在想老总到底懂不懂技术之类的,因为我是第一次找工作,没有什么经验,大家来给我点建议吧。

  • HTML颜色代码对照表

    2008-04-28 19:47:43

  • Bugzilla使用简介

    2008-04-28 13:17:42

    Bugzilla使用简介

    1 、 用户登录及设置流程:

    打开浏览器, 进入 Bugzilla 主页面。

    进入主页面后,点击【新建帐号】,进入注册页面。

    在注册页面中输入 E-Mail 和 真实姓名(为了统一,这里我们都使用计算机名) ,然后,点击【 Create Account 】,随后,你将收到一封包含初始密码的 E-Mail 。

    在收到 E-Mail 之后,点击【登录】,在帐号栏输入注册时使用的 E-Mail 地址,在密码栏输入邮件里通知的初始密码,然后,点击【 Login 】。

    如忘记密码,在登陆页面中输入注册用户名,点击【 Submit Request 】 , 根据收到的邮件进行重新设置密码。

    成功登录后,点击【 Edit 属性】 -> 【帐号设置】,进行密码修改。

    点击【 Edit 属性】 -> 【邮件设置】,进行邮件通知设置。

    点击【 Edit 属性】 -> 【权限】,进行权限查询。

    2 、 BUG 处理流程

    • 测试人员或开发人员发现 bug 后,判断属于哪个模块的问题,填写 bug 报告后,系统会自动通过 Email 通知项目组长或直接通知开发者。

    • 项目组长根据具体情况,重新 reassigned 分配给 bug 所属的开发者。

    ③ 开发者收到 Email 信息后,判断是否为自己的修改范围 .

    1 ) 若不是 , 重新 reassigned 分配给项目组长或应该分配的开发者。

    2 ) 若是,进行处理, resolved 并给出解决方法。(可创建补丁附件及补充说明)

    ④ 测试人员查询开发者已修改的 bug ,进行重新测试。(可创建 test case 附件)

    1 ) 经验证无误后,修改状态为 VERIFIED 。待整个产品发布后,修改为 CLOSED 。

    2 ) 还有问题, REOPENED ,状态重新变为“ New" ,并发邮件通知。

    ⑤ 如果这个 BUG 一周内一直没被处理过。 Bugzilla 就会一直用 email 骚扰它的属主,直到采取行 动。管理员可以设定最迟采取行动的期限,比如说 3 天,系统默认为 7 天。

    3 、 Bug 的提交过程

    点击 【新建】 —〉选择发现的 bug 所在的产品名称。

    在选择的产品 bug 提交页面中,选择或者输入 bug 信息。

    ◎模块:点“模块”两个字,可以查看关于这个产品的模块的详细信息。

    ◎平台、操作系统:可以根据发现 bug 的实际情况来选择,如果确定这个 bug 可以发生在所有的平台,选择 all 好了!

    ◎优先级: P1 至 P5 优先级逐渐减弱。

    ◎严重级: blocker 到 enhancement 严重程度降低。

    Blocker: 阻碍了项目开发或者测试的继续进行。

    Critical: 冲突,数据丢失和严重的内存泄漏等问题。

    Major: 较大的功能缺陷。

    Minor: 较小的功能缺陷。

    Trivial: 拼写、对齐类的错误。

    Enhancement: 需要改进的。

    ◎初始状态:开发人员的默认状态为“ unconfirmed”( 这个要由管理员设置,参见管理员操作指南 ) ,测试人员或者管理员此处为可选状态: unconfirmed 和 new.

    ◎ Assigned to: 为空时默认为管理员指定的 owner, 也可手工制定。

    ◎ CC: 可为多人,需用 " , " 隔开。

    ◎ URL: bug 的定位(可选)。

    ◎注释:是对 bug 的概述(必须填写)。

    ◎ Desription 中要详细说明下列情况:

    1 ) 发现问题的步骤

    2 ) 执行上述步骤后出现的情况

    3 ) 期望应出现的正确结果

    ◎关键字:单击“关键字”三个字,会显示管理员已经设定的关键字,选择其一,便于以查询。注意:此处不可以随意添加,必须使用已经存在的关键字才好。另外,如果管理员没有创建关键字的话,那么此项缺省。

    ◎依赖:直接输入与当前 bug 有依赖关系的 bug 的编号。简单地说,比如说这里输入“ 3 ”,那么就是说当前提交的 bug 有依赖关系,不是由于 3 导致了当前 bug ,就是当前 bug 导致了 bug3 。

    确认无误后,“ commit”!

    提交之后,系统会提示: bug 已经提交。在此页面的下半部分,会再次显示刚才提交的 bug 的详细信息,你可以在这里进行修改,重新 commit, 也可以在此增加新的附件或是附加说明来进一步说明 bug 。

    4 、对于 Bug 的不同处理情况

    4.1 Bug 的属主 (owner) 处理问题,提出解决意见及方法。

    给出解决方法并填写附加说明( Additional Comments ),还可创建附件(如:更改提交单)。

    填表提示:

    FIXED 描述的问题已经修改, 该 bug 已经修复并检查过,源文件已经检入 CVS 库。

    INVALID 描述的问题不是一个 bug ( 输入错误后,通过此项来取消 )

    WONTFIX 描述的问题将永远不会被修复。

    LATER 描述的问题将不会在产品的这个版本中解决。

    DUPLICATE 描述的问题是一个存在的 bug 的复件。

    WORKSFORME 所有要重新产生这个 bug 的企图是无效的。如果有更多的信息出现,请重新分配这个 bug ,而现在只把它归档。

    4.2 项目组长或开发者重新指定 Bug 的属主。

    ① bug 不属于自己的范围,可置为 Assigned , 等待测试人员重新指定。

    ② bug 不属于自己的范围,但知道谁应该负责,在 Reassign bug to 的输入框中 直接输入被指定人的 Email 。  

    ③操作结果:此时 bug 状态又变为 New ,此 bug 的 owner 变为被指定的人。

    4.3 测试人员确认开发人员报告的 Bug 是否存在 .

    查询状态为“ Unconfirmed" 的 Bug,

    测试人员对开发人员提交的 Bug 进行确认,确认 Bug 存在。

    具体操作:选中“ Confirm bug(change status to New)" 后,进行 commit.

    操作结果:状态变为“ New".

    4.4 测试人员验证已修改的 Bug

    ① 测试人员查询开发者已修改的 bug ,即 Status 为 "Resolved", Resolution 为 "Fixed". 进行重新测试。(可创建 test case 附件)

    ② 经验证无误后,修改 Resolution 为 VERIFIED 。待整个产品发布后,修改为 CLOSED 。

      若测试之后发现还有问题, REOPENED ,状态重新变为“ New" ,并发邮件通知。

    5 、查询

    登录 Bugzilla 缺陷跟踪系统后,点击查询,可以按照指定的一个或者多个查询条件进行查询。

    ◎摘要 (Summary) : 下拉列表框选择查询规约。在其后的输入框中输入包含的信息,此信息的指定与提交bug时的注释信息相一致。

    ◎ 产品 (Product) :选择所要查找的 bugs 所在的产品。

    ◎ 模块 (Component) :选择 bugs 所在的模块。

    ◎ 版本 (Version) :选择 bugs 版本。

    ◎注释 (Comments) :可在下拉列表框中选择将要输入的包含信息的规约,其后指定包含的信息。此信息的指定根据提交 bugs 时所填写的描述信息。

    ◎ URL : 指定关于 bugs 所在的 URL 。

    ◎关键字 (Keywords) :指定包含或不包含该关键字的 bugs 。每个 bug 可以被指定关键字, bugs 报告人或者管理员可以编辑关键字。

    ◎ 状态 (Status) :选择 bugs 状态。

    ◎ 处理 (Resolution) :选择 bugs 处理的结果。

    ◎ 严重性 (Severity) :选择 bugs 的严重级别。

    ◎ 优先级 (Priority) :选择 bugs 的优先级别。

    ◎ 硬件 (Platform) :选择存在 bugs 程序运行的平台。 ◎操作系统

  • windows xp下安装Bugzilla3.1.3

    2008-04-28 11:58:56

    windows xp下安装Bugzilla3.1.3

    Bugzilla是软件测试的利器,是一款优秀的开源的Bug Tracking System;由于是专门为Unix定制开发的,因此要想在Windows平台下安装,需要费不少的劲;不晓得是什么原因,网上有关Bugzilla的安装讲解大多都是支离破碎的,再加上它本身就是一种可以任意修改的Perl脚本程序,而且Bugzilla开发小组在代码维护和发布上也可能有点小问题;这些因素造成要想在Windows平台下搭建一个相对完整的Bugzilla系统,更是难上加难;不过,如果有一定的Perl语言知识的话,改动起来还是比较快的。

    一、准备工作

    下载IIS5.1完整版(xp 安装盘自带)、mysql5.0.41-win32、activeperl5.8.8.822、Bugzilla 3.1.3版。

    二、安装  

    1. 安装mysql

    安装过程比较简单,直接下一步就好了

    配置:

    修改mysql的root用户密码:

    D:\>cd mysql

    D:\mysql>cd bin

    D:\mysql\bin>mysql -u root mysql

    mysql>UPDATE user SET Password=PASSWORD('<new_password'>) WHERE user='root';

    mysql>FLUSH PRIVILEGES;

    这部分实际上在安装完Mysql后的配置向导中就可以做了,图形界面的。

    创建bugs数据库:

    mysql>create database bugs;

       mysql>flush privileges;

    创建bugs用户,并赋给相应的权限:

    mysql>grant all privileges on bugs.* to bugs@localhost identified by 'bugs_password';

    mysql> flush privileges;

    **<bugs_password>**字段是bugzilla连接数据库的密码(自己设,后面还要用)。

    安装Activeperl

    安装也比较简单,直接下一步。

    Bugzilla的配置

    下载解压后,打开控制台,进入到bugzilla目录下

    首先说一下checksetup.pl这个文件,bugzilla的安装和配置可以说全靠它,通常来说,要运行3次perl checksetup.pl,第一次运行,所有模块都未安装,把内容复制到一个记事本上,以便后面安装模块的时候查看。也可以打开2个命令行界面,一个用来查看,一个用来安装模块。

    安装这些模块有2种方式,离线安装和在线安装,我采用的是在线安装,如果需要离线安装,首先要到bugzilla的网站上去下载一个包,好像叫做bugzilla-boud

    安装ppm模块需要repository,使用ppm repo add <> http://... 添加以下的repository:

         http://sourceforge.net/project/showfiles.php?group_id=75477,这个是Bugzilla汉化项目整理的,收集的很全而且比较新,还有一个安装批处理程序,所以推荐大家用这个 (这里面的DBD-mysql是4.005版本)

            http://landfill.bugzilla.org/ppm/,这个是是Bugzilla的测试服务器,Bugzilla的安装手册里面推荐的也是这个,它也提供了完整的Perl模块集合,但是版本似乎比较老。

           还有一个就是checksetup.pl里面提供的http://theoryx5.uwinnipeg.ca/ppms,好像只有这个目录下面才有Email-MIME-Modifier模块。

    >perl checksetup.pl

    根据checksetup的提示,windows用户需要首先运行

    ppm repo add theory58S http://theoryx5.uwinnipeg.ca/ppms

    根据提示一步一步安装perl模块,比如

    >ppm install Email-Send

    在安装这个模块是可能会有一个版本冲突的提示,此时使用如下命令.

    ppm install Email-Send --force,注意一定要--force让它强制从新安装,就可以解决。

    这里要重点说明的就是在Bugzilla3.0中需要安装一个PerlMagick的包,这个包很是闹心,我装了一上午,ppm pero add了好多地址都不成.后来baidu到装ImageMagick时可自动安装PerlMagick所以就费点事装了个ImageMagick.首先在http://www.imagemagick.org/scrīpt/binary-releases.php#windows下载一个安装文件,在安装的时候切记选中"Install PerlMagick for ActiveState Perl v5.8.8 build822"(具体版本可能会因为你安装的Perl版本不同而稍有区别)

    安装完所有的模块后,再次运行perl checksetup.pl,如果主要的模块都正确安装,会在bugzilla的目录下生成一个localconfig文件修改该文件,主要是以下几个配置:

    $db_host = 'localhost';

    $db_name = 'bugs';

    $db_user = 'bugs';

    $db_pass = 'bugs';

    最后,再次运行perl checksetup.pl,会看到一些创建表的信息,并且中途会提示你输入管理员的相关信息。

    IIS配置

    第一步:新建网站,权限选中"写入",主机头"bug.yourcompany.com"

    第二步:打开新建网站的属性管理-->主目录-->配置-->映射,添加两个应用程序扩展

    ========================

    || 可执行文件:        C:\perl\bin\ perl.exe -x e:\bugzilla -wT "%s" %s   ||

    || 扩展名: .cgi                                                                                   ||

    || 动作:限制为GET,HEAD,POST                                                      ||

    ========================

    || 可执行文件: D:\perl\bin\perl.exe "%s" %s            ||

    || 扩展名: .pl                                                                  ||

    || 动作:限制为GET,HEAD,POST                                 ||

    ========================

    第三步:打开新建网站的属性管理-->文档,添加默认文档内容"index.cgi"并置顶.

    邮件配置

    下载sendmail-bugzilla 安装 下载地址http://glob.com.au/sendmail/

    安装目录为bugzilla安装目录

数据统计

  • 访问量: 10796
  • 日志数: 17
  • 建立时间: 2008-04-14
  • 更新时间: 2008-08-05

RSS订阅

Open Toolbar