发布新日志

  • 测试架构师必须具备的第一个能力:“准确的商业理解力”

    架构师Jack 发布于 2009-10-12 22:19:23

    TestArchitectJie@gmail.com

     

         测试架构师日记第一篇 测试架构师必须具备的第一个能力:“准确的商业理解力。”

         最近在51testing看到1篇关于测试架构师介绍的文章,文章中的测试架构师原型来自微软,其描述的工作内容让不少国内的测试同业很是羡慕,但又觉得好像离我们中国人很远。不知我们中国的测试工程师能做吗?我的答案是 Yes

    因为,我现在就在中国带领着一个测试架构师团队。了解自己所在公司测试架构师团队的运作和工作内容(后续将陆续与大家分享),虽然我们之前也从未接触过微软的测试架构师。但随着公司业务的扩大,业务的需要驱动了我们公司内部有一小部分人担当起了测试架构师的职责,其title来源也是有其偶然性。原本公司中测试工程师往上发展就是系统测试工程师,系统测试工程师再往上应该叫什么呢?最后参考软件开发的title,就开创性的在公司内部叫测试架构师。并开始从事了很多从公司层面而仅非单个测试经理层面所需要的新的测试工作职责,例如:领导负责一个产品线或一个大产品的测试技术规划,early testing,系统测试工程师的培养,与开发架构师一起设计和改进架构的设计质量,测试执行活动质量的审查保障,亲自指导重点测试方案的设计,为了不断降低公司研发成本而进行新测试技术研究实践和推广,基于风险的测试,基于模型的测试,安全性测试,兼容性自动化测试,分布式自动化测试,性能压力测试,需求测试等专项测试技术领域的研究,并支撑新领域重点市场项目活动等等。

    与微软的共性是我们的测试架构师都不再亲自写自动化测试脚本,不亲自写测试工具的代码。但我们会从项目初始即项目需求和架构设计阶段就开始考虑未来的自动化测试框架,针对具体的产品特点,思考选择最合适的自动化测试语言;在架构设计中充分考虑如何支撑未来更高的自动化测试率,让架构设计调整具备高的可测试性率;由于参与早期的设计方案讨论选型,能提前识别和规划好未来产品测试组所需要提前准备的测试实现技术。并亲自带着测试工程师提前进行测试技术储备。当然我们也常常亲自去实施一些测试活动:如设计测试工具的架构(主要考虑未来扩展性和更好满足测试需求),然后交给专门的测试工具开发团队来实现;或亲自设计压力测试方案;亲自研究安全性测试策略和方案。推广方式,主要是亲自实践各种新测试技术后,再带着测试人员在实战中掌握相关的方法。

    我们大部分的测试架构师都是写过自动化测试脚本或程序的,只是现在的工作由于需要我们去思考太多的东西,所以没有一丁点精力来编码。特别是负责一个产品线的测试架构师,由于负责多个产品,还要抽取产品间的共性测试技术,要建立起产品线的测试架构图,统一产品间的测试技术,统一测试方案的设计质量标准,需要具备更强的抽取共性的能力。同时,还需要能在短期内快速了解和识别影响产品成败的关键测试技术,因为并不是所有产品都是性能压力测试就是最重要的。例如:某产品线有9个产品,有的产品最需要保障的是可靠性(性能,可用性不是关键);有的产品最需要保障的却是可用性,而不是可靠性;有的产品最需要保障的是安全性,而不是性能;有的产品最需要保障的是可移植能力和可集成能力,而不是性能。那么相应的每个产品测试用例设计就会有所侧重,例如:对于重视可移植能力和可集成能力的产品,测试架构师就应该帮助测试人员系统地做好这2个领域的测试用例。

    因此,测试架构师必须具备的第一个能力就是:“准确的商业理解力。”商业成功的核心竞争力是什么?测试技术和测试资源是否能真正地保障或支撑商业成功的核心竞争力?这些都是测试架构师需要准确识别的,如果测试架构师识别错误了,那么有可能在需要重点保障的领域,测试技术和测试资源投入不足,导致最后产品的商业竞争力得不到支撑,得不到质量保障。例如:某产品对外宣传是业界可靠性最高的产品,可是测试人员在测试活动中惯性地把主要精力都花在了性能测试中,对各种异常的测试验证并不是业界最丰富的。结果在与业内其他产品比较的第三方测试报告中,该产品的可靠性得分却并不是第一,虽然性能是第一,但该产品在特定的重视可靠性的市场中基本失去了商业竞争力。

    某美国公司的一款产品在传统行业中主要功能基本雷同,如何才能与类似产品拉开距离,突出竞争力。后发现产品的用户在使用产品时普通操作时间都较长,因此为了缩短用户的操作时间,该公司决定在产品的可用性领域重点投入设计,核心竞争力是解决用户的可用性问题。其测试团队把大部分的测试设计精力也放在了可用性的测试活动中,构建了业界非常丰富的可用性测试用例,这些测试用例的场景超过了产品设计考虑的原有场景,并最终通过测试驱动设计,与产品设计师一起不断改进产品的可用性。最后不但提供了业界可用性最强的产品,而且其可用性功能的稳定性质量也非常高。测试活动从效率和质量角度支撑了产品的商业成功。

    所以,如果你的公司正准备招募测试架构师,请第一考评他的能力应该是他的商业理解力。具有该能力的测试工程师知道如何选择:做正确的事!确保事半功倍。而不具备该能力的测试工程师可以成为系统测试工程师,由他来保障正确的把事做好!

      

    测试架构师日记第二篇 测试架构师必须具备的第二个能力:“区分测试重点和测试难点”

  • 安全性测试可以从以下方面考虑

    过客一个 发布于 2010-04-29 16:35:57

     

    软件安全性测试包括程序、数据库安全性以及业务功能安全性测试同时可以根据系统安全指标不同采取的测试策略也不同。

    a) 用户认证安全的测试要考虑问题:

    i. 明确区分系统中不同用户权限

    ii. 系统中会不会出现用户冲突

    iii. 系统会不会因用户的权限的改变造成混乱

    iv. 用户登陆密码是否是可见、可复制

    v. 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)

    vi. 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统

    b) 系统网络安全的测试要考虑问题

    i. 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上

    ii. 模拟非授权攻击,看防护系统是否坚固

    iii. 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列和 IPhacker IP )

    iv. 采用各种木马检查工具检查系统木马情况

    v. 采用各种防外挂工具检查系统各组程序的外挂漏洞

    c) 数据库安全考虑问题:

    i. 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)

    ii. 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)

    iii. 系统数据可管理性

    iv. 系统数据的独立性

    v. 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整

  • LoadRunner如何获得参数化中每个关键字的搜索响应时间

    charmer 发布于 2006-12-07 12:50:05

    LoadRunner如何获得参数化中每个关键字的搜索响应时间
    在测试搜索引擎时我们一般采用大量的搜索关键字,有时有必要了解在并发访问的情况下每个关键字的响应时间,一般如果不对脚本进行处理的话你可以获得每个关键字的响应时间但是这些时间没有跟相应的关键字对应,所以对程序的调优没有什么大的帮助,这里介绍一种方法,可以让你知道在并发访问下每个关键字的响应时间。

    解决办法是可以把搜索搜索的操作定义为一个事务,事务名也用参数值代替,这样就可以从测试结果中知道该关键字的响应时间了。举例如下:

    #include “web_api.h”

    Action()

    {

    lr_start_transaction(lr_eval_string(”{SearchParam}”));

    web_url(”s”,

    “URL=http://www.baidu.com/s?wd={SearchParam}”,

    “Resource=0″,

    “RecContentType=text/html”,

    “Referer=”,

    “Snapshot=t1.inf”,

    “Mode=HTTP”,

    LAST);

    lr_end_transaction(lr_eval_string(”{SearchParam}”), LR_AUTO);

    return 0;

    }

    这样就可以在场景运行时通过事务监视图中就可以看到每个关键字的所用的时间了。

    这种方法的缺点是当关键字比较多时,监视器中行数会增多,可能导致Controller显示不下。

    还有一种方法,示例如下:

    #include “web_api.h”

    Action(){

    float trans_time;

    lr_start_transaction(”sousuo”);

    web_url(”s”,

    “URL=http://www.baidu.com/s?wd={SearchParam}”,

    “Resource=0″,

    “RecContentType=text/html”,

    “Referer=”,

    “Snapshot=t1.inf”,

    “Mode=HTTP”,

    LAST);

    trans_time = lr_get_transaction_duration(”sousuo”) * 1000;

    lr_output_message(”SearchParam:%s,duration:%fms”,lr_eval_string(”{SearchParam}”),trans_time);

    lr_end_transaction(”sousuo”, LR_AUTO);

    return 0;

    }

    一般使用这种方法比较好,可以把lr_output_message函数换为自定义的函数,把结果写到一个结果文件中去,注意写入的文件最好以vuser id来命名,这样可以保证同时只有一个进程在读写这个文件(这样一来不同的用户读写不同的文件,否则如果所有用户写入同一文件在用户数多的情况下并发可能造成对同一文件的访问共享违例,获得vuser id的函数为lr_whoami)。另外需要说明的是这里获得的事务时间可能比通过lr_start_transaction和lr_end_transaction获得的事务的时间要小一些,这是由于测试工具自身的原因造成的,可以不必理会。

    同时,如果想知道查询过程中哪个关键字搜索结果错误,也可以加上验证点,同时可以再加一些代码,把搜索超过一定时间的关键字过滤出来。
  • 使用LoadRunner监控Apach服务器的步骤

    charmer 发布于 2006-12-07 12:42:59

    使用LoadRunner监控Apach服务器的步骤

    一、Apache上的设置

    打开<Apache Installation>\conf\httpd.conf,进行如下修改:

    1、  设置允许查看Apache运行状态的主机

    #

    # Allow server status reports, with the URL of http://servername/server-status

    # Change the ".your-domain.com" to match your domain to enable.

    #

    #取消一下代码前面的注释符号“#”,并且设置Order(顺序)为允许优先 

    <Location /server-status> 

        SetHandler                                  server-status 

        Order                                        allow,deny 

        Deny from                                 nothing 

        Allow from                                all 

    </Location> 

    这样改变以后重新启动Apache在浏览器中输入http://servername/server-status就可以看到Apache运行时的信息,而输入http://servername/server-status?auto就会看到如下信息:

    Total Accesses: 124 

    Total kBytes: 444 

    CPULoad: 3.32432 

    Uptime: 37 

    ReqPerSec: 3.35135 

    BytesPerSec: 12288 

    BytesPerReq: 3666.58 

    BusyWorkers: 1 

    IdleWorkers: 7 

    Scoreboard: ____W___.........................


    看到这样的信息就表示修改成功,这样就可以使用LoadRunner监视Apache了。

    以下两步跟使用LoadRunner监视Apache无关,可以跳过不看。

    2、  改变Apache的设置,打开详细状态开关;

    #

    # ExtendedStatus controls whether Apache will generate "full" status

    # information (ExtendedStatus On) or just basic information (ExtendedStatus

    # Off) when the "server-status" handler is called. The default is Off.

    #

    #取消了下面一行前面的注释符号“#” 

    ExtendedStatus On 

    3、  有用的设置,查看各模块信息

    #

    # Allow remote server configuration reports, with the URL of

    #  http://servername/server-info (requires that mod_info.c be loaded).

    # Change the ".example.com" to match your domain to enable.

    #

    #取消一下代码前面的注释符号“#”,并且设置Order(顺序)为允许优先 

    <Location /server-info> 

        SetHandler                                  server-info 

        Order                                         allow,deny 

        Deny from                                  nothing 

        Allow from                                 all 

    </Location> 

    二、LoadRunner上的设置

    经过以上第一项设置以后就可以使用LoadRunner监控Apache的运行情况了,在LoadRunner可用的监视器中双击Web Server Resource Graphs下的Apache节点,然后在右边对应的窗口中添加Apache所在主机的IP地址,并且加入计数器后单击OK,这样就可以在LoadRunner中实时显示Apache的运行状态信息了。

    注意:您可能收到如下消息【Monitor name :Apache. Parsing error, cannot find token: BusyServers. Measurement: BusyServers|192.168.0.186. Hints: 1) Such a measurement does not exist, or the html page may be different from the supported one. 2) Try to replace the Apache.cfg with appropriate Apache_<version>.cfg file in <Installation>\dat\monitors and rerun the application (entry point: CApacheMeasurement::NewData).   [MsgId: MMSG-47479]】,这是由于要监视Apache的版本提供的计数器与LoadRunner默认的计数器不一致导致的。此时建议先关闭Controller,打开<Installation>\dat\monitors下的apache.cfg文件(其它文件名类似Apache_<version>.cfg的是Apache监视配置的备份,只有apache.cfg是生效的):

    1、  修改Counter0=IdleServers为Counter0=IdleWorkers,同时修改注释信息Label0=#Idle Servers (Apache)为Label0=#Idle Workers (Apache),描述信息也建议修改;

    2、  修改Counter4=BusyServers为Counter4=BusyWorkers,同时修改注释信息Label4=#Busy Servers (Apache)为Label4=#Busy Workers (Apache) ,描述信息也建议修改。

    然后保存并关闭该文件,重新打开Controller并添加计数器,这样监视就正常了
  • LR脚本增强其它技术

    51Xiaolin 发布于 2011-11-21 14:37:48

      

    1、注释技术Comment

    可以为脚本添加一些注释,这样好区别每一个脚本或者每一个函数的作用,为以后维护脚本提供方便。

    点击Insert->Comment或者是在录制的过程中点击Comment按钮

    2、日志信息技术LogMessage

    有些脚本需要加些这样的一些日志信息,在脚本运行的过程中或者运行结束后打印出来,让我们明确了解脚本的运行状况或者是否达到了我们期望的目的。

    点击Insert->LogMessage

    3、单步执行技术

    为了给脚本排错或者需要找到一些关键信息,我们需要一步一步地执行脚本,这时候就要用到单步执行技术。

    点击vuser->run step by step或者使用快键键F10

    4、脚本比较技术

          在有时候执行关联技术的时候,我们找不到我们需要去关联的信息,这时候,可以通过使用脚本比较技术来找到两个脚本中需要关联的地方。

    点击Tools->compare with script然后选择第二个脚本,会弹出两个脚本比对页面

    5、脚本重生技术

          在录制完成后,我们不断地修改脚本,发现不知道哪里把脚本改错了,回放不了,这时候我们可以使用脚本重生技术。

    点击Tools->Regenerate Script

    6、编译技术

          VuGen相当于一个语言开发环境,可以在里面进行代码的编写,编写完成后可以通过使用编译技术Compile检查编写的代码是否正确。

    点击Vuser->Compile或者使用快捷键Shift+F5

    7、协议分析技术

          当我们不知道某一个程序或者Web是什么协议的时候,我们可以使用loadrunner11提供的协议分析技术。也可以打开以前保存的已经分析过的一些程序。

    点击File->Protocol Advisor->Analyze Application选择要分析的程序或者web就可以

    8、断点技术

          在调试脚本的过程中,有时候我们希望脚本只要跑到某一处就会停下来让我们可以在那指定的地方分析脚本的一些信息,这时候就要用到断点技术。

    点击Insert->Toggle Breakpoint或者使用快捷键F9一个一个添加断点技术

    点击Edit->Breakpoints或者使用快捷键Ctrl+B一群一群地添加断点技术

    9、查找和定位脚本技术

          为了方便我们快速定位脚本,我们需要使用查找和定位脚本的技术

    点击Edit->Go to Line或者使用快捷键Ctrl+G技术可以迅速定位到某一行;

    点击Edit->Find或者使用快捷键Ctrl+F技术可以迅速在一个action中找到某个函数或者某一个字符;

    点击Edit->Find in current script. files或者使用快捷键Ctrl+Shift+F技术可以迅速在整个脚本中找到某个字符;

    点击Edit->Replace或者使用快捷键Ctrl+H技术可以迅速替换掉某些字符

    10、脚本视图(Script)和树视图(Tree)

          代码和图形相互结合在一起看,能够帮助我们更快地分析脚本的错误也有助于我们更家容易地优化脚本。

    点击View->Script. View或者View->Tree View会看到两种不同形式的脚本。

    11、函数帮助技术

          在调试脚本的过程中,我们需要使用不同的函数,这时候有些函数我们不熟悉,可以借助函数帮助技术

    在脚本中选中某一个函数,按F1键,直接弹出函数的帮助或者点击开始->HP Loadrunner->Documentation->Function Reference查看所有的函数帮助

    12、帮助技术

          学好任何一门工具,都要学会使用他的帮助,这是掌握一门工具的最快方法。

    点击开始->HP Loadrunner->Documentation->VuGen User Guide

  • LR的脚本及场景设计

    51Xiaolin 发布于 2011-11-21 14:41:12


    1关于脚本

    我们可以使用LoadRunner的Virtual user generator创建虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为,它会先记录业务流程,然后把它转化为脚本。利用虚拟用户,我们可以在业务主机上同时产生成千上万的用户访问。

    1.1协议的选择

    在录制脚本时选择那种方式呢:

    • 如果应用是WEB应用,首选是HTML-based方式
    • 如果应用是使用HTTP协议的非WEB应用,首选是URL-based方式
    • 如果WEB应用中使用了java applet程序,且applet程序与服务器之间存在通讯,选用URL-based方式
    • 如果WEB应用中使用的javascript、vbscript脚本与服务器之间存在通讯(调用了服务端组件),选用URL-based方式

    基于以上分析,针对我们应用的特点,我们一般选择web(http/html)协议的html-based方式。采用这种方式录制的脚本,方便我们在后期增强脚本时做关联/参数化

    1.2测试脚本规范

    • 脚本越小越好。就像写code一样,不要太长,这样易于维护也易懂。尽量做到一个功能写一个脚本。如果那些功能是连续有序的,必须先做上一个,下一个动作才能进行,就只能放在一起了
    • 插 入事务。有时我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个 transaction,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。插入事务操作可以在录制过程中进行,也可以在录制结束后进行。 LoadRunner 可以在脚本中插入不限数量的事务。举个例子:比如购买书籍,把从登录到购买成功整个作为一个脚本,对于需要关注的输入资料到提交保存,定义为单独的事务, 以取得响应时间,事务脚本函数如下:
    • 只 保留核心内容。录制后的脚本可能包含很多内容,而这些内容又不是我们本身应用所需要关注的,此时就需要对脚本进行修改,去除多余脚本,主要包括:删除 cookies、删除关键字EXTRARS后面的url、删除不必要的url、删除一切带有敏感标记的内容(比如:不想压测到实际生产线上时,则需要删除www.*.com的所有相关内容)
    • 脚本名称,事务名称、参数名称要做到见名知义。

    1.3脚本增强

    其实上面提到的去除多余脚本也可以放在这里来介绍,作为脚本增强的一个方面,外关于脚本增强的几个方面,就要涉及到以下内容:参数化,关联

    1.3.1参数化

    首先选择待参数化的内容,点击右键,选择”Replace with parameter”。在弹出的对话框中,填写参数名称、选择Parameter Type,再点击Propeties,进行参数属性设置。

    现 选择最常用的一种参数类型,举例如下:假如我们要对登录进行性能测试,hello01是我们录制脚本时初始生成的用户名,当我们需要测试多个不同用户 (eg:hello02\hello03……)时,就需要对用户名(密码同样操作)进行参数化操作,选中脚本中的“hello01”,点击右键后选 择”Replace with parameter”,设置“username”为其参数名称,类型选择file,再点击properties,对其进行具体内容设置,依次输入 hello02\hello03……,并保存。如下图所示:

    点击properties后,可对该参数进行个性化设置

    • “Select next row ”有以下几种选择:多个VU如何取值

         Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取

         Random:在每次循环里随机的读取一个,但是在循环中一直保持不变

          Unique :每个VU取唯一的值。注意:使 用该类型必须注意数据表有足够多的数。比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。

    Same Line As 某个参数(比如username):

    和 前面定义的参数username 取同行的记录。通常用在有关联性的数据上面。这个也是很有用的,比如有时候我们要求指定VU取读取指定数据,就可以这样定义:创建参数文件,共两列,假设 username、passwd,username设定取数方式是unique,passwd则设成 same line as icpcode,如果参数文件第一行数据为992201,200001,则当icpcode=992201时,icpservid会取200001。

    • “Update value on”有如下几种选择:多次迭代如何取值

        once在所有的反复中都使用同一个值,

        each iteration则每次反复都要取新值,

        each occurrence则只要发现该参数就要重新取值,即如果一个action中有多个该参数,每遇到一个就要重新取一个值。

    1.3.2关联

    关联是用来解决脚本中存在的动态数据问题的.当你回放一次后,LR会自动查找你录制的时候和回放时候的差别,找出动态数据,并作成参数。

    如 果用户想使用loadrunner自带的关联规则创建关联,那么需要在录制脚本时依次选择【Recording Options】>【Internet Protocol】>【Correlation】中启用关联规则,选中“Enable correlation during recording”,当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。

    如 果需要在回放脚本时进行关联,loadrunner自动检测需要关联的部分,那么需要在【Tools】>【general options】>【Correlation】中选中“save correlation information during replay”和“show scan for correlations popup after replay of vuser”,当回放玩脚本后,会弹出Scan action for correlation窗口,进行关联点的搜索。

    如果没有进行上述设置,那么可以执行ctrl + F8此命令可启动自动关联。

    1.4脚本验证

    脚 本修改完,一定要回放脚本来验证脚本的正确性。尤其是当功能环境与性能环境环境分开时,要确保脚本的运行只对性能环境产生压力而不能影响到功能环境。这就 需要我们除了要观察回放后页面展示的正确性之外,还要注意数据流流向,如果涉及到写数据库的操作时,就需要去性能环境的数据库check一下,数据是否有 写入进去;如果是涉及到读库操作的,最好在准备性能测试数据时就构造与功能数据库不同的数据以方便直接从页面显示上判断,如果没有的话,就用 netstat命令来判断。

    调试修改脚本时,可以在【Tools】>【general options】>【Display】中,选中所有项。这样做的好处在于,通过浏览器快照和report,查看脚本运行情况,方便查错。

    注意:场景运行时,切记将所有项的勾去掉,否则会将loadrunner测试机的硬盘撑爆!而且也会影响到测试结果,产生TPS波动现象。

    2创建运行场景(Controller)

    当脚本创建好后,需要创建测试场景Scenario,一个运行场景包括一个运行虚拟用户的机器列表,一个测试脚本的列表,及大量的虚拟用户,然后利用LoadRunner的Controller来组织测试方案。

    2.1虚拟用户数

    虚拟用户数目会直接影响到压力的大小。在一般情况下,采用递增虚拟用户的方式来寻找系统能够承受的合理压力。比如,预估总虚拟用户数为20个,可以设置初始为2个,每5分钟增加1或2个用户。

    2.2 场景选择

    Loadrunner提供给我们两种方式的场景:Manual Scenario和Goal-Oriented Scenario,根据实际情况具体选择哪种进行测试。

    1. Manual Scenario:该项要完全手动的设置场景,这项下面还可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在Controller的Scenario菜单下设置。
    2. Goal-Oriented Scenario:如果目标测试是要达到某个性能指标,比如:每秒多少点击,每秒多少transactions,能到达多少VU,某个Transaction在某个范围VU(50-100)内的反应时间等等,那么就可以使用面向目标的场景。

    选择待运行的脚本后,点击add -> OK,进入到下图所示页面,点击Edit Schedule按钮,可以对VU在整个场景中的加载、卸载及持续时间进行设置,同时还可以通过页面右边的Load Preview 预览用户加载情况。

    设置好后,接下来就要对Run-Time Setting进行设置了。

    2.3 Run-Time Setting

    VU中也有一个run-time setting,但作用有所不同,此处的设置主要用来对整个场景运行时进行约束,此时脚本的运行时设置就会失效;若在此没有对运行时设置,则按照脚本的设置来运行。一般情况下,会按照以下方式进行设置

    • Run Logic:设置成1;--比如设置这里为3,有2个并发用户,相当于执行了6次脚本
    • Log: 将Enable logging前面勾去掉;--即不打印输出日志,避免造成loadrunner压测机器磁盘撑爆
    • Think Time:一般情况,为了增大对服务器的压力而选择Ignore think time;
    • Browser Emulation:一般情况下,不选择Smulate brower cache和 Down non-HTML resousces;--不选择Smulate brower cache 是为了最大程度模拟一个新用户打开链接时请求的都是服务器的资源而不是本地的一些浏览器中缓存的内容;不选择Down non-HTML resousces是因为在压测时,更关注后端应用本身的性能,而不去下载存放在其他机器上的静态资源
    • Preferences:可以将Advanced下的File and line in automatic transaction name取消掉;--目的也是为减少压测机本身资源的消耗。
    • 其它设置项:使用默认设置即可。

    2.4Result设置

    场 景设置好后,即将要开始运行。此时一定要记得的一件事情就是在【Result】>【Result Settings】下将 directory指定到硬盘空间大一点的目录下。因为我们在压测过程中会产生大量的临时文件,如果放在默认目录C:\Documents and Settings\hanshan\Local Settings\Temp下的话,一般C盘空间都不会太大,会导致压测机器本身磁盘爆掉,进而影响压测结果。

    2.5应用服务器监控

    按 照前面的步骤一步步走下来后,就可以运行设定的好性能场景了。在运行时,一般需要关注应用的Running Vusers,Trans Response Time,Trans/Sec(Passed), unix resources等。监控应用环境的系统资源(cpu\load等)使用情况,需要事先安装rstate守护程序。

    关于测试结果

    利 用loadrunner的Analysis组件可以实现对整个测试场景的结果分析,场景结束后,在controller中可以点击 【Resuluts】>【Analyze Results】,即可实现。关于对测试结果的分析内容由于篇幅有限故不在本文中作详细介绍,有兴趣的同学可私下交流。

  • 使用lr_db_connect对数据库进行性能测试(转载)

    51Xiaolin 发布于 2012-02-15 19:03:22

      我们需要完成一个对Oracle数据库的连接,那么我们可以通过OLEDB的方式来完成,代码如下:
     
    1. int NumRows=0;
    2. int i;
    3. lr_db_connect("StepName=Connect",   
    4. "ConnectionString=Provider=OraOLEDB.Oracle.1, Data Source=ORCL; Persist Security Info=True; User ID=cloudchen;Password=123456",
    5. "ConnectionName=db1",
    6. "ConnectionType=OLEDB",
    7. LAST );

    8. lr_start_transaction("SQL");

    9. NumRows = lr_db_executeSQLStatement("StepName=PerformQuery",
    10.     "ConnectionName=db1",
    11.     "SQLStatement=select * from USERS",
    12.     "DatasetName=MyDataset",
    13.     LAST );
    14.      
    15. lr_end_transaction("SQL", LR_AUTO);//获得查询记录所开销的时间

    16. lr_output_message("The query returned %d rows.", NumRows);

    17. while(i<NumRows) {
    18. lr_db_getvalue("StepName=GetValue",
    19.         "DatasetName=MyDataset",
    20.         "Column=USER_NAME",
    21.         "Row=next",
    22.         "OutParam=MyOutputParam",
    23.         LAST);

    24. lr_output_message("The value is: %s", lr_eval_string("{MyOutputParam}") );
    25. i=i+1;
    26.     }

    27. lr_db_disconnect("StepName=Disconnect",
    28.             "ConnectionName=db1",
    29.             LAST);
  • QTP原理之回放原理

    51Xiaolin 发布于 2012-02-17 11:35:55

      自动化测试可以基于代码,例如junit,cppunit,可以基于协议,例如 loadrunner,QTP是基于GUI界面的自动化测试工具。junit和cppunit属于单元测试,loadrunner和QTP属于系统测试。 loadrunner用于系统的性能测试,QTP用于系统的功能测试。QTP是一款基于界面的功能自动化测试工具。

        LR录制的是协议和数据包,QTP录制的是鼠标和键盘的消息。QTP录制回放时基于windows操作系统的消息机制。QTP在录制时监听应用程序的消 息,监听到之后把消息放到容器里,而另外的监听程序则从容器中取出容器中的消息,并调用对用的API处理函数。QTP截取的是用户对应用程序的操作,即录 制的是消息。对于C/S应用程序,在回放时QTP根据对象的句柄(handle)和脚本内容,调用API函数;对于B/S应用程序,在回放时基于 DOM(document object model)来解析。

        RO(Runtime Object)和TO(Test Object)。RO是指GUI界面上的控件即对象本身,TO是QTP对象库里的对象即在录制时添加到对象库的对象。RO是应用程序上实际的对象,因此拥 有对象的所有的属性和方法;TO是QTP在录制时获取的应用程序的对象的,而录制时QTP只保存了应用程序一部分常用的,能够在回放时识别应用程序上对象 的一部分属性,因此TO对象拥有应用程序上对象的一部分属性。另外QTP对象库里保存的是TO对象。不过QTP可以使用Object Spy功能获取应用程序的所有属性值,或者可以通过TO对象的getROproperty()和getROpropertys()获取应用程序的所有属性 值(呵呵,所有对象都没有setROproperty()方法)。使用TO对象的setTOproperty()和getTOproperty()可以操 作对象库的TO对象。

        QTP的录制原理:根据用户在应用程序界面上的操作,QTP采用Object Identification Tools工具对被操作的对象进行识别,采用反编译的原理看其属于哪个插件类,从而进一步识别其属于什么控件类,然后QTP把对应的控件类实例化一个对 象,并把获取的应用程序的一部分属性值(足以识别对象?)赋给新建的对象,并添加到对象库里即TO对象,而把用户对对象的操作添加到脚本里面。

        QTP的回放原理:QTP根据脚本中记录下来的对象操作的顺序进行回放。QTP从脚本中读取到该对象,并根据对象的层次和名称到对象库中寻找相同名称的测 试库对象,在测试库找到相应的对象,获得对象的属性,根据对象库中对象的属性,在运行的应用程序中进行匹配,寻找运行时对象,找到后根据脚本中记录的对该 对象执行的动作和参数值。

  • LR视频

    zero_up 发布于 2009-02-16 20:15:01

    小布老师的LR视频,总结如下:

    一、LR 快速入门

    [小布老师视频 - 测试工具概述,兼LoadRunner介绍 -1
    http://www.boobooke.com/v/bbk1046
    对初步接触性能测试和LoadRunner的朋友参考作用。

    小布老师视频 - 测试工具概述,兼LoadRunner介绍 - 2
    http://www.boobooke.com/v/bbk1047

    小布老师视频 - 测试工具概述,兼LoadRunner介绍 - 3
    http://www.boobooke.com/v/bbk1048

    小布老师视频 - 测试工具概述,兼LoadRunner介绍 - 4
    http://www.boobooke.com/v/bbk1055

    小布老师视频 - 在LoadRunner中使用动态库技术:

    http://www.boobooke.com/v/bbk1049


    本视频是该系列视频的第四讲,也是最后一讲。 在该视频中,小布老师用了20多分钟的时间演示了LoadRunner的快速入门,所以本视频对从来没有接触过LoadRunner,想快速入门的朋友特别合适。

    二、小布老师LR系列培训视频 1 - LoadRunner概述(上)

    [V] 小布老师LR系列培训视频 1 - LoadRunner概述(上)
    http://www.boobooke.com/v/bbk1059

    第一讲 LoadRunner概述

    这个系列讲座是一套完整的LoadRunner培训视频,希望大家喜欢。

    小布老师LR系列培训视频 2 - LoadRunner概述(下)

    [V] 小布老师LR系列培训视频 6 - 录制和回放测试脚本(3)

    第三讲 录制和回放测试脚本。 本讲座是该讲的最后一集。 本讲有三集视频,请大家注意:

    http://www.boobooke.com/v/bbk1063
    http://www.boobooke.com/v/bbk1064
    http://www.boobooke.com/v/bbk1065

    或者进小布老师这个地址,里面知识很多很齐全,也是视频哦

    http://www.boobooke.com/index_old.php

    雪鹰老师力作:LoadRunner中Web检查点两个函数剖析,

    web_reg_find和web_find两个函数的区别:http://www.boobooke.com/v/bbk1333http://www.boobooke.com/v/bbk13334

    小歪作品:LoadRunner参数化之研究 http://www.boobooke.com/v/bbk1617

    雪鹰老师力作:LoadRunner中编写ftp测试脚本:http://www.boobooke.com/v/bbk1349

    小歪作品:LoadRunner关联之研究:http://www.boobooke.com/v/bbk1586

    小强作品: LoadRunner之自动关联:http://www.boobooke.com/v/bbk1778

    小强作品: LoadRunner脚本编写规范http://www.boobooke.com/v/bbk1781
    小强作品: 在LoadRunner使用Java虚拟用户技术:http://www.boobooke.com/v/bbk1901

    小强作品: LoadRunner之脚本调试:http://www.boobooke.com/v/bbk1777
    小强作品: LoadRunner之错误处理:http://www.boobooke.com/v/bbk1776

    小强作品:LoadRunner界面分析:3集

    1.http://www.boobooke.com/v/bbk1735

    2.http://www.boobooke.com/v/bbk1736

    3.http://www.boobooke.com/v/bbk1737

    小强老师系列作品:使用LoadRunner录制MS SQL的脚本:http://www.boobooke.com/v/bbk1526

    小强老师系列作品:LoadRunner的目录分析:http://www.boobooke.com/v/bbk1574

    小强老师系列作品:性能测试基本概念剖析:http://www.boobooke.com/v/bbk1577
    小强作品:LoadRunner常用术语介绍:http://www.boobooke.com/v/bbk1620

    三、小布老师Oracle 9i DBA Fundamentals I的系列视频下载地址

    在线播放地址:
    第一讲:  http://www.boobooke.com/v/bbk1109
    第二讲:  http://www.boobooke.com/v/bbk1110
    第三讲:  http://www.boobooke.com/v/bbk1112
    第四讲:  http://www.boobooke.com/v/bbk1114
    第五讲:  http://www.boobooke.com/v/bbk1115
    第六讲:  http://www.boobooke.com/v/bbk1148
    第七讲:  http://www.boobooke.com/v/bbk1149
    第八讲:  http://www.boobooke.com/v/bbk1150
    第九讲:  http://www.boobooke.com/v/bbk1151
    第十讲:  http://www.boobooke.com/v/bbk1152
    第十一讲: http://www.boobooke.com/v/bbk1153
    第十二讲: http://www.boobooke.com/v/bbk1154
    第十三讲: http://www.boobooke.com/v/bbk1161
    第十四讲: http://www.boobooke.com/v/bbk1162
    第十五讲: http://www.boobooke.com/v/bbk1163
    第十六讲: http://www.boobooke.com/v/bbk1164
    第十七讲: http://www.boobooke.com/v/bbk1165
    第十八讲: http://www.boobooke.com/v/bbk1166
    第十九讲: http://www.boobooke.com/v/bbk1167
    第二十讲: http://www.boobooke.com/v/bbk1168
    第二十一讲: http://www.boobooke.com/v/bbk1169
    第二十二讲: http://www.boobooke.com/v/bbk1170
    第二十三讲: http://www.boobooke.com/v/bbk1171
    第二十四讲: http://www.boobooke.com/v/bbk1179
    第二十五讲: http://www.boobooke.com/v/bbk1180

    下载地址:
    第一讲:  http://www.boobooke.com/v/bbk1109.zip
    第二讲:  http://www.boobooke.com/v/bbk1110.zip
    第三讲:  http://www.boobooke.com/v/bbk1112.zip
    第四讲:  http://www.boobooke.com/v/bbk1114.zip
    第五讲:  http://www.boobooke.com/v/bbk1115.zip
    第六讲:  http://www.boobooke.com/v/bbk1148.zip
    第七讲:  http://www.boobooke.com/v/bbk1149.zip
    第八讲:  http://www.boobooke.com/v/bbk1150.zip
    第九讲:  http://www.boobooke.com/v/bbk1151.zip
    第十讲:  http://www.boobooke.com/v/bbk1152.zip
    第十一讲: http://www.boobooke.com/v/bbk1153.zip
    第十二讲: http://www.boobooke.com/v/bbk1154.zip
    第十三讲: http://www.boobooke.com/v/bbk1161.zip
    第十四讲: http://www.boobooke.com/v/bbk1162.zip
    第十五讲: http://www.boobooke.com/v/bbk1163.zip
    第十六讲: http://www.boobooke.com/v/bbk1164.zip
    第十七讲: http://www.boobooke.com/v/bbk1165.zip
    第十八讲: http://www.boobooke.com/v/bbk1166.zip
    第十九讲: http://www.boobooke.com/v/bbk1167.zip
    第二十讲: http://www.boobooke.com/v/bbk1168.zip
    第二十一讲: http://www.boobooke.com/v/bbk1169.zip
    第二十二讲: http://www.boobooke.com/v/bbk1170.zip
    第二十三讲: http://www.boobooke.com/v/bbk1171.zip
    第二十四讲: http://www.boobooke.com/v/bbk1179.zip
    第二十五讲: http://www.boobooke.com/v/bbk1180.zip

    [V] 小布老师Oracle 9i DBA Fundamentals II

    http://www.boobooke.com/bbs/tag.php?name=DBA&page=1

    第一讲 在线播放:http://www.boobooke.com/v/bbk1172

  • LR视频集

    天使之泪 发布于 2008-06-18 13:31:15

    LoadRunner视频集

    http://www.sg138.cn发布

    注:如转载请注明出处。

    在线观看:

    小布老师视频 - 测试工具概述,兼LoadRunner介绍1-4讲

    http://www.sg138.cn/LR/lr-1.html

    http://www.sg138.cn/LR/lr-2.html

    http://www.sg138.cn/LR/lr-3.html

    http://www.sg138.cn/LR/lr-4.html


    小布老师LR系列培训视频  - LoadRunner概述(上下)  


    http://www.sg138.cn/LR/lr-5.html

    http://www.sg138.cn/LR/lr-6.html


    小布老师LR系列培训视频  - LoadRunner安装  


    http://www.sg138.cn/LR/lr-7.html


    小布老师LR系列培训视频  - 录制和回放测试脚本(1-3)  


    http://www.sg138.cn/LR/lr-8.html

    http://www.sg138.cn/LR/lr-9.html

    http://www.sg138.cn/LR/lr-10.html


    小布老师LR系列培训视频 - LoadRunner测试Tuxedo应用系统 1-4  


    http://www.sg138.cn/LR/lr-11.html

    http://www.sg138.cn/LR/lr-12.html

    http://www.sg138.cn/LR/lr-13.html

    http://www.sg138.cn/LR/lr-14.html


    小布老师视频 - 在LoadRunner中使用动态库技术  

    http://www.sg138.cn/LR/lr-15.html

    另:如需下载,请直接查看源文件中swf文件下载即可。
  • LR视频教程

    jimiya 发布于 2010-01-05 15:36:16

    小布老师视频:
    测试工具概述,兼LoadRunner介绍 -1-4
    http://www.boobooke.com/v/bbk1046
    http://www.boobooke.com/v/bbk1046.zip
    http://www.boobooke.com/v/bbk1047
    http://www.boobooke.com/v/bbk1047.zip
    http://www.boobooke.com/v/bbk1048
    http://www.boobooke.com/v/bbk1048.zip
    http://www.boobooke.com/v/bbk1055
    http://www.boobooke.com/v/bbk1055.zip
    LR系列培训视频  - LoadRunner概述(上下)
    http://www.boobooke.com/v/bbk1059
    http://www.boobooke.com/v/bbk1059.zip
    http://www.boobooke.com/v/bbk1060
    http://www.boobooke.com/v/bbk1060.zip
    LR系列培训视频  - LoadRunner安装
    http://www.boobooke.com/v/bbk1061
    http://www.boobooke.com/v/bbk1061.zip
    LR系列培训视频  - 录制和回放测试脚本(1-3)
    http://www.boobooke.com/v/bbk1063
    http://www.boobooke.com/v/bbk1063.zip
    http://www.boobooke.com/v/bbk1064
    http://www.boobooke.com/v/bbk1064.zip
    http://www.boobooke.com/v/bbk1065
    http://www.boobooke.com/v/bbk1065.zip
    LR系列培训视频 - LoadRunner测试Tuxedo应用系统 1-4
    http://www.boobooke.com/v/bbk1067
    http://www.boobooke.com/v/bbk1067.zip
    http://www.boobooke.com/v/bbk1068
    http://www.boobooke.com/v/bbk1068.zip
    http://www.boobooke.com/v/bbk1071
    http://www.boobooke.com/v/bbk1071.zip
    http://www.boobooke.com/v/bbk1072
    http://www.boobooke.com/v/bbk1072.zip
    开源性能测试工具Curl-Loader快速实战 - 1
    http://www.boobooke.com/v/bbk1808
    http://www.boobooke.com/v/bbk1808.zip
    开源性能测试工具Curl-Loader快速实战 - 2
    http://www.boobooke.com/v/bbk1809
    http://www.boobooke.com/v/bbk1809.zip
    开源性能测试工具Curl-Loader快速实战 - 3
    http://www.boobooke.com/v/bbk1835
    http://www.boobooke.com/v/bbk1835.zip
    开源性能测试工具Curl-Loader快速实战 - 4
    http://www.boobooke.com/v/bbk1836
    http://www.boobooke.com/v/bbk1836.zip
    使用LoadRunner测试Oracle实例研究 - 1
    http://www.boobooke.com/v/bbk2159
    http://www.boobooke.com/v/bbk2159.zip
    使用LoadRunner测试Oracle实例研究 - 2
    http://www.boobooke.com/v/bbk2170
    http://www.boobooke.com/v/bbk2170.zip
    使用LoadRunner测试Oracle实例研究 - 3
    http://www.boobooke.com/v/bbk2171
    http://www.boobooke.com/v/bbk2171.zip


     

  • 关于如何提高黑盒测试用例的覆盖度思路

    love0523 发布于 2009-05-27 13:37:54

     您在做测试设计时是否发现自己写的测试用例超多,但却发现不了几个bug?是否发现经过您的测试之后,还是有较多问题漏测试?本文将大概介绍一下如何避免此类问题的思路。

      当您拿接到一个产品/项目拿到需求后,您需要对这个产品的需求进行分析/分解,写出测试方案,然后根据测试方案写测试用例,这就是测试设计的流程。如何避免上面提到的问题,我们就得从需求-->方案-->用例一步一步来分析。

      拿到需求文档后,我们要分析此次的产品/项目 新增、修改、删除那些功能,修改、删除时对原来功能会有什么影响,此时您需要把功能及影响一条一条的列出。

      列出完之后,在方案时就得考虑各种不同的分析方法的应用了,如下:

      1、首先进行等价类划分,包括输入条件和输出条件的等价类划分,合理设置有效等价类和无效等价类,这是减少工作量和提高测试效率最有效的方法。

      2、必须使用边界值分析,经验表明,这种方法设计出的用例能发现很多程序错误。

      3、可以使用错误推测法追加一些测试用例,这需要依靠您的智慧和经验。

      4、对照程序逻辑检查已设计出的测试用例的逻辑覆盖度,如果没有达到覆盖标准应当再补充足够的测试用例。

      5、如果程序的功能说明中含有输入条件的组合情况,一开始就可选因果图和判定表驱动法。

      6、对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。

      7、对于业务流清晰的系统,可以利用场景法贯穿整个测试方案过程,在案例中综合使用各种测试方法。

  • 测试面试题系列9

    月上百合 发布于 2009-02-20 15:16:27

    1。软件测试分哪两种方法?分别适合什么情况? 
    2。一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。 

    3。软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。 

    4。测试用例通常包括那些内容?着重阐述编制测试用例的具体做法 

    5。在分别测试winform的C/S结构与测试WEB结构的软件是,应该采取什么样的方法分别测试?他们存在什么样的区别与联系? 

    6。在测试winform的C/S结构软件时,发现这个软件的运行速度很慢,您会认为是什么原因?您会采取哪些方法去检查这个原因? 

    7。描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程 

    8。如果您是测试组长,您会采取什么样的方式管理团队?在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么? 

    9。我的计算机出了一个奇怪的问题,在window下,点击“开始”选择“关闭计算机”是出来的只有“注销”,“重新启动”和“关机”没有了,分析什么原因,如何处理? 

    1、软件测试分哪两种方法?分别适合什么情况? 

      软件测试方法一般分为两种:白盒测试与黑盒测试。白盒测试又称为结构
      测试、逻辑驱动测试或基于程序本身的测试,它着重于程序的内部结构及
      算法,通常不关心功能与性能指标;黑盒测试又被称为功能测试、数据驱
      动测试或基于规格说明的测试,它实际上是站在最终用户的立场,检验输
      入输出信息及系统性能指标是否符合规格说明书中有关功能需求及性能需
      求的规定。

    2、一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。 

      计划阶段、设计阶段、白盒单元、白盒集成、黑盒单元、黑盒集成、系统测试、回归测试、验收测试
      一套完整的测试应该由五个阶段组成:
      1).测试计划
      首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义
      相应的测试需求报告,即制订黑盒测试的最高标准。以后所有的测试工作
      都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之
      即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试
      时间及测试资源等。
      2).测试设计
      将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并
      为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响测试
      结果的有效性)。
      3).测试开发
      建立可重复使用的自动测试过程。
      4).测试执行
      执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理,测
      试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组
      成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。
      5).测试评估
      结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工
      作进度及工作效率进行综合评价。

    3、软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。

      BVT (Build Verification Test),主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特性是否正确
      Scenario Tests(基于用户实际应用场景的测试),Scenario Tests优点是关注了用户的需求,缺点是有时候难以真正模仿用户真实的使用情况
      Smoke Test,修复Bug后,针对此次修复是否会对其他模块造成影响而进行的专门测试。Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低
      此外,还有Application Compatibility Test(兼容性测试),主要目的是为了兼容第三方软件,确保第三方软件能正常运行,用户不受影响。Accessibility Test(软件适用性测试),是确保软件对于某些有残疾的人士也能正常的使用,但优先级比较低。其它的测试还有Functional Test(功能测试)、Security Test(安全性测试)、Stress Test(压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test(安装升级测试)等

    4、测试用例通常包括那些内容?着重阐述编制测试用例的具体做法 

      不同结构的用例包括的不一样。(版本、编号、项目、设计人员、设计日期、输入、预期输出……)
      、软件测试用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果。
    用例编号: 测试用例的编号有一定的规则,比如系统测试用例的编号这样定义规则: PROJECT1-ST-001 ,命名规则是项目名称+测试阶段类型(系统测试阶段)+编号。定义测试用例编号,便于查找测试用例,便于测试用例的跟踪。 

    测试标题: 对测试用例的描述,测试用例标题应该清楚表达测试用例的用途。比如 “ 测试用户登录时输入错误密码时,软件的响应情况 ” 。 

    重要级别: 定义测试用例的优先级别,可以笼统的分为 “ 高 ” 和 “ 低 ” 两个级别。一般来说,如果软件需求的优先级为 “ 高 ” ,那么针对该需求的测试用例优先级也为 “ 高 ” ;反之亦然, 

    测试输入: 提供测试执行中的各种输入条件。根据需求中的输入条件,确定测试用例的输入。测试用例的输入对软件需求当中的输入有很大的依赖性,如果软件需求中没有很好的定义需求的输入,那么测试用例设计中会遇到很大的障碍。 

    操作步骤: 提供测试执行过程的步骤。对于复杂的测试用例,测试用例的输入需要分为几个步骤完成,这部分内容在操作步骤中详细列出。 

    预期结果: 提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。 

    7、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程

      1、测试人员或开发人员发现bug后,判断属于哪个模块的问题,填写bug报告后,系统会自动通过Email通知项目组长或直接通知开发者。
      2、项目组长根据具体情况,重新reassigned分配给bug所属的开发者。
      3、开发者收到Email信息后,判断是否为自己的修改范围.
      1) 若不是,重新reassigned分配给项目组长或应该分配的开发者。
      2) 若是,进行处理,resolved并给出解决方法。(可创建补丁附件及补充说明)
      4、测试人员查询开发者已修改的bug,进行重新测试。(可创建test case附件)
      1) 经验证无误后,修改状态为VERIFIED。待整个产品发布后,修改为CLOSED。
      2) 还有问题,REOPENED,状态重新变为“New",并发邮件通知。
      5、如果这个BUG一周内一直没被处理过。Bugzilla就会一直用email骚扰它的属主,直到采取行 动。管理员可以设定最迟采取行动的期限,比如说3天,系统默认为7天。


  • 测试人员容易遗漏一些隐藏的缺陷

    ypeony 发布于 2008-07-18 13:43:34

    测试人员容易遗漏一些隐藏的缺陷

      通常软件测试会暴露软件中的缺陷,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,软件测试不可能发现所有的缺陷,而软件开发周期各个阶段仍然存在注入缺陷的可能,但是,有一些缺陷是测试中容易忽略的,也就是说,通过测试方法和用例可以充分暴露这些缺陷,遗憾的是,它们往往被忽略或者某种原因忘记测试了,这就给软件留下了隐患或者危机。这些容易被忽略的缺陷包括:

      1、安装缺陷

      通常项目组完成代码后,发布时候安装打包是最后一个环节,而软件测试人员通常在测试的时候,没有仔细的测试这一部分,而把用例集中在其他功能上。安装时候的缺陷通常通过拷贝而不是运行安装程序方式给测试人员安装软件,结果正式安装时候出现问题,引起例如控件没有注册,注册表没有导入等。删除时候没有注意安装文件夹是否存在用户文件,造成数据丢失;使用绝对路径;安装顺序没有说明书。

      2、配置文件

      有些文件在ini等配置文件中写出了管理员口令密码等信息,而且是明文的!这是一个安全隐患。另外,有些安装文件的 XML 文件,为了方便在数据库和中间层连接文件中写入了Admin 口令和密码。作为一个合格的软件测试人员,必须检查这些可以用记事本打开的文件。因为,一个稍有常识而且喜欢探索的用户,可能从中获取信息而成为不自觉的黑客。所以,配置文件可能成为软件安全方面的一个缺陷。

      3、网页安全缺陷

      现在网站开发已经注意到:登陆网站进入其内部网页后,直接拷贝网址,然后粘贴到另一IE 窗口输入,可以绕过登陆直接访问。也许商业网站很关注这个问题,但是很多行业软件却很容易忽略。

      网页安全缺陷还可能存在于 IE 弹出的子窗口。有些设计不严格的软件,在主页面关闭的时候子页面还可以运行,这是一个明显的漏洞,而且还大大增加了错误发生的几率。

      4、判断顺序/逻辑缺陷

      对界面进行多个输入判断的时候,非常容易出现这种问题。例如判断年月顺序,判断长度,判断非空等。假如操作员仅仅满足单个条件,保存不能成功;而按界面从上之下顺序一一满足条件之后,保存是没有问题的。但是,改变一下输入的次序,校验失效。例如,一一满足条件之后,不保存,倒过来将上面的输入改成非法输入,然后保存,结果居然也能成功,这是因为原先的判断由于发生过,或者根据语句顺序只检查最后一个判断,所以没有报错。这种错误尤其在 Java scrīpt 脚本的页面中要注意。能够保存不能保证数据正确,有可能引起系统崩溃或者后续数据错误。所以,在测试的时候,不要按照正常的顺序输入,而是要打乱步骤,看看代码是否强健,是否在判断逻辑上没有错误。良好的代码应该经得起折腾,至少保存时会再此全部进行判断,而不只是简简单单走到判断的最后一行。

      5、调试语句和冗余信息

      维护项目和升级改造的推广系统最容易潜伏这类缺陷。典型表现在没有删除或者屏蔽调试语句。弹出一个界面不友好的提示信息,会使不明真相的用户产生误以为系统发生了严重故障,从而引起对软件的不信任感。页面中某个角落存在当前客户不需要的冗余按钮和功能也是一种缺陷。多余的功能会使用户以为是额外附加部分而去使用,其结果可想而知;而多余的按钮会误导好奇心强的用户操作,产生不必要的错误。

      同样值得关注的还有参数设置,由于没有实际数据,开发人员在调试或者单元测试的时候,习惯性的进行自我设定而忘了删除,软件测试人员可能会忽略掉了这部分测试,也可能导致在客户现场发生错误而影响系统发布和验收。

      6、不可重现的故障

      新参加软件测试的人员或者新来的开发人员总是要问,不可重现的缺陷是否需要记录,有必要吗?回答是肯定的。测试必须如实的记录发生的问题,也许不能重现,或者使非软件系统本身问题,但是,可能这些偶然性背后是有规律的,不记录这些,就不可能发现这些规律。

      7、多节点的逆向流转缺陷

      当前软件不少喜欢使用工作流来驱动。工作流的问题,就是可能出现多个流向分支。测试容易忽略的部分,就是工作流多节点的逆向流转。例如,通过不通过涉及两个分支,但是流程逆转的时候,有可能不是回到上一节点而是平级的另一个节点去了。软件测试要格外注意这类用例的设计。另外,有些时候默认分支在向前的时候是有默认值的,例如默认通过,那么保存的时候要提示用户是否通过,否则可能由于操作疲劳而走错了节点,引起回退。

      8、输入框缺陷

      试过往输入框粘贴数据而不是直接输入吗?可能这里会出现问题。按 Ctrl+V 的时候,输入框会根据长度大小自动截断输入长度。但是用鼠标,截断可能会失效。有一次测试人员就是用这种方法把一篇 Word 文档输入进去了,保存的时候,数据库崩溃。有些网站登陆的口令****可以拷贝下来的,只要放在剪贴板里面马上明文显示。

      输入框可以说是问题最多的部分,能够引起的麻烦也很多。日期、数字、文本等等,都需要耐心的测试一下。

      9、界面布局缺陷

      曾经有一次,项目经理回来向测试部反映一个问题,客户对界面不满意。原因很简单,因为界面上删除按钮和保存按钮挨得很近。结果有些操作不熟练的业务人员,很容易误按。这个问题是测试人员没有意料到的,因此注意关闭、删除、退出按钮与保存、下一步等按钮的距离。类似的按钮应按此规则排列分布。

      界面布局还可能发生在窗口最大化和最小化上,有可能窗口缩小的时候没有下拉框或不匹配分辨率,对用户来讲,这个错误实在很低级。有些用户由于操作习惯,非常不喜欢腾出手使用鼠标,尤其是大量输入的界面,因此,要注意设置键盘的快捷方式。还有,按 Tab定位到下一焦点时要注意顺序,避免跳转太灵活而让操作人员感到无从适应,在界面进行维护或者修改的时候,不要忘了软件测试开发人员是否无意改变了这些快捷方式和跳转顺序。

      10、版本和补丁包的环境问题

      理论上讲,这属于兼容性测试应该覆盖的问题。有些客户很喜欢更新最新的软件版本或者微软时不时打些补丁包,问题就出现了。有时候升级不一定是好事。这些问题最好在测试的时候增加几个用例,多用不同软件版本的机器跑一跑。软件测试有个定律是:你没跑过的地方,就一定会出事。经常听到开发人员抱怨,怎么我的机器没问题,你的机器就有事了呢?这不能完全靠配置管理员解决问题,环境配置项是大家最容易忽略的。

      11、用户管理缺陷

      用户管理的角色和授权需要好好研究一下,作过测试的人员都知道,有时候为了测试的方便,测试用户都是具有超级权限的用户。而且,比较容易忽略用户管理这一部分的测试。往往发往客户的时候,很多测试用户都没有删除。

      另外,有些接口的用户和口令,到软件使用寿命结束都没有更改过。在一次测试中,软件测试人员发现,给一个用户授超级用户权限,之后更改这个用户为受限权限。使用中发现,用户居然没有真正回收权限,用户管理界面上没有任何不对。及早准备用户管理用例,不要等到测试快结束时候才想起。

      12、常识缺陷

      从逻辑或者统计学上讲,计算机是允许如此处理的,但是从常识上来讲,这些情况不可能发生。例如电话号码不可能出现小数点,终止时间不能大于开始时间等等。除此之外,常识还要结合业务特点来进行判断,因此,开发和测试人员要格外注意对自己知识的培养以及增加对需求细节的了解。不能因为一味追求进度而采用最简单的代码来实现,对用户来说,这些错误可能是很荒谬的。

      尽管我们不可能完美的测试一个软件,但是我们仍然可以改进我们的软件测试。每次测试结束,及时总结测试中的不足,进一步完善用例。思考一下那些容易忽略的软件缺陷,能提高对软件测试的认识,提高所在组织软件的质量。

  • zz 软件测试笔试题 zz

    susieliu 发布于 2007-12-26 13:51:01

    题与答案尽供参考

    一、判断题

    1.软件测试的目的是尽可能多的找出软件的缺陷。(Y)

    2.Beta 测试是验收测试的一种。(Y)

    3.验收测试是由最终用户来实施的。(N)

    4.项目立项前测试人员不需要提交任何工件。(Y)

    5.单元测试能发现约80%的软件缺陷。(Y)

    6.代码评审是检查源代码是否达到模块设计的要求。(N)

    7.自底向上集成需要测试员编写驱动程序。(Y)

    8.负载测试是验证要检验的系统的能力最高能达到什么程度。(N)

    9.测试人员要坚持原则,缺陷未修复完坚决不予通过。(N)

    10.代码评审员一般由测试员担任。(N)

    11.我们可以人为的使得软件不存在配置问题。(N)

    12.集成测试计划在需求分析阶段末提交。(N)



    二、选折

    1.软件验收测试的合格通过准则是:(ABCD)

    A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。

    B. 所有测试项没有残余一级、二级和三级错误。

    C. 立项审批表、需求分析文档、设计文档和编码实现一致。

    D. 验收测试工件齐全。

    2.软件测试计划评审会需要哪些人员参加?(ABCD)

    A.项目经理

    B.SQA 负责人

    C.配置负责人

    D.测试组

    3.下列关于alpha 测试的描述中正确的是:(AD)

    A.alpha 测试需要用户代表参加

    B.alpha 测试不需要用户代表参加

    C.alpha 测试是系统测试的一种

    D.alpha 测试是验收测试的一种

    4.测试设计员的职责有:(BC)

    A.制定测试计划

    B.设计测试用例

    C.设计测试过程、脚本

    D.评估测试活动

    5.软件实施活动的进入准则是:(ABC)

    A.需求工件已经被基线化

    B.详细设计工件已经被基线化

    C.构架工件已经被基线化

    D.项目阶段成果已经被基线化

    三、添空

    1.软件验收测试包括:正式验收测试,alpha测试,beta测试。

    2.系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有的可以合在一起,分开写只要写出15就满分哦)

    3.设计系统测试计划需要参考的项目文挡有:软件测试计划,软件需求工件和迭代计划。

    4.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。

    5.(这题出的有问题哦,详细的5步骤为~~)通过画因果图来写测试用例的步骤为:

    (1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。

    (2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系? 根据这些关系,画出因果图。

    (3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。

    (4)把因果图转换成判定表。

    (5)把判定表的每一列拿出来作为依据,设计测试用例。



    四、简答(资料是搜集整理的,感谢前辈的解题)无

    1.区别阶段评审的与同行评审

    同行评审目的:发现小规模工作产品的错误,只要是找错误;

    阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性

    同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导

    阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格

    同行评审内容:内容小 一般文档 < 40页, 代码 < 500行

    阶段评审内容: 内容多,主要看重点

    同行评审时间:一小部分工作产品完成

    阶段评审时间: 通常是设置在关键路径的时间点上!



    2.什么是软件测试

    为了发现程序中的错误而执行程序的过程



    3简述集成测试的过程

    系统集成测试主要包括以下过程:

    1. 构建的确认过程。

    2. 补丁的确认过程。

    3. 系统集成测试测试组提交过程。

    4. 测试用例设计过程。

    5. 测试代码编写过程。

    6. Bug的报告过程。

    7. 每周/每两周的构建过程。

    8. 点对点的测试过程。

    9. 组内培训过程。



    4 怎么做好文档测试

    仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。P142

    检查文档的编写是否满足文档编写的目的

    内容是否齐全,正确

    内容是否完善

    标记是否正确





    5 白盒测试有几种方法

    总体上分为静态方法和动态方法两大类。

    静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义

    动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。



    6系统测试计划是否需要同行审批,为什么

    需要,系统测试计划属于项目阶段性关键文档,因此需要评审。



    7Alpha测试与beta的区别

    Alpha测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。



    Beta测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。



    8比较负载测试,容量测试和强度测试的区别

    负载测试:在一定的工作负荷下,系统的负荷及响应时间。

    强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。

    容 量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现 任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据 容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。
  • 与主管、经理谈管理

    ypeony 发布于 2008-03-06 11:00:52

    与主管、经理谈管理
    在面对总经理和下属员工的时候,我们的中层人员有时困惑,怎么管理,怎么样为企业发展努力,怎么样不损失员工的利益,本身就是处于矛盾中。不能偏向哪一方,因为总经理和员工本身是对立的,给员工多发点工资,那么总经理的支出就要多出。但是如果员工的利益得不到保障,无法留住人才。在两难的情况下,我们的管理者依然要充当好自己的角色,让员工满意,让总经理满意。中层本身就是上传下达,既是执行者也是监督者,双重身份让工作难做。可能会因为处理的不当,造成两头不是人,员工抱怨你不好,总经理说你不好,那么这个经理主管也就不用做了。
      1, 承上启下的作用——作为中层领导,必须服从上级安排的工作,同时将公司意图贯彻给下属。
      2, 学会放权——既然总经理相信你,放权给你,那么你也要学会放权给员工。
      3, 做事负责,做人低调——别以为总经理离开了你就不行,公司照样的开。更不要欺下瞒上,你的作用就是配合总经理的工作,完成工作任务,将指标下达并督促员工完成。
      4, 培养下属——努力培养下属,别担心他的能力提高后会将你排挤掉。没有一个总经理会提拔一个不懂得培养下属的中层领导,如果你提拔了,那你原来的岗位怎么办,谁来做?
      没有无能的士兵,只有无能的领导。你需要培养下属独立完成工作的能力,不然很多事情都要你做,那你这个领导就是无能了,还会被总经理骂。
      5, 与上级下级保持距离——与上级和下级始终保持一定的距离感,对你有很大好处。
      6, 不要对上奉承,对下苛刻——这样的中层领导一来不会被总经理提拔,二来员工也不会尊重。
      7, 善于给总经理提建议——帮助领导分担工作,适时给予建议,不要总经理说什么,就是什么,那样要你干什么。
      8, 要求员工的首先自己做到——不要仅是要求员工做到,而你自己违反,那样总经理会感觉你自私自利。
      9, 赏罚分明——表扬好的员工,处罚犯错误的员工,做到英明决断。
      10, 不要注重形式而不注重结果——表面再好,最后结果违背总经理意志,那你还有什么机会。
      

      11, 有计划有头绪——对待工作上,有计划有头绪。
      12, 提高执行力——员工的执行力靠中层的督促,多提醒自己,为了提高执行力,努力。
      13, 学会总结工作——从总结中寻找新的东西,得出经验。
      14, 不得越权——明白岗位职责,知道自己的身份,不得越权处理事情。
      15, 不要把个人喜好带到企业——就算你不喜欢这个工作,那完全可以离开,不必说这个企业不好。
      16, 不要包庇下属——一则包庇他是害了他,他无法进步;二则,你有私心包庇他,被同事知道,影响你的工作。
      17, 发展顾客——虽然你不是业务部人员,也要学会发展顾客。
      18, 了解业务——业务是公司生存的重要方面,学会了解业务上的事情。
      19, 了解财务知识——虽然你不需要做一个优秀的财务高手,但是需要了解财务基本知识,熟悉分析财务数据,以更好的改进工作。
      20, 关注利润——和总经理一样关注企业的利润,没有了利润,谁给你发工资。
      21, 尊重每一个员工——不要以为你是中层领导,就可以高高在上,要知道总经理比你还高,他都没有这样,小心员工告发你。
      22, 严格要求下属——对下属要求严格,但是不能太武断,给予下属机会。
      23, 允许下属犯错——不要对下属犯的错,一直不放过,学会给他改正机会,当然,同样的错误不要犯。有些错误一定要严厉处理。
      24, 对下属不要过于温和——有人说尊敬下属,那就对他们好点,但是如果你对下属过于温和,一点威慑力都没有,那么你也就无法管理他,他就会藐视你。
      25, 让员工感动——学会用自己的真诚感动员工,如果你感动了员工,那么他将十分愿意跟随你。
      26, 不要把困难推给下属——始终需要给下属提供帮助,引导员工进步。有困难时,协助员工解决,而不是把困难推给下属,那样下属谁还给你干。但是要给自己和下属适度的压力。有压力才有动力。
      27, 把机会给下属——当你能力不如下属时,正好利用下属给你多完成工作,不要因妒忌他会代替你,没有一个总经理喜欢这样的领导。刘邦自己没有什么能力,但是会用人,所以成就了天下。如果你的下属能力强,那是你幸运,省了多少事,事情他做了,功劳是你的。
      28, 提高自信——如果你都不自信,将直接影响员工的工作情绪,没有人愿意和不自信的人在一起。
      29, 做员工的榜样——给员工树立榜样,赢得总经理的认可,同样赢得下属员工的尊敬。
      30, 注重学习——在不断的学习中提高自己,如果你不注重学习,小心你的下属超过你。
      31, 首先遵从制度——遵从制度管理的威严,如果你首先破坏制度,员工会和你学。
      32, 善于听取意见——不仅要多听上级的意见,也要多了解下属的想法。
      33, 懂得给下属员工激励——学会尊重人才,多为下属考虑,不要将好处都给了自己,那样既得不到下属的尊敬,也得不到上级的欣赏。
      34, 保持良好的职业道德——这不仅是爱岗敬业的问题,作为企业的一分子必须要有好的职业道德。
      35, 学会处理感情问题——警惕办公室恋情,特别是和下属之间,将直接影响你的前途。
      36, 不要轻易承诺——如果你一定做到可以承诺,否则你的随意承诺在上级面前不允许,下属对你失望时,你是腹背受敌,四面楚歌。
      37, 懂得人力资源管理——这不只是人力资源部门的事情,怎么样运用下属完成工作将是你的责任所在。
      38, 懂得聆听下属的心声——给予下属关心,努力听取下属的意见,更好的提高工作。
      39, 适时的表扬下属——不要总用严厉的口气批评下属,学会多表扬。表扬的声音可以更好的激励下属进步。
      40, 懂得经营与管理的关系——始终跟随总经理的战略决策走,除了提供良好的建议,还需要了解经营和管理的关系,无法提高经营的管理是无效的管理。
      

      41, 学会处理同级关系——多协助和帮助同级,大家都是管理者,谁不定指望谁,还是提供点便利。
      42, 学会协调同级下属的工作——不要直接指派,那样同级会感觉你对他不尊重,凭什么你指挥他的下级干活。
      43, 学会目标分解——不要什么事情都要你亲自去做,因为领导的作用就是将工作分化,监督执行。
      44, 完善流程——学会完善工作流程,简化工作量,让员工信服你。没有点能力,怎么当人家领导。至少也是强将手下无弱兵。没有人愿意跟随无能的领导。
      45, 不要错误的指令——如果你总是错误的指令下属,不是被你吓走,也是认为你能力不行,和你干没有什么发展,也学不到本事,得不到利益,还不如走人。
      46, 学会变通——不要什么都听老板的,学会变通方式。这和服从不是一回事。不然下属当你是总经理的奴才,谁愿意和这样的人干活。
      47, 你具备的能力——影响力,创造力,亲和力,洞察力,执行力,控制力,人格魅力,感染力,学习力。
      48, 实践自己的价值——努力实践自己的价值所在,建立自己的职业方向。因为你不可能永远做一个中层。一个不想当元帅的士兵不是好士兵。
      49, 加强团队精神——努力使下属团结,一个人不听你的工作指令,那他的工作也就是你做了。企业发展好了,对大家都好。如果你都远离团队,那总经理要你干什么。让下属知道团队的重要性,不是最看重个人的利益。
      50, 发扬公司的企业文化——宣传公司的企业文化,让总经理知道你对公司有很大的信心。同时,也会有效的使得员工跟随你,服从你。
  • 面试前的自我评价

    ypeony 发布于 2008-03-06 11:32:05

    面试前的自我评价
     
     一、自我认知

      “人贵有自知之明”,那么,我们怎样才能达到“自知”呢?下面,我们就从求职应试的角度回答这个问题。我们将讨论两方面的问题,一是从哪些角度来认识自己,二是怎样从这些角度进行自我预测。

      在面试之前,你应当至少从以下几个角度进行自我判断,发现自己的优势和不足,兴趣与潜能,职业适应性等关系重大的个人特征。

      1知识结构

      知识结构,是指一个人所掌握的知识类别,各类知识相互影响而形成的知识框架以及各类知识的比重。知识结构可以从以下几个方面进行分析。一是自然科学知识和社会科学知识的比重,二是普通知识和特殊知识的比重,三是基础知识和专业知识的比重,四是传统知识和现代知识的比重,等等。这里所讲的“比重”,不仅指数量关系,也指质量关系。你也许感到很难说清楚自己的知识结构,这没有多大关系。你并不需要得出一个精确的结论,但是你必须分析你的知识结构,特别是要找出你所特有的或占优势的知识和缺乏的或处于劣势的知识,这样你才能发挥优势,弥补不足。在求职应试之前,知识结构的分析至少对你有两方面的作用,一是根据自己的知识结构,选择适宜的职业。例如,如果你对计算机软件有渊博的知识,却对管理学一窍不通,你最好还是去搞科研开发,而不要去竞争人事经理的职位。如果你的文字功底很差,就尽量避免去竞争市长文秘这个职位。二是针对应聘职位所需的知识结构,尽快弥补不足,使自己的现有知识结构得到改变以适应职位的要求。例如,你决定去应聘劳动局工资处处长职位,但对工资管理知之甚少,就必须通过看书或向别人请教等方法尽快学些基础的适用的工资管理知识,避免在面试过程中出现一问三不知的尴尬局面。

      2能力结构

      一个人所具备的能力类型及各类能力的有机组合就是他的能力结构。能力的类型多种多样,至少包括记忆能力、理解能力、分析能力、综合能力、口头表达能力、文字表达能力、推理能力、机械工作能力、环境适应能力、反应能力与应变能力、人际关系能力、组织管理能力、想像能力、创新能力、判断能力,等等。从不同角度或不同层面,可以划分不同的能力类型,每个人所具备的能力结构是不同的,甲和乙可能会有不同的能力,而且即使共同具有一种能力,但能力的大小会有所差别。

      求职面试前,对自己的能力结构进行判断分析是必要的,不同的职业、不同的职位需要不同的能力结构。发挥自己能力方面的优势,避开能力方面的欠缺,是事业成功一个十分有利的条件,那么,如何来分析评价自己的能力结构呢?一是凭自己的直觉来判断,二是凭经验来判断,三是同别人的比较来判断,四是从别人对自己的评价来判断,五是借助能力倾向测验来判断,等等。对于一个没有很多社会经验的人来说,评价自己的能力结构是件困难的事情,往往失之偏颇,自信心强的人往往过高评价自己,自信心差的人往往过低评价自己。能力倾向测验一般比较客观,是很好的评价工具。标准化了的能力倾向测验,具有两种功能:一是判断一个人具有什么样的能力优势,即所谓的诊断功能;二是测定在所从事的工作中,成功和适应的可能性,包括发展的潜能,即所谓的预测功能。在西方各工业发达国家中,能力倾向测验被广泛运用于职业决策和人员甄选录用中,经实践检验,具有较强的科学性。所以,你可以用一些标准化了的能力倾向测验来进行自我评价和指导。

      3个性心理特征

      个性是决定每个人心理和行为的普遍性和差异性的那些特征和倾向的较稳定的有机组合。个性心理特征主要包括气质和性格两个方面。气质是与个人神经过程的特性相联系的行为特征。气质类型一般划分为多血质(活泼型)、胆汁质(兴奋型)、粘液质(安静型)、抑郁质(抑制型)四种。这四种类型为典型的气质类型,属于这些类型的人极少,多数人为中间气质型,即以某一气质为主,结合着另一气质型的一些行为特征。人们的气质存在着相当大的差异,对自己的气质类型做出评判,选择适于自己的工作,对每个人都是十分必要的。性格是个人对现实的稳定态度和习惯性的行为方式。与气质相比,人们的性格差异更是多样而复杂的。心理学家从不同角度来归纳性格差异,划分性格类型。按何种心理机能占优势可划分为理智型、情绪型、意志型、中间型;按心理活动的某种倾向性可划分为外倾型和内倾型;按思想行为的独立性可划分为顺从型和独立型;按人的行为模式可划分为A—Ⅰ型,A-Ⅱ型,B-Ⅲ型,B-Ⅳ型和Ⅹ型。

      面试过程中还是比较注重个性评价的。例如支配性、合作性、独立性、灵活性、自信心、责任感、自制力、重印象性、掩饰性等都可能成为被考察的对象。一般来说,个性没有绝对的优劣之分,所以你在应试过程中不要过于掩饰自己,宜表现出真正的自我。但是,当你明确知道应聘职务所要求的个性特征时,或当你明确知道主考官所期望的个性特征时,你不妨做些掩饰,使自己表现得适于工作的需要和主考官的期望。

      4职业适应性和职业价值观

      评价自己的职业适应性,要考虑自己的兴趣、特长和价值观。但如果要得到一个比较科学的评价,最好借助于职业能力倾向测验。目前,较具权威性的是霍兰德职业适应性测验。这个测验主要考察你心目中的理想职业、你所感兴趣的活动、你所擅长或胜任的活动、你所喜欢的职业、你的能力类型简评等方面,然后进行统计综合确定你的职业适应性。

      面试很注重对职业适应性和职业价值观的考察,主考官会经常提出有关这方面的问题,应试者应当事先对应聘职位进行尽可能多的了解和分析,以便使回答具有较强的针对性,能够证明你具有适应于该职位的特性。例如你要应聘人事局局长秘书一职,你就可以谈及以下内容:我喜欢保持桌子和房间整洁,喜欢抄写文章或信件,为领导写公务信函与报告,能熟练操作电脑,善于在短时间内分类和处理大量文件,喜欢阅读与人际交往有关的书刊,喜欢交谊舞,喜欢出席正式会议,善于与人合作,待人热情,等等。

      二、面试水平自测

      每一题设计5种可能的答案供选择。求职者按照自己准备怎样回答或习惯方式去选择答案,然后再参考对5种答案的评价来测试自己。

      1如何进行自我介绍

      问题:请简要进行一下自我介绍,好吗?

      答案:A、针对所聘职位要求,重点突出、简要介绍自己;B、过于炫耀自己的学历、能力或业绩;C、欠准备,不全面或重点不突出,缺乏针对性;D、过分谦虚,甚至自我贬低;E、如果时间允许,我想详细介绍一下。

      评价:A答案符合考官的提问,因为面试时间通常很紧,抓紧时间突出重点,有针对性地简要介绍非常必要;E答案如果得到考官的同意也未尝不可,但应注意掌握时间的长度;B、C答案缺乏对自我的辩证认识,往往得不到考官的认同;D答案表现为求职者可能缺乏诚恳、强烈的求职意愿。

      2考查应聘动机

      问题:你为何应聘我单位?

      答案:A、贵单位在某一方面存在问题,我愿意帮助解决;B、我还没有认真思考过,请问下一个问题好吗?C、贵单位收入较高,或本人性格内向,贵单位工作相对稳定;D、从该职位的社会功能,本人的专业特长,特别是对该项工作的兴趣和热情等方面回答;E、因为看到了贵单位的招聘启事,而且,贵单位离我家很近、或专业比较对口等。

      评价:这是很多单位必问的一个问题,应聘者应认真做好充分准备。D的回答容易得到考官的认同,因为你既有专业特长,又有工作兴趣和热情;A的回答好像一副“救世主”的样子;B回避问题不可取;C、E的回答仅仅是收入高、或工作稳定、或离家近、或专业对口等,理由不够充分,缺乏对应聘职位的兴趣和热情。

      3你了解招聘单位吗

      问题:你对我单位有何了解?

      答案:A、我做过一些调查,较详细地了解了贵单位的发展战略、奋斗目标、工作成就及工作作风等,例如……;B、没有多少了解,但我相信工作一段时间后会加强认识;C、我了解到贵单位工作条件和效益都很好,自己来了以后可以充分发挥特长;D、有一些了解,但不全面,例如贵单位的主要产品是……,贵单位的广告是……;E、贵单位有住房,还有出国进修的机会,有利于实现自己的远大理想。

      评价:这个问题的实质是在考查你求职是否有诚意。A答案间接地表现为对所聘职位的渴求,给人“未进某某门,便是某某人”的感觉,容易引起考官的关注和好感;C、E答案容易给人“单向索取”的不良印象,但不排除确有真才实学的人才对自我价值的肯定和实现职业理想安心工作的意愿;D答案表现为准备不足;B答案则显得求职诚意不足。

      4你有什么特长

      问题:欢迎你应聘会计职位,你有何优点和特长吗?

      答案:A、本人的优点是好静、稳重、办事认真,特长是计算机操作能力较强;B、我是会计专业毕业生,专业学习成绩较好;C、我的特长是英语口语较好,优点是热情开朗,喜欢和人打交道,喜欢旅游和运动;D、特长谈不上,优点是心直口快,待人热情;E、我比较注重专业能力的培养和提高,无论在实习期间还是在日常工作中都在不断钻研业务。

      评价:A答案符合会计工作的性格要求,而且较强的计算机操作能力是会计工作的潜在实力;E答案强调自己的专业能力强,表现出从事会计工作的长远打算,A、E答案都容易引起考官的关注和好感;B答案强调自己专业对口,成绩较好,是典型的“学生腔调”,但也具有会计工作的发展潜力;C、D答案则是所答非所问,甚至与会计工作的内在要求相违背,热情开朗、心直口快可能引起用人单位的疑虑和担心。

      5如何认识自己的缺点和不足

      问题:你有何缺点和不足?

      答案:A、我的适应性较差,不善于处理人际关系;B、我的缺点很多,如对自己要求不太严格,纪律性较差,等等;C、缺乏实践经验,而且在知识结构上还需要进一步充实完善;D、我的性格外向,办事急于求成,有时忽略细节;或我的性格内向,办事过于求稳,有时效率不高;E、我觉得我很适应这项工作,如果有缺点和不足,希望您能提醒一下好吗?

      评价:这是每位应聘者都难以回答,而又必须回答的问题。因为当考官问及这一问题时,一般说来都是对你产生了兴趣和关注,所谓“褒贬是买主”,作为应聘者则应做到“人贵有自知之明”,正确认识自己的不足,有改进的愿望和行动。C答案比较符合这一要求;D答案则比较客观地分析了自己,前者坦陈自己有时脾气急躁,但隐含热情高、办事效率高的优点;后者则含办事认真、一丝不苟的工作作风;A、B两种答案直率坦诚,但对某些职位来讲可能是致命的缺点,绝对不能录用;E答案闪烁其辞,大有“外交家”的风度,但缺乏自知之明,忘记了“金无足赤、人无完人”的道理。

      因此,职业指导专家提醒求职者在面试前要正确地认识自己,既要认真总结优点和长处,也要客观地认识自己的缺点和不足,并提出改进的措施;还要针对职位要求,有的放矢地回答,这就需要求职者事先的调查研究,不但要正确认识自己,还要深入了解用人单位的要求。

      6你有工作计划吗

      问题:如果我单位录取你,你打算怎样开展工作?

      答案:A、希望录用以后再详细谈,好吗?B、还没有考虑,希望给我一段时间认真考虑一下;C、服从分配、努力工作;D、贵单位有很多优势,但也存在一些不足,我愿对此加以改进;E、有准备地说明做好某些工作的初步打算或详细计划。

      评价:E答案表现出对某项工作的热情和追求这一职位的强烈愿望,容易得到考官的赞同,这一点来自事先的认真准备;C答案直接表达上述愿望,但明显准备不足;D答案如果事先有准备,直言不讳,有可能引起用人单位的好奇和关注,但更大的可能是引起反感;B答案显得求职诚意不足,但也给人留下办事老成的印象;A答案则显得“自视清高,待价而沽”。

      7你对单位有什么要求

      问题:如果我们录用你,你有何要求?

      答案:A、没有什么要求;B、我家在外地,希望解决住处;C、我还没有考虑好,不过要求婚后解决住房问题,工资和福利待遇较为合理;D、自己目前没有家庭负担,如果谈要求的话,希望给予更多的任务,在工作中不断提高自己的实际能力;E、希望有较好的工作条件,以便发挥自己的专业特长。

      评价:求职择业是一种“双向选择”的过程,应当满足双方的客观需要。A答案显得缺乏自信,不合实际;B、E答案实事求是地提出自己的要求,无可厚非;而D答案则更容易得到用人单位的认同;C答案虽然也无可厚非,但解决婚后住房问题,有些强人所难,住房制度的改革,往往使用人单位不敢贸然允诺。

      8你要求的薪酬水平

      问题:如果公司录用你,你希望月薪多少?

      答案:A、我是某某专业毕业生,因此每月工资应在3000元以上;B、公司无论开多少工资,我都能接受;C、希望公司按国家有关规定或公司的惯例发工资;D、至少不能低于500元;E、具体工资多少我不在意,只是希望公司以后能按工作成绩或工作效率合理发放工资。

      评价:求职者的薪金待遇是“双向选择”中一个必不可少的话题。C、E答案显然有所考虑,比较理智地回答了这一“难以启齿”的问题,其中E的回答更是具有挑战性,既表现了干好这一工作的自信心,也表现出维护自身权益的意识;相比之下,A、B、D则显得有些欠考虑甚至轻率。如果公司正在创业时期,总经理才拿2000元月薪,你张口3000元,可能把人吓一跳;假如公司兴旺发达,蒸蒸日上,你只要500元,显得有些“掉价”,缺乏自信;B答案也是如此,如果其他人月薪都是1000元以上,给你300元或500元,你能接受吗?

      9怎样评价他人

      问题:你刚才参加了其他人的面试,请你简要评价一下前几位考生的表现,好吗?

      答案:A、刚才我只考虑自己的问题了,没有认真注意别人的表现;B、我个人认为第一位考生回答得不太好,第二位还凑合,第三位有些夸夸其谈,不切实际……C、他们的表现都非常出色,例如……D、我认为他们都有很多长处值得我学习。例如第一位的材料准备得充分,第二位机智灵活,第三位……但我认为干好这项工作更重要的是自信和热诚;E、每个人都有长处和不足,我也不例外。

      评价:这是一道难度较大的问题,如果一味夸奖别人很出色,都比自己强,是否意味着退出竞争呢?如C;如果贬低别人,突出自己,也会给人一种不善于处理人际关系、不能客观对待别人的感觉,如B;A答案不足取,等于放弃了表现自己分辨能力的机会;D、E答案可以借鉴,其中D表现出虚心的态度,同时还强调了自身的态度和优势。

      10如何面对失误

      问题:如果你的工作出现失误,给本公司造成经济损失,你认为该怎么办?

      答案:A、如果是我的责任,我甘愿受罚,咎由自取;B、我本意是为公司努力工作,如果造成经济损失,我无能力负责,希望公司帮助解决;C、我办事一向谨慎、认真,我想不会出现失误吧;D、我想首先的问题是分清责任,各负其责;E、我认为首要的问题是想方设法去弥补或挽回经济损失,其次才是责任问题。

      评价:这是一个具有挑战性的问题。A答案坦诚接受处罚;B答案企图逃避责任,但是如果损失重大,A无法承担,B也逃脱不了;C则认为自己不会出现这种情况,是一种不切实际的回避;D理智地提出分清责任,各负其责;E的态度较可取,先尽力挽回损失,表现出较强的责任心。

      11你有过求职的经历吗

      问题:在此之前你去过什么单位求职,结果如何?

      答案:A、我这是第一次求职,结果还不知道;B、来此之前我报考过国家公务员和申请过留校工作,公务员录用工作还没开始,留校任教需要硕士以上学历,所以我到贵单位求职;C、我去过两家单位求职,一家是某某公司,另一家是某某公司,都认为我不错,准备录用我;D、我去过一些单位求职,都没成功,原因是双向的,但主要是我不愿意去;E、我曾在某公司实习过,担任过某职位,干得也不错,他们也想让我留下,但我觉得贵单位更能发挥我的特长,所以我没答应他们。

      评价:这是面试比较深入以后涉及的问题,用以了解求职者在人才市场中的经历。E表示了“人往高处走”的愿望;B则是“脚踏两只船”;C是把自己“吊起来”卖:我很受欢迎,已经有两家单位准备要我,你们想要不想要?这是一个不明智、甚至愚蠢的做法,极易引起用人单位的反感;D说出自己在人才市场的境遇,可能工作更安心些,但表白“自己不愿去”有些画蛇添足。
  • Linux下Bugzilla安装与配置

    louis_lu 发布于 2008-11-20 11:46:36

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

    Bugzilla的安装配置,其实也没有传说中的那么困难,问题就在没有经验.刚刚完成bugzilla的配置,我想记录下来我的详细安装过程,一是留点记录进一步记忆理解,二是供朋友们参考. 好了言归正传!

    (以下所列皆为本人安装配置过程中的所用资源,不同版本的文件,系统等参照本文安装不保证一定成功)

    OS: Linux Red Hat Enterprise 5 (确保gcc编译器等都已安装上去,手工安装gcc比较麻烦)

    DB: MySQL-server-community-5.0.67-0.rhel5.i386.rpm, MySQL-client-community-5.0.67-0.rhel5.i386.rpm, MySQL-devel-community-5.0.67-0.rhel5.i386.rpm, MySQL-share-compat-5.0.67-0.rhel5.i386.rpm, MySQL-share-community-5.0.67-0.rhel5.i386.rpm. (http://www.mysql.org)

    Apache: httpd-2.2.3-6.el5 (http://www.apache.org)

    Bugzilla: Bugzilla-3.2rc2(目前是最新的稳定版本, http://www.bugzilla.org)

    开始安装:

    前提Linux平台都已搭建完备,本文以此为基础,Linux安装不作赘述.

    安装配置mysql

    1.安装mysql,顺序:MySQL-server***.rpm, MySQL-client***.rpm, MySQL-share-community***.rpm, MySQL-devel***.rpm, MySQL-share-compat***.rpm.

    2.初始化数据库: 输入如下命令为root添加密码, (真该死这个破blog不能方便贴图)!

    输入:/usr/bin/mysqladmin -u root password '你的密码',如你使用123456作为密码,则输入:/usr/bin/mysqladmin -u root password 123456 即可.

    3.创建bugs用户,并分配权限.(注:bugzilla-2.18rc1版本后已经不需要用户自己创建bugs数据库了,用户只需创建bugs用户即可)

    进入mysql(输入命令:mysql -uroot -p, 回车后根据提示输入刚才你初始化的密码), 登入mysql后查看现有数据库情况,输入命令如下,

    mysql>show databases;(别忘了这里的分号,该命令将显示所有database,初始默认有: information_schema, mysql, test)

    输入如下创建bugs用户并分配权限:

    mysql>GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP, REFERENCES ON bugs.* TO bugs@localhost INDENTIFIED BY '$db_pass';

    mysql>FLUSH PRIVILEGES;

    注: '$db_pass'为bugs用户的密码,随你设定,但一定要紧记此密码,下面将会用到. 本人设为bugs,即输入 GRANT ... BY 'bugs';

    至此数据库方面配置完毕!

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

    配置apache

    关于apache的学习资料进apache官网:http://www.apache.org,查找学习,这里不做介绍.

    最新版本的apache需要修改的地方不多,主要有3个地方要注意:(修改配置文件httpd.conf即可,该文件一般存在你安装路径的/conf/下,若使用Linux系统自带的apache,则可到/etc/httpd/conf/查找, vi编辑保存)

    a.DocumentRoot,需要设置为你的bugzilla文件所在路径,以及<Diretory "你的bugzilla文件所在路径">

    b.使用"./"找到AddHandler.cgi这行内容,去掉注释,如果已经去掉,保留即可.如果不添加该语句,会把cgi文件中的内容当成文本形式显示出来,而不是运行cgi程序.

    c.创建一个目录的权限说明, 一般如下所示:本例中bugzilla所在路径为:/var/www/html/bugzilla

    <Directory "/var/www/html/bugzilla">

      Options ExecCGI FollowSymLinks

      AllowOverride Limit

      Order allow,deny

      Allow from all

    </Directory>

    主要修改的内容是, 在Options中增加ExecCGI,该选项让该目录下的CGI脚本可以运行. 其次把AllowOverride的参数改为Limit, 这样修改可以让bugzilla通过生成.htaccess文件来控制目录的访问权限.

    至此apache配置完毕!记得apache配置完毕后,要重启啊,这样你的配置才会生效!

    配置bugzilla

    bugzilla的运行还需要perl的一些模块的支持, 在这提供一个网站www.cpan.org, 该网站提供了perl所有的模块, 用户可以在这search所需的perl模块.好了,下面开始!

    cd 到你bugzilla所在的目录, 如:cd /var/www/html/bugzilla/

    执行./checksetup.pl文件,查看perl模块情况.直接在输入:./checksetup.pl,回车即可.接下来会给出很多信息,仔细看你会发现有些模块已经安装ok,并给出版本,如:CGI.pm (v3.21)   ok: found v3.42,但是初次安装会有很多模块缺失,会提示not found等信息.

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

    关于安装perl缺失模块,有2个方法:

    1. 如果网络连接正常,可尝试网络安装,根据运行./checksetup.pl后的提示信息输入,即可自动下载安装缺失模块,此方法最为方便,运气好的话,可能一次性就OK.

    此处以安装perl-Magick为例:输入 /usr/bin/perl install-module.pl Image::Magick, 即可.

    2. 手动安装,需要到www.cpan.org下载相关模块,此过程较为复杂(因为模块间存在依赖关系,不是每个模块都是一次安装就OK的),但可加深理解.手动安装过程中,有以下几点需要注意:

    a.一般情况下Linux自带的perl已经有了DBI模块,此时根据提示正常安装DBD-mysql即可.若perl的DBI模块还没有的话,又或是Linux没有安装perl,则到www.perl.org下载最新的perl模块安装。

    b.perl模块的的安装方法多为:

    perl Makefile.PL

    make

    make test

    make install

    到此应该知道为什么强调要安装gcc编译器了吧?

    有些模块之间存在依赖性, 若make test过程中,产生异常可于make install后,重新执行perl Makefile.PL命令,此时可看到安装异常的原因.若存在模块依赖,则会提示需要安装相应模块.

    当perl的必须模块以及数据库的DBD都安装成功后,再次执行./checksetup.pl文件,查看perl模块的安装情况,若必须的perl模块都安装成功后,则会提示编辑/bugzilla/目录下刚生成的的localconfig文件, 使用vi编辑该文件,修改该文件中的2个参数的值:

    a. $index.html='0' 改为 $index.html='1', 这样会生成一个index.html文件,该文件指向index.cgi.

    b. 把$db_pass=''的空字符改为你当初创建bugs用户时为其分配的密码.

    保存修改后退出,再次执行./checksetup.pl文件,此时将创建bugs数据库以及数据库中的表格,同时提示输入管理员的用户名, 真实姓名, 口令是什么. 自此bugzilla的配置完成.

    注:提示输入管理员的用户必须使用邮箱名称,如:test@163.com, 这是bugzilla的默认规定.

    最后使用浏览器打开bugzilla地址,进入第一次登陆界面.

    如果出现提示没有权限访问bugzilla的话,则说明bugzilla目录权限需要重新设置,可使用如下命令修改目录权限: chown -R apache.apche <Bugzilla目录名>,然后重新访问就可以了.

    OK,终于总结完毕了,有问题留言吧,我会及时上来看的,谢谢!

    转载请保留:本文出自louis_lu的51Testing软件测试博客:http://www.51testing.com/?75198

     

     

  • 性能测试--错误提示分析

    ylian 发布于 2008-07-11 03:33:21

    性能测试工程师基本上都能够掌握利用测试工具来作负载、压力测试,但多数人对怎样去分析工具收集到的测试结果感到无从下手,下面我就把个人工作中的体会和收集到的有关资料整理出来,希望能对大家分析测试结果有所帮助。 分析原则:
    1. 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)
    2. 查找瓶颈时按以下顺序,由易到难。
        服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)
        注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。
    3 分段排除法 很有效
    分析的信息来源:
    1 根据场景运行过程中的错误提示信息
    2 根据测试结果收集到的监控指标数据
    一.错误提示分析
    分析实例:
    1 Error: Failed to connect to server “10.10.10.30:8080″: [10060] Connection
      Error: timed out Error: Server “10.10.10.30″ has shut down the connection prematurely
    分析:
     A、应用服务死掉。
    (小用户时:程序上的问题。程序上处理数据库的问题)
     B、应用服务没有死
    (应用服务参数设置问题)
        例:在许多客户端连接Weblogic应用服务器被拒绝,而在服务器端没有错误显示,则有可能是Weblogic中的server元素的AcceptBacklog属性值设得过低。如果连接时收到connection refused消息,说明应提高该值,每次增加25%
     C、数据库的连接
    (1、在应用服务的性能参数可能太小了 2、数据库启动的最大连接数(跟硬件的内存有关))
    2 Error: Page download timeout (120 seconds) has expired
    分析:可能是以下原因造成
     A、应用服务参数设置太大导致服务器的瓶颈
     B、页面中图片太多
     C、在程序处理表的时候检查字段太大多
    二.监控指标数据分析
    1.最大并发用户数:
    应用系统在当前环境(硬件环境、网络环境、软件环境(参数配置))下能承受的最大并发用户数。
        在方案运行中,如果出现了大于3个用
    户的业务操作失败,或出现了服务器shutdown的情况,则说明在当前环境下,系统承受不了当前并发用户的负载压力,那么最大并发用户数就是前一个没有出现这种现象的并发用户数。
        如果测得的最大并发用户数到达了性能要求,且各服务器资源情况良好,业务操作响应时间也达到了用户要求,那么OK。否则,再根据各服务器的资源情况和业务操作响应时间进一步分析原因所在。
    2.业务操作响应时间:
         分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。
        细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关?
      如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用“网络监视器”图确定导致性能瓶颈的网络问题
    3.服务器资源监控指标:
    内存:
    1 UNIX资源监控中指标内存页交换速率(Paging rate),如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。也可能是内存访问命中率低。
    2 Windows资源监控中,如果Process\Private Bytes计数器和Process\Working Set计数器的值在长时间内持续升高,同时Memory\Available bytes计数器的值持续降低,则很可能存在内存泄漏。
    内存资源成为系统性能的瓶颈的征兆:
    很高的换页率(high pageout rate);
    进程进入不活动状态;
    交换区所有磁盘的活动次数可高;
    可高的全局系统CPU利用率; 
    内存不够出错(out of memory errors)
    处理器:
    1 UNIX资源监控(Windows操作系统同理)中指标CPU占用率(CPU utilization),如果该值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。如果服务器专用于SQL Server,可接受的最大上限是80-85% 
    合理使用的范围在60%至70%。
    2 Windows资源监控中,如果System\Processor Queue Length大于2,而处理器利用率(Processor Time)一直很低,则存在着处理器阻塞。
    CPU资源成为系统性能的瓶颈的征兆: 
    很慢的响应时间(slow response time) 
    CPU空闲时间为零(zero percent idle CPU) 
    过高的用户占用CPU时间(high percent user CPU) 
    过高的系统占用CPU时间(high percent system CPU) 
    长时间的有很长的运行进程队列(large run queue size sustained over time)
    磁盘I/O:
    1 UNIX资源监控(Windows操作系统同理)中指标磁盘交换率(Disk rate),如果该参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。
    2 Windows资源监控中,如果 Disk Time和Avg.Disk Queue Length的值很高,而Page Reads/sec页面读取操作速率很低,则可能存在磁盘瓶径。
    I/O资源成为系统性能的瓶颈的征兆 :
    过高的磁盘利用率(high disk utilization) 
    太长的磁盘等待队列(large disk queue length) 
    等待磁盘I/O的时间所占的百分率太高(large percentage of time waiting for disk I/O) 
    太高的物理I/O速率:large physical I/O rate(not sufficient in itself) 
    过低的缓存命中率(low buffer cache hit ratio(not sufficient in itself)) 
    太长的运行进程队列,但CPU却空闲(large run queue with idle CPU)
    4.数据库服务器:
    SQL Server数据库:
    1 SQLServer资源监控中指标缓存点击率(Cache Hit Ratio),该值越高越好。如果持续低于80%,应考虑增加内存。
    2 如果Full Scans/sec(全表扫描/秒)计数器显示的值比1或2高,则应分析你的查询以确定是否确实需要全表扫描,以及SQL查询是否可以被优化。 
    3 Number of Deadlocks/sec(死锁的数量/秒):死锁对应用程序的可伸缩性非常有害,并且会导致恶劣的用户体验。该计数器的值必须为0。
    4 Lock Requests/sec(锁请求/秒),通过优化查询来减少读取次数,可以减少该计数器的值。
    Oracle数据库:
    1 如果自由内存接近于0而且库快存或数据字典快存的命中率小于0.90,那么需要增加SHARED_POOL_SIZE的大小。
    快存(共享SQL区)和数据字典快存的命中率: 
    select(sum(pins-reloads))/sum(pins) from v$librarycache; 
    select(sum(gets-getmisses))/sum(gets) from v$rowcache; 
    自由内存: select * from v$sgastat where name=’free memory’; 
    2 如果数据的缓存命中率小于0.90,那么需要加大DB_BLOCK_BUFFERS参数的值(单位:块)。
    缓冲区高速缓存命中率:
    select name,value from v$sysstat where name in (’db block gets’,
    ‘consistent gets’,'physical reads’) ;
    Hit Ratio = 1-(physical reads / ( db block gets + consistent gets))
    3 如果日志缓冲区申请的值较大,则应加大LOG_BUFFER参数的值。
    日志缓冲区的申请情况 :
    select name,value from v$sysstat where name = ‘redo log space requests’ ;
    4 如果内存排序命中率小于0.95,则应加大SORT_AREA_SIZE以避免磁盘排序 。
    内存排序命中率 :
    select round((100*b.value)/decode((a.value+b.value), 0, 1, (a.value+b.value)), 2)from v$sysstat a, v$sysstat b where a.name=’sorts (disk)’ and b.name=’sorts (memory)’
    注:上述SQL Server和Oracle数据库分析,只是一些简单、基本的分析,特别是Oracle数据库的分析和优化,是一门专门的技术,进一步的分析可查相关资料。

     


      性能测试的结果分析是性能测试的重中之重。在实际工作中,由于测试的结果分析比较复

    杂、需要具备很多相关的专业知识,因此常常会感觉拿到数据不知从何下手。这也是我学习性能

    测试过程中感觉比较尴尬和棘手的事,为此我在研读了《WEB性能测试实战》后特作了以下笔

    记,这里只是书中第4章WEB应用程序性能分析的一

    部分,贴出来希望和大家共同讨论:

    一:性能分析的基础知识:

        1.几个重要的性能指标:相应时间、吞吐量、吞吐率、TPS(每秒钟处理的交易数)、点

    击率等。

        2.系统的瓶颈分为两类:网络的和服务器的。服务器瓶颈主要涉及:应用程序、WEB服务

    器、数据库服务器、操作系统四个方面。

        3.常规、粗略的性能分析方法:

       当增大系统的压力(或增加并发用户数)时,吞吐率和TPS的变化曲线呈大体一致,则系统

    基本稳定;若压力增大时,吞吐率的曲线增加到一定程度后出现变化缓慢,甚至平坦,很可能是

    网络出现带宽瓶颈,同理若点击率/TPS曲线出现变化缓慢或者平坦,说明服务器开始出现颈。

        4.作者提出了如下的性能分析基本原则,此原则本人十分赞同:

                ——由外而内、由表及里、层层深入

        应用此原则,分析步骤具体可以分为以下三步:

       第一步:将得到的响应时间和用户对性能的期望值比较确定是否存在瓶颈;

       第二步:比较Tn(网络响应时间)和Ts(服务器响应时间)可以确定瓶颈发生在网络还是服

    务器;

       第三步:进一步分析,确定更细组件的响应时间,直到找出发生性能瓶颈的根本原因。

    二:以WEB应用程序为例来看下具体的分析方法:

        1.用户事务分析:

        a.事务综述图(Transaction Summary ):以柱状图的形式表现了用户事务执行的成功与

    失败。通过分析成功与失败的数据可以直接判断出系统是否运行正常。若失败的事务非常多,则

    说明系统发生了瓶颈或者程序在执行过程中发生了问题。

        b.事务平均响应时间分析图(Average Transaction Response Time): 该图显示在

    测试场景运行期间的每一秒内事务执行所用的平均时间,还显示了测试场景运行时间内各个事务

    的最大值、最小值和平均值。通过它可以分析系统的性能走向。若所有事务响应时间基本成一条

    曲线,则说明系统性能基本稳定;否则如果平均事务响应时间逐渐变慢,说明性能有下降趋势,

    造成性能下降的原因有可能是由于内存泄漏导致。

        c.每秒通过事务数分析图(Transaction per Second即TPS):显示在场景运行的每一

    秒中,每个事 务通过、失败以及停止的数量。通过它可以确定系统在任何给定时刻的实际事务

    负载。若随着测试的进展,应用系统在单位时间内通过的事务数目在减少,则说明服务器出现瓶

    颈。

         d.每秒通过事务总数分析图(Total Transactions per Second):显示场景运行的

    每一秒中,通过、失败以及停止的事务总数。若在同等压力下,曲线接近直线,则性能基本趋于

    稳定;若在单位时间内通过的事务总量越来越少,即整体性能下降。原因可能是内存泄漏或者程

    序中的缺陷。

          e.事务性能摘要图(Transaction Performance Summary):显示方案中所有事务的

    最小、最大平均执行时间,可以直接判断响应时间是否符合客户要求(重点关注事务平均、最大

    执行时间)。

          f.事务响应时间与负载分析图(Transaction Response Time Under load):通过

    该图可以看出在任一时间点事务响应时间与用户数目的关系,从而掌握系统在用户并发方面的性

    能数据。

          g.事务响应时间(百分比)图(Transaction Response Time(percentile)):该

    图是根据测试结果进行分析而得到的综合分析图。分析该图应从整体出发,若可能事务的最大响

    应时间很长,但如果大多数事务具有可接受的响应时间,则系统的性能是符合。

          h.事务响应时间分布情况图(Transaction Response Time (Distribution)):该

    图显示了测试过程中不同响应时间的事务数量。若系统预先定义了相关事务可以接受的最小和最

    大事务响应时间,则可以使用此图确定系统性能是否在接受范围内。

          分析到这一步,只能大概判断出瓶颈可能会出在那,要具体定位瓶颈还需要更深入

    的分析。没有贴图,看起来有点费劲,如果你对这些图都比较了解,应该是比较简单的,这

    篇只是对于用户事务的分析,欢迎大家跟贴讨论。未完待续

  • 通用 LoadRunner 函数

    wangyong3552128 发布于 2007-01-19 13:04:55

    今天偶然在网上看到这样的资料,感到还不错,所以我就粘下来特意与大家分享;

     

    事务函数:                                                                

    lr_end_sub_transaction

    标记子事务的结束以便进行性能分析

    lr_end_transaction

    标记 LoadRunner 事务的结束

    lr_end_transaction_instance

    标记事务实例的结束以便进行性能分析

    lr_fail_trans_with_error

    将打开事务的状态设置为 LR_FAIL 并发送错误消息

    lr_get_trans_instance_duration

    获取事务实例的持续时间(由它的句柄指定)

    lr_get_trans_instance_wasted_time

    获取事务实例浪费的时间(由它的句柄指定)

    lr_get_transaction_duration

    获取事务的持续时间(按事务的名称)

    lr_get_transaction_think_time

    获取事务的思考时间(按事务的名称)

    lr_get_transaction_wasted_time

    获取事务浪费的时间(按事务的名称)

    lr_resume_transaction

    继续收集事务数据以便进行性能分析

    lr_resume_transaction_instance

    继续收集事务实例数据以便进行性能分析

    lr_set_transaction_instance_status

    设置事务实例的状态

    lr_set_transaction_status

    设置打开事务的状态

    lr_set_transaction_status_by_name

    设置事务的状态

    lr_start_sub_transaction

    标记子事务的开始

    lr_start_transaction

    标记事务的开始

    lr_start_transaction_instance

    启动嵌套事务(由它的父事务的句柄指定)

    lr_stop_transaction

    停止事务数据的收集

    lr_stop_transaction_instance

    停止事务(由它的句柄指定)数据的收集

    lr_wasted_time

    消除所有打开事务浪费的时间

                                                                              

    命令行分析函数    

    lr_get_attrib_double

    检索脚本命令行中使用的 double 类型变量

    lr_get_attrib_long

    检索脚本命令行中使用的 long 类型变量

    lr_get_attrib_string

    检索脚本命令行中使用的字符串

     

    信息性函数

    lr_user_data_point

    记录用户定义的数据示例

    lr_whoami

    将有关 Vuser 脚本的信息返回给 Vuser 脚本

    lr_get_host_name

    返回执行 Vuser 脚本的主机名

    lr_get_master_host_name

    返回运行 LoadRunner Controller 的计算机名

     

    字符串函数                                                                         

    lr_eval_string

    用参数的当前值替换参数

    lr_save_string

    将以 NULL 结尾的字符串保存到参数中

    lr_save_var

    将变长字符串保存到参数中

    lr_save_datetime

    将当前日期和时间保存到参数中

    lr _advance_param

    前进到下一个可用参数

    lr _decrypt

    解密已编码的字符串

    lr_eval_string_ext

    检索指向包含参数数据的缓冲区的指针

    lr_eval_string_ext_free

    释放由 lr_eval_string_ext 分配的指针

    lr_save_searched_string

    在缓冲区中搜索字符串实例,并相对于该字符串实例,将该缓冲区的一部分保存到参数中

     

    消息函数

    lr_debug_message

    将调试信息发送到输出窗口

    lr_error_message

    将错误消息发送到输出窗口

    lr_get_debug_message

    检索当前消息类

    lr_log_message

    将消息发送到日志文件

    lr_output_message

    将消息发送到输出窗口

    lr_set_debug_message

    <SPAN styl

    521/3123>