发布新日志

  • Jmeter应用

    2008-12-16 18:14:03

    使用JMeter 完成常用的压力测试
    2008年11月13日 星期四 22:59
    本文介绍了 JMeter 相关的基本概念。并以 JMeter 为例,介绍了使用它来完成最常用的三种类型服务器,即 Web 服务器、数据库服务器和消息中间件,压力测试的方法、步骤以及注意事项。

            讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试。但是软件仅仅只是功能正确是不够的。在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度。影响软件响应速度的因素有很多,有些是因为算法不够高效;还有些可能受用户并发数的影响。

            在众多类型的软件测试中,压力测试正是以软件响应速度为测试目标,尤其是针对在较短时间内大量并发用户的访问时,软件的抗压能力。本文以 JMeter 为例,介绍了如何使用它来完成常用的压力测试:Web 测试、数据库测试和 JMS 测试。

    概述

            JMeter 最早是为了测试 Tomcat 的前身 JServ 的执行效率而诞生的。到目前为止,它的最新版本是2.1.1,它的测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据库、JMS、Web Service、LDAP等多种对象的测试能力。在最新的 2.1.1 中,它还提供了对于 JUNIT 的测试。

            JMeter 的安装非常简单,从官方网站上下载,解压之后即可使用。运行命令在%JMETER_HOME%/bin 下,对于 Windows 用户来说,命令是 jmeter.bat。运行前请检查JMeter 的文档,查看是否具备相关的运行条件。对于最新版(即2.1.1),需要JDK的版本要求是JDK 1.4。

            JMeter 的主要测试组件总结如下:

    1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。

    2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。

    3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。

    4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

    5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

    6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。

    7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

    8. 定时器负责定义请求之间的延迟间隔。

    JMeter的使用非常的容易,在 ONJava.com 上的文章 Using JMeter 提供了一个非常好的入门。

    常用测试

            压力测试不同于功能测试,软件的正确性并不是它的测试重点。它所看重的是软件的执行效率,尤其是短时间内访问用户数爆炸性增长时软件的响应速度,压力测试 往往是在功能测试之后进行的。在实际的开发过程中,软件潜在的效率瓶颈一般都是那些可能有多个用户同时访问的节点。

            就目前 Java EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器、数据库服务器和 JMS 服务器。它们都是请求主要发生的地点,请求频率较其它的节点要高,而且处于请求序列的关键路径之上。如果它们效率无法提高的话,对于整个软件的效率有致命 的影响。而且在这些节点上一般都会发生较大规模的数据交换,有时其中还包含有业务逻辑处理,它们正是在进行压力测试时首先需要考虑的。

    本文以这三种节点为例,介绍如何使用 JMeter 来完成针对于它们的压力测试。

    Web 服务器

            对于大多数的项目来说,并不会自行开发一个Web服务器,因此Web服务器压力测试的对象实际就是--发布到Web服务器中的软件。最简单的Web测试计划只需要三个 JMeter 的测试元件,如下图:

                

    其中:

    在线程组中定义线程数、产生线程发生的时间和测试循环次数。
    在http请求中定义服务器、端口、协议和方法、请求路径等。
    表格监听器负责收集和显示结果。
    这种设置对于包含了安全机制的 web 应用是不够的,典型的 web 应用一般都会:

    1. 有一个登录页,它是整个应用的入口。当用户登录之后,应用会将用户相关的安全信息放到 session 中。

    2. 有一个 filter,它拦截请求,检查每个请求相关的 session 中是否包含有用户安全信息。如果没有,那么请求被重定向到登录页,要求用户提供安全信息。

            在这种配置下应用上面的测试计划,那么除了登录页之外的其它请求都将因为缺少用户安全信息,而使请求实际定位到登录页。如果不加断言,那么在监听器看来所 有的请求都是成功。而实际上,这些请求最终都没有到达它们应该去的地方。显然,这种测试结果不是我们所期望的。

    为了成功的测试,至少有2种方法:

    方法一,去掉程序的安全设置,如filter,使得不需要用户安全信息也能访问受限内容;
    方法二,不修改程序,使用JMeter提供的"Http URL重写修饰符"或"Http Cookie管理器"。
    对于第一种方法,有其局限性:

            需要修改程序配置,如去掉web.xml中关于安全filter的设置。需要维护多个版本的web.xml,如压力测试和功能测试分别各自的web.xml,增加了维护成本,而且有可能会在测试之后忘记将web.xml修改回来。
            对于一些需要用户安全信息的页面无能为力,如某些业务审计操作需要用户安全信息来记录。因为缺少这样的信息,注定了测试的失败。如果解决为了这个问题进一步的修改程序,那么因为存在多个版本的程序,那么其维护难度将大大增加。
            虽然,第二种方法配置难度增加了,但是它不用修改程序。而且还可将测试计划保存成文件,以便重复使用。因此,选用第二种方法是较为理想的做法。下面以一个简化的例子说明使用方法二的配置步骤。

    1. 例子由以下几个文件组成:

            AuthorizenFilter.java,过滤器负责检验session中是否存在用户信息。如果没有,那么就转向到 login.jsp。它的主要方法 doFilter 内容如下:

    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
                         throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest)request;
        HttpServletResponse res = (HttpServletResponse)response;
        HttpSession session= req.getSession();
        User user = (User)session.getAttribute("user");
        if(null == user){
            String uri= req.getRequestURI();
            //如果请求页是登录页,不转向
            if( uri.equalsIgnoreCase("/gWeb/login.jsp")){
                chain.doFilter(request, response);
       } else{
                res.sendRedirect("/gWeb/login.jsp");
       }
    }else{
            chain.doFilter(request, response);
        }   
    }


    User.java,用户类负责记录用户的信息。为了简化,这里的登录操作只允许指定用户名和密码。主要内容如下:

    public class User {
    private String user;
    private String pwd;
    public User(String user, String pwd) {
       this.user = user;
       this.pwd = pwd;
    }
    public boolean login(){
       return user.equals("foxgem") && pwd.equals("12345678");
    }
    public String getUser() {
       return user;
    }
    public void setUser(String user) {
       this.user = user;
    }
    }


    Login.jsp 和welcome.jsp。其中 login.jsp 负责生成 User 对象,并调用 User 的login。当 login 返回为 true 时转向到 welcome.jsp。其验证部分的代码:

    <%
    if( request.getParameter("Submit") != null) {
       User ur= new User( request.getParameter("user"), request.getParameter("pwd"));
          if( ur.login()){
          session.setAttribute("user", ur);
             response.sendRedirect("/gWeb/welcome.jsp");
          } else{
             session.setAttribute( "LOGIN_ERROR_MSG",
    "无效的用户,可能原因:用户不存在或被禁用。");
             response.sendRedirect("/gWeb/index.jsp");
             return;
          }
    }
    %>


    web.xml,配置 filter 拦截所有访问 JSP 页面的请求:

    <filter>
        <filter-name>authorizen</filter-name>
        <filter-class>org.foxgem.jmeter.AuthorizenFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>authorizen</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

    2. 创建如下结构的Web测试计划:

          

    其中主要测试元件说明如下:

            http请求默认值负责记录请求的默认值,如服务器、协议、端口等。
            第一个http请求,请求login.jsp,并附加验证所需要的参数(user=foxgem,pwd=12345678,Submit=Submit);其包含的响应断言验证url中包含"welcome.jsp",这一点可以从程序中反应。
            第二个http请求,请求是welcome.jsp;其包含的响应断言验证响应文本中包含"foxgem",它是welcome.jsp页面逻辑的一部分。
            http cookie管理器负责管理整个测试过程中使用的cookie,它不需要设置任何属性。
            循环控制器设置发送第二个请求的循环次数,表格监听器负责收集和显示第二个请求的测试结果。
            启动测试计划之后,执行的顺序是:首先,第一个请求登录页进行登录;成功登录之后,使用循环控制器执行第二个请求。请求welcome.jsp时,响应断 言用来验证是否确实是welocme.jsp来处理请求,而不是因为其它页。在这个测试计划中需要注意的是http cookie管理器。正是由于它的作用,使得第二个请求能顺利的发送到welcome.jsp进行处理,而不是因为缺少用户安全信息转发到 login.jsp。

            在这个例子中,我们并没有在程序中使用cookie(使用的是session),那么http cookie管理器怎么会起作用呢?这是因为在servlet/jsp规范中对于session的状态跟踪有2种方式:

            使用cookie,保留和传递sessionid。它不要求程序对于url有什么特殊的处理,但是要求浏览器允许cookie。在这个例子中,就是这种情形。
            使用url重写,每次显式的在浏览器和服务器之间传递sessionid。它要求程序对url进行编码,对浏览器没有要求。
            对于第二种情形,可以使用JMeter前 置管理器中的http url重写修饰符来完成。对于Tomcat,Session参数是jsessionid,路径扩展使用";"。使用url编码时需要注意,必须将浏览器的 cookie功能关闭。因为url编码函数,如encodeURL,会判断是否需要将sessionid编码到url中。当浏览器允许cookie时,就 不会进行编码。

            如果cookie而不是session来保存用户安全信息,那么直接使用http cookie管理器就行了。此时,需要将使用的cookie参数和值直接写到管理器中,由它负责管理。对于其它的cookie使用,也是如此操作。

            登录问题解决之后,对于 Web 服务器的测试就没什么难点了。剩下的就是根据实际需要,灵活运用相关的测试组件搭建编写的测试计划。(当然,对于安全问题还有其它的使用情景。在使用时需要明确:JMeter 是否支持,如果支持使用哪种测试组件解决。)

    数据库服务器

            数据库服务器在大多数企业项目中是不可缺少的,对于它进行压力测试是为了找出:数据库对象是否可以有效地承受来自多个用户的访问。这些对象主要是:索引、触发器、存储过程和锁。通过对于SQL语句和存储过程的测试,JMeter 可以间接的反应数据库对象是否需要优化。

            JMeter 使用 JDBC 发送请求,完成对于数据库的测试。一个数据库测试计划,建立如下结构即可:

           


    其中:

            JDBC连接配置,负责配置数据库连接相关的信息。如:数据库url、数据库驱动类名、用户名和密码等等。在这些配置中,"绑定到池的变量名" (Variable Name Bound to Pool)是一个非常重要的属性,这个属性会在JDBC请求中被引用。通过它, JDBC请求和JDBC连接配置建立关联。(测试前,请将所需要的数据库驱动放到JMeter的classpath中)。
    JDBC请求,负责发送请求进行测试。
    图形结果,收集显示测试结果。
            在实际的项目中,至少有2种类型的JDBC请求需要关注:select语句和存储过程。前者反应了select语句是否高效,以及表的索引等是否需要优 化;后者则是反应存储过程的算法是否高效。它们如果效率低下,必然会带来响应上的不尽如人意。对于这两种请求,JDBC请求的配置略有区别:

    Select语句

           

    存储过程

            

            如果对于Oracle,如果测试的是函数,那么也可以使用select语句来进行配置,此时可以使用:select 函数(入参) from dual形式的语句来测试,其中dual是oracle的关键字,表示哑表。对于其它厂商的数据库产品,请查找手册。

    JMS服务器

            MOM 作为消息数据交换的平台,也是影响应用执行效率的潜在环节。在 Java 程序中,是通过 JMS 与 MOM 进行交互的。作为 Java 实现的压力测试工具,JMeter 也能使用 JMS 对应用的消息交换和相关的数据处理能力进行测试。这一点应该不难理解,因为在整个测试过程中,JMeter 测试的重点应该是消息的产生者和消费者的本身能力,而不是 MOM本身。

            根据 JMS 规范,消息交换有2种方式:发布/订阅和点对点。JMeter针对这两种情形,分别提供了不同的Sampler进行支持。以下MOM我们使用ActiveMQ 3.2.1,分别描述这两种消息交换方式是如何使用 JMeter 进行测试。

    1. 测试前的准备(两种情况都适用)

            JMeter 虽然能使用 JMS 对 MOM 进行测试,但是它本身并没有提供JMS需要使用的包。因此,在测试之前需要将这些包复制到 %JMETER_HOME%/lib 下。对于 ActiveMQ 来说,就是复制 %ACTIVEMQ_HOME%/lib。%ACTIVEMQ_HOME%/optional 是可选包,可根据实际情况来考虑是否复制。

            JMeter 在测试时使用了 JNDI,为了提供 JNDI 提供者的信息,需要提供 jndi.properties。同时需要将 jndi.properties 放到 JMeter 的 classpath 中,建议将它与 bin下的 ApacheJMeter.jar 打包在一起。对于 ActiveMQ,jndi.properties 的示例内容如下:


    java.naming.factory.initial = org.activemq.jndi.ActiveMQInitialContextFactory
    java.naming.provider.url = tcp://localhost:61616

    #指定connectionFactory的jndi名字,多个名字之间可以逗号分隔。
    #以下为例:
    #对于topic,使用(TopicConnectionFactory)context.lookup("connectionFactry")
    #对于queue,(QueueConnectionFactory)context.lookup("connectionFactory")
    connectionFactoryNames = connectionFactory

    #注册queue,格式:
    #queue.[jndiName] = [physicalName]
    #使用时:(Queue)context.lookup("jndiName"),此处是MyQueue
    queue.MyQueue = example.MyQueue

    #注册topic,格式:
    # topic.[jndiName] = [physicalName]
    #使用时:(Topic)context.lookup("jndiName"),此处是MyTopic
    topic.MyTopic = example.MyTopic


    2. 发布/订阅

            在实际测试时,发布者和订阅者并不是需要同时出现的。例如,有时我们可能想测试单位时间内消息发布者的消息产生量,此时就不需要消息发布者,只需要订阅者就可以了。本例为了说明这两种Sampler的使用,因此建立如下的测试计划:

               

            其中JMS Publisher和JMS Subscriber的属性:选择"使用jndi.properties",连接工厂是connectionFactory,主题是MyTopic,其它 使用默认配置。对于JMS Publisher,还需提供测试用的文本消息。

            启动ActiveMQ,运行测试计划。如果配置正确,那么与ActiveMQ成功连接之后,在JMeter的后台会打印出相关信息。在测试过程 中,JMeter 后台打印可能会出现java.lang.InterruptedException 信息,这个是正常现象,不会影响测试过程和结果。这一点可以从 bin 下的 jmeter.log 看出。

    3. 点对点

            对于点对点,JMeter只提供了一种Sampler:JMS Point-to-Point。在例子中,建立如下图的测试计划:

               

            其中:Communication style是Request Only。对于另一种风格:Request Response,会验证收到消息的JMS Header中的JMSCorrelationID,以判断是否是对请求消息的响应。

    结论

            本文介绍了如何使用JMeter完成最常用的三种类型服务器的压力测试,这三种类型的压力测试涵盖了很大一部分的使用情形,然而需要记住的是工具毕竟是工 具。效果好不好,关键还是在于使用的人。而且,对于压力测试,测试计划的好坏是关键。针对不同的情况,分析后有针对的进行测试,比起拿枪乱打、无的放矢显 然要高效得多。

  • The JMS Protocol Add-in for HP Loadrunner

    2008-12-04 09:53:14

    The JMS Protocol Add-in from J9 Technologies helps you stress the messaging middleware layer and identify bottlenecks before deploying in production. Based on years of testing and diagnostics expertise in helping some of the world's largest enterprises, this solution automatically captures all JMS traffic going from a Java application to the backend message queues and plays them back to directly exercise the messaging tier for high concurrency testing.

    If message-oriented middleware(MOM) is the backbone of your SOA environment, use the JMS protocol for LoadRunner to ensure adequate throughput

    Automatic playback of test messages in order to validate slow-consumer problems


    Simulate both sending and receiving messages

    Test performance of your messaging provider for integration between systems.

     

    Benefits

    Shorten testing cycles

    Deliver significant time savings in the testing of middleware and backend tiers

    Improve application service levels

    Fully stress SOA middleware to prevent future performance and availability issues

    Isolate messaging middleware problems

    Find slow consumer/fast producer bottlenecks by testing both sides of a JMS transaction

    Overcome communication barriers between QA, development and operations teams

    Empower QA Engineers

    Enable QA engineers to extensively test message systems without requiring JAVA knowledge and without additional training

    Supported Platforms

    > all common Java application servers including Weblogic and Websphere.

    > all common JMS providers including WebSphereMQ, Sonci MQ, and Tibo EMS

    > Java 1.4 and up

    > Compatible with LoadRunner 9.1 and Performance Center 9.1 and above

     

     

    目前只提供使用版本

    下载地址

    http://j9tech.com/products-jms.html。在这里找

  • Using JMeter with WebSphere MQ

    2008-12-01 16:54:26

  • 整理的一些开源测试工具

    2008-11-22 10:03:28

    Linux Test Project
    http://ltp.sourceforge.net/
    工具描述:
    Linux Test Project是一个测试Linux内核和内核相关特性的工具集合。该工具的目的是通过把测试自动化引入到Linux内核测试,提高Linux的内核质量。
    使用环境:
    Linux

    MaxQ
    http://maxq.tigris.org/
    工具描述:
    MaxQ是一个免费的功能测试工具。它包括一个HTTP代理工具,可以录制测试脚本,并提供回放测试过程的命令行工具。测试结果的统计图表类似于商用测试工具,比如Astra QuickTest和Empirix e-Test,这些商用工具都很昂贵。MaxQ希望能够提供一些关键的功能,比如HTTP测试录制回放功能,并支持脚本。
    使用环境:
    Java 1.2以上版本

    WebInject
    http://www.webinject.org/
    工具描述:
    WebInject是一个针对Web应用程序和服务的免费测试工具。 它可以通过HTTP接口测试任意一个单独的系统组件。可以作为测试框架管理功能自动化测试和回归自动化测试的测试套。
    使用环境:
    Windows, OS Independent, Linux

    开源测试工具—性能测试工具

    Apache JMeter
    http://jakarta.apache.org/jmeter/
    工具描述:
    Apache JMeter是100%的Java桌面应用程序,它被设计用来加载被测试软件功能特性、度量被测试软件的性能。设计Jmeter的初衷是测试Web应用,后来又扩充了其它的功能。Jmeter可以完成针对静态资源和动态资源(讹误女监, Servlets, Perl脚本, Java对象, 数据查询s, FTP服务等)的性能测试。。 Jmeter可以模拟大量的服务器负载、网络负载、软件对象负载,通过不同的加载类型全面测试软件的性能。Jmeter提供图形化的性能分析。
    使用环境:
    Solaris, Linux, Windows (98, NT, 2000). JDK1.4以上.

    DBMonster
    http://dbmonster.kernelpanic.pl/
    工具描述:
    DBMonster是一个生成随机数据,用来测试SQL数据库的压力测试工具。
    使用环境:
    OS Independent
    OpenSTA (Open System Testing Architecture)
    http://portal.opensta.org/index.php
    工具描述:
    基于CORBA的分布式软件测试构架。使用OpenSTA,测试人员可以模拟大量的虚拟用户。OpenSTA的结果分析包括虚拟用户响应时间、web服务器的资源使用情况、数据库服务器的使用情况,可以精确的度量负载测试的结果。
    使用环境:
    OS Independent

    TPTEST
    http://tptest.sourceforge.net/about.php
    工具描述:
    TPTest的提供测试Internet连接速度的简单方法。
    使用环境:
    MacOS/Carbon、 Win32

    Web Application Load Simulator
    http://www.openware.org/loadsim/index.html
    工具描述:
    LoadSim是一个网络应用程序的负载模拟器。
    使用环境:
    JDK 1.3以上

    开源测试工具—缺陷管理工具

    Mantis
    http://mantisbt.sourceforge.net/
    工具描述:
    Mantis是一款基于WEB的软件缺陷管理工具,配置和使用都很简单,适合中小型软件开发团队。
    使用环境:
    MySQL, PHP

    Bugzilla
    http://www.mozilla.org/projects/bugzilla/
    工具描述:
    一款不错的软件缺陷管理工具。
    使用环境:
    TBC

    开源测试工具—测试管理工具

    TestLink
    http://testlink.sourceforge.net/docs/testLink.php
    工具描述:
    基于WEB的测试管理和执行系统。测试小组在系统中可以创建、管理、执行、跟踪测试用例,并且提供在测试计划中安排测试用例的方法。
    使用环境:
    Apache, MySQL, PHP

    Bugzilla Test Runner
    http://sourceforge.net/projects/testrunner/
    工具描述:
    Bugzilla Test Runner基于Bugzilla缺陷管理系统的测试用例管理系统。
    使用环境:
    Bugzilla 2.16.3 or above

  • 其他用户不能访问时特td

    2008-11-10 16:03:30

    控制面板--windows防火墙--例
    外--添加端口.
    1. 在“控制面板”中,打开“网络连接”,右键单击活动连接,再单击“属性”

  • 单击“高级”选项卡,再单击“Windows 防火墙设置”

  • “Windows 防火墙”对话框中,单击“异常”选项卡,再单击“添加端口”

  • “添加端口”对话框的“名称”文本框中,键入 SQL Server <实例名>

  • “端口号”文本框中,键入数据库引擎实例的端口号,例如默认实例的端口号 1433

  • 验证是否已选中 TCP,再单击“确定”

  • 若要打开端口以显示 SQL Server Browser 服务,请单击“添加端口”,在“名称”文本框中键入 SQL Server Browser,在“端口号”文本框中键入 1434,选择 UDP,再单击“确定”

  • td项目移植

    2008-11-08 15:49:32

    1. TD项目的备份与还原

      备份TD的重要信息,以在TD系统出现灾难性故障后能够保全TD数据的安全和完整,并且为快速的恢复系统和数据提供保障。TD备份要注意三方面的同时备份,备份前要停止TD的服务,以及MS-SQL的服务。

      1)首先是对TD的重要配置信息备份,把 C:\Program Files\Common Files\Mercury Interactive\DomsInfo\目录下的doms.mdb文件进行拷贝备份。(最好该目录下文件全部备份)

      软件测试

      2)然后是对TD项目的一些文件备份,把C:\TD_Dir目录下对应的项目文件夹进行拷贝备份。其中Attach\ 目录下为一些项目上传附件,Settings\Private\ 目录下为项目用户的一些配置信息,包括界面视图布局等信息等。。(最好整个目录备份)

      软件测试

      3)最后是对TD项目的数据库备份,把\Microsoft SQL Server\MSSQL\Data目录中的项目数据库文件MDF和数据库日志文件LDF进行拷贝备份。当然,也可以在SQL企业管理器中,对项目数据库进行备份操作。

      软件测试

      4)还原项目数据的时候,只需要反操作以上的步骤,用备份文件对现有文件进行覆盖,然后SQL数据库也进行覆盖或打开SQL企业管理器进行数据还原。

      2. TD项目的移植

      TD项目的移植旨在当前存在另一台TD服务器时,能进行快速的项目数据移植,以在服务器出现灾难性故障时,快速切换到另一台能工作的TD服务器上工作。

      在C:\Program Files\Common Files\Mercury Interactive\DomsInfo\目录下的doms.mdb文件。该文件夹中保存TD系统的关键信息,该数据库文件已默认被加密,密码为tdtdtd。doms.mdb字段包含有如下几个表:

      软件测试

      ADMIN表保存了ADMIN的登陆密码、DOMS的版本号和TD的LICENSE_KEY。

      DBSERVERS表保存了数据库名、数据库用户密码、连接数据库的管理员帐户和密码以及连接参数等相关信息。

      DOMAINS表保存了项目域的名和物理目录地址等。

      PARAMS表保存了一些参数名,以及参数值和相关描述。

      PROJECTS表保存了项目ID、项目名、项目所属的域ID和域名、项目数据库名、数据库类型、创建时引用的项目、创建时引用的域、物理目录地址和数据库连接的格式等。

      SEQUENCES表保存了序列名以及序列值。

      TDSERVER表保存了TD的连接数据库名、IP地址、该数据库是否激活、TD日志路径、邮件参数、TD的虚拟目录名等信息。

      USERS表保存了TD系统的用户信息,项目数据库移植后,必须保证该项目的用户与TD的系统的用户是相对应的,否则无法登陆。

      假设服务器A为原服务器,计算机B为要移植到的计算机。TD项目移植要注意三方面的移植,项目移植前要停止TD的服务,以及MS-SQL的服务。

      1) 分别把服务器A、计算机不同计算机的doms.mdb文件打开。

      2) 打开DOMAINS表,把服务器A的项目域信息复制,然后粘贴至B计算机上的DOMAINS表里。这样做是为了移植域信息。

      软件测试

      3) 打开PROJECTS表,把服务器A的项目相关信息复制,然后粘贴至B计算机上的PROJECTS表里。这样做是为了移植项目信息。

      软件测试

      4) 打开USERS表,把服务器A的用户信息复制,然后粘贴至B计算机上的USERS表里。这样做是为了移植用户信息。

      5) 打开服务器A文件目录TD_Dir,复制其中的域文件夹,以及域文件夹下的项目文件夹。然后粘贴至B计算机上的文件目录TD_Dir里。这样做是为了移植项目的相关文件。

      软件测试

      6) 打开服务器A的数据库的存储数据原文件的文件夹,复制项目数据库数据文件MDF和日志文件LDF,然后粘贴至B计算机的数据库存储的文件夹下。这样做是为了方便数据库文件的管理,在步骤8中进行数据库附加,此步骤可做可不做。

      软件测试

  • td项目的备份和还原

    2008-11-08 15:39:08

    备份文件

        后台数据库使用SQLServer2000

    备份前要注意这两方面的备份,备份前要停止td的服务,以及sql的服务。

    一、数据库备份:从原服务器上备份出所有您要还原的TD系统数据库(在SQLServer2000中操作);

       1、把\Microsoft SQL Server\MSSQL\Data目录中的项目数据库文件MDF和数据库日志文件LDF进行拷贝备份。当然,也可以在SQL企业管理器中,对项目数据库进行备份操作

    二、文件备份:

        1TD_Dir整个文件夹或者对该目录下的项目文件进行拷贝备份,其中Attach\目录下为一些项目上传附件,Setting\Private\目录下为项目用户的一些配置信息,包括界面视图布局登信息等。;

        2、备份C:\Program Files\Common Files\Mercury Interactive\DomsInfo 文件夹中的所有文件(主要备份该目录下的doms.mdb文件进行备份;

    还原数据库

    一、将备份出来的DomsInfo文件夹的内容覆盖到C:\Program Files\Common Files\Mercury Interactive\DomsInfo 文件夹中, 这里进行项目配置的还原。

        1、用Access打开DomInfo文件夹下的doms.mdb数据库文件,默认口令为tdtdtd,进行以下修改:

         a)修改Admin数据表,打开该表并修改Admin_pswd 的密码,如果你不想修改以前的Admin用户的密码也可以不进行该步操作。

         b)修改DBServers数据表,打开该表并修改DBServer_Name字段的第二行值为新TD服务器名称。

         c)修改Params数据表,打开该表并修改ACIServerSiteScopeurl行对应的Param_Value字段值用新TD服务器名称替换旧TD服务器的名称。

         d)修改Projects数据表,打开并修改每个项目的Physical_Directory路径修改为:C:\TD_Dir\Default\项目名称;

         e)修改TDServers数据表,打开并修改TDServer_NameTD_IP_Address列的值为新TD服务器的服务器名称。

    2、修改old_DomSetup.ini文件中的:

          TDSQLSERVER=TD服务器名称//比如我本机为TDSQLSERVER,是安装时默认的名称

          Value_1=TD服务器名称:9999//本地安装TD的机器名称,9999是默认的不要修改.

          Value_3=http://TD服务器称称/TDBIN/Redist/SiteScope/SiteScope4TD.htm

          说明:TD服务器名称替换为新的服务器名称或IP

    二、还原系统文件

    三、项目名称的创建及数据库的还原

    1、在TDSite Administrator页面中重新建立所要还原项目的域名和工程名;

    2、创建成功以后在SQLServer2000中会创建 数据库,

    还原备份的数据库

    1)、在TDSite Administrator页面中重新创建已存在的项目名称,要一模一样的,如cost-killer,创建成功后,在C\TD_Dir目录下会生成该文件夹.

    2)将备份出来的TD_Dir文件夹中的内容cost-killer(文件夹) 覆盖到C:\TD_Dir文件夹下相同目录下--(说明cost-killer”这个文件夹)就是要还原的项目系统文件

    还原后必须在查询分析器中执行以下2条语句:

        exec sp_change_users_login 'Report'

        exec sp_change_users_login 'Update_One','td','td'

        说明:这个脚本必须要执行,要不还原过来的项目不能激活,TDSQLServer不能建立链接。

    也可以在数据库中用户角色中新增一个td用户,设置为系统管理员权限

    、在右下角的任务栏中停掉TD服务,在启动TD服务;

    、打开TDSite Administrator页面中的进行数据库连接测试,及对每个项目进行连接测试。

  • 安装testdirector过程的经验

    2008-11-08 15:19:45

     

     

    这两天部门决定使用TestDirector8做为用例服务器。在安装配置TD的过程中,出现了一些问题,也有了一定的心得体会,写出来给大家分享。

     

    1.安装

    第一次安装的时候,因为硬盘资源分配方面的问题,把所有相关的设置都修改了。结果最后使用中出现了问题。

     

    后来又使用缺省设置安装了一次,一点问题都没有。我猜想是因为在配置Virtual Directory的时候,我修改了Physical Location,可能TD对虚拟目录的处理有问题,结果最后无法使用。所以建议大家安装的时候,不要修改这里的缺省配置。

    Domain Repository是存储数据使用,由Administrator用户共享控制。每一个Domain都会在TD_dir中创建一个目录,每一个Project都会在Domain目录中创建一个子目录,数据配置信息放在此对应目录中。。

     

    2.数据库

    这里我犯了一个天大的错误。我使用的是MS SQL数据库。因为我原先使用CQ,还以为也需要建立空数据库连接,结果数据库的Connect String自己修改到了新建的库上,使用的时候,就总提示连接不上数据库。

     

    后来查资料,有人说删除添加一个DB Server就没有问题了,我就照做了,没有修改配置,结果就没有问题了。Project的数据库也按照直接创建连接的方法,也成功了。所以TD的数据库都是自动生成的,不能修改Connect String的设置。

     

    后来我去查数据库,数据库中存在TestDirector库,应该对应DB Server连接库;每个Project有自己的数据库,名称方式为:TD_[Domain]_[Project]_db。

     

    3.汉化

     

    按照汉化补丁包的说明,我去找服务器上面相关目录,发现“系统盘\Program Files\Common Files\Mercury Interactive\TD2000”里面根本没有tdclientui.ocx这个文件。

     

    客户端倒是存在tdclientui.ocx,替换注册后界面还是英文版的,弄的我很郁闷。

     

    后来才发现自己的TD没有打SP4补丁,下载安装SP4补丁后,在客户端覆盖注册tdclientui.ocx后,界面终于是中文版了。

     

    所以汉化有两个条件,一个是必须打SP4补丁,第二个就是在访问TD的客户端使用tdclientui.ocx。

     

    4.用户组和用户相关的一些内容

     

    Site Administrator中,有Users一项,但在里面只能添加一个用户名,个人感觉只是为了使用Import功能批量导入用户方便使用。所以真正添加用户,还是去CUSTOMIZE中。

     

    Users中,有两个缺省的用户Admin和Guest是不可删除的;Groups中缺省的Developer、Project Manager、QATester、TDAdmin、Viewer组不可修改和删除。

     

    每个用户至少要属于一个用户组。

     

    权限设置在用户组(Groups)中,用户的权限其实就是他所在组的权限和。

     

    用户的E-mail就是发送接收邮件的使用的E-mail。

     

    5.字段汉化

     

    汉化补丁,汉化是仅仅是界面,字段的内容没有进行汉化。

     

    进入CUSTOMIZE,选择Customize Project Entities,在这里,就可以进行字段的汉化工作。有人已经做好了TD7.6字段中英文对照表,在http://www.51testing.com/tool/20050103_2.htm,对有心人的工作表示感谢。

  • 修改xp帐户的用户名

    2008-11-08 10:19:53

    新装的系统,用户名默认为admininstror
    想改成自己的名字,但“控制面板”-“用户帐户”-admininstror  那儿只有创建密码、更改我的图片、设置我的帐号使用一个NET Passport 这三项啊,并没有更改用户名这一项

     

    我的电脑,右键,管理,本地用户和组,用户,右边的可以修改
  • testdirector 安装过程中的用户

    2008-11-08 10:13:53

    1、在td9.0的安装过程中,出现的管理员用户名和计算机登录名称不一致

    2、首先以现有的计算机管理员的账户(如“123”)登录,然后打开“控制面板”,在“分类”视图下,依次单击“性能和维护→管理工具→计算机管理”(如果在“经典视图”下,直接在“控制面板”窗口中找到“管理工具”后双击,再找“计算机管理”),双击“计算机管理”。看到了吗?Administrator账户在这儿呢:)。再双击“本地用户和组”,然后单击“用户”。将右边的“123”账户(即当前的计算机管理员账户)停用或者删除(删除当前账户时会有一个警告信息,点击“是”就可以了)。禁用后的“123”账户前应该有个红色的叉号。这样就会又以Administrator账户登录了.或者修改用户名称就可以

  • 数据统计

    • 访问量: 5073
    • 日志数: 12
    • 建立时间: 2008-05-04
    • 更新时间: 2009-02-25

    RSS订阅

    Open Toolbar