bnv

我的最新日志

  • 转载《从外行到专业的软件测试工程师的经历》

    2008-9-24

    其实转行并没有什么特别的,如果你想听到一些传奇经历,恐怕要让你失望了。

      我2001年大学毕业,大学期间对计算机有兴趣、有热情,就利用业余时间买了大学计算机专业的教材自学了一遍,毕业前考了一个计算机三级B 的证书。毕业后混进了一家软件公司做HIS系统,做了几个大项目后转到测试——当时的优势是有资深的行业背景,又有开发经验,了解系统的实现——之后就在 测试行业一直混迹到现在。

      几年来换过几家公司,所做的系统主要都是HIS系统,电信BOSS 系统以及其它运营商级系统。自己所从事的工作包括开发工程师,测试工程师,Team leader,在前两家公司也零零碎碎的做过一些售前和需求工作。目前又转回技术职位,在一家外企做 Senior Test Engineer,所关注的方向是软件测试过程改进,性能测试和软件测试自动化。

      对于转行来说,如果能够充分利用之前专业所积累下的知识和经验,将会对转行有很大的帮助。我的第一份工作并不是因为我的开发能力强,而是因为当时公司所有人对医院内部的各种业务的熟悉程度都不如我。很多软件企业都是作企业应用的,为某一个行业提供服务,那么相对来说,行业知识比计算机专业知识更重要,也更难学的精通,因为作为技术人员很难有机会沉浸到那个环境中去。

      对于测试工程师来说,有开发经验和没有开发经验的确是有差别。但是这并不是关键,关键在于如何认清自己的优势并加以利用,找到合适的定位而不是去和别人的长处一争高低。

      另外,无论做哪个行业,作什么工作,兴趣都是最重要的。有了兴趣,你就不会怕吃苦,不会怕跨行业时的阵痛,可以从不断超越自己的过程中收获很多乐趣和经验。

      其实你问到这个问题让我突然想起了一件事情。在之前几年的工作中,虽然我从来没有刻意要安排自己的发展之路,但是也倒是一路走的很顺利,我一直都认为是幸运女神的眷顾,不过今天想一想,其实在几年的工作生涯中有些东西是不知不觉帮助了我的发展的,这个过程中有些东西是可以总结出来作为经验的,只是一直都被我忽视了。举个例子,在跨行业和换工作是,要尽可能避免太大的变动,要保证新工作的压力不会大到超过自己所能承受的最大限度。在我自己的工作经历中:

      1. 第一个行业,优势是对于医院内部各部门以及跨部门业务的精通。所以别人看来头痛无比的东西对我来说轻车熟路,并且乐于同我交流,我用行业知识交换来了很多计算机知识和开发经验。另外,HIS系统其实是一个很庞大繁杂的系统,除了业务类型众多,流程复杂外,还有各种复杂的业务逻辑和算法,甚至包括了完整的财务系统和进销存系统。这使我对“大系统”有了一种宏观上的感受,也见识到了大系统的开发和部署过程中的各种问题;

      2.第二个行业是电信行业,优势是对软件测试技术以及开发过程、开发技术的熟悉,所以可以很快的上手本职工作,有足够多的时间学习了各种通信领域的知识,熟悉了各种电信行业的系统和业务;

      3. 第三个行业是IPTV和DVB行业,优势是对软件测试技术/过程以及开发过程的精通,和对电信系统行业系统和业务的熟悉——在我学习和测试IPTV以及 DVB行业系统时,可以借鉴到很多电信行业系统的经验——包括技术方面和业务方面。而新近获得提升的是外企工作经验和行业经验,以及英文水平。

      我的看法是现在的软件行业分工越来越细,越来越明确,但是工作领域的交叉也越来越多,例如我们公司有些开发人员对于测试的理解恐怕比很多专职测试工程师还要 深入,而在我们实际的测试工作中,也要求测试工程师在计算机网络、数据库操作系统以及程序设计语言方面有较多的经验。一个测试工程师所要面对的就是面前全是路,自己该选哪一条的问题。不过我的感受是,并不需要刻意成为全能选手,但是要积极的对待自己手边的每一份工作,从工作本身出发,培养自己快速反应的能力和快速学习的能力,不断想着如何更好、更快的完成自己的工作,并以此为出发点去带着问题学习,多多跟同事、同行交流。这样要好过去学习一些开起来漂亮、热门,但是总是用不到的技术好的多。

      另外,如果你有了足够多的工作经验,就会发现每件工作都有很多种做法,自己拥有超强的技术并不是最重要的,也未必是最有效的。这也是为什么外企更加看重 soft skill 的缘故。

     

     

     

  • 转载面试题

    2008-9-12

    虽然还是不够全面,但是还是可以用来对付一些基本笔试面试的。

    一.基本数据类型(WINDOWS32位机下)

    Char 1个字节
    Short 2
    Int   4
    Long 4
    Float 4
    Double 8
    Long double 10
    指针: 32位机. 4个字节.
    浮点数双精度的比较;
       Float f;
       判断F是否为0
          If( f>=-0.00001&&f<=0.00001){ =0} else {!=0};
    ------------------------------------------------------------------------------
    -----------------------------------
    二.修饰保留字.
    Const:
    Const char*p//p 指向的内容不能被修改
    Char const *p; // p指针不能修改
    Const type fun(); // 返回值类型为一个const type类型,不能修改
    Fun( const char *p); fun( const A &a) //保护指针,引用传递的值不被修改.
    类成员函数:中 fun() const; //表明FUN不能修改成员变量,不调用非const 成员函数.


    Volatile:

    修饰变量时,确保变修改后保存在内存中,每次取数从内存中取.

    Static:

    静态变量: 保存于数据段中., 只初始化一次.
    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就
    是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同
    。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文
    件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作
    用域, 即只在定义该
    变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作
    用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中
    引起错误。
      从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了
    它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

      static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该
    说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文
    件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文
    件。

    static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其
    他文件单元中被引用;作用域限于本文件!

      static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一
    次调用函数时依据上一次结果值进行改变;
    如: fun()
    {
    Static int m=0;
    M++;
    Cout<<m<<endl;
    }
         调用:
    Fun();
    Fun();
    输出: 1
           2

      static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个
    被调用中维持一份拷贝。作用域限于本文件

    ------------------------------------------------------------------------------
    ---------------------------------------
    三.内存使用:

    程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 即数据段)中,动态申请数
    据存在于( 堆)中。
       分配方式有三种,请记住:
    -1- 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局
    变量、常量,静态变量.
    -2- 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。
    -3- 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的
    内存。

    --------动态申请内存:---------------

    Malloc/free 与 new/delete 的区别;

    前者: 是C的库函数. 在C++中创建对像时,不会调用构造函数,FREE时也不会调用析构函数
    .
    后者: 是C++中运算符, 创建析构对象都会调用构造函数,与析构函数.

    注意:
          Free(p)或delete p后, P成为野指针, 并非为空, (P所指地址不变,只是所指内存已
    释放)
          两次释放P会出错.
          最好,释放后加个P=NULL. 空指针多次释放不会出错.
    ------------------------------------------------------------------------------
    ---------------------------------------
    四.运算符:
    ++,--操作:
          A++ :   A加一后, 表达式返回A加一前的附本,(非左值)
          ++A:    A加一后,表达式返回加一后的A.(左值)

    位运算.
         使用异或交换数据: 交换A与B的值
                           A^=B;        即: A=A^B;
                           B^=A;           B=B^A;
                           A^=B;           A=A^B;
    ------------------------------------------------------------------------------
    ---------------------------------------
    五.语句:
           For(A;B;C)   C语句是在每次循环后才执行.
           如: y=10;
    for( i=0;i<10;y=++i)
    {
       Cout<<y<<endl;// 第一次输出是10.
    }
         循环语句设计:

                 尽量小循环放外面,大循环放里面.-----原因减少循环之间的切换.

    ------------------------------------------------------------------------------
    ---------------------------------------
    六.函数设计:
    参数传递选择--------
       作为输入参数的,应该用CONST作保护 如:strcpy(char*str1,const char*str2)
          要修改函数外面的变量时可用 :
                  1, 指针传递: 即把变量地址传入函数; 如: FUN( int**m);
                      调用时: int m=0;
                               FUN(&m);
                  2. 引用传递: FUN(int &m),调用时:int m=0; fun(m);
                  3. 如果只要修改一个外面的变量,也可以用返回值解决,但是多个的话就要
    用上面两种方法中的一种.
    内部变量:
           Static 变量;(注意);
            FUN()
             {
                Static int m=0;
                   ……..
             }
         其中M 只初始化一次. 每次调用FUN()后,都会在前一次调用的基础上进行修改M 值

    函数指针:
         如: void (*pFun)(int); 则pFun 为一个函数指,函数参数必须为一个INT参数.


                         调用:
                                pFun=FUN;
                                pFun(b); 或 (*pFun)(b); //一定要加个括号;
                  (主要用于回调函数设计)

                  另一种定义:
                     Typedef void (*pFun)(int a);
                     则pFun成为一个函数参数为一个INT的函数指针类型.
                     定义: pFun p=FUN;
       函数返回:
               不要返回栈内存指针;
                如: char* fun()
                      {
                           Char a[]=”kdkdk”;///栈中的一块内存
                           Return a;///返回栈中内存地址。
                      }
    (面向对象的函数设在后面);
    ------------------------------------------------------------------------------
    ----------------------------------------
    七.指针与数组;
         指针++,--;
                Int *p;
                 如果p++后,则P的值应该是增加4
                 指针的累加与它自己的类型有关.
         Char str[]=”akakak”;
    Strlen(str) 是求串的长度, 所以一定要小心那个’\0’结束符;
    Strcpy(str1,str2);, ///一定要小心’\0’

    ------------------------------------------------------------------------------
    ----------------------------------------
                         面向对象:
    一. 类
    默认四个函数: 无参数构造函数, 拷贝构造函数(浅拷贝), 赋值函数(浅), 析构函数.

    重写赋值函数时,注意要避免自赋值.(参考高质量C++,string类的编写)
    --------------------------------------------------------------------------
    函数重载: 同一区域内,函数名相同,参数列表不同.(略)---实现编译时多态

    函数覆盖: 在子类与父类之间. 由虚函数产生.--------------运行时多态
                Class A
                {
                   Virtual void fun(){}
                 };
                 Class B: public A
                 {
                      Void fun(){}
                 }
              则子类中的fun()覆盖了父类中的fun();

    函数隐藏: 在子类与父类之间, 不是虚函数,但是函数名相同,参数列表不一定相同.
               子类函数会隐藏父类的同名函数.
              Class A
              {
                   Void Fun 1();
                   Void Fun2();
               }
               Class b : pubic A
               {
                   Void Fun1();
                   Void Fun2(int);
               }
               则fun1,fun2都隐藏了父类的同名函数.

    基类指针与子类指针的使用:
           假设A为父类,B为子类;
    定义: B b;
           A*pA=&b;/// pA只能调用A类中的函数,和B中继承了A中的虚函数.
                    /// 但是不能调用,A中被覆盖的函数与B类中的其它函数.


           B*pB=&b;//// pB只能调用B类中的所有可访问函数,和A中继承下来的所有
    /////// 公有函数. 但是不能调用A中被B隐藏或覆盖的函数.
    --------------------------------------------------------
    带virtual 的析构函数:
          Class A
          {
               Virtual ~A(){   cout<<”in A”<<endl; }
          }
          Class B: public A
          {
               Virtual ~B(){ cout<<”in B”<<endl;}
          }
    定义:
         A*Pa=new B;
         Delete pa;
       输出:in A
             In B
    但是如果,A中的析构函数没有virtual, 则结果只是:in A
    原因: 不明!

    类中回调函数设计:
            使用友元函数,或 static 函数。
            原因:两者不存在this指针。
            如果要修改对象成员,则可以把对象指针或引用传入函数。
            如: static void fun(A*Pa),,,or   static void fun(A&a);
    面向对象函数设计:
          Void fun(A a) -----------------//出现临时对象
           {
               -----------其它代码;
               A aa;
               Return (aa);--------------//出现临时对象;
           }
    优化后:
          Void fun(A&a)
          {
               ---------其它代码
               RETURN (A());
          }

    类大小计算:
    空类,大小不为0;
    static成员变量,当sizeof()求类对象大小时,static变量不会计入其中。
    其它参考sizeof()专题
    解决头文件重复包含:
    1.#pragma once.
    2. ifndef/define/endif

    ------------------------------------------------------------------------------
    ----------------------------------------
    二.运算符重载。
           赋值: A& ōperator=(A&other) //返回引用。
                  {
                      避免自赋值;
                       ---------其它代码---------
                      Return *this;
                   }
            前++:A& operator++()///////自加后返回本身。返回值为引用。
                  {
                     This->value+=1;
                     Return *this;
                   }
             后++:A operator++(int)/////int 用于区另前加加,还是后加加。//值返回

                   {
                      A temp(*this);          /////自加后,返回一个自加前的附本。

                      *this->value+=1;
                      Return temp;
                    }
    非类成员函数++,定义(友元)
           A& operator++(A&a)//前加加
           A operator++(A&a,int)//后加加。
           函数实现同上。
    (其中减减的与++类似)

    多继承有待补充;?/???????


    模板


    ------------------------------------------------------------------------------
    ----------------------------------------
                                     数据结构与算法
    (最好这里能做到于老师的标准:看到题目就能写出算法)
    ---------------------------------------------------------------------
    链表操作:(不带头结点,书上的都是带头结点的)
    主要是不带头结点的操作,记住可能要修改头指针,所以注意函数参数与返回值设计。(
    细心);(华为面试)
    静态链表
    栈队列的使用:
              二叉树遍历,图遍历,非递归实现。(华为,三G门户面试);
    串操作:
              KMP算法(模式匹配) (深信服笔试);
    二叉树:
              三种遍历—递归与非递归。(华为面试);
              计算叶子数,计算结点数。(华为笔试,迅雷笔试);
              哈夫曼树--------(不知什么公司的面试题了);
    图:
           十字链表结构
           两种遍历---深度(非递归与递归),广度-----队列。
    查找:
           二分查找-----递归与非递归。(普信笔试)
            二叉排序树
           红黑树(了解,深信服面试)set ,map内部使用。
           B-,B+树,了解。
           键树-----用二叉对表示,键的匹配。
           哈希表------哈希函数编写,解决冲突的方法4个(深信服面试);
    内部排序:
            插入排序
            快排
            堆排序,堆操作。
            归并排序------------各种形式的归并(QQ笔试);
            基数排序。
            (记住各种排序的复杂度,最好会自己计算.)


    其它算法:
           Strcpy, strcmp, strcat, memcpy, string类的编写。

    最大公约数,最小公倍数,素数,PI计算。

           链表环判断,链表交点判断。找链表中间结点,链表反序。(华为面试)
           八皇后------深信服笔试,(一个朋友的QQ面试)

    STL:
          Vertor List set map, 使用与内部实现。
    ------------------------------------------------------------------------------
    ----------------------------------------

    --------------------系统编程(windows or unix)------------------------------

    (可以在windows 与UNIX中选择一个,如果两个都行就更好)

    多进程
    多线程
    进程/线程间同步与通信.-------这个也很重要.
           CriticalSection, mutex, event, semaphore.区别与使用
           Unix下不懂.
    网络编程-------select()与setsockopt(),多播,广播.问得最多.
             最好能写出所有常的SOCKET函数,和基本流程.

    TCP/IP协议, TCP, IP ,UDP 头的组成.各个控制位的作用.
    地址分类,子网,子网掩码,多播地址,广播地址,网络号,主机号.
    MFC下的 SendMessage()与PostMessage()区别.
    -----------------------------------------------------------------
    数据库
            多个关系表设计,
            基本SQL语句的编写,嵌套查询,多表查询
    操作系统
            P---V操作。生产者与消费者。用代码实现。(华为面试);
             (A一天生产3个饼,B一天生产4个饼,C一天吃10个,现有100个饼,用PV操作

                 编程,问多少天可以吃完)

        ------------------------项目----------------------------

    如果你没有项目,那你就把自己的课程设计也搬出来,不要怕别人笑你.千万不要说大话,什
    么东西我很牛B,面试官几句话可以试出你来.自己有料的地方一定要突出给他看.

    项目分析:
    系统功能-》整体架构-》自己负责的模块-》遇到的困难-》有待改进的地方-》存在的瓶颈
    ,与解决方案。
         (个人认为按上面的顺序分析项目,面试前一定要先自己对自己介绍下项目)


    ------------------------------面试细节-----------------------------------
    1---面试进门后,一定要向面试官问好,等面试官示意坐下时才坐下. 面试完后, 要道谢,
    如果对方和你握手,一定要站起来
       握手要有力,表达自己的诚意.(可以说:希望我有机会为公司效力…等等之类的话);

    2---当问及工资问题时,(书面形式写期望工资) 一定要说按公司薪水制度.
        原因: 刚从学校出对公司没有贡献,工资应该和贡献成正比,按公司的薪水制度比较合
    理.

    3-----描术自己的强项??弱点???职业目标??,性格??自我介绍??为什么要选择做这个职位
    /公司?? 用英语描术学校,家乡(华为面试)
       (最好中英文都会表达,一定要作好这些准备)
    4---你有什么问题要问吗????不要关涉工资和培训.,要表明自己加入公司的决心.
    (中大一学生的回答:是否进入公司就可以接手项目,个人觉得不错)

    6---越简单的题目越是考你的细心.所以要注意细节,小心再小心.

    7---说话要表现自我,千万不能说自己什么很了不起….绝不可说大话,错了就是错了,要承认.
       不会的,也要直接说不会(也可请教),会的就直接说出来.,不要吞吞吐吐,不要不懂装懂
    .
       如果面试官说自己错了,但自己发现不了,可以请教下面试官(能不能指点下我哪里错了
    ,我真看不出来),虑心学习,并改正.即使BS了,也要抵住压力,不要就起身走人,要请教面试
    官,错在哪,应该怎么做.??要顺着面试官的意思,不要与其争执.一定要抗压力,抵住.
    8—成绩问题:
           主要是针对和我一样成绩很差的同学。当面试官问到怎么你的成绩那么差。你一定
    要想到好的解围方法。他不是看不起你而是给你施加压力,看你在压力面前怎么样解决问
    题,能不能抵住压力。
    9---自信,一定要自信,但不是自认清高。
       

  • bug bush

    2008-9-09

    今天看到一个博人写的博客很有意思,bug bush (bug大扫除).bug bush 一般发生在beta版上市之前,由市场人员,开发人员,产品人员一起参与,进行bug大扫荡.这里是这位博人写的链接.以供自己有时间效仿一下.

    http://www.51testing.com/?115619/action_viewspace_itemid_75493.html

  • 小心日子混了你。

    2008-9-06

    这两天项目不太紧张,有些空闲时间,一不小心自己就开始学会了混!刚才看一下自己的博客,突然的想到一句话:别混日子,小心日子把你给混了.

     

     

  • SQL学习(链接)

    2008-9-03

    sql中相关的一些链接:SQL之左连接、右连接和全连接

    举个例子:首先有两个表:

    class(num,name,leader)

    student(name,class,sex)

    例如当某个学生被开除后,则其不属于任何班级,即左表中有记录由表中没有记录匹配这种情况
    select class.name,student.name from  student join class on student.class=class.num.

    用左连接则可以防止漏掉的被开除的学生.

    select class.name,student.name from student left join class on student.class=class.num.

    右链接则可以防止漏掉没有学生的班级

    select class.name,student.name from student right join class on student.class=class.num.

  • 一点感悟

    2008-8-25

    以前喜欢逛论坛,最近喜欢上逛博客.看看测试同行们的感悟.自己今天就深受感触.

    一位高人说到,他非常害怕的就是测试被开发说服,当然测试被说服有一个重要原因是能力上不足的一个体现,但关键是不要轻易被说服,在遇上这类问题时,一定要多沟通,多方面验证,不要轻易的就放弃!

     

  • sql学习

    2008-8-19

    好长时间没有静下心来学习SQL了,这两天突然的中间件测试,发现好多的语句都忘了.

    定义基本表:

    create table <表名> 例子:create table Student(Sname char(100) Not Null unique,

                                                 Sno int,Sage char(15))

    列级约束条件包括:1.Not Null或者Null(取值不许为空)  2.unique(取值唯一) 3. default

    4.check constraint (是否为主键)

  • lR知识(转)

    2008-8-18

    问题1:LoadRunner响应时间是什么?   
    :响应时间就是客户端发送请求,服务器返回最后(或者第)一个字节的时间。LoadRunner的事务函数功能是  度量客户端和服务器之间交互时间的。事务函数最后在分析图表里有,比如你在前边开发脚本的时候你在登陆功能中添加了事务函数,那么controller中运行1000个用户之后,在分析 图表中你就会看到1000个用户登录功能所消耗的时间(平均,其中1000个用户用的最多的时间,10000个用户用的最少的时间)。


    问题2:页面点击数与页面浏览数什么概念,页面点击数过高会对系统的性能产生什么影响?
    :页面点击数:又名“hits”,它包括了点击了某个网页后,浏览器为了显示此网页而附带来的所有图片等支持文件的数量。点击数往往被用来衡量网站服务器的工作负载,也是衡量网站服务器性能的标准之一。文件数量的增多,会增加网络流量。
    页面浏览量(页面量):又名“PageView”,它是指实际被点击的网页数量。页面浏览量往往被用来衡量网站内容的受欢迎程度和被访问情况。


     
    问题3:LoadRunner中有个Anget,这个Anget具体起什么作用啊?在讲Robot的架构的时候好像也提到过,但是没有讲Anget具体作用,是不是LRRobotAnget作用一样的呢?
    :Agent 的作用是提供一个宿主环境提供虚拟用户运行,在LoadRunner中叫做Load Generator

     

    问题4:这个章节中讲到了响应时间页面点击数吞吐量这几个概念,我想问一下,响应时间越快是不是就越好?页面点击数越少是不是就越好?吞吐量越大是不是就越好?
    
    :性能是寻找执行效率与功能之间的平衡。这些不过是性能分析所关注的。不是越大越好。

     

    问题5:loadrunner如何选择协议?
     
    :首先要熟悉应用程序的架构,采用什么协议进行通讯的.因为LoadRunner主要是通过捕获客户端与服务器之间的数据通讯包,根据这些数据包来生成脚本的.所以,如果协议选择不正确的话,LoadRunner就无法捕获客户端与服务器之间的数据通讯包。

     

    问题6:在脚本的录制过程中,怎么样去增强脚本,在这里我说一下,为什么要添加事务、集合点、参数化数据?
    添加事务是为了知道一个具体操作比如:登陆一个系统,服务器的响应时间。
    集合点:主要是为了模拟真实用户使用的并发情况的一种操作。
    参数化:主要是模拟真实用户的使用,输入提供不同的输入数据。

     

    问题7:指定代理设置,通过端口映射来限制特定端口发送的消息,不知道这样的设置起什么作用?为什么要指定协议的映射?
    答:这是因为具体的系统开发的问题,有些系统就是特定端口处理,你需要针对指定的端口进行处理,否则程序没办法处理

     

    问题8:什么是监控器?
    :  监控器就是在Controller中的一些图表。

     

    问题9:计数器与监控器的区别?
    答:监控器包含计数器,计数器就是一个一个分析的具体指标

     

    问题10:分析CPU瓶颈需要添加哪些计数器?51Testing软件测试网"Y \4H(x2jDl
    :Processor \ Interrupts/sec
    Processor\ %Processor Time
    处理器处理事务的时间51Testing软件测试网5^KJ P.z2Vq
    Process(process)\ %Processor Time
    在进程中处理器处理事务的时间  
    System\ Processor Queue Length
    系统中,处理器队列长度

     

    问题11:Processor \ Interrupts/sec 这个值不明白能有什么作用?
    答:指处理器每秒钟接收并维护的硬件中断的平均值。它不包括 DPCDPC 将单独计算。这个值是产生中断的设备(如:系统时钟、鼠标、磁盘驱动器、数据交流线路、网络街面卡和其它附件设备)的活动的间接指示器,这些设备通常在完 成了一项任务或需要注意时中断处理器。正常的线程操作在中断时悬停。大多数的系统时钟每隔 10 毫秒中断处理器一次,形成了间隔活动的后台。这个计数值显示用上两个实例中观察到的值之间的差除于实例间隔的持续时间所得的值。

     

    问题12:请问这些计数器有一个什么样的值来度量他们?
     
    答:具体的计数器指标,window平台的可以查msdn

     

    问题13:Analysis作用?
     
    :生成各种表格,同过这些表格中的数据来分析系统存在的瓶颈,并且可以把每次产生的Analysis的结果作对比。

     

    问题14: Analysis输出报表的类型?51Testing软件测试网jBYl2f
    :Analysis输出报表的类型有两种:1HTML2Word

     

    问题15:在生成的报表中,每个值都有一个百分比的缩小比例值,如果我要求出一个具体的值:比如一个用户操作登陆功能,所需的时间,是要经过自己的计算才能得出来是吗?51Testing软件测试网:G O,w0YR9b;r T
    答:这个看事务响应时间就好了。

  • 自己

    2008-8-15

    今天突然想剖析一下自己,找一下自身的bug

     这两天和小妹在一起老实吵架,她总是能提出我各种各样的毛病,以至于我今天早上都为此而生气,自己的心胸也太!...

      下面自己分析一下自身的bug,以供自己以后好好改正.

      自卑,可能是正如心理学所分析的自己小时候所受环境的影响,从小于自卑结交.尤其是在感情上更是表面狂妄内心却自卑的要死.给自己装了一个自信的壳,但是当可破的时候自卑的就流露无余.

     

     

     

  • 当爱情经过的时候

    2008-8-12

    借着星光的温柔
    我自己一个人走
    挥动蓝色的衣袖
    任寂寞喋喋不休
    缘分可遇不可求
    他会在第几层楼
    每当想见你一面
    我就向记忆开口
    你若回头就用眼神和我交流
    无需太多的语言
    用瞬间替代永久

    当爱情经过的时候
    我没有牵到他的手
    梦在九霄云外的另一个宇宙
    就仿佛美丽的石榴
    当爱情经过的时候
    我不知自己在梦游
    到下一个路口
    是向左还是右
    有谁来为我参谋

    我爱你
    缘分可遇不可求
    他会在第几层楼
    每当想见你一面
    我就向记忆开口
    你若回头就用眼神和我交流
    无需太多的语言
    用瞬间替代永久

    当爱情经过的时候
    我没有牵到他的手
    梦在九霄云外的另一个宇宙
    就仿佛美丽的石榴
    当爱情经过的时候
    我不知自己在梦游
    到下一个路口
    是向左还是右
    有谁来为我参谋
    当爱情经过的时候
    我没有牵到他的手
    梦在九霄云外的另一个宇宙
    就仿佛美丽的石榴
    当爱情经过的时候
    我不知自己在梦游
    到下一个路口
    是向左还是右
    有谁来为我参谋
    到下一个路口
    是向左还是右
    有谁来为我参谋


     

Open Toolbar