发布新日志

  • LR安装卸载

    2007-09-17 10:44:27

     loadrunner安装的问题很多,各个网站的帖子也很多,51test中就有很多。

            安装的时候基本上的问题就是安装包所在路径为汉字名称或者别的什么。

            主要说一下自己遇到的问题,和解决的方法,希望遇到的人可以绕过而行,不用在走弯路了。
           安装的问题:51Testing软件测试网 

            整个装的过程都是OK的,完成后,提示需要重启系统丢失system32下的 BHOManager.dll    DLLRegisterServer  return  error 8007007e”(我的系统是番茄花园的xp系统),当你确定以后,lr安装目录下bin中的所有dll文件都不能注册了,所以安装就失败,就这个问题,刚开始我一直没有定位好,等看了一段时候之后发现,BHOManager虽然在system32下,但是不是系统本身的dll,而是lr自己写入的(因为以前装好的lr中IE加载项中,印象是见过的), DLLRegisterServer  return  error 8007007e 意味着没有找到BHOManager这个dll文件,或者这个dll没有注册,但是手动去注册却是报错,那现在问题基本上已经可以看出端倪了,所有的不能成功的因素,全都是BHOManager.dll没有成功注册的缘故,(找到根源就可以迎刃而解了)。

            在百度中搜索,发现如下内容:

            你问题的解决方法,我今天也遇到同样的问题,给你做回答,呵呵,这个跟双核没关系,可能是你用的也是番茄花园的xp系统把,它的atl.dll是没有注册的,导致lr的BHOManager。dll无法成功注册!!!(原理就是这些),方法如下:

    附:
            我再重新安装时遇到的另一个问题。可能遇到的朋友并不多,放上来给大家参考吧。
            在安装到最后的时候遇到这样一个报错:BHOManager.dll 注册失败。
           于是在提示重启时未重启,而是去手动注册该dll文件,却弹出了另一个提示,"DLLRegisterServer in BHOManager.dll failed 

            于是到网上搜了下,终于找到了解决方法。
            1. 需要IE 6.0 及以上版本支持, 请检查你的IE浏览器是否为 6.0 以上版本。
            2. 请检查Windows系统目录中是否存在以下三个文件: msvcp60.dll, mfc42.dll, msvcrt.dll 文件, 如果有缺少,请下载并拷贝到Windows系统目录中去即可。
            3. 请查看您的系统中是否缺少 atl.dll 文件, 如果没有, 请从其他相同操作系统的机器上拷贝这个文件到Windows系统目录, 然后打开命令行窗口并在该目录下运行命令: 
           regsvr32 atl.dll
           看到成功提示后,再次手动注册BHOManager.dll(注册方法:打开命令行窗口并在该目录下运行命令regsvr32 c:\windows\system32\BHOManager.dll),提示注册成功。

            全部完成后重启电脑,该问题就解决拉 :)
            LR终于装好了。
            那就意味这,BHOManager.dll的注册是和atl.dll的注册有关,前者调用后者中的东西,只要后者成功注册,前者就可以OK解决了!呵呵~~~~世界清净了许多!!哈哈!!


            因为之前一直没有分析正确问题的所在,所以卸载和重新安装loadrunner好几次,关于卸载的一些问题,及时你按照卸载工具卸载了 loadrunner,下次装的时候还是会包license失效,解决方法,要登录到注册表regedit中(当发现报错后,立即去注册表删除下边的内容,只要有相同的就删除,这样注册码就可以再次使用了,并不会报错,呵呵)。
           删除如下内容: 
            HKEY_CLASSES_ROOT\Mercury.Lm70Control 
            HKEY_CLASSES_ROOT\Mercury.Lm70Control.1
            同时删除
            Mercury.Lm70ControlMgr
            Mercury.Lm70ControlMgr.1

            然后就使用查找功能,搜索“Mercury”,发现有Lm70Contro字样的东西都要删除掉。

            最后删除下面内容:

            HKEY_CURRENT_USER\Software\Mercury Interactive 
           HKEY_LOCAL_MACHINE\SOFTWARE\Mercury Interactive

            删除完成后,继续填入license,下一步,如果还是不行,继续去注册表中删除上边内容,知道没有了,就OK了。
           这些都是自己做过实际操作的内容,希望对大家有帮助。

  • LR里组 vusers 进程 线程的关系

    2007-09-17 10:39:15

    如果是线程安全的协议,在一个组(进程)里并发多个vusers,可以不用开那么进程。这可以减少系统的开销。
      如果不是线程安全的协议,我们需要开多个进程来处理Vusers。这样势必增加系统的开销。
      其实对现在的硬件来说,基本上客户端成为瓶颈的机会不是很大。(除非这公司太穷了)
    ^_^

      这里我做了个实验,画了一张表,来形象的说明一下组/vusers/线程/进程的关系。
    注:这里,我假定的是10vsuers:
     
    设置vusers按进程还是线程运行
    Vusers(个/组)
    组(个)
    mmdrv.exe中的线程数(个/组)
    Mmdrv.exe进程(个)
    平均每个进程占的内存(k)
    Mmdrv.exe占有内存总数(k)
    线程
    10
    12
    7,500
    7,500
    线程
    10
    10
    5,150
    51,500
    进程
    10
    10
    4,676
    46,760
    进程
    10
    10
    5,150
    51,500
      我这里脚本都是一样的。
      大家如果自己做实验,内存可能会不一样。
      在表里,我们可以很清楚的看到,进程多的时候,占用内存肯定是多的。
      如果在同一组里开多个线程,占用内存就少得多。
      我们还要注意一个细节就是在用线程来运行vusers的时候,每个进程中会多出几个线程来。
      这多出来的很个进程在做什么,我没有查它的API,我想可能是维护进程之间的运行。
     
      很显然的,还有个问题,就是哪个压力更大。
      这个问题也有些人在问,我想这个应该是很明显的吧。
      其实对服务器来说,只要是10个用户都在正常工作,而速度不会受到本地硬件的影响。
      对服务器的压力是一样的。
      这么来思考:
      假设来说。
      我们是从客户端来发数据库的,10个用户,如果一秒钟发20个数据包。
      那对服务器来说,收到的数据包都是一样多的。所以压力也会是一样的。
     那会不会存在在同一个进程里开10个线程速度更慢呢。
      这个,我以为不会的。
      所以我认为压力是一样的。
  • LoadRunner Winsock 10053错误的真正原因

    2007-09-17 10:35:11

    最近使用LoadRunner进行Winsock协议的性能测试时,测试的WebServer是JBoss,经常出现10053错误,现象如下:当我用lrs_create_socket创建连接之后,当这个socket 连接的请求次数达到100次后,这个连接就不可用了,必须close后再重新create。LoadRunner提示错误:Error : socket0 - Software caused connection abort. Error code : 10053.

      经过多次探索,终于发现该错误是由于Apach HTTPServer中HTTP 1.1 版本KeepAlive参数的配置原因导致的。从我对多个不同WebServer的测试结果来看,在一个Socket连接进行100个请求时出错的有JBoss和Tomcat,其它 Web服务器如IIS、WebLogic均没有该问题。
    下面介绍几个相关的参数:KeepAlive 、KeepAliveTimeout、MaxKeepAliveRequests。

    KeepAlive Directive
    Descrīption: Enables HTTP persistent connections
    Syntax: KeepAlive On|Off
    Default: KeepAlive On
    Context: server config, virtual host
    Status: Core
    Module: core

      在HTTP 1.0中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。

    The Keep-Alive extension to HTTP/1.0 and the persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions which allow multiple requests to be sent over the same TCP connection. In some cases this has been shown to result in an almost 50% speedup in latency times for HTML documents with many images. To enable Keep-Alive connections, set KeepAlive On.

    For HTTP/1.0 clients, Keep-Alive connections will only be used if they are specifically requested by a client. In addition, a Keep-Alive connection with an HTTP/1.0 client can only be used when the length of the content is known in advance. This implies that dynamic content such as CGI output, SSI pages, and server-generated directory listings will generally not use Keep-Alive connections to HTTP/1.0 clients. For HTTP/1.1 clients, persistent connections are the default unless otherwise specified. If the client requests it, chunked encoding will be used in order to send content of unknown length over persistent connections.

    ----------------------

    KeepAliveTimeout Directive
    Descrīption: Amount of time the server will wait for subsequent requests on a persistent connection
    Syntax: KeepAliveTimeout seconds
    U |SySs%y2a1691Default: KeepAliveTimeout 15
    Context: server config, virtual host
    Status: Core
    Module: core

      KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器  已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了  这个参数设置的值之后,服务器就断开连接。

    The number of seconds Apache will wait for a subsequent request before closing the connection. Once a request has been received, the timeout value specified by the Timeout directive applies.

    Setting KeepAliveTimeout to a high value may cause performance problems in heavily loaded servers. The higher the timeout, the more server processes will be kept occupied waiting on connections with idle clients.

    ----------------------

    MaxKeepAliveRequests Directive
    691Descrīption: Number of requests allowed on a persistent connection
    Syntax: MaxKeepAliveRequests number
    Default: MaxKeepAliveRequests 100
    Context: server config, virtual host
    Status: Core
    Module: core

      MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。

      The MaxKeepAliveRequests directive limits the number of requests allowed per connection when KeepAlive is on. If it is set to 0, unlimited requests will be allowed. We recommend that this setting be kept to a high value for maximum server performance.

    For example:MaxKeepAliveRequests 500

      最后,虽然这个问题是由于HTTPServer的参数配置引起的,但只有LoadRunner才会出现这个问题,如果用Rational Robot实现同样的功能则没有该问题,由此估计和测试工具对Socket连接的实现策略也有一定的关系。

  • LoadRunner的协议选择、Winsocket、C/S应用程序

    2007-09-17 10:28:38

    很多时候一提到不是基于浏览器的应用,很多人就会想到用WinSocket协议来录制,仿佛Form窗体都可以用Winsocket 。

            从道理上讲网络通讯的底层都是基于Socket的,例如TCP、UPD等,似乎所有的程序都可以用Socket协议来录制。但是事实不是这样的,因为选择的协议决定了LoadRunner如何捕获数据包。否则会多捕获很多无用的数据。

            因此,不是所有的程序都是适合WinSocket协议的。实际上,那些基于Socket开发的应用才真正适合Socket协议来进行录制。其他的,例如基于数据库的应用,就不太时候Socket协议,甚至可能录制不到脚本。

            很多C/S程序,一定要选择合适的协议。根据作者的经验,C/S的程序多数需要手工开发很多脚本,因为录制的很多回放时候或多或少都会有些问题,但是可以参考录制的结果。

            所以测试一个程序,一定要搞清楚开发人员用了什么技术、数据流是什么协议封装的。

            附件是我们自己开发的Controller,我们自己用面向对象实现了并发测试架构(目前支持并发、迭代、thinktime、参数文件、启动时间间隔,集合点功能正在开发中)。借助我们自己开发的Agent,能很好的测试我们的C/S架构的程序。
            这个工具和LoadRunner配合起来,可以完成大多数性能测试
            这个工具主要为我们测试视频播放效果而开发,呵呵。这是LoadRunner不太擅长的。

     

  • 关于点击率吞吐量的曲线

    2007-09-17 10:26:30

    因为在客户端发request的时候,是不会管服务器的状态的。

            下面打个比方,具体数据,不可做任何参考,只是我临时编的。
            比如:服务器可以同时每秒处理100次点击,这时,需要调用服务器的一些资源来处理,像:JDBC连接、内存、开socket等等,其他的用户呢?应该都在排队状态,而服务器处理完了前面的用户后,需要一些时间来释放这些被占用的资源,假设为1秒,如果LR采样的时长为2秒,那么服务器处理的用户应该为50次点击/每秒,按这种理想状态,点击率的图应该是比较平稳的。
            但是,系统受的压力会随着点击的增加而增加,系统性能也就慢慢的下降,例如释放资源的速度开始变慢、换页开始频繁,那么,后面的点击造成的请求,很有可能需要等待的时间随机变长。但是采样的频率是不变的,所以后面的采样值应该慢慢的变小。
           也就是像有些图中所显示的那样:随着场景时间的持续,点击率,吞吐量等图的曲线慢慢的下降。

            而出现超时的现象也很好解释了,无非是有些请求,等待的时间太长了。

            有些图呢是比较稳定的,曲线平稳,这时可以认为,系统可以承受当前用户量的压力。

            而有些场景会出很多超时的错,这就有可能是系统承受不了这种的压力,或者配置上有些问题。

            需要综合分析了。

  • LoadRunner中浏览器仿真的设置对测试结果的影响

    2007-09-17 10:24:16

    测试环境描述:

            客户端 5台 Windows2000机器。服务器端  20台机器 一台F5(负载均衡设备,提供一个唯一的IP供客户端访问)

            客户端绑定Host后,使用域名http://www.****.com来访问。

            为了说明问题,简化的脚本说明如下。
            协议:http/html vuser_init:登陆;Action:查询某笔交易,查询成功的前提是用户必须登陆;vuser_end:退出  运行时设置参数Browser Emulation采用的是默认值。场景设置的是Goal-Oriented。
          在运行时发现,登陆都能成功,但是在执行Action时,部分成功,部分失败。为了查明失败的原因,在Vuser Generator中调试脚本,设置Action运行100次。每次运行时,总有一部分成功,一部分失败,而且是不规律的。这时候联想到服务器端有好多台机器,是不是因为把查询交易的请求分发到不同服务器导致查询时因为没有登陆而失败呢。

            那么有什么办法让每一个Vuser访问固定的一台机器呢?这也符合实际的业务情况,当一个用户登陆后,他所进行的一系列动作都是在同一台服务器上完成的,否则会不定时的让用户重新登陆。此时查看Browser Emulation,发现有一个设置“Simulate a new user on each iteration”。根据LR给出的解释是:在每一次迭代完成后,VuGen会把所有的http状态设置为vuser_init完成后的状态,然后以新的用户进行下一次迭代。现实的情况是,如果每次Action迭代时,F5会根据当前服务器的使用情况把请求分发到空闲的机器上。这时就出现了上面所说的问题。把此选项去掉后测试成功。
  • 关于LoadRunner中参数值的引用(转)

    2007-09-17 10:19:23

        昨天在研究脚本的时候偶然遇到一个问题,今天正好有了点时间,就拿来再研究一下。
      问题是这样的:我想用strcpy函数把一个字符串赋给一个变量,再将这字符串做一个参数化,然后我想看看参数化是否成功,于是我用了lr_message函数把它打印出来。脚本代码很简单,如下所示:
      Action()

    {
        char a[10];

        strcpy(a,"{a}");
        lr_message(a);
        return 0;

    }
      其中,{a}我已经做了参数化,参数值为11。
      运行这个脚本后,发现运行日志里打印出来的a值显示为{a}。

      在尝试了N遍以后,我把lr_message(a);这句代码改成lr_message(lr_eval_string(a));后问题解决,运行日志里打印出了我所期望的值11。51Testing软件测试网 L KG3[$~c"f
      问题虽然解决了,但我还是很纳闷,为什么在用lr_message的时候不能直接引用参数,而我记得之前在web_url、web_submit_data等函数里都是可以直接引用参数化的值,而从来没有出现过问题。也许是在LoadRunner里,这几个函数对参数值的引用方式不同吧,不知道我这样想是否正确,希望大家批评指正!
     

      昨天和Zee讨论了一个下午,结论还是没有明确。今天上午继续试验,试验结果表明Zee说的是正确的,不能直接将C语言里的变量直接当作LR变量使用,而需要做一些转换。事实上,执行strcpy(a,"{a}");后,并没有真正将参数值传给a。需要这样写:strcpy(a, lr_eval_string("{a}"));这样就没问题了。

      不过,问题还没有结束,在tuxedo协议中,用 lrt_strcpy函数则没有这个问题存在,例如:lrt_strcpy(sendBuf1, sendBuf);则可以成功地将sendBuf中的参数值赋值给sendBuf1。目前怀疑是该函数在内部已经进行过转换,但并不肯定,尚待证实。 

      再次针对以上问题进行试验,我在lrt_strcpy(sendBuf1, sendBuf);语句的前后各加了一句调试信息:lr_output_message("sendBuf:%s",sendBuf);

    和lr_output_message("sendBuf1:%s",sendBuf1);

       打印出来的结果截然不同,前者的输出显示没有传入参数值,而后者则成功传入参数。这表明确实是lrt_strcpy这个函数在搞鬼。

  • 通过LoadRunner监控Linux的资源状况

    2007-09-17 10:07:44

     我们在使用LR进行性能测试的时候,经常有需要监控OS的资源使用情况的需求。对于 Windows系统,这个工作进行起来很方便,直接在LR的资源监控窗口中添加需要被监控的机器名或IP即可,但对于Linux/Unix系统,则要稍微复杂一些,我在这里简单介绍一下如何在LR中监控Linux/Unix系统的资源使用情况:

      Linux

      对于Linux系统,要想通过LR监控Linux/Unix系统的资源使用情况,需要运行rstatd服务。如果OS没有安装rstatd(可以查找一下系统中是否存在rpc.rstatd这个文件,如果没有,则说明系统没有安装 rstatd),则需要进行安装。rstatd安装步骤如下:

      获得rstatd的安装介质(rstatd.tar.gz)。rstatd可以从 redhat的安装CD中获得,或者从网站上下载(给出一个下载地址,sourceforge的: //heanet.dl.sourceforge.net/sourceforge/rstatd)。

      将rstatd.tar.gz拷贝到Linux系统中,解压,赋予可执行权限,进入rpc.rstatd目录,依次执行如下命令:

      #./configure

      #make

      #make install

      结束后,运行./rpc.rstatd命令,启动服务。这个时候,你就可以在LR中监控Linux资源了。

      Unix

      对于Unix系统,比如Solaris,AIX或者HP UX等,它们的配置过程比较简单——在inetd.conf(在/etc目录下)文件中去掉rstatd前面的注释,然后启动rstatd服务即可。

  • C公司的面试题

    2007-05-28 22:11:50

    一个小时做完以下题目.

    01. 为什么要在一个团队中开展软件测试工作?

    02. 您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪些工作要做?分别由哪些不同的角色来完成这些工作?

    03. 您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?(对于软件测试部分,可以简述)

    04. 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

    05. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)

    06. 请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

    07. 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

    08. 您认为做好测试计划工作的关键是什么?

    09. 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

    10. 您认为做好测试用例设计工作的关键是什么?

    11. 请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。

    12. 您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。

    13. 您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。

    14. 您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

    15. 您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

    16. 在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?

    17. 您以往所从事的软件测试工作中,是否使用了一些工具来进行软件缺陷(Bug)的管理?如果有,请结合该工具描述软件缺陷(Bug)跟踪管理的流程。

    18. 您以往是否曾经从事过单元测试和集成测试?如果有,请谈一下这些工作的实际开展情况。

    19. 您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?

    20. 您以往工作过的企业中,是否开展了软件配置管理工作?您能否描述一下这项工作的开展情况和您对这项工作的认识?

    21. 您是否熟悉一些主流的软件工程方法论和思想,如RUP、CMM、CMMI、XP、PSP、TSP。如果熟悉,您是否可以谈一下对这些方法论和思想的认识?

    22. 您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?

    23. 在您以往的测试工作中,最让您感到不满意或者不堪回首的事情是什么?您是如何来对待这些事情的?

    24. 在即将完成这次笔试前,您是否愿意谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面)

  • 找工作日记

    2007-05-28 21:20:32

    之前的就算了。从今天开始。

    5月28日

    没公司打电话给我,上网只发了一次简历,我知道我找工作的态度比较懒,可是我真的有认真在找啊。难到51JOB的公家都是骗人的,发了那么多,没几家来叫我去面试的,叫去面试也是一些奇怪的公司。

    心情不好,有人冒充我的名字,去骗我同学的钱,还好没骗到。

    上海我记得你了,找工作还真不容易。

    5月31日

    29号那天E公司来电话,叫我星期三到他们公司面试。我答应下来了。到网上查该公司的信息,GOD,-75分,如果要是在我刚来上海的时候我一定不去这样的公司。但太久没找到工作了。所以还是给自己一个机会吧。我是这样安慰自己的。到了星期三E公司又打电话过来说要推迟到星期五面试,我也答应下来。到了星期四E公司又电话来说星期五不行,问我下星期什么时候有时间,于是定在下星期一下午。GOD,就凭你公司这样的态度我一定会去你们公司,好好的面试一次。到时候去不去你们公司,那就不好说了。

    30号F公司打电话来,要我星期五到他们公司去面试,这是家外包公司,已经问清楚了,面试我的人一定是做测试的,太高兴了,终于可以和明白我说什么的人聊聊了。希望可以进入这家公司。

    31号G公司打电话来,问我下星期什么时候有时间到他们公司面试,我定了在下星期二的下午。这公司我一来上海就有人建议我试试这家公司,说他们常常要人,但我发简历过去后都没反应,不知道为什么现在才会叫我去面试。而且叫我去面试的人是18:58分打电话过来的。做人事的人真是太不小心了,这个时间段打电话过来的一般说明这样的公司常常加班,所以如果在同等条件有得选择的话,我是不会选择这样的公司的。

    6月7日

    总结EFG公司的面试,就的太让人生气了.

    F公司的面试也是一家外包公司叫我们到某家大公司去面试的,差十几个小时就要去面试的时候,我才知道是要英语面试的,惨,我的英语口语真的是很不行,而且我如果开口的话,一定会发生一些忆想不到的事情发生。果然面试的时候,刚开始一切都很OK,到了用英语面试的时候就完蛋了,开口就不用说了,到了要我用英语写一些东西的时候也出了大漏子,需求和设计的单词都写错了,概要也不知道是哪个单词。真是丢人啊。结果面试后,那位面试我的男孩送我到公司的门口,我在送我过程的聊天中才打听清楚,原来他们是在招自动化测试程师,GOD,那家外包公司还真是太不专业了,连这样的职位都不知道是做什么的,我问的时候,一直和我说是做测试的,我还以为是手动测试呢。我的面试思路一定出问题了。

    E公司不负-75分的胜名,在推了我三次面试时间后,约定星期一去面试,到公司后,竟然是人事部的工作人员来面试我,说是开发部的负责人都去用户现场了。利害啊!

    G公司星期二的下午面试。在起床后以为会面试迟到的情况下匆忙赶去的情况下开始面试,开始面试的时候我就和面试我的人说,他们公司对测试工作的定位不是很清楚,我想清楚知道我的面试职位是什么。他们告诉我是QA也是做测试的。OK,谈了一段时间后,叫人事部的人出来给我做结论。我的工作技术不错,但工作了那么多年,缺少管理经念。所以不适合做QA LEADER,然后说了些客气的话,就结束了。我缺少测试管理经念?的确在和他们的谈话中,我很少说测试管理方面的事情。但是我们不是说好是面试QA的工作吗?怎么到人事部那里就成了QA LEADER了?那面试的人也太奸诈了吧。做QA的职位,我当然是大谈软件测试技术,而少谈测试管理的问题,这是我理解错误了吗?

    以上三次清楚失败的面试打击太大了,所以这个星期都不会再找工作了。不过从这些面试中了解到一些信息,对我今后面试应该有帮助。

    1。面试的时候一定要跟着面试人员的思路,而不是面试职位的思路走。

    2。面试之前一定要问清楚该公司对其面试职位的要求是什么。别只记得招聘信息所罗列的要求。

    3。看英文文档,太久不看好多单词都不记得了。口语,我心中的疼。

    6月12日

    天啊,已经二个星期都没机会发简历了,要什么时候才能才到工作啊.

  • 我的面试里没有测试人员

    2007-05-28 20:04:43

    来上海有两个月了,到现在还没有找到工作,说起来很奇怪,但是更奇怪的是,面试我的人里竟然都没有做测试的,这才是奇怪中的奇怪事情。

    A公司是第一家面试我的公司,高高兴兴的去后,做完题目,然后出来一个人和我面试,当然也是老样子,介绍自己工作经念,我说了一堆测试的过程及方法,对方也有肯定我谈话的同时让我很高兴,最后要走的时候我问他是做什么的,我惊讶的听到,他说是做数据挖掘的。GOD,他能听懂我的话吗?不过还好他没有和我大谈开发技术之类的。

    B公司和A公司差不多,也是我说完我自己的一套后,问他是做什么的。竟然是公司老板。GOD,他能听懂我说的话吗?不过还好他没和我大谈公司未来及技术方面的事情。

    C公司是最特别的公司,大中午的,我赶到的时候累得不行了,没有人接待我们,更不要说倒水给我们喝了,这调调真不喜欢,进去叫我们做了24道可以写成论文的题目,然后最后一道我记得我写了一句话“浓缩就是精华”,面试人见都没见着,就写完24道题后,叫我们走人。浪费我一天的时间和车费,后来的时候因为太生气又忘记买水喝,真的很不好受。

    D公司是外包的公司,离我住的地方超远,去到都很累了。叫我坐了一套题后,来了个人面试我,我想这次的人应该也不是做测试的,但来了就要呆下去,可是已经没前几次的热情了,还是那一套东西,可是说得无精打彩的,因为我真的不知道他们能不能听懂。

    每次面试回来别人都问我面试得怎么样,我自认为很好,因为如果真的做过测试的话,应该知道我说的好还是不好,可是没有一次是做测试的人来面试我,到底是什么了,测试环境出了问题,还是现在测试的面试就是如此已经不用测试人员去面试测试人员了。还是上海是特别的,所以面试起来也就那么特别。

  • 测试用例设计思想

    2007-05-22 23:29:42

    1、数据分析。所有的系统最基本的单元就是数据,所以对于功能点的测试最基本的也是数据的测试。常常用到等价类划分及边界值分析这两种测试方法。

    2、流程分析。每个系统操作都是由不同的流程组成。要做到对流程操作清楚必须由精通业务知识开始。然后才开始设计流程测试用例。常用的测试方法应该是因果图(但我个人比较怕用这个测试方法,所以还是以自我总结的流程为主)。

    3、用户习惯操作分析。这是针对系统的的易用性来进行分析的。

    4、组合分析。个人最不喜欢的就是组合测试,但有查询功能就一定要进行组合测试。常用的测试方法是白盒测试的思想。最好可以问问清楚开发人员他是如何开发出查询功能的。这样可以让你清楚定位测试方法。

    以上的分析都要包括其非的操作,也就是消极测试用例。有以上思想编写出来的测试用例,我认为就是好的测试用例。但是这些用例的对于需求的覆盖率达到多少,我还没有度量的数据。

  • 我的自动化功能测试的目标

    2007-05-21 16:59:57

    所有的Smoking test 和Sanity test的所有Case。

    首先当然是Smoking test里的Case先写了,但目前来说我还做不到在没有开发出界面来之前就可以把Smoking test里的Case写成脚本,我还是必须等到第一个build之后,才可以做这项工作。为什么把这项任务放在自动化功能测试的最前,是因为我理解Smoking test就是要快迅知道这次的BUILD是否可接受。手动当然不可以快能过自动化测试了。

    其次就是项目结束后开始Sanity test的CASE编写脚本,所有的1级测试用例和部分的2级测试用例,这个当然是必须的了,否则自动化功能测试就没有意义了。

    对于消极测试的CASE我还想不出什么法子把它加入我的目标中,因为多数消极测试很难写成脚本,即使写成代价也太大了。满佩服有些公司已经把消极测试也做成自动化测试脚本。(这些公司一定很有钱,有机会让我也加入吧。)

  • IT行业里的优秀人才

    2007-05-21 16:24:41

    以下两人都是我的同事,所以也是我亲眼所见发现的事情。

    Y同事是很优秀的人,在我进公司不久后就听到很多同事和我说这件事情。但一直没有机会和他正面接触过。他是某个项目的开发经理,再后来不知道什么原因,他离开了公司。终于某个时间,我有机会去测试他开发的项目,让我大吃一惊,以前听说他们项目没发布出去,说是客户很挑。但终于看到他们的项目之后,我才知道原因。整个系统就是一个随意建起来的东西,没有规划,功能是都实现了,可是操作起来可不容易,要东找西找才能把一个流程作下来,有些功能藏得太深了,找不到要问开发这个功能的人才知道。我不记得我写了多少的问题问开发人员了。但最终这个项目还是没发布出去。真是太好了。如果这样的系统也都发布出去,真是软件行业的一大……

    G同事在某个项目中和我一个team,在测试前期的准备工作中,很多比较难的问题,都是他来攻克的,所以我们一直以为G同事也是一名优秀的人员,但在测试执行工作进行后,我们发现G同事真的不适合这项工作,很多问题都被他漏测了。所以在以后的测试工作中,我们只能安排一些比较不会出错的部分给他做。有时还有人去复查他的测试工作。

  • BUG编写之我见

    2007-04-29 09:22:11

    BUG编写之我见

    以下的内容一定要写清楚,目的只有一个,就是为了节省时间,节省一切可以节省下来的时间,不让浪费时间成为我们加班的理由。

    1.              选择操作系统:我做的多数系统都是跨平台的,如果写BUG的时候没把这个选上,那开发人员一定会问你,“为什么你说的这个问题我这里没有出现吗?”然后你在你的环境下操作,BUG还再,你告诉开发人员“在啊,为什么不在呢?”于是……,终于你们达成共识,原来只是在某个操作系统上才出现这样的问题。于是时间就这样浪费了。

    2.              选择数据库:此选项一定在存在的原因和操作系统存在的原因一样。

    3.              选择BUG的等级:在选择等级的确存在很多主观的原因,但是如果你在测试前期给你的TEAM作过培训的话,我想主观的问题会大大的减少,在一般BUG的定义有五级。第一级出现为重要的模块功能不能实现;有颠覆重大需求的实现,一而再再而三出现的BUG,解释一次什么才是重要功能比如电子商务里的注册功能就是重要功能,如果用户不能注册,那我想这个系统没有存在的意义。那什么是颠覆重大需求的实现呢?比如说我注册一个普通用户系统却给我超级用户的权限,如果出现这样的情况那危害性有多大是可能而知的。为什么给一而再再而三的BUG也定义为一级呢?想想一个相同的BUG出现了三次,浪费的时间是可想而知的,也说明了开发人员对他工作的重视程度不足,如果给这样的BUG定一级,我想这个开发人员应该会记得一辈子,而且今后应该不会再犯这样的错误。第二级是一些主要功能不能实现,除重要功能外出现在USE CASE里的所有功能都是主要功能。第三级,次要的功能不能实现,比如一张页面里的某些BUTTON不能用啊,还要就是输入框不能用之类的问题。第四级,文字表达有错,界面问题之类的。第五级,需求问题,这个可以根据不同BUG管理工具的情况来定义,我只是我们的项目因为常常会出现需求文档没有明确后存在的一些问题,把它定义为五级。

    4.              BUG的内容:尽量把内容写得傻瓜一些,这里的傻瓜只的是简单、浅显易懂,所以一定要加入操作步骤。想想看不会有人因为内容太简单而看不懂你的BUG吧。

    5.              BUG的内容:一定要写清楚操作的角色,如果你是使用普通用户操作出来的问题,开发人员用超级用户去操作,还能出现选择操作系统时的情况。那又是一个浪费时间的过程。

    6.              BUG的内容包括实现结果:出现了什么问题,把问题写在这里。

    7.              BUG的内容包括期望结果:把期望结果写清楚,那就不会有开发人员会来问你,那我这个BUG应该什么改的问题了。

        当然了,还有一些必写的选项,这里就不一一说明了,反正这些书本上都说得清清楚楚。我强调上面的几点,那是在做一个美国项目时发现这些重要性的,开发TEAM在美国,测试TEAM在中国,一个BUG编写出一点问题的话,开发TEAM就会发EMAIL过来:“I don’t know……”,然后你又发EMAEL过去:“I mean……”,加上时差,一个问题两天时间才能解决。如果你认真做到以上几点,省下的时间,没事你就看着别的TEAM加班,然后你就偷着乐吧。

553/3<123
Open Toolbar