漫漫测试人生路,吾将上下而求索

发布新日志

  • 使用 TestLink 进行测试管理(转)

    2010-08-12 10:36:50

        TestLink用于进行测试过程中的管理,通过使用TestLink提供的功能,可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。

        TestLink 是sourceforge的开放源代码项目之一。作为基于web的测试管理系统,TestLink的主要功能包括:

      测试需求管理

      测试用例管理

      测试用例对测试需求的覆盖管理

      测试计划的制定

      测试用例的执行

      大量测试数据的度量和统计功能。

      TestLink的最新版本是1.6.2。在本文接下来的部分里,作者将详细地介绍使用TestLink1.6.0来进行测试管理的完整过程。

      一、安装启动

      1、 在安装TestLink1.6.0前,需要完成以下安装运行所需要的环境:Webserver、php4和MySQL。笔者推荐的安装环境如下:

      Apache HTTP Server 2.0.59

      Php 4.4.1

      Mysql 4.1.21

      2、 将 TestLink 安装包保存到服务器,解压缩到 Apache2 的 htdocs 目录下,并重命名为 testlink。

      3、 自动安装 TestLink

      在浏览器输入访问地址http://yoursite/testlink/install/index.php,如:http://localhost:80/testlink/install/index.php

      选择new install,在进入的页面中,输入登录MySQL的用户名和密码,如root。提示安装成功,详细的安装说明请参照http://blog.csdn.net/judyxm/archive/2006/01/12/577148.aspx

      4、 登录testlink首页面。系统为testlink创建一个默认管理员账号,用户名和密码为:admin/admin。你可以使用这个账号访问TestLink 。登录http://127.0.0.1:80/testlink/index.php,如果你看到的页面如下,就说明你已经安装成功了。

    使用 TestLink 进行测试管理

      二、初始配置(设置用户、产品)

      1、 用户设置

    在TestLink系统中,每个用户都可以维护自己的私有信息。admin可以创建用户,但不能看到其它用户的密码。在用户信息中,需要设置Email地址,如果用户忘记了密码,系统可以通过mail获得。

      TestLink系统提供了六种角色,分别是admin、leader、senior tester 、tester、guest、testdesigner。相对应的功能权限如下:(详见图)

      Guest:只有读的权限,适合于查看测试用例和测试需求,以及项目分析的用户。

      Testdesigner:可以开展测试用例和测试需求的所有工作。

      Tester:只能执行测试用例。

      Senior tester:可以查看和维护测试用例,并且可以执行测试用例,但是不能管理测试计划、分配测试任务。

      Leader:可以开展测试规格和测试需求的所有工作,还可以管理测试计划、分配测试任务。

      Admin:维护产品,用户。

      同时,支持不同地域用户对不同语言的需求,可以根据用户的喜好对用户提供不同的语言支持。

    使用 TestLink 进行测试管理

      2、 产品设置

      TestLink可以对多个产品进行管理,Admin进行产品设置后,测试人员就可以进行测试需求、测试用例、测试计划等相关管理工作了。TestLink支持对每个产品设置不同的背景颜色,方便管理。

    使用 TestLink 进行测试管理

      三、测试需求管理

      测试需求是我们开展测试的依据。首先,我们对产品的测试需求进行分解和整理。一个产品可以包含多个测试需求规格,一个测试需求规格可以包含多个测试需求;

    创建测试需求规格

      对测试需求规格的描述比较简单,内容包含名称、范围。

      创建测试需求

      测试需求内容包含:需求ID、名称、范围、需求的状态,以及覆盖需求的案例。 TestLink提供了两种状态来管理需求:正确的(Valid)、不可测试的(not testable)。

    使用 TestLink 进行测试管理

      从文件导入测试需求

      Testlink提供了从文件导入测试需求的功能,支持的的文件类型有csv和csv(door)两种。

      四、测试用例管理

      TestLink支持的测试用例的管理包含三层:分别为Component、Category、Test case。我们把Component对应到项目的功能模块,而把Category跟每个模块的function对应,Test case就是写在这些Category里的。我们可以使用测试用例搜索功能从不同的项目、成百上千的测试用例中查到我们需要的测试用例,甚至于可以直接将别的项目里写的测试用例复制过来,这样就解决了测试用例的管理和复用问题。

      但是,还有一个问题没有解决,那就是与测试需求的对应问题。在测试管理中,测试用例对测试需求的覆盖率是我们非常关心的,从需求规格说明书中提取出测试需求之后, Testlink提供管理测试需求与测试用例的对应关系的功能。

      创建Component

      Component的内容包括:名称、介绍、范围、相关的内容、约束。

      创建Category

      Category的内容包括:名称、测试范围和目标、配置信息、测试数据、测试工具

      创建 Test case

      测试用例的要素包括:测试用例名称、简要说明、步骤、期望结果、关键字。

    使用 TestLink 进行测试管理

    创建好的测试用例树如下:

    使用 TestLink 进行测试管理

      建立测试用例和测试需求的覆盖关系。

      选中左侧用例树中的测试用例,再选择右侧对应的测试需求,进行Assign即可。

    使用 TestLink 进行测试管理

      五、测试计划制定

      在TestLink系统中,一个完整的测试计划包括:

      测试阶段的名称(如集成测试阶段、系统测试阶段)

      里程碑(明确每个测试阶段的开始和截止时间,以及完成A、B、C三种优先级的比例)

      Build版本(定义本测试计划中需要测试的build版本,一般以产品名+时间来命名。)

      安排测试人员 (从用户列表中选择本测试计划的参与人员。)

    使用 TestLink 进行测试管理

      测试用例集

      制定优先级规则。优先级分为A、B、C三级,系统会根据用户定义的重要级别和风险级别的组合来确定优先级的归属。重要级别分为三级:Low、Medium、High。风险级别包括三级:1、2、3。

      从测试用例中选择本测试计划的测试用例集

      设置每个测试用例Category的重要级别和风险级别

      设置每个测试用例Category的责任归属。从本测试计划的测试人员列表中选择每个Category的Owner,由他来负责和完成测试用例的执行。

      六、测试执行

      执行测试用例,按照对每个build版本的执行情况,记录测试结果。测试结果有四种情况可以选择:

    Not Run:还没有执行过

      Pass:执行通过

      Failed:执行失败

      Blocked:由于其它用例失败,导致此用例无法执行,被阻塞。

      七、测试结果分析

      TestLink根据测试过程中记录的数据,提供了较为丰富的度量统计功能,可以直观的得到测试管理过程中需要进行分析和总结的数据:

      测试用例对测试需求的覆盖情况:哪些需求已经通过测试,哪些需求未通过测试,哪些需求处于阻塞状态,哪些需求还未开始测试。

    使用 TestLink 进行测试管理

      针对每个版本的测试用例执行情况:

      1)各种优先级的测试用例执行的比率

      2)各个模块的测试用例执行的比率

      3)各个测试人员测试用例的执行比率

    使用 TestLink 进行测试管理

      每个版本的执行情况

    使用 TestLink 进行测试管理

      所有测试用例在不同build版本的执行情况,显示?的地方表示还未执行。

    使用 TestLink 进行测试管理

      阻塞的测试用例列表

    使用 TestLink 进行测试管理

      失败的测试用例列表

    使用 TestLink 进行测试管理

      每个测试用例的bug数

      如果和bug跟踪系统连接的话,在下表中可以统计出每个测试用例的bug的数目

    使用 TestLink 进行测试管理

      八、与bug跟踪系统集成

      TestLink提供了与多种bug跟踪系统关联的接口配置,目前支持的bug系统有Jira、bugzilla、mantis。配置方法的相关文档参照帮助。

      九、其它易用性功能

      TestLink还提供了很多易用性的功能,比如:

      从测试需求直接生成测试用例

      文档的导入、导出功能

      测试报告可以导出为excel

      支持设定keyword

      总结

      TestLink用于进行测试过程中的管理,通过使用TestLink提供的功能,我们可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统计和分析,使我们能够简单的开始测试工作和分析测试结果。

      本文中,作者根据自己的使用经验,详细演示了如何使用TestLink来进行测试管理的全部过程,简单的介绍了TestLink的使用方法。希望能够帮助大家学会使用TestLink的基本功能,同时,大家可以参考这个过程和TestLink的帮助文档来实现对测试过程的管理。

  • 测试工具汇总

    2010-07-30 15:53:27

    测试管理工具:
              
    1)QADirector (Compuware)
               2) TestDirector (Mercury Interactive)
               3) TestManager (Rational)

    GUI自动录制回放工具

    自动工具:
             1)QARun (Compuware)
             2) TestPartner (Compuware)
             3) WinRunner (Mercury Interactive)
             4) Robot (Rational)

    自动性能(压力)测试工具:
                             1)QALoad (Compuware)
                             2) LoadRunner (Mercury Interactive)
                             3) WAS (其它)
                             4)LoadTest (Rational)

    单元测试工具(白盒测试):
                            1)DevPartner (Compuware)
                            2) JUnit (其它)
                            3)HttpUnit (其它)
                            4)Purify (Rational)
                            5) Purecoverage (Rational)
                            6) Quantify (Rational)
                            7) CppUnit (其它)

    测试环境备份与恢复工具:
                           1)Ghost (Symantec)
                           2) Partimage

    链接测试工具:
                 WebCheck (Compuware)

    测试工具厂商介绍:
                    1)Mercury Interactiv 
                      ------TestDirector,WinRunner,LoadRunner,QuickTest

                    2)Rational
                      ------TestManager,Purify,Quantify,Robot,TestFactory

                    3)Compuware
                      ------QADirector,QARun,TestPartner,QALoad,TrackRecord,
                            DevPartner

     欢迎补充完善        

  • JMeter 中的如何区分 Server Time 和 Network Time (转自JACKEI)

    2008-12-27 15:24:06

    在 LR 中是有一个“网页细分图”的,通过这个图,你可以比较容易的区分哪些请求的响应时间最长,如果响应时间过程,是消耗在server处理的时候,还是消耗在网络传输过程中——也就是所谓的 Server time 和 Network time。
    JMeter 并没有提供这么详细的区分——至少目前尚未发现,但是在 JMeter 的执行结果中也有一个字段可以利用一下。如果想看到这一项,首先要设置将 JMeter 运行结果保存到 XML 格式。

    JMeter.properties 中找到
    JMeter.save.saveservice.output_format=csv   改为
    JMeter.save.saveservice.output_format=xml

    重新启动 JMeter ,执行一个脚本并保存测试结果。
    使用任何一个文本编辑工具打开 .jtl 文件,内容如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <testResults version="1.2">
     3 <httpSample t="2969" lt="1906" ts="1159349557390" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" ng="5" na="5"/>
     4 <httpSample t="2797" lt="1719" ts="1159349557609" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-2" dt="text" ng="5" na="5"/>
     5 <httpSample t="2625" lt="1594" ts="1159349558015" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-4" dt="text" ng="5" na="5"/>
     6 <httpSample t="2843" lt="1812" ts="1159349557812" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-3" dt="text" ng="5" na="5"/>
     7 <httpSample t="2687" lt="1110" ts="1159349558218" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-5" dt="text" ng="5" na="5"/>
     8 <httpSample t="844" lt="391" ts="1159349560374" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-1" dt="text" ng="5" na="5"/>
     9 <httpSample t="843" lt="437" ts="1159349560406" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-2" dt="text" ng="4" na="4"/>
    10 <httpSample t="781" lt="422" ts="1159349560640" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-4" dt="text" ng="3" na="3"/>
    11 <httpSample t="782" lt="391" ts="1159349560905" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-5" dt="text" ng="2" na="2"/>
    12 <httpSample t="1188" lt="485" ts="1159349560655" s="true" lb="http://jackei.cnblogs.com/" rc="200" rm="OK" tn="Thread Group 1-3" dt="text" ng="1" na="1"/>
    13 
    14 </testResults>
    15 

    找到 lt 这一项。

    结合 JMeter 的几篇文章和 email,解释一下 lt 的意思。
    lt = latency time (ms)

    JMeter 中执行一个脚本时,大概的过程如下:

    Start timer
    Send Request
    Wait for data
    Initial (first) response packet occurs - this is latency
    more data
    ...
    end of response
    Stop timer - this is the response time


    这里可以看到 lt 是接收到响应的第一个包的时间。
    而上面的 XML 文件中,t 这一项表示的是 elapsed time。也就是一个请求从发出到收到完整的响应的时间。
    那么 lt 就相当于 LR 中的 Server time,而 t-lt 就相当于 LR 中的 Netwrok time。

  • JMeter 通过 JDBC 访问 Oracle 和 MySQL (转自JACKEI)

    2008-12-27 11:47:53

    关键字:开源性能测试工具  JMeter  Oracle


    JMeter 的手册中描述了如何访问 MySQL,但是没有说明如何访问 Oracle。对于没有 Java 应用开发经验和对 Oracle 不是特别熟悉的朋友,可以参考这篇文章来简单、快速的配置好 JMeter 中的 JDBC 连接和 JDBC Request。


    步骤:

    1. 新建一个 Thread Group

    2. 新增 JDBC Connection Configuration

    3. 点击新增的 JDBC Connection Configuration ,需要修改的参数包括:

    • Variable Name:可以先填一个 Oracle,等会解释;

    • Database URLjdbc:oracle:thin:@{host_IP_or_machine_name}:{Oracle 监听器监听的端口}:{你的Oracle实例的名字}  ——大家要注意,“{ }” 大括号 只是我用来说明用的,在配置 JMeter 时,请将 “{ }” 大括号去掉 ^_^

    • JDBC Driver classoracle.jdbc.driver.OracleDriver

    • Username:访问上面Oracle实例的用户名

    • Password:对应的密码

    1. 新增一个 JDBC Request,需要修改的参数包括:

    • Variable Name:和上面的 JDBC Connection Configuration填写同样的内容。这里表示 JDBC Connection Configuration建立一个名为Oracle 的连接池,之后其它的JDBC Request都共用这个连接池;

    • Queryselect * from table_name 。 这里建议打开你的数据查询工具,输入一条SQL查询语句,保证可以执行看到结果的,然后copy 过来;

    1. 新增一个View Results Tree

    2. 点击 Run,查看结果。可以在Response data tab 看到响应的返回结果。


    注意事项:

    1. 执行时提示:No Suitable Driver

      在电脑上搜索一下 classes12.jar 这个文件,然后copy到JMeter的Lib目录下。如果找不到classes12.jar这个文件,就找找classes12.zip文件,然后把扩展名改为jar;

    2. 执行时提示:ORA-00911: invalid character

      确保你在JDBC Request里面的Query中输入的SQL语句是正确的。


    JMeter 用户手册中关于配置通过JDBC对数据库性能进行测试的部分如下:

    http://jakarta.apache.org/jmeter/usermanual/build-db-test-plan.html


    另外,我做了两个 Test Plan,一个是 for Oracle 的,一个是 for MySQL 的,你可以点击下面的链接下载。

     
    MySQL JDBC Driver (下载后需要自己把扩展名改为 .jar 然后放到 JMeter 的 lib 目录下)
     
  • 使用 JMeter 分布式性能测试 (转自jackei)

    2008-12-27 11:37:15

    作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter 也可以像 LoadRunner 一样通过使用多台机器运行所谓的 Agent 来分担 Load Generator 自身的压力,并借此来获取更大的并发用户数。根据 JMeter官方文档的署名,你需要自己完成这个配置,不过不用担心,这将非常简单 ^_^

    1.              在所有期望运行 JMeter 作为 Load Generator 的机器上安装 JMeter,并确定其中一台机器作为 Controller,其他的机器作为 Agent。然后运行所有 Agent 机器上的JMeter-server.bat文件——假定我们使用两台机器 192.168.0.1 和 192.168.0.2 作为 Agent;

    2.              在Controller 机器的 JMeter 安装目录下找到 bin 目录,再找到 JMeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;

    3.              在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示运行 JMeter Agent 的机器,这里需要修改为“remote_hosts=192.168.0.1:1664,192.168.0.2:1664”——其中的 1664 为 JMeter 的 Controller 和 Agent 之间进行通讯的默认 RMI 端口号;

    4.              保存文件,并重新启动 Controller 机器上的 JMeter.bat,并进入 Run -> Remote Start 菜单项。看到啥了?^_^

     

    原文地址:http://www.cnblogs.com/jackei/archive/2006/09/14/504638.html
  • BadBoy 简明手册(转)

    2008-10-28 10:20:05

    badboy简介

    Badboy监控internet explorer的活动,提供录制/回放功能.

    录制功能:badboy窗口的顶部显示当前是否处于录制状态,如果点击play按钮,badboy自动关闭录制功能,等到play结束后,可以点击recording按钮,继续录制脚本.

         Remark:必须等到上一步的request处理完毕后,才能点击发送下一个request,否则下一个request会作为第一个request的子frame.

     

    基本操作

    1 创建 suites,tests以及steps

    测试与网站的交互过程,可以在逻辑上划分为几个步骤.例如第一个步骤为登陆雅虎邮箱,第二步为浏览收件箱,第三步为发送邮件.每一个步骤可以包含一到多次的网站交互动作.badBoy中点击new step创建新的步骤. <!--[if !vml]--><!--[endif]-->.同理,可以创建suites 以及tests.

         Badboy回放时,一次执行一个step,每执行完一个step,会显示执行结果,用户必须再次点击play按钮后,执行下一个step.

     

    2 自动化测试脚本

    如果不修改脚本,简单的录制回放并不能满足复杂网站的测试.

    复杂网站往往有下面一些测试场景:

    A 页面参数唯一性要求,例如:注册页面,需要对用户的注册名进行唯一性校验.

    B 测试的server地址不同.

    Badboy提供了易用的参数修改方法,仅仅需要双击request或者参数,在弹出窗口内修改.同时badboy提供search&replacing功能来修改脚本中的参数值.

     

    Remark:建议选择linking variables,同一个参数,往往脚本会发送多次,选择linking variables,badboy会查找所有的与参数有关的值.并统一替换.

     

    特点与技术

    1 录制模式

       Badboy提供两种录制模式: request 模式(默认模式) navigation 模式.点击下图N,切换模式.

    <!--[if !vml]--><!--[endif]-->

    Request模式具有如下优点:如果测试的网页模版修改了,不影响脚本的回放.如果需要badboy导出脚本到jmeter进行性能测试,必须选择request模式.同时request模式的缺点如下:request模式需要添加大量的断言来检查页面上的item.

    Navigation模式将会记录网站交互过程中browser中的元素的点击动作.当回放navigation模式脚本时候,不但回放http request,同时badboy会模拟brower中点击动作.navigation模式的缺点是 :无法使用navigation脚本进行性能测试,因为性能测试引擎运行时候不显示任何用户界面,所以无法执行navigation中模拟点击等动作.

    总结:选择navigation模式还是request模式,取决于测试的目的,如果仅仅要求测试功能而不关心界面,request模式无疑为首选.

     

    2 navigation模式

    Navigation录制browser的三种元素如下:

    1 链接点击

    2 按钮点击

    3 其他点击,例如引发javascrīpt的操作.

    3 表单提交

    表单提交是页面中非常重要的部分,有下面一些案例需要注意:

    1 如果页面表单中某些参数是依赖于某些参数的输入,比如field B javascrīpt根据field A的输入值计算,使用request模式将无法录制正确的参数.

     

    2 request模式下,表单中的所有参数都将发送.包括一些预定义的元素.

     

    自动录制form的方法:点击form中某一field,"Ctrl-Alt-f"录制form,如果每次提交的form名字不同的话,可以使用正则表达式来表示: logonForm[0-9]{4}

     

     

    4 断言

    断言是自动化检测的实现手段,badboy提供了两种断言:

    1 content 检查

    检查页面中是否包含指定的text.断言可以使用正则表达式,比如要检查一个正确登陆的例子,需要检查”welcome [A-z0-9]*\.”

    问题:例子,比如”tree frog”browser中显示,html中显示为"tree&nbsp;frog",因为badboy测试实际的html source,因此将找不到这个断言.避免这个问题的方法是在page中高亮显示text,并使用easy assertion button.如果使用复杂断言,需要精确匹配html source中的text.

    5 截屏

    当测试失败时候,截屏是最有效的方法与开发人员沟通.在断言的属性栏中,选择失败是截屏.badboy会截取失败案例的browser.

     

    6 timeout

    可以为每个request设置timeout时间,右键点击à选择属性à选择play标签,设置timeout时间.

     

    7 弹出框

    使用断言检查弹出框,邮件选择断言,打开"Check against Message Boxes"选项.

     

     

    8 Badboyjmeter使用注意事项:

    1 导出jmeter脚本的时候,jscrīpt不被导出,因为jmeter无内迁browser,jscrīpt元素无法执行.

    2 data sources不被导出.

     

    9 快捷方式

    快捷方式如下:

    F2 Toggles Record Mode On/Off

    F3 Displays the search/replace dialog, or searches if the dialog is already open.

    Ctrl-Alt-Right Starts playing from the current item.

    Ctrl-Alt-Space Stops Playing

    Ctrl+F5 Plays entire hierarchy from the current item. (Note: if focus is inside the browser, IE will intercept as "Refresh").

    F6 Single steps (plays next single item in scrīpt.)

    F8 Shows/Hides scrīpt Tree

    F9 Shows/Hides Summary Tab View

    F12 Shows/Hides both scrīpt and Summary Views together (gives browser full window space)

    Ctrl+Enter Replays the item current item in the scrīpt

    Ctrl+Shift+Enter Replays the current step in the scrīpt

    Ctrl+Shift+Left Rewinds the play marker to the previous step.

    Ctrl+Alt+Up Moves the play marker to the previous item in scrīpt.

    Ctrl+Alt+Down Moves the play marker to the previous item in scrīpt.

    Ctrl+L Displays the lines Server Log File related to the most recent browsing activity.

    Ctrl+K Clears all responses from the scrīpt.

    Ctrl+J Attempts to find and edit the source code file for the current page and/or frame that has focus in the browser.

    Ctrl+Shift+J Attempts to find and edit the source code file for the current page and/or frame that has focus in the browser and also adds the URL for the frame to your scrīpt as a Monitored request.

    Ctrl+Shift+M Adds URLs for all frames in the current browser as Monitored requests.

    Ctrl+D Toggles DOM View On/Off for the active window.

    Ctrl+Page Up While in DOM View changes to previous frame in frame list

    Ctrl+Page Down While in DOM View changes to next frame in frame list

    Ctrl+Alt Changes Record Mode temporarily to Navigation Mode while held down

    Ctrl+Alt+N Toggles record mode between Navigation and Request mode

    Ctrl+Shift+D Opens the documentation editor for the item currently selected in the scrīpt Tree.

     by zhuangxiu
  • JCoverage简明使用手册(转)

    2008-10-10 09:33:24

    使用目的

    JCoverage正如其名,主要用于代码的覆盖测试。通过在被测试类的二进制文件中添加相应的指令,再配合junitjcoverage可以给出被测试类的代码覆盖率,并给出测试过程中哪些语句被执行,哪些没有。通过这些信息,我们可以了解测试代码的测试质量,以及被测试类中哪些语句需要特别的关注(即那些未被覆盖的语句)。

    当前的版本是1.0.5,可以从www.jcoverage.com/downloads.html下载。在实际使用时,需要将jcoverage用到的类放到对应的classpath中。在这个版本中它所依赖的外部类以及版本:

    - bcel    5.1     http://jakarta.apache.org/bcel/

    - log4j   1.2.8    http://jakarta.apache.org/log4j/

    - getopt  1.0.9    http://gnu.org/

    - oro     2.0.7   http://jakarta.apache.org/oro/

     

    用法

    1.       jcoverage可以和ant配合使用,使这一过程自动化。基本用法:

    -          编译被测试类和相应的被测试类的junit代码。

    -          使用<instrument>,将jcoverage的指令加入到被测试类的二进制文件中。为了保证这一过程能够有效,请在编译被测试类时,设置<javac>debug属性设为yes

    -          执行junit代码进行代码覆盖测试。这一步需要注意的是,需要将被注入指令的测试类要早于单元测试所需的测试类装入。为了确保这一点,需要使用<classpath>,使注入指令的测试类位于测试类之前

    -          使用<report>产生覆盖测试的报告。

    2.       使用例子:

    <!-- 采用debug模式编译被测试类 -->

    <javac destdir="${dist.coverage.classes}" deprecation="on" debug="yes">

    <src path="${src.code}"/>

        <classpath refid="classpath"/>

    </javac>

    <!-- 编译被测试类的junit代码 -->

    <javac destdir="${dist.coverage.junit}" deprecation="on">

        <src path="${src.junit}"/>

        <classpath refid="classpath"/>

    </javac>

    <!-- 定义jcoverage任务 -->

    <path id="jcoverage">

            <fileset dir="junit_lib">

                   <include name="jcoverage.jar"/>

            </fileset>

        </path>

    <taskdef classpathref="jcoverage" resource="tasks.properties"/>

    <!-- 给被测试类二进制代码中注入jcoverage的指令 -->

    <instrument todir="${dist.coverage.instrument}">

            <classpath refid="classpath"/>

        <!-- 忽略org.apache.common的应用 -->

        <ignore regex="org.apache.common.*"/>

     

        <fileset dir="${dist.coverage.classes} ">

            <include name="**/*.class"/>

        </fileset>

    </instrument>

    <!-- 启动junit,进行代码覆盖测试 -->

    <junit printsummary="yes" haltonfailure="no" fork="yes">

        <classpath>

            <!-- 注意:被注入指令的类,位置在测试类之前。

    这样确保它们早于测试类备加载,使指令起作用。 -->

            <pathelement location="${dist.coverage.instrument}"/>

            <path refid="classpath"/>

            <pathelement location="${dist. coverage.junit}"/>

        </classpath>

     

        <formatter type="xml"/>

     

            <batchtest todir="${doc.jcoverageReport}">

             <fileset dir="${src.junit}" includes="**/*Test.java" />

         </batchtest>

    </junit>

    <!-- 产生代码覆盖测试报告 -->

    <report srcdir="${src.code}" destdir="${doc.jcoverageReport}">

    3.       jcoverage提供的ant任务标签有:

    -          <instrument>,在类的二进制文件中注入jcoverage指令。注意:一定是debug模式下编译的类。

    -          <report>,产生jcoverage报告,默认格式是HTML。也可以产生XML格式方便应用客户自定义的xslt产生其他格式的报告。产生XML格式的报告:

    <report srcdir="${src.code}" destdir="${doc.jcoverageReport}" format="xml">

    -          <merge>,整合多个由jcoverage产生的输出文件。整个jcoverage实际的运作过程是:首先,jcoverage给测试类注入指令产生新类,被注入指令的类在junit运行过程中产生输出文件(后缀为ser),最后根据输出文件产生报告。如果有多个输出文件,jcoverage提供了<merge>来整合这些文件,最后,从整合文件中产生整体报告。用法:

    <merge>

    <fileset dir="${basedir}">

    <include name="**/jcoverage.ser"/>

    </fileset>

    </merge>

    -          <check>,检查测试是否达到设定的标准,它可以和<report>配合使用。使用例子:

    例1 

    <check branch="95" line="95"/>,意思是分支覆盖率需要达到95%,行覆盖率达到95%

    例2   

    <check branch="95" line="95">

        <regex pattern="xptoolkit.jcoverage.*" branch="85" line="95"/>

    </check>

    包名符合xptoolkit.jcoverage.*模式的分支覆盖率达到85%,行覆盖率达到95%其余的分支覆盖率需要达到95%,行覆盖率达到95%

    检查表

           在使用jcoverage时需要注意的问题:

    -          jcoverage注入指令的类必须是在debug模式下编译的类。建议将那些使用debug模式编译的类的存放与最终的产品的目录分开。

    -          使用了<instrument>的类,与源类的目录也最好分开。

    -          对于那些使用了AOP(如AspectJ)技术的项目,jcoverage不能很好的应用到那些已经添加了Aspect信息的类。

    -          代码覆盖工具只是给出了指导性的意见,不要过分依赖和相信它的结果。

  • JUNIT STUDY

    2008-10-05 11:28:54

    1. JUnit入門
      http://www.dotspace.twmail.org/Test/JUnit_Primer.htm
    2. 怎样使用Junit Framework进行单元测试的编写
      http://www.chinaunix.net/bbsjh/14/546.html
    3. Ant+Junit+Log4J+CVS进行XP模式开发的建立
      http://ejb.cn/modules/tutorials/printpage.php?tid=4
    4. 用HttpUnit测试Web应用程序
      http://www.zdnet.com.cn/developer/code/story/0,2000081534,39033726,00.htm
    5. 有没有用过Cactus的,Web层的测试是Cactus还是JUnit?
      http://www.jdon.com/jive/thread.jsp?forum=16&thread=9156
    6. Ant+junit的测试自动化 biggie(原作)
      http://www.csdn.net/Develop/article/19%5C19748.shtm
    7. JUnit实施
      http://www.neweasier.com/article/2002-08-07/1028723459.html
    8. JUnitTest Infected: Programmers Love Writing Tests
      http://junit.sourceforge.net/doc/testinfected/testing.htm
    9. JUnit Cookbook
      http://junit.sourceforge.net/doc/cookbook/cookbook.htm
    10. JUnit Primer
      http://www.itu.dk/~lthorup/JUnitPrimer.html
    11. IBM DevelopWorks
      http://www-106.ibm.com/search/searchResults.jsp?query=junit&searchScope=dW&searchType=1&searchSite=dWChina&pageLang=zh&langEncoding=gb2312&Search.x=0&Search.y=0&Search=Search
  • 代码检查工具CheckStyle简介和使用(转)

    2008-09-10 15:02:43


     CheckStyle是什么?

      CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来[1]。

      2.2. CheckStyle检验的主要内容

      CheckStyle默认提供一下主要检查内容:

      ·Javadoc注释

      ·命名约定

      ·标题

      ·Import语句

      ·体积大小

      ·空白

      ·修饰符

      ·块

      ·代码问题

      ·类设计

      ·混合检查(包活一些有用的比如非必须的System.out和printstackTrace)

      从上面可以看出,CheckStyle提供了大部分功能都是对于代码规范的检查,而没有提供象PMD和Jalopy那么多的增强代码质量和修改代码的功能。但是,对于团队开发,尤其是强调代码规范的公司来说,它的功能已经足够强大。

      2.3. CheckStyle的主要运行方式

      目前,CheckStyle的版本是3.0,与以前的版本不同,它的配置文件是基于XML而非Properties文件。

      它的3.0版本提供了两种运行的方式:

      ·命令行工具

      ·ANT任务

      同时,CheckStyle目前有很多针对流行IDE的插件,例如Eclipse、IntelliJ IDEA、JBuilder等。但是,大部分都是基于2.4的版本,新版本的特性不支持,同时配置也较为复杂。

      因为一般情况下,如果与开发过程与环境集成起来,编码规范的检查会更加有效,因此,作为ANT任务的运行方式使用的更加普遍。

      在ANT的build.xml文件中添加CheckStyle任务的步骤如下:

      1. 将checkstyle-all-3.1.jar拷贝到项目的LIB目录;

      2. 建立配置文件;

      3. 声明CheckStyle任务:

    <taskdef resource="checkstyletask.properties" classpath="${lib}/checkstyle-all-3.1.jar"/>

      4. 建立CheckStyle任务:

    <target name="checkstyle">
    <checkstyle c>
    <fileset dir="${src}" includes=" **/*.java" />
    </checkstyle>
    </target>

      2.4. 定制CheckStyle

      CheckStyle的执行基于XML配置文件,它的主要组成部分是:

      ·Module:整个配置文件就是一棵Module树。根节点是Checker Module。

      ·Properties:它来决定一个Module如何进行检查。每个Module都有一个默认值,如果不满足开发需求,可以设定其它的值。

      下面是一个示例:

    <module name="MethodLength">
    <property name="max" value="60"/>
    </module>

      它表示,如果方法或者构造函数的长度超过60行,CheckStyle就会报错。而默认值是150行。

      以下是一段CheckStyle对于Maven项目源文件的检查报告:

    Method 'createExpression' is not designed for extension - needs to be abstract, final or empty. 91
    Unable to get class information for JellyException. 91
    Line has trailing spaces. 93
    Line has trailing spaces. 104
    Method 'evaluate' is not designed for extension - needs to be abstract, final or empty. 113
    Parameter context should be final. 113
    Line has trailing spaces. 130
    Method 'getExpressionText' is not designed for extension - needs to be abstract, final or empty. 131
    Line has trailing spaces. 134
    Line has trailing spaces. 135
    Method 'toString' is not designed for extension - needs to be abstract, final or empty. 137
    Method 'isSupportAntVariables' is not designed for extension - needs to be abstract, final or empty. 156
    Method 'setSupportAntVariables' is not designed for extension - needs to be abstract, final or empty. 168
    Parameter supportAntVariables should be final. 168
    'supportAntVariables' hides a field. 168
    Method 'isValidAntVariableName' is not designed for extension - needs to be abstract, final or empty. 183
    Parameter text should be final. 183

      一般情况下,与IDE集成在一起使用的时候,点击出错的条目,可以跳转到相应的代码。
    本贴来自ZDNetChina中文社区 http://bbs.zdnet.com.cn ,本贴地址:http://bbs.zdnet.com.cn/viewthread.php?tid=178617

     


    三、CheckStyle的最佳实践

      3.1. Sun’s Code Conventions的修改

      在CheckStyle的最新发布版本中,有一个对于Sun的Java编码规范的配置文件信息。但是,其中有很多条目并不一定符合项目开发的需要。就算是对于很多优秀的开源项目,按照这个规范来进行检查,也会出现成千上万的错误。

      下面提出的一些修改意见,是从实际项目执行过程中总结出来的,可以作为大家的参考。我们以CheckStyle3.0配置文件的顺序来介绍:

      1. 去除对于每个包都有一个package.html文件的限制;

    <!--<module name="PackageHtml"/>-->
      
      2. 修改对于JavaDoc Comments的限定:对于很多使用Code Generator的项目来说,需要将手写代码与生成代码、单元测试代码的检查分开进行;

      3. 修改对于体积大小的限制:目前,很多显示器都是17寸,而且打印方面的限制也比以前有所改善,同时,由于代码中Factory等模式的运用,以及有意义的方法名称等约定,默认每行代码的长度(80)是远远不能满足要求;对于方法长度等等,也应该根据项目情况自行决定:

    <module name="FileLength"/>
    <module name="LineLength">
    <property name="max" value="120"/>
    </module>
    <module name="MethodLength">
    <property name="max" value="300"/>
    </module>
    <module name="ParameterNumber"/>

      4. 修改对于Throws的的限制:允许Throws Unchecked Exception以及Throws Subclass Of Another Declared Exception。

    <module name="RedundantThrows">
    <property name="allowUnchecked" value="true"/>
    <property name="allowSubclasses" value="true"/>
    </module>

      5. 修改成员变量的可视性:一般情况下,应该允许Protected Members以及Package Visible Members。

    <module name="VisibilityModifier">
    <property name="protectedAllowed" value="true"/>
    <property name="packageAllowed" value="true"/>
    </module>

      3.2. CheckStyle应用的最佳实践

      采用CheckStyle以后,编码规范的检查就变得及其简单,可以作为一项切实可行的实践加以执行。

      一般情况下,在项目小组中引入CheckStyle可以按照下面的步骤进行:

      1. 强调Code Review与Code Conventions的重要作用;

      2. 介绍CheckStyle;

      3. 初步应用CheckStyle:参照CheckStyle附带的配置文件,酌情加以剪裁,在项目的Ant配置文件中,添加CheckStyle任务,可以单独执行;

      4. 修改、定型CheckStyle的配置文件:按照基本配置文件执行一段时间(2~3周),听取开发人员的反馈意见,修改配置信息;

      5. 作为开发过程的日常实践,强制执行CheckStyle:稳定CheckStyle的配置信息,同时将CheckStyle任务作为Build的依赖任务或者配置源码控制系统(目前,CheckStyle可以与CVS有效集成),使得代码在加入系统之前必须通过检查。

      同时需要指出的是,CheckStyle的有效执行需要依赖两个条件:

      ·Ant的广泛应用:CheckStyle基于Ant执行的方式比较容易,而且可以在项目内容形成一致的执行环境。同时,也比较容易与其它任务,例如Build等发生关联。

      ·IDE Format Code的强大功能:由于CheckStyle本身并没有提供很强大的Code Format等功能,因此,需要借助IDE的帮助,从而使得在发生错误的时候,可以很容易的进行修复。目前,主流的Java IDE都提供了这方面的功能,IDEA在这方面尤其突出。它提供的统一、可定义的Code Format Template(项目小组内部可以使用统一模板)以及方便的快捷键功能(Ctrl+Alt+T:Format Code, Ctrl+Alt+O:Optimize Import等)。

      四、结论

      利用CheckStyle可以方便的对于编码的Code Conventions进行检查,同时,也有效地减少了Code Review的工作,使得Reviw人员的精力更多的集中到逻辑和性能检查。

    Checkstyle的结果输出

    序号      输出内容意义

    1 Type is missing a javadoc commentClass  缺少类型说明

    2“{” should be on the previous line “{” 应该位于前一行

    3Methos is missing a javadoc comment方法前面缺少javadoc注释

    4Expected @throws tag for “Exception”在注释中希望有@throws的说明

    5“.” Is preceeded with whitespace “.” 前面不能有空格

    6“.” Is followed by whitespace“.” 后面不能有空格

    7“=” is not preceeded with whitespace“=” 前面缺少空格

    8“=” is not followed with whitespace“=” 后面缺少空格

    9“}” should be on the same line“}” 应该与下条语句位于同一行

    10Unused @param tag for “unused”没有参数“unused”,不需注释

    11Variable “CA” missing javadoc变量“CA”缺少javadoc注释

    12Line longer than 80characters行长度超过80

    13Line contains a tab character行含有”tab” 字符

    14Redundant “Public” modifier冗余的“public” modifier

    15Final modifier out of order with the JSL suggestionFinal modifier的顺序错误

    16Avoid using the “.*” form of importImport格式避免使用“.*”

    17Redundant import from the same package从同一个包中Import内容

    18Unused import-java.util.listImport进来的java.util.list没有被使用

    19Duplicate import to line 13重复Import同一个内容

    20Import from illegal package从非法包中 Import内容

    21“while” construct must use “{}”“while” 语句缺少“{}”

    22Variable “sTest1” must be private and have accessor method变量“sTest1”应该是private的,并且有调用它的方法

    23Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”变量“ABC”不符合命名规则“^[a-z][a-zA-Z0-9]*$”

    24“(” is followed by whitespace“(” 后面不能有空格 25“)” is proceeded by whitespace“)” 前面不能有空格

     

    不太明白的错误解答

    1.  'X' hides a field.

    public class Foo
    {
        private int bar;

        public Foo(int bar)
        {
            this.bar = bar;
        }

        public final int getBar()
        {
            return bar;
        }
    }

    解释:全局private int bar;和局部public Foo(int bar)的bar变量名字重复。
    此错误,可以忽略不检查。


    2. Parameter X should be final.


    public class Foo
    {
        private int bar;

        public Foo(int bar)
        {
            this.bar = bar;
        }

        public final int getBar()
        {
            return bar;
        }
    }

    解释:public Foo(int bar)的局部变量,被认为是不可改变的,检查需要加上final关键字定义public Foo(final int bar)
    此错误,可以忽略不检查。

    3. Redundant 'X' modifier.

    public interface CacheHRTreeService extends Manager {

     /**
      * Organization Tree
      *
      * @param orgDto
      * @return
      * @throws Exception
      */
     public void setOrganization(OrganizationDTO orgDto) throws Exception;

     /**
      * Organization Tree
      *
      * @return
      * @throws Exception
      */
     public OrganizationDTO getOrganization() throws Exception;
    ......
    }

    解释:多余的字段。public OrganizationDTO getOrganization() throws Exception;此时public为多余的字段,因为interface定义的时候,就是public的。

    需要检查。

    4. - Class X should be declared as final.

    解释:对于单例设计模式,要求返回唯一的类对象。但是HRFactory和ContextFactory为优化的两个类,不需求检查。
    其他的单例类,依然需要进行检查。


    5.  Utility classes should not have a public or default constructor.

    解释:工具类不必提供默认的构造方法。
    需要检查,仅仅为提示。

    6. File does not end with a newline.
    解释:虽然JAVA程序不要求结尾要用新行,但是习惯上应该要空一行。
    需要检查,仅仅为提示。

    7. - Method 'addChildrenId' is not designed for extension - needs to be
      abstract, final or empty.

    解释:通过父类继承的,此类有点特殊
    可以忽略此类。

    8. Variable 'id' must be private and have accessor methods.
    解释:BaseHRDTO类,为父类,属性给子类继承,比较特殊。
    但是其他的类,声名需要加上范围'private'关键字
    需要检查。

    9. -Array brackets at illegal position.
    解释:代码写法,习惯不一样。
    需要检查,仅仅提示。

     

  • 代码分析工具findbug简介和使用

    2008-09-10 10:08:12

    FindBugs(http://findbugs.sourceforge.net/)版本1.1.1

    简介:findbugs 是一个在java程序中查找bug的程序,它查找bug模式的实例,也就是 可能出错的代码实例,注意findbugs是检查java字节码,也就是*.class文件。

    自带检测器的介绍: findbugs 自带60余种Bad practice80余种Correntness1 Internationalization
        12Malicious code vulnerability27Multithreaded correntness23Performance43Dodgy


    Bad practice
    坏的实践

    一些不好的实践,下面列举几个:

    HE 类定义了equals(),却没有hashCode();或类定义了equals(),却使用Object. hashCode();或类定义了hashCode(),却没有equals();或类定义了hashCode(),却使用Object.equals();类继承了equals(),却使用Object.hashCode()

    SQL Statement execute方法调用了非常量的字符串;或Prepared Statement是由一个非常量的字符串产生。

    DE 方法终止或不处理异常,一般情况下,异常应该被处理或报告,或被方法抛出。


    Correctness
    一般的正确性问题

    可能导致错误的代码,下面列举几个:

    NP 空指针被引用;在方法的异常路径里,空指针被引用;方法没有检查参数是否nullnull值产生并被引用;null值产生并在方法的异常路径被引用;传给方法一个声明为@NonNullnull参数;方法的返回值声明为@NonNull实际是null

    Nm 类定义了hashcode()方法,但实际上并未覆盖父类ObjecthashCode();类定义了tostring()方法,但实际上并未覆盖父类ObjecttoString();很明显的方法和构造器混淆;方法名容易混淆。

    SQL 方法尝试访问一个Prepared Statement0索引;方法尝试访问一个ResultSet0索引。

    UwF 所有的write都把属性置成null,这样所有的读取都是null,这样这个属性是否有必要存在;或属性从没有被write


    Internationalization
    国际化

    当对字符串使用upperlowercase方法,如果是国际的字符串,可能会不恰当的转换。

        
       Malicious code vulnerability
    可能受到的恶意攻击

        如果代码公开,可能受到恶意攻击的代码,下面列举几个:

        FI 一个类的finalize()应该是protected,而不是public的。

        MS 属性是可变的数组;属性是可变的Hashtable;属性应该是package protected的。

       
       Multithreaded correctness
    多线程的正确性

        多线程编程时,可能导致错误的代码,下面列举几个:

        ESync 空的同步块,很难被正确使用。

        MWN 错误使用notify(),可能导致IllegalMonitorStateException异常;或错误的

    使用wait()

    No 使用notify()而不是notifyAll(),只是唤醒一个线程而不是所有等待的线程。

    SC 构造器调用了Thread.start(),当该类被继承可能会导致错误。

       
       
    Performance
    性能问题

        可能性能不佳的代码,下面列举几个:

        DM 方法调用了低效的Boolean的构造器,而应该用Boolean.valueOf(…);用类似

    Integer.toString(1) 代替new Integer(1).toString();方法调用了低效的float的构造器,应该用静态的valueOf方法。

    SIC 如果一个内部类想在更广泛的地方被引用,它应该声明为static

    SS 如果一个实例属性不被读取,考虑声明为static

    UrF 如果一个属性从没有被read,考虑从类中去掉。

    UuF 如果一个属性从没有被使用,考虑从类中去掉。

       
        Dodgy
    危险的

        具有潜在危险的代码,可能运行期产生错误,下面列举几个:

        BC 对抽象集合如ListSet的造型;对具体集合如ArrayListHashSet的造型;

    未检查或无法保证的造型;

    CI 类声明为final但声明了protected的属性。

    DLS 对一个本地变量赋值,但却没有读取该本地变量;本地变量赋值成null,却没有读取该本地变量。

    ICAST 整型数字相乘结果转化为长整型数字,应该将整型先转化为长整型数字再相乘。

    INT 没必要的整型数字比较,如X <= Integer.MAX_VALUE

    NP readline()的直接引用,而没有判断是否null;对方法调用的直接引用,而方法可能返回null

    REC 直接捕获Exception,而实际上可能时RuntimeException

    ST 从实例方法里直接修改类变量,即static属性。

     

    自定义检测器: findbugs 提供了强大的自定义检测器的功能,首先我们应该清楚需要

    检查的案例,findbugs的官方文档里并没有详细的介绍如何自定义,那我们只能直接阅读它的源码了,着重阅读BytecodeScanningDetectorByteCodePatternDetector的子类型,它们可以检测一般类型的问题。Findbugs利用了Byte Code Engineering Library(即BCELApache上的一个开源项目),以实现其检测器,所有的字节码扫描都是基于visitor模式。我们可以参照findbugs自带的检测器的类的源码,去编写一个自定义的检测器代码,编写完后编译成类文件,同时我们还需要提供两个XML文件,Findbugs.xmlmessage.xml,在Findbugs.xml里指定检测器和实现类,检测器的缩写、类型如快速或慢速,而message文件里则包括了该检测器的描述信息,可能是html的,然后将源文件、类文件和上面两个XML文件打包成jar文件,放在findbugs homeplugin文件夹下,这样我们就可以使用自定义检查器了。

     

    参考文档:

    FindBugs 官方文档(http://findbugs.sourceforge.net/

    FindBugs ,第 1 部分: 提高代码质量

    http://www-128.ibm.com/developerworks/cn/java/j-findbug1/

    FindBugs ,第 2 部分: 编写自定义检测器

    http://www-128.ibm.com/developerworks/cn/java/j-findbug2/

    代码静态分析(http://blog.donews.com/foxgem/archive/2005/04/23/347444.aspx

     

    Findbugs使用说明<br>目的<br> Findbugs是一个代码质量工具;我们用它来检查源代码中出现的伪问题,以期尽可能在项目的初始阶段将代码问题解决。本文主要介绍Findbugs的eclipse插件的应用。 对应的版本是:Findbugs (0.0.16);eclipse (3.1)<br><br>概要<br> FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。我们利用它在eclipse中的插件来对它所过滤的工程的源代码进行检查。希望在程序员编写代码的过程中,将代码中的缺陷指出来,让编码人员在开发中将它们纠正。达到尽可能在项目编码中将问题解决得目的。而不是在编码结束的时候才用该软件对代码检查,修改。<br>

    Eclipse插件开发之FindBugs插件:http://soft.yesky.com/480/2291980_1.shtml

  • 10款常用的JAVA测试工具

    2008-05-22 11:50:47

    发布时间: 2007-11-09 13:45    作者: 未知    来源: 网络转载

    字体      | 上一篇 下一篇 | 打印  | 我要投稿

    1. 美国Segue公司的Silk系列产品
        Segue
    公司一直专注于软件质量优化领域。在Segue的产品套件中,拥有业内最强劲且最容易使用的、用于企业应用测试、调优和监测的自动化工具,能够帮助用户保障应用在其生命周期内的可靠性和性能。

    (1) SilkPerformer——
    企业级性能测试工具
    u
    企业级自动化测试工具能够支持多种系统,如Java.NetWirelessCOMCORBAOracleCitrixMetaFrame、客户机/服务器、以及各种ERP/CRM应用
    u
    多项专利技术精确模拟各种复杂的企业环境
    u
    可视化脚本记录功能及自定义工具简化了测试创建工作
    u SilkPerformer
    Java/.NET浏览器以及JUnit/NUnit测试输入功能简化了对并发访问情况下远程应用组件的早期负载测试工作
    u
    方便易用,工作流向导会逐步引导用户完成整个测试流程 

    (2) Silk
    Test International——业内唯一的Unicode功能测试工具
    u SilkBean 充分利用 Java 语言的编写一次,随处使用的优点,让用户不必修改现有的脚本而能够在多种基于 Unix 的系统上运行
    u
    能够识别多种开发平台,如JavaJavascrīptHTMLActiveXVisual Basic C/C++
    u
    一套脚本可供所有支持的语言使用
    u
    内置的错误恢复系统不仅具有自定义功能,可进行无人看守的自动测试
    赛格瑞(Segue)公司是全球范围内专注于软件质量优化解决方案的领导者。2005年,赛格瑞(Segue)公司在中国设立了专门的销售服务公司,因此,赛格瑞(Segue)公司的软件测试产品在中国有了更好的技术支持。
    参考网站:http://www.segue.com.cn/
    推荐指数:★★★★★

    2. MaxQ
        MaxQ
    是一个免费的功能测试工具。它包括一个HTTP代理工具,可以录制测试脚本,并提供回放测试过程的命令行工具。测试结果的统计图表类似于一些较昂贵的商用测试工具MaxQ希望能够提供一些关键的功能,比如HTTP测试录制回放功能,并支持脚本。
    参考网站:http://maxq.tigris.org/
    推荐指数:★★★☆☆

    3. Httpunit
        HttpUnit
    是一个开源测试工具,是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。
        HttpUnit
    提供的帮助类让测试者可以通过Java类和服务器进行交互,并且将服务器端的响应当作文本或者DOM对象进行处理。HttpUnit还提供了一个模拟Servlet容器,让测试者不需要发布Servlet,就可以对Servlet的内部代码进行测试。本文中作者将详细的介绍如何使用HttpUnit提供的类完成集成测试。
    参考网站:http://www.httpunit.org/
    推荐指数:★★★☆☆

    4. Junit
       
    是通用的测试 java 程序的测试框架JUnit可以对Java代码进行白盒测试。通过JUnitk可以用mock objects进行隔离测试;用Cactus进行容器内测试;用AntMaven进行自动构建;在Eclipse内进行测试;对Java应用程序、FilterServletEJBJSP数据库应用程序、Taglib等进行单元测试
    参考网站:http://www.junit.org/
    推荐指数:★★★★★

    5. Jtest
        Jtest
    Parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbCDesign by Contract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成器来添加更多的junit用例。Jtest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。
        JTest
    最大的优势在于静态代码分析,至于自动生成测试代码,当然生成测试代码框架也是不错的,但要做好单元测试用户还要做大量的工作。
    参考网站:http://www.parasoft.com/jsp/aep/aep.jsp
    推荐指数:★★★★☆

    6. Hansel
        Hansel
    是一个测试覆盖率的工具——与用于单元测试的 JUnit framework 相集成,很容易检查单元测试套件的覆盖情况。
    参考网站:http://hansel.sourceforge.net/
    推荐指数:★★☆☆☆

    7. Cactus
        Cactus
    是一个基于JUnit框架的简单测试框架,用来单元测试服务Java代码。Cactus框架的主要目标是能够单元测试服务端的使用Servlet对象的Java方法如HttpServletRequest,HttpServletResponse,HttpSession
       
    针对外部可测试组件运行时,需要把JUnit测试运行为发送HTTP请求给组件的客户端进程。为了在服务器容器内部运行JUnit测试,可以用Cactus框架,它是一个免费的开源框架,是Apache Jakarta项目的一部分。Cactus 包含了关于JUnit客户端如何连接到服务器,然后使测试运行的详细信息。
    参考网站:http://jakarta.apache.org/cactus/
    推荐指数:★★★★☆

    8. JFCUnit
        JFCUnit
    使得你能够为Java偏移应用程序编写测试例子。它为从用代码打开的窗口上获得句柄提供了支持;为在一个部件层次定位部件提供支持;为在部件中发起事件(例如按一个按钮)以及以线程安全方式处理部件测试提供支持。
    参考网站:http://jfcunit.sourceforge.net/
    推荐指数:★★★☆☆

    9. StrutsTestCase
        StrutsTestCase
    STC)框架是一个开源框架,用来测试基于 Struts Web 应用程序。这个框架允许您在以下方面进行测试:
    u
    ActionForm 类中的验证逻辑(validate() 方法)
    u
    Action 类中的业务逻辑(execute() 方法)
    u
    动作转发(Action Forwards)。
    u
    转发 JSP
    STC
    支持两种测试类型:
    u Mock
    方法 —— 在这种方法中,通过模拟容器提供的对象(HttpServletRequest HttpServletResponse ServletContext),STC 不用把应用程序部署在应用服务器中,就可以对其进行测试。
    u Cactus
    方法 —— 这种方法用于集成测试阶段,在这种方法中,应用程序要部署在容器中,所以可以像运行其他 JUnit 测试用例那样运行测试用例。
    参考网站:http:// strutstestcase.sourceforge.net/
    推荐指数:★★★★☆

    10. TestNG
        TestNG
    是根据 查看(881) 评论(0) 收藏 分享 管理

  • 软件测试工具速查手册

    2008-05-22 11:49:23

    1、 从测试功能上分
    1单元测试
    针对不同语言,如JUNIT
    2) 功级测试

    E—Test
    :功能强大,由于不是采用POST URL的方式回放脚本,所以可以支持多内码的测试数据(当然要程序支持),基本上可以应付大部分的WEB SITE
    MI
    公司的WINRUNNER
    COMPUWARE
    QARUN
    RATIONAL
    SQA ROBOT
    3
    压力测试
    MI
    公司的WINLOAD
    COMPUWARE
    QALOAD
    RATIONAL
    SQA LOAD
    4) 负载测试

    LOADRUNNER
    RATIONAL VISUAL QUANTIFY
    5 WEB测试工具
    MI
    公司的ASTRA系列
    RSW
    公司的E—TEST SUITE
    6 WEB系统测试工具
    WORKBENCH
    WEB APPLICATION STRESS TOOL
    WAS
    7数据库测试工具
    TESTBYTES
    8) 回归测试工具
    RATIONAL TEAM TEST
    WINRUNNER
    9嵌入式测试工具
    ATTOLTESTWARE
    。是ATTOLTESTWARE公司的自动生成测试代码软件测试工具,特别适用于嵌入式实时应用软件单元和通信系统测试。
    CODETEST
    AppliedMicrosystemsCorp.公司的产品,是广泛应用的嵌入式软件在线测试工具。
    GammaRay
    GammaRay系列产品主要包括软件逻辑分析GammaProfiler、可靠性评测工具GammaRET等。
    LogiScope
    TeleLogic公司的工具套件,用于代码分析、软件测试、覆盖测试。
    LynxInsure++
    LynxREAL-TIMESYSTEMS公司的产品,基于LynxOS的应用代码检测与分析测试工具。
    MessageMaster
    ElviorLtd.公司的产品,测试嵌入式软件系统工具,向环境提供基于消息的接口。
    VectorCast
    VectorSoftware.Inc公司的产品。由6个集成的部件组成,自动生成测试代码,为主机和嵌入式环境构造可执行的测试架构。
    10) 系统性能测试工具
    Rational Performance
    11) 页面链接测试
    Link Sleuth
    12) 测试流程管理工具
    Test Plan Control
    13) 测试管理工具
    TestDirector
    Rational
    公司的Test Manager
    Compuware
    公司的
    QADirector
    TestExpert
    :是Silicon Valley Networks公司产品的测试管理工具,能管理整个测试过程,从测试计划、测试例程、测试执行到测试报告。

    14) 缺陷跟踪工具
    TrackRecord

    15) 其他测试工具包
    TestVectorGenerationSystem
    T—VECTechnologies公司的产品。提供自动模型分析、测试生成、测试覆盖分析和测试执行的完整工具包,具有方便的用户接口和完备的文档支持。
    TestQuestPro
    TestQuest公司的非插入码式的自动操纵测试工具,提供一种高效的自动检测目标系统,获取其输出性能的测试方法
    TestWorks
    SoftwareResearch.Inc公司的一整套软件测试工具,既可单独使用,也可捆绑销售使用。

    2 从测试的方法上分:
    1 白盒测试工具
    白盒测试工主要有:NumegaPuRe、软件纠错工具(Rational Purify)。
    内存资源泄漏检查:
    Numega
    中的BounceChecher
    Rational
    Purify
    代码覆盖率检查:
    Numega
    TrueCoverage
    Rational
    PureCoverage
    TeleLogic
    公司的LogiScope
    Macabe
    公司的Macabe
    代码性能检查:
    Numega
    TrueTime
    Rational
    Quantify
    代码静态度量分析度量检查工具:LogiScopeMacabe
    黑盒测试工具主要有:QACenterSQATeamTestRational Visual Visual Test
    QACenter
    QACenter帮助所有测试人员创建一个快速、可重用的测试过程。这些测试工具自动帮助管理测试过程、快速分析和调试程序,包括针对回归、强度、单元、并发、集成、移植,容量和负载建立测试用例,自动执行测试和产生文档结果。QACenter主要包括以下几个模块:
    QARun
    :应用的功能测试工具。
    QALoad
    :强负载下应用的性能测试工具。
    QADirector
    :测试的组织设计和创建以及管理工具。
    TrackRecord
    :集成的缺陷跟踪管理工具。
    EcoTools
    :高层次的性能监测工具。


    3
    、部分具体测试工具的介绍
    1)、性能优化工具EcoScope
    EcoScope
    是一套定位于应用(即服务提供者本身)及其所依赖的所有网络计算资源的解决方案。EcoScope可以提供应用视图,并标出应用是如何与基础架构相关联的。这种视图是其他网络管理工具所不能提供的。EcoScope能解决在大型企业复杂环境下分析与测量应用性能的难题。通过提供应用的性能级别及其支撑架构的信息,EcoScope能帮助IT部门就如何提高应用性能提出多方面的决策方案。
    EcoScope
    的应用主要表现在以下几个方面:
    确保成功部署新应用
    维护性能的服务水平
    加速问题检测与纠正的高级功能
    定制视图有助于高效地分析数据
    2)、数据库测试数据自动生成工具——TestBytes
    在数据库开发的过程中,为了测试应用程序对数据库的访问,应当在数据库中生成测试用例数据,我们可能会发现当数据库中只有少量数据时,程序可能没有问题,但是当真正投入到运用中产生了大量数据时就出现问题了,这往往是因为程序的编写没有达到,所以一定及早地通过在数据库中生成大量数据来帮助开发人员完善这部分功能和性能。
    TestBytes
    是一个用于自动生成测试数据的强大易用的工具,通过简单的点击式操作,就可以确定需要生成的数据类型(包括特殊字符的定制),并通过与数据库的连接来自动生成数百万行正确的测试数据,可以极大地提高数据库开发人员、QA测试人员、数据仓库开发人员、应用开发人员的工作效率。
    3)、PC—LINT
    PC—LINT
    主要进行更严格的语法检查功能,还完成相当程度的语义检查功能。可以这样认为:PC—LINT是一个更加智能、更加严格的编译器。PC—LINT在实现语法和某些语义规则检查时,是通过参数配置完成的,它的选项就有数百个之多,因此,在使用PC—LINT过程中,了解选项的含义也很重要。
    4)、TCL
    TCL
    Tool Command Language的缩写,它是一种很流行的脚本解释器,尤其在测试领域,它的最大特点是可移植性好,接口简单,方便,可以很容易地嵌入到软件中,作为自己的解释器使用。
    TCL
    提供两种接口:编程接口和用户接口。编程接口是通过LIBDLL形式提供的,提供了一些函数(命令)供调用,包括:分配一个解释器指针(对象);初始化解释器(指针);注册扩展函数等。用户接口很简单,即编写的脚本,脚本里面包含对扩展命令的调用。
    5VB测试工具:VB Watch
    6Java 程序的测试工具
    1
    Bean—Test
    2
    EJBQuickTest
    3
    JStyle
    4
    JTest
    5
    HttpUnit
    6
    JUnit
    7)、覆盖测试
    C—Cover
    C—Cover
    是一个测试工具软件,用来找出没有被测到的代码,并报告测试的覆盖率。C—Cover
    只支持C/C++的代码覆盖率分析,其它语言不支持。但不受OS的限制

    单元测试方面:(对开发人员比较有用) J-Unit工具。
     
    功能测试方面:E-test是个不错的选择,功能很强大,由于不是采用Post URL的方式回放脚本,所以可以支持多内码的测试数据(当然要程序支持)。基本上可以应付大部分的Web Site
     
    如果只是利用脚本回放代替手工劳动,或者做对页面响应数的性能测试,Microsoft Web Application Stress Tool是个不错的选择。
      
    另外,在性能测试方面,PureLoad也是一个不错的工具,完全用Java写成,可以测试各种C/S程序,如SMTP Server等。这两个工具都是使用Post URL的方法测试Web Application的。对大量使用Javascrīpt的页面不太适合。当然,如果程序在Unixlinux下面运行的话,可以直接编写Shell 脚本程序,更加方便。
     
    另外,还有很多专门的工具,比如说Linkbot是专门作页面链接测试的。
     
    另外,测试流程管理工具也有不少,个人用过也一直在用的是Test Plan Control,短小精悍,不错。   至于WinRunnerLoadRunner之类,因为没有License,所以都没怎么用过,惭愧。不过我看过一篇英国人评价英国测试市场上最流行的五个软件的文章。WinRunner得分最高。
     
    测试工具从测试的方法上可以分为两种:白盒测试和黑盒测试   白盒测试工具主要有:
     
    内存资源泄漏检查:Numega中的bouncechecker,RationalPurify
      
    代码覆盖率检查:Numega中的truecoverage,RationalPurecoverageTelelogic公司的 logiscope, Macabe公司的Macabe   代码性能检查:Numega中的truetime,RationalQuantify
     
    代码静态度量分析质量检查工具:logiscopeMacabe
     
    黑盒测试工具主要有:   客户端功能测试:MI公司的winrunner,compuwareqarun,RationalSQA robot等等
     
    服务器端压力性能测试: MI公司的winload,compuwareqaload,RationalSQA load等等
      Web
    测试工具:MI公司的Astra系列,rsw公司的e-test suite等等
     
    测试管理工具:rationaltest manager,compuwareqadirector等等,此外还有缺陷跟踪工具 trackrecord等。
     
    数据库测试工具:TestBytes
     
    黑盒测试工具:QACenterSQATeamTestRational Viaual Test
     
    回归测试工具:Rational TeamTestWinRunnerMI公司)
      WEB
    系统测试工具:TESTWorkberchWeb Appication Stress ToolWAS
     
    白盒测试工具:Numega PuRe、软件纠错工具(Rational Purity)。
     
    嵌入式测试工具:Logiscope(静态测试工具)、CodeTest
     
    系统负荷测试工具:RationalPerformance
     
    涵盖测试工具范围评估工具
     
    软件性能测试工具:LoadRunnerMI产品)、Rational Visual Qantify
     
    测试管理工具:TestDirectorMI产品支持整个生命周期中测试流程管理)

     

    测试基于Web的应用程序
    测试web应用程序和测试桌面系统用很多共同点:例如你需要和执行所有标准测试类型一样测试常见的功能点,配置及兼容性。但是由于与应用程序交互的所有分布式系统组件的复杂性成倍的增加的原因,导致web应用程序测试更加的困难。当我们在web环境中看到一个错误时,通常很难指出错误发生的地方,并且由于我们看到的行为或我们接受到的错误信息可能是发生在Web系统中不同部分的错误的结果。错误可能是很难重现的。那么我们如何在web系统中分析错误呢,并且为了重现那些错误又应该做哪些考虑呢?
    当我们对潜在的技术有一个了解时,我们可以更好的最大化测试效率-编写更多可重现的bug报告并且在较少的时间里发现更多的错误。说比做更加容易-特别是在web环境里。Web环境在错误倾向技术变量是密度高的。以下是测试Web应用程序的需要考虑的5个基本事项:
    1
    当我们在客户端看到一个错误时,我们所看到的是错误的症状,而不是错误本身。
    2
    错误可能是与环境相关的,并且可能不出现在不同的环境里
    3
    错误可能是存在代码或是配置中的
    4
    错误可能驻留在几个层中的任一个层中
    5
    检查操作系统中的两个类别-静态vs动态-需要不同的方法。
    现在让我们来详细的看看这5个需要考虑的事项。
     
    1.    
    什么是我们真正看到的东西?是一个错误还是一个症状?
    如果不诊断环境,我们不能够确定是什么导致了一个症状出现。如果客户端和服务器端的一个环境特定的变量被移除或被改变的话,我们或许将不能够重现问题。
    查看(481) 评论(1) 收藏 分享 管理

  • BUGZILLA安装总结(待完善和补充)

    2008-03-01 15:19:00

     

    Windows XP下安装基于IISBugzilla

    安装准备:

    1Windows平台下的perl解释器,推荐使用ActivePerl-5.8.8.822

    下载地址:http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl

    2MySQL数据库以及MySQL控制台,使用版本为4.1
    下载地址为: http://www.mysql.com/downloads/index.html

    http://www.mysql.com/downloads/mysql-5.0.html (MySQL 5.0 Alpha)

    3Bugzilla,目前最新版本为3.12

    下载地址:http://www.bugzilla.org/download.html

    相关软件的安装

    一、安装mysql

    Mysql自定义安装到C:\Mysql,因为在BugzillaChecksetup.pl中默认Mysql安装在C:\mysql,如果安装到了其他目录,那么安装时需要对该文件进行手工修改,指定Mysql的安装路径。对于Mysql的安装,一路点击下一步即可。安装完成后,可以继续配置Mysql,设置新密码。

    也可以cmd进入命令行窗口在C:\mysql\bin目录下运行mysql –u root –p 命令,进入到mysql的命令提示界面。其中-u表示使用的用户名,rootlinux 系统中的默认管理员身份,-p后跟密码,默认为空。可进入mysql后使用SQL语句“UPDATE user SET password = password('引号内为想该的密码') WHERE user = 'root';”来更改密码。

    安装完成后,手动运行C:\mysql\bin\winmysqladmin.exe文件,它会自动将mysql数据库注册为服务并启动。此操作仅需运行一次,因为Mysql注册的服务为自动类型,所以每次计算机启动时均会自动运行。


    然后,我们需要在mysql中创建Bugzilla的用户以及数据库,主要三条命令为:

    a、建立数据库bugs
    create database bugs;

     

    b、建立用户bugs,密码为空,对Bugs数据库具有一定权限
    GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE, LOCK TABLES,DROP,REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY '';

     

    c、从 mysql 数据库授权表中重新装载权限。
    FLUSH PRIVILEGES;

    执行过程如下图:(这里我们建立的数据库名为Bugs,数据库用户名为Bugs,密码为空)

    注意事项:

    1、   安装Mysql时,要确保电脑中没有老版本的Mysql,如果有首先是要卸载mysql服务,不然就算卸载了mysql程序,服务中依然有mysql这项,问题就解决不了.假设我的mysql装在C:\MYSQL,先在我的电脑->管理->服务中将Mysql服务停止,然后在命令提示符c:\mysql\bin下运行mysqld-nt  -remove(中间有空格),会提示卸载成功.然后再在    控制面板 >>> 添加或删除程序  中卸载mysql,之后重启,再装上mysql运行mysqld.exe(win2000下是mysqld-nt.exe),命令提示符框一闪而过,这样你这可以在任务管理器中看到mysql这个进程了

    二、安装Activeperl
    Activeperl
    的安装很简单,一路点击Next即可,它会自动安装到C:\perl目录。同时在系统变量Path中增加自己的 C:\perl\bin路径信息。

    三、安装、配置WEB服务器。
    对于IIS,一般Windows 2000会默认安装,如果没有安装,那么可以在控制面板 -> 添加删除程序 -> 添加/删除Windows组件中来添加“Internet 信息服务器,系统会自动安装相关组件(此时需要 Windows 的安装盘)。

    配置Web 服务器的目的就是要让Web服务器能够调用perl去解析执行.pl.cgi的文件,同时增加Index.cgi为默认文档,然后增加Bugzilla所在目录的WEB共享别名。

    IIS的配置
    对于IIS,在安装ActivePerl的时候安装程序为我们自动生成了.pl.plx的映射,但是没有生成.cgi的映射,我们可以在 IIS管理器里面进行配置,在默认网站或者Internet信息服务上面按右键选择属性出现服务器属性对话框(依据IIS版本和设置所影响范围不同略有不同

    虚拟目录标签下,选择配置按钮、“添加”应用程序扩展名映射。

    可执行文件名:

    C:\Perl\bin\perl.exeperl目录)  -xC:\Bugzillabugzilla目录)  -wT "%s"  %s
     扩展名: .cgi
     动作

     限制为:GET,HEAD,POST

     然后,在文档标签下,添加index.cgi文件为默认文档。

     

      注意事项:

      1、   对于没有进行过配置的IIS,可能会禁止匿名访问,如果我们要允许匿名访问,可以在设置页面的目录安全性标签中的匿名访问和验证控制中选择编辑,去掉集成Windows验证选项即可。

      2、   如果Bugzilla所在目录为NTFS分区,还需要设置所在目录的安全属性,允许IUSR_XX(Internet 来宾帐户,这里XXXX和计算机名相同)去读写该目录。

      3、   如果默认网站停止不能启动,可能是80端口被迅雷或其他应用程序占用的原因,停止或更改其他程序端口即可

     

    四S四、Perl脚本的安装以及Bugzilla的初步配置。
      Bugzilla为我们准备了一个很好的脚本文件checksetup.pl来进行配置,我们随时可以运行chekcsetup.pl文件来进行服务器配置而不会对Bugzilla系统造成任何影响。

     1、运行该脚本的方法是:

    在命令行下进入Bugzilla的主目录,键入:perl  checksetup.pl,运行后,该脚本会给出系统所缺的各种元素乃至获取办法。

     

     2、初次运行的时候,系统首先会验证perl模块是否足够,一般会缺少比较多的perl模块。如果我们是单独下载的每个perl模块进行安装,则需要使用ppm install <perl模块名.ppd> 进行。

    下载地址:http://search.cpan.org/(注意模块版本应高于要求的版本)


    如果可以连接上网络,那么一切很简单,只需要进入bugzilla目录下:

    C:\>cd bugzilla

     

    C:\Bugzilla>ppm

    在弹出的Perl Package Manager窗口下安装bugzilla需要的perl模块,如果有缺少的或版本不对的再单独下载安装。

     

     3、当插件安装完后,再次运行perl checksetup.pl,系统会生成localconfig文件,此文件是包含了Bugzilla的一些配置信息,如果您的mysql安装到C:\mysql,所创建的数据库名称为bugs 数据库用户为bugs,密码为空,那么不需要对localconfig文件进行任何修改,否则需要对localconfig的相应条目进行修改。

    # What SQL database to use. Default is mysql. List of supported databases

    # can be obtained by listing Bugzilla/DB directory - every module corresponds

    # to one supported database and the name corresponds to a driver name.

    $db_driver = 'mysql';

     

    # The DNS name of the host that the database server runs on.

    $db_host = 'localhost';

     

    # The name of the database

    $db_name = 'bugs';

     

    # Who we connect to the database as.

    $db_user = 'bugs';

     

    # Enter your database password here. It's normally advisable to specify

    # a password for your bugzilla database user.

    # If you use apostrophe (') or a backslash (\) in your password, you'll

    # need to escape it by preceding it with a '\' character. (\') or (\)

    # (Far simpler just not to use those characters.)

    $db_pass = '';

     

    # Sometimes the database server is running on a non-standard port. If that's

    # the case for your database server, set this to the port number that your

    # database server is running on. Setting this to 0 means "use the default

    # port for my database server."

    $db_port = 3306;

     

     4、修改好localconfig文件,再次运行 perl checksetup.pl,如果不出意外的话,会顺利编译模板,然后建立数据库,最后提示输入超级用户信箱、用户姓名以及口令。输入后,Bugzilla 基本安装完成,可以从 web 上来进行访问了。

     

     注意事项:

     1WindowsXP下安装Perl Cpan模块

    a.http://search.cpan.org/搜索你所需要的模块下载,一般是gz,或者tgz格式

    b.winRAR之类解压缩软件接压缩

    c.进入COMMAN模式,进入到刚才解压缩的文件夹,含有“Makefile.PL”文件的目录下:

    依次运行:

            perl Makefile.PL
            nmake
            nmake test
            nmake install

    安装就完成了.(有依赖关系的模块需要先安装依赖模块)

     

     2、服务器输入http://localhost/Bugzilla/可以访问bugzilla,其他电脑输入服务器地址http://服务器IP/Bugzilla/不能访问

       可能是服务器防火墙阻止了80端口的访问

    控制面板->防火墙->例外->添加端口

     

    遇到的问题

    ⑴用帐号登录BUGZILLA后,每页上方都会显示:

      Use of uninitialized value  in integer addition (+) at c:/Perl/lib/Time/Local.pm line 76.

      解决方法:

         edit c:/perl/lib/Time/Local.pm, look for the following line   (should  be at line 35):

         $MinInt = -$MaxInt - 1;

         change it to:

         $MinInt = 0;

     

    BUGZILLA安装参考文章链接

    http://www.51testing.com/?98723/action_viewspace_itemid_11299.html

    http://dev.csdn.net/article/49/49481.shtm

    http://blog.csdn.net/ycw/archive/2004/02/07/4187.aspx

    BUGAILLA安装技巧和注意事项

    ⑴这里讲一讲首页中的“常用功能”、”常用链接“的链接显示有些不习惯,可以修改 template\cn\default\global\common-links.html.tmpl
    <ul> <li>  转换成表格 <table> <tr> <td> ,显示在一行中,就好看多了。

      同样的,英文也处理一下,
    template\en\default\global\common-links.html.tmpl
    <ul> <li>  转换成表格 <table> <tr> <td> ,显示在一行中,就好看多了。

     

    ⑵设置parameters

    用超级用户登录后,点击parameters设置bugzilla的参数,其中urlbase是以后发邮件中包含的,.所以一定要修改它, maintainer修改为超级用户,下面的就不是那么重要了,点击最下面的Submit Changes完成修改,再回到这个页面上查看,看是否已经修改,如果不能修改,,,那么就只有出绝招了,嘿嘿,,打开bugzilla目录C:\bugzilla\data下的params,在这里面手动修改它的参数,完成后就OK.

    ⑶commentonresolve:设为ON,系统将强制要求开发者处理完BUG后,必须填写修改的内容。

    关于Bugzilla2.20发邮件以及邮件乱码的问题

    1. 刚才试了,在Bugzilla2.20下发邮件,不必要安装什么特殊的sendmail.exe软件之类,只需要Perl的Mail::Mailer模块(这个模块你肯定装了,不然Bugzilla都转不起来);当然, 与email发送相关的参数 如 smtp server之类一定要在 Bugzilla的系统设置(Parameters)里面 设好;

    2. 要想邮件不出现乱码,在使用UTF8编码的汉化包下,做如下改动:

    a. \Bugzilla\CGI.pm的第55行改为  $self->charset('UTF-8');

    b. 进入Bugzilla的系统设置(Parameters)里面,在 newchangedmail 一项里的 文本框文字的第一行加上Content-type: text/plain; charset=UTF-8 ,加后变为:
    Content-type: text/plain; charset=UTF-8
    From: bugzilla-daemon
    To: %to%

    .......

    保存退出。

    c. 部分用户反映,经过以上两个步骤后,收到的email的主题仍为乱码,网上提供的解决方案是:

    打开文件 \Bugzilla\BugMail.pm, 在第 586 行加上两行:

    use Encode;
    $substs{"summary"} = encode('MIME-Q', $substs{"summary"});

    不知什么原因,我用Netscape Client接受的邮件的主题行仍然为乱码。。但用Foxmail接受的全部OK。

    采用GB2312编码格式的汉化包(不推荐)可参照以上步骤解决邮件乱码问题。

    (注明:我使用此方法并没有解决我邮件乱码的问题,但感觉这个方法以后会有用,所以贴在此处。)


     

  • 测试工具的选择和使用

    2007-12-17 16:22:05

    Parasoft白盒测试工具

    工具名

    支持语言环境

    简介

    Jtest

    Java

    代码分析和动态类、组件测试

    Jcontract

    Java

    实时性能监控以及分析优化

    C++ Test

    C,C++

    代码分析和动态测试

    CodeWizard

    C,C++

    代码静态分析

    Insure++

    C,C++

    实时性能监控以及分析优化

    .test

    .Net

    代码分析和动态测试

    Compuware白盒测试工具

    工具名

    支持语言环境

    简介

    BoundsChecker

    C++,Delphi

    APIOLE错误检查、指针和泄露错误检查、内存错误检查

    TrueTime

    C++,Java,Visual Basic

    代码运行效率检查、组件性能的分析

    FailSafe

    Visual Basic

    自动错误处理和恢复系统

    Jcheck

    M$ Visual J++

    图形化的纯种和事件分析工具

    TrueCoverage

    C++,Java,Visual Basic

    函数调用次数、所占比率统计以及稳定性跟踪

    SmartCheck

    Visual Basic

    函数调用次数、所占比率统计以及稳定性跟踪

    CodeReview

    Visual Basic

    自动源代码分析工具

    Xunit白盒测试工具

    工具名

    支持语言环境

    官方站点

    Aunit

    Ada

    http://www.libre.act-europe.fr

    CppUnit

    C++

    http://cppunit.sourceforge.net

    ComUnit

    VB,COM

    http://comunit.sourceforge.net

    Dunit

    Delphi

    http://dunit.sourceforge.net

    DotUnit

    .Net

    http://dotunit.sourceforge.net

    HttpUnit

    Web

    http://c2.com/cgi/wiki?HttpUnit

    HtmlUnit

    Web

    http://htmlunit.sourceforge.net

    Jtest

    Java

    http://www.junit.org

    JsUnit(Hieatt)

    Javascrīpt 1.4以上

    http://www.jsunit.net

    PhpUnit

    Php

    http://phpunit.sourceforge.net

    PerlUnit

    Perl

    http://perlunit.sourceforge.net

    XmlUnit

    Xml

    http://xmlunit.sourceforge.net

    主流黑盒功能测试工具

    工具名

    公司名

    官方站点

    WinRunner

    Mercury

    http://www.mercuryinteractive.com

    Astra Quicktest

    Mercury

    http://www.mercuryinteractive.com

    Robot

    IBM Rational

    http://www.rational.com

    QARun

    Compuware

    http://www.compuware.com

    SilkTest

    Segue

    http://www.segue.com

    e-Test

    Empirix

    查看(548) 评论(0) 收藏 分享 管理