发布新日志

  • 摘录:播布客-loadrunner教学视频汇总

    2009-01-07 10:10:04

    小歪作品:

    LoadRunner关联函数---http://www.boobooke.com/v/bbk1586

    LoadRunner参数化之研究---http://www.boobooke.com/v/bbk1617

     

     

    雪鹰作品:

    LoadRunnerWeb检查点两个函数剖析(1/2)---  http://www.boobooke.com/v/bbk1333

    LoadRunnerWeb检查点两个函数剖析(2/2)--- http://www.boobooke.com/v/bbk1334

    LoadRunner中编写ftp测试脚本---  http://www.boobooke.com/v/bbk1349

     

    小强作品:

    1 性能测试常见用语

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

    2 lr常用术语

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

    3 lr目录分析

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

    3.1——3.3lr界面分析

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

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

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

    5 hp web tours网站分析

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

    6 lr录制测试脚本

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

    7 lr回放测试脚本

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

    8 htmlurl比较

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

    9 lr自动关联

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

    10 java虚拟用户

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

    11 初识lr动态链接库

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

    12 lr录制sql脚本

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

    13 性能分析基础知识

    14.LoadRunner脚本编写规范---http://www.boobooke.com/v/bbk1781/

    15.LoadRunner运行时刻设置---http://www.boobooke.com/v/bbk1782/

    16.LoadRunner之错误处理---http://www.boobooke.com/v/bbk1776  lr_continue_on_error

    17. LoadRunner之脚本调试---http://www.boobooke.com/v/bbk1777

    18. LoadRunner测试脚本的增强方法---http://www.boobooke.com/v/bbk1772

  • LoadRunner监控Windows/Unix系统资源的配置

    2008-12-22 11:16:12

    LoadRunner监控Windows/Unix系统资源的配置

    2008-12-22 11:12:46

    LoadRunner监控Windows/Unix系统资源需要做两件事情:

      1、配置被监视的服务器,以便于LoadRunner能够获取系统资源使用情况的数据

      2、在LoadRunner的Controller中添加计数器

      添加计数器比较简单,这里主要讲如何配置Windows/Unix服务器。

      一、配置UNIX系统:

      1、 修改/etc/xinetd.d/下的三个conf文件 rlogin , rsh ,rexec 这三个配置文件,把这三个文件里的disable =yes都改成 disable = no ( disabled 用在默认的 {} 中 禁止服务),或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务。

      2、 执行: rpc.rstatd

      3、 检查是否启动rstatd,输入命令: rpcinfo –p。如果能看到:

      程序 版本 协议 端口

      *** **** udp 741 rstatd

      那就说明rstatd服务启动了

      4、 LR中添加计算器

      如果系统没有安装rstatd的话,上面的操作将会不成功,需要先安装rstatd,安装rstatd过程很简单:

      1、从安装光盘或网上找到安装文件(一般是rstatd***.tar.gz)

      2、解压缩安装包:

      tar xzvf rstatd***.tar.gz

      3、进入源文件目录运行配置文件和编译:

      $ ./configure

      $ make

      $ make install

      安装好之后,就按上面的步骤启动rstatd即可。

      (说明:以上的操作需要root用户权限)

      二、配置windows系统

      1、 保证被监视的windows系统开启以下二个服务:Remote Procedure Call(RPC) 和Remote Registry Service

      2、 获得对远程计算机的管理权限,请在命令提示符(运行cmd命令)下执行以下命令:

      net use \\<计算机名>/用户:[<域>\<远程计算机名>]

      提示输入密码时,输入远程计算机的密码。

      例如:

      net use \\192.168.18.67 administrator

      net use \\192.168.18.67 /user:administrator

      如果提示错误,则不加用户名:

      net use \\192.168.18.67

      需要用户名和密码的话,系统会提示输入用户名和密码,按提示做即可。

      如果看到“命令成功完成”的提示,则说明配置成功了。

  • LR中监控ORACLE数据库常用计数器(如何自定义Oracle计数器)(转自jzl2004 )

    2008-12-22 11:12:46

    一、添加自定义计数器的方法

          要创建自定义查询,请执行以下操作:
    1.        在安装路径的Mercury LoadRunner\dat\monitors找到vmon.cfg文件,打开。
    2.        在vmon.cfg文件的第三行中,CustomCounters=指出要创建的自定义计数器个数。
    3.        在vmon.cfg文件中为新计数器新建一节,每节都有以下格式:
         [Custom0]
         Name=Five Hundred
    Descrīption=This counter always returns 500.
    Query=SELECT 500 FROM DUAL
    IsRate=0
    4.        在[Custom#]行,将计数器顺序中的下一个数字分配给新的自定义计数器。
    注意:自定义计数器必须是以数字0开始的联系顺序。
    5.        在Name行,输入新计数器的名称(可以输入中文)。
    6.        在Descrīption行,输入对该计数器的描述或解释(可以输入中文)。
    7.        在Query行,输入恰好返回数据库一行的SQL查询的文本,该行必须包含一列数值。
    注意:自定义查询文本不能够超过512字符。
    8.        在IsRate行,如果希望数据库将计数器报告为一个绝对值,请输入0;如果希望数
    据库报告每单位时间计数器的更改,请输入1。
    注意:自定义查询无法返回负值。
      
    例:
    [Custom0]
    ;Name must be unique
    Name=库快存命中率
    Descrīption=该计数器返回当前库快存命中率
    Query=SELECT 100*((sum(pins-reloads))/sum(pins)) from v$librarycache
    IsRate=0


    3        配置文件示例对象
    安装路径的Mercury LoadRunner\dat\monitors找到vmon.cfg文件:

    V$ Monitor]
    Counters=150
    CustomCounters=12
    ;How many seconds for each data sample?
    SamplingRate=10

    [Custom0]
    ;Name must be unique
    Name=库快存命中率
    Descrīption=该计数器返回当前库快存命中率
    Query=SELECT 100*((sum(pins-reloads))/sum(pins)) from v$librarycache
    IsRate=0

    [Custom1]
    ;Name must be unique
    Name=高速缓存区命中率
    Descrīption=oracle database shoot straight
    Query=SELECT round(1-SUM(PHYSICAL_READS)/(SUM(DB_BLOCK_GETS) + SUM(CONSISTENT_GETS)), 4) * 100 FROM (SELECT CASE WHEN NAME='physical reads' THEN VALUE END PHYSICAL_READS,CASE WHEN NAME = 'db block gets' THEN VALUE END  DB_BLOCK_GETS,CASE WHEN NAME = 'consistent gets' THEN VALUE END  CONSISTENT_GETS FROM V$SYSSTAT WHERE Name IN ('physical reads','db block gets','consistent gets'))
    IsRate=0

    [Custom2]
    ;Name must be unique
    Name=共享区库缓存区命中率
    Descrīption=命中率应大于0.99
    Query=Select round(sum(pins-reloads)/sum(pins) * 100, 2) from v$librarycache
    IsRate=0

    [Custom3]
    ;Name must be unique
    Name=共享区字典缓存区命中率
    Descrīption=命中率应大于0.85
    Query=Select round(sum(gets-getmisses-usage-fixed)/sum(gets) * 100, 2) from v$rowcache
    IsRate=0

    [Custom4]
    ;Name must be unique
    Name=检测回滚段的争用
    Descrīption=应该小于1%
    Query=select round(sum(waits)/sum(gets) * 100, 2) from v$rollstat
    IsRate=0

    [Custom5]
    ;Name must be unique
    Name=检测回滚段收缩次数
    Descrīption=应该小于1%
    Query=select sum(shrinks) from v$rollstat, v$rollname where v$rollstat.usn = v$rollname.usn
    IsRate=0

    [Custom6]
    ;Name must be unique
    Name=监控表空间的I/O读总数
    Descrīption=监控表空间的I/O
    Query=select sum(f.phyrds) pyr from v$filestat f, dba_data_files df where f.file# = df.file_id
    IsRate=0

    [Custom7]
    ;Name must be unique
    Name=监控表空间的I/O块读总数
    Descrīption=监控表空间的I/O
    Query=select sum(f.phyblkrd) pbr from v$filestat f, dba_data_files df where f.file# = df.file_id
    IsRate=0

    [Custom8]
    ;Name must be unique
    Name=监控表空间的I/O写总数
    Descrīption=监控表空间的I/O
    Query=select sum(f.phywrts) pyw from v$filestat f, dba_data_files df where f.file# = df.file_id
    IsRate=0
    .
    .
    .
    .
    .
    (以上为12个自定义的计数器,以下为LR工具自带的计数器)

    [0]
    Name=CPU used by this session
    Descrīption=This is the amount of CPU time (in 10s of milliseconds) used by a session between when a user call started and ended. Some user calls can complete within 10 milliseconds and as a result, the start and end user-call time can be the same. In this case, 0 milliseconds are added to the statistic. A similar problem can exist in the reporting by the operating system, especially on systems that suffer from many context switches.
    IsRate=0

    [1]
    Name=CPU used when call started
    Descrīption=The CPU time used when the call is started.
    IsRate=0
    .
    .
    .
    .


    二、常用自定义计数器列表

    序号        监控名称        SQL算法        说明
    1、   数据高速缓存区命中率        SELECT round(1-SUM(PHYSICAL_READS)/(SUM(DB_BLOCK_GETS) + SUM(CONSISTENT_GETS)), 4) * 100 FROM (SELECT CASE WHEN NAME='physical reads' THEN VALUE END PHYSICAL_READS,CASE WHEN NAME = 'db block gets' THEN VALUE END  DB_BLOCK_GETS,CASE WHEN NAME = 'consistent gets' THEN VALUE END  CONSISTENT_GETS FROM V$SYSSTAT WHERE Name IN ('physical reads','db block gets','consistent gets'))        (监控 SGA 的命中率)命中率应大于0.90最好

    2、   库快存命中率        SELECT 100*((sum(pins-reloads))/sum(pins)) from v$librarycache        该计数器返回当前库快存命中率

    3 、  共享区库缓存区命中率        Select round(sum(pins-reloads)/sum(pins) * 100, 2) from v$librarycache        (监控 SGA 中共享缓存区的命中率)命中率应大于0.99

    4、   监控 SGA 中字典缓冲区的命中率        Select round(sum(gets-getmisses-usage-fixed)/sum(gets) * 100, 2) from v$rowcache        (共享区字典缓存区命中率)命中率应大于0.85

    5、   检测回滚段的争用        select round(sum(waits)/sum(gets) * 100, 2) from v$rollstat        小于1%

    6、   检测回滚段收缩次数        select sum(shrinks) from v$rollstat, v$rollname where v$rollstat.usn = v$rollname.usn       

    7、   监控表空间的 I/O读总数        select sum(f.phyrds) pyr from v$filestat f, dba_data_files df where f.file# = df.file_id        监控表空间的 I/O

    8、    监控表空间的 I/O块读总数        select sum(f.phyblkrd) pbr from v$filestat f, dba_data_files df where f.file# = df.file_id        监控表空间的 I/O

    9、    监控表空间的 I/O写总数        select sum(f.phywrts) pyw from v$filestat f, dba_data_files df where f.file# = df.file_id        监控表空间的 I/O

    10、  监控表空间的 I/O块写总数        select sum(f.phyblkwrt) pbw  from v$filestat f, dba_data_files df where f.file# = df.file_id        监控表空间的 I/O

    11、   监控 SGA 中重做日志缓存区的命中率        SELECT Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses)*100) ratio2 FROM v$latch WHERE name IN ('redo copy')        应该小于1%

    12、   监控内存和硬盘的排序比率        select round(sum(case when name='sorts (disk)' then value else 0 end) / sum(case when name='sorts (memory)' then value else 0 end)*100,2) from (SELECT  name, value FROM v$sysstatWHERE name IN ('sorts (memory)', 'sorts (disk)'))        最好使它小于 10%
  • 性能测试

    2008-12-22 11:12:46

    性能测试


          性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。 

    一、概述

          性能测试在软件的质量保证中起着重要的作用,它包括的测试内容丰富多样。中国软件评测中心将性能测试概括为三个方面:应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试。通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。

        ·应用在客户端性能的测试

      应用在客户端性能测试的目的是考察客户端应用的性能,测试的入口是客户端。它主要包括并发性能测试、疲劳强度测试、大数据量测试和速度测试等,其中并发性能测试是重点。

          并发性能测试是重点

      并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。负载测试(Load Testing)是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

      并发性能测试的目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;当扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题。

      当一家企业自己组织力量或委托软件公司代为开发一套应用系统的时候,尤其是以后在生产环境中实际使用起来,用户往往会产生疑问,这套系统能不能承受大量的并发用户同时访问? 这类问题最常见于采用联机事务处理(OLTP)方式数据库应用、Web浏览和视频点播等系统。这种问题的解决要借助于科学的软件测试手段和先进的测试工具。

          举例说明:电信计费软件

      众所周知,每月20日左右是市话交费的高峰期,全市几千个收费网点同时启动。收费过程一般分为两步,首先要根据用户提出的电话号码来查询出其当月产生费用,然后收取现金并将此用户修改为已交费状态。一个用户看起来简单的两个步骤,但当成百上千的终端,同时执行这样的操作时,情况就大不一样了,如此众多的交易同时发生,对应用程序本身、操作系统、中心数据库服务器、中间件服务器、网络设备的承受力都是一个严峻的考验。决策者不可能在发生问题后才考虑系统的承受力, 预见软件的并发承受力, 这是在软件测试阶段就应该解决的问题。

      目前,大多数公司企业需要支持成百上千名用户,各类应用环境以及由不同供应商提供的元件组装起来的复杂产品,难以预知的用户负载和愈来愈复杂的应用程序,使公司担忧会发生投放性能差、用户遭受反应慢、系统失灵等问题。其结果就是导致公司收益的损失。

      如何模拟实际情况呢? 找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后拿秒表记录下反应时间? 这样的手工作坊式的测试方法不切实际,且无法捕捉程序内部变化情况,这样就需要压力测试工具的辅助。

      测试的基本策略是自动负载测试,通过在一台或几台PC机上模拟成百或上千的虚拟用户同时执行业务的情景,对应用程序进行测试,同时记录下每一事务处理的时间、中间件服务器峰值数据、数据库状态等。通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能,确定问题所在以及优化系统性能。预先知道了系统的承受力,就为最终用户规划整个运行环境的配置提供了有力的依据。

          并发性能测试前的准备工作

      测试环境:配置测试环境是测试实施的一个重要阶段,测试环境的适合与否会严重影响测试结果的真实性和正确性。测试环境包括硬件环境和软件环境,硬件环境指测试必需的服务器、客户端、网络连接设备以及打印机/扫描仪等辅助硬件设备所构成的环境;软件环境指被测软件运行时的操作系统、数据库及其他应用软件构成的环境。

      一个充分准备好的测试环境有三个优点:一个稳定、可重复的测试环境,能够保证测试结果的正确;保证达到测试执行的技术需求;保证得到正确的、可重复的以及易理解的测试结果。

      测试工具:并发性能测试是在客户端执行的黑盒测试,一般不采用手工方式,而是利用工具采用自动化方式进行。目前,成熟的并发性能测试工具有很多,选择的依据主要是测试需求和性能价格比。著名的并发性能测试工具有QALoad、LoadRunner、Benchmark Factory和Webstress等。这些测试工具都是自动化负载测试工具,通过可重复的、真实的测试,能够彻底地度量应用的可扩展性和性能,可以在整个开发生命周期、跨越多种平台、自动执行测试任务,可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试。

      测试数据:在初始的测试环境中需要输入一些适当的测试数据,目的是识别数据状态并且验证用于测试的测试案例,在正式的测试开始以前对测试案例进行调试,将正式测试开始时的错误降到最低。在测试进行到关键过程环节时,非常有必要进行数据状态的备份。制造初始数据意味着将合适的数据存储下来,需要的时候恢复它,初始数据提供了一个基线用来评估测试执行的结果。

      在测试正式执行时,还需要准备业务测试数据,比如测试并发查询业务,那么要求对应的数据库和表中有相当的数据量以及数据的种类应能覆盖全部业务。

      模拟真实环境测试,有些软件,特别是面向大众的商品化软件,在测试时常常需要考察在真实环境中的表现。如测试杀毒软件的扫描速度时,硬盘上布置的不同类型文件的比例要尽量接近真实环境,这样测试出来的数据才有实际意义。

          并发性能测试的种类与指标

      并发性能测试的种类取决于并发性能测试工具监控的对象,以QALoad自动化负载测试工具为例。软件针对各种测试目标提供了DB2、DCOM、ODBC、ORACLE、NETLoad、Corba、QARun、SAP、SQLServer、Sybase、Telnet、TUXEDO、UNIFACE、WinSock、WWW、Java scrīpt等不同的监控对象,支持Windows和UNIX测试环境。

      最关键的仍然是测试过程中对监控对象的灵活应用,例如目前三层结构的运行模式广泛使用,对中间件的并发性能测试作为问题被提到议事日程上来,许多系统都采用了国产中间件,选择Java scrīpt监控对象,手工编写脚本,可以达到测试目的。

      采用自动化负载测试工具执行的并发性能测试,基本遵循的测试过程有:测试需求与测试内容,测试案例制定,测试环境准备,测试脚本录制、编写与调试,脚本分配、回放配置与加载策略,测试执行跟踪,结果分析与定位问题所在,测试报告与测试评估。

      并发性能测试监控的对象不同,测试的主要指标也不相同,主要的测试指标包括交易处理性能指标和 UNIX资源监控。其中,交易处理性能指标包括交易结果、每分钟交易数、交易响应时间(Min:最小服务器响应时间;Mean:平均服务器响应时间;Max:最大服务器响应时间;StdDev:事务处理服务器响应的偏差,值越大,偏差越大;Median:中值响应时间;90%:90%事务处理的服务器响应时间)、虚拟并发用户数。

          应用实例:“新华社多媒体数据库 V1.0”性能测试

      中国软件评测中心(CSTC)根据新华社技术局提出的《多媒体数据库(一期)性能测试需求》和GB/T 17544《软件包质量要求和测试》的国家标准,使用工业标准级负载测试工具对新华社使用的“新华社多媒体数据库 V1.0”进行了性能测试。

      性能测试的目的是模拟多用户并发访问新华社多媒体数据库,执行关键检索业务,分析系统性能。

      性能测试的重点是针对系统并发压力负载较大的主要检索业务,进行并发测试和疲劳测试,系统采用B/S运行模式。并发测试设计了特定时间段内分别在中文库、英文库、图片库中进行单检索词、多检索词以及变检索式、混合检索业务等并发测试案例。疲劳测试案例为在中文库中并发用户数200,进行测试周期约8小时的单检索词检索。在进行并发和疲劳测试的同时,监测的测试指标包括交易处理性能以及 UNIX(Linux)、Oracle、Apache资源等。

      测试结论:在新华社机房测试环境和内网测试环境中,100M带宽情况下,针对规定的各并发测试案例,系统能够承受并发用户数为200的负载压力,最大交易数/分钟达到78.73,运行基本稳定,但随着负载压力增大,系统性能有所衰减。

      系统能够承受200并发用户数持续周期约8小时的疲劳压力,基本能够稳定运行。

      通过对系统UNIX(Linux)、Oracle和Apache资源的监控,系统资源能够满足上述并发和疲劳性能需求,且系统硬件资源尚有较大利用余地。

      当并发用户数超过200时,监控到HTTP 500、connect和超时错误,且Web服务器报内存溢出错误,系统应进一步提高性能,以支持更大并发用户数。

      建议进一步优化软件系统,充分利用硬件资源,缩短交易响应时间。

          疲劳强度与大数据量测试

      疲劳测试是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。

      疲劳强度测试可以采用工具自动化的方式进行测试,也可以手工编写程序测试,其中后者占的比例较大。

      一般情况下以服务器能够正常稳定响应请求的最大并发用户数进行一定时间的疲劳测试,获取交易执行指标数据和系统资源监控数据。如出现错误导致测试不能成功执行,则及时调整测试指标,例如降低用户数、缩短测试周期等。还有一种情况的疲劳测试是对当前系统性能的评估,用系统正常业务情况下并发用户数为基础,进行一定时间的疲劳测试。

      大数据量测试可以分为两种类型:针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;与压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试方案。大数据量测试的关键是测试数据的准备,可以依靠工具准备测试数据。

      速度测试目前主要是针对关键有速度要求的业务进行手工测速度,可以在多次测试的基础上求平均值,可以和工具测得的响应时间等指标做对比分析。

          ·应用在网络上性能的测试

      应用在网络上性能的测试重点是利用成熟先进的自动化技术进行网络应用性能监控、网络应用性能分析和网络预测。

          网络应用性能分析

      网络应用性能分析的目的是准确展示网络带宽、延迟、负载和TCP端口的变化是如何影响用户的响应时间的。利用网络应用性能分析工具,例如Application Expert,能够发现应用的瓶颈,我们可知应用在网络上运行时在每个阶段发生的应用行为,在应用线程级分析应用的问题。可以解决多种问题:客户端是否对数据库服务器运行了不必要的请求?当服务器从客户端接受了一个查询,应用服务器是否花费了不可接受的时间联系数据库服务器?在投产前预测应用的响应时间;利用Application Expert调整应用在广域网上的性能;Application Expert能够让你快速、容易地仿真应用性能,根据最终用户在不同网络配置环境下的响应时间,用户可以根据自己的条件决定应用投产的网络环境。

          网络应用性能监控

      在系统试运行之后,需要及时准确地了解网络上正在发生什么事情;什么应用在运行,如何运行;多少PC正在访问LAN或WAN;哪些应用程序导致系统瓶颈或资源竞争,这时网络应用性能监控以及网络资源管理对系统的正常稳定运行是非常关键的。利用网络应用性能监控工具,可以达到事半功倍的效果,在这方面我们可以提供的工具是Network Vantage。通俗地讲,它主要用来分析关键应用程序的性能,定位问题的根源是在客户端、服务器、应用程序还是网络。在大多数情况下用户较关心的问题还有哪些应用程序占用大量带宽,哪些用户产生了最大的网络流量,这个工具同样能满足要求。

          网络预测

      考虑到系统未来发展的扩展性,预测网络流量的变化、网络结构的变化对用户系统的影响非常重要。根据规划数据进行预测并及时提供网络性能预测数据。我们利用网络预测分析容量规划工具PREDICTOR可以作到:设置服务水平、完成日网络容量规划、离线测试网络、网络失效和容量极限分析、完成日常故障诊断、预测网络设备迁移和网络设备升级对整个网络的影响。

      从网络管理软件获取网络拓扑结构、从现有的流量监控软件获取流量信息(若没有这类软件可人工生成流量数据),这样可以得到现有网络的基本结构。在基本结构的基础上,可根据网络结构的变化、网络流量的变化生成报告和图表,说明这些变化是如何影响网络性能的。 PREDICTOR提供如下信息:根据预测的结果帮助用户及时升级网络,避免因关键设备超过利用阀值导致系统性能下降;哪个网络设备需要升级,这样可减少网络延迟、避免网络瓶颈;根据预测的结果避免不必要的网络升级。

          ·应用在服务器上性能的测试

      对于应用在服务器上性能的测试,可以采用工具监控,也可以使用系统本身的监控命令,例如Tuxedo中可以使用Top命令监控资源使用情况。实施测试的目的是实现服务器设备、服务器操作系统、数据库系统、应用在服务器上性能的全面监控,测试原理如下图。

    UNIX资源监控指标和描述

      监控指标 描述
      平均负载 系统正常状态下,最后60秒同步进程的平均个数
      冲突率 在以太网上监测到的每秒冲突数
      进程/线程交换率 进程和线程之间每秒交换次数
      CPU利用率 CPU占用率(%)
      磁盘交换率 磁盘交换速率
      接收包错误率 接收以太网数据包时每秒错误数
      包输入率 每秒输入的以太网数据包数目
      中断速率 CPU每秒处理的中断数
      输出包错误率 发送以太网数据包时每秒错误数
      包输入率 每秒输出的以太网数据包数目
      读入内存页速率 物理内存中每秒读入内存页的数目
      写出内存页速率 每秒从物理内存中写到页文件中的内存页数
       目或者从物理内存中删掉的内存页数目
      内存页交换速率 每秒写入内存页和从物理内存中读出页的个数
      进程入交换率 交换区输入的进程数目
      进程出交换率 交换区输出的进程数目
      系统CPU利用率 系统的CPU占用率(%)
      用户CPU利用率 用户模式下的CPU占用率(%)
      磁盘阻塞 磁盘每秒阻塞的字节数

    二、为什么进行性能测试?

          目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。

          包括以下几个方面

    1.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。
    2.识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。
    3.系统调优:重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。
    检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中的隐含的问题或冲突。
    4.验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。

          性能测试类型包括负载测试,强度测试,容量测试等

          负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。

          强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。

          容量测试:确定系统可处理同时在线的最大用户数  

          观察指标:

          性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。

          在实际中作中我们经常会对两种类型软件进行测试:bs和cs,这两方面的性能指标一般需要哪些内容呢?

    Bs结构程序一般会关注的通用指标如下(简):

    Web服务器指标指标:

    * Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;

    * Avg time to last byte per terstion (mstes):平均每秒业务角本的迭代次数 ,有人会把这两者混淆;

    * Successful Rounds:成功的请求;

    * Failed Rounds :失败的请求;

    * Successful Hits :成功的点击次数;

    * Failed Hits :失败的点击次数;

    * Hits Per Second :每秒点击次数;

    * Successful Hits Per Second :每秒成功的点击次数;

    * Failed Hits Per Second :每秒失败的点击次数;

    * Attempted Connections :尝试链接数;

    CS结构程序,由于一般软件后台通常为数据库,所以我们更注重数据库的测试指标:

    * User 0 Connections :用户连接数,也就是数据库的连接数量;

    * Number of deadlocks:数据库死锁;

    * Butter Cache hit :数据库Cache的命中情况

          当然,在实际中我们还会察看多用户测试情况下的内存,CPU,系统资源调用情况。这些指标其实是引申出来性能测试中的一种:竞争测试。什么是竞争测试,软件竞争使用各种资源(数据纪录,内存等),看他与其他相关系统对资源的争夺能力。

          我们知道软件架构在实际测试中制约着测试策略和工具的选择。如何选择性能测试策略是我们在实际工作中需要了解的。一般软件可以按照系统架构分成几种类型:

    c/s

    client/Server 客户端/服务器架构

    基于客户端/服务器的三层架构

    基于客户端/服务器的分布式架构

    b/s

    基于浏览器/Web服务器的三层架构

    基于中间件应用服务器的三层架构l

    基于Web服务器和中间件的多层架构l


     
    三、性能测试的步骤

          在每种不同的系统架构的实施中,开发人员可能选择不同的实现方式,造成实际情况纷繁复杂。我们不可能对每种技术都详细解说,这里只是介绍一种方法提供给你如何选择测试策略,从而帮助分析软件不同部分的性能指标,进而分析出整体架构的性能指标和性能瓶颈。

          由于工程和项目的不同,所选用的度量,评估方法也有不同之处。不过仍然有一些通用的步骤帮助我们完成一个性能测试项目。步骤如下

    1.  制定目标和分析系统
    2.  选择测试度量的方法
    3.  学习的相关技术和工具
    4.  制定评估标准
    5.  设计测试用例
    6.  运行测试用例
    7.  分析测试结果

    ·制定目标和分析系统

        每一个性能测试计划中第一步都会制定目标和分析系统构成。只有明确目标和了解系统构成才会澄清测试范围,知道在测试中要掌握什么样的技术。   

    目标:

    1.  确定客户需求和期望

    2.  实际业务需求

    3.  系统需求

    系统组成

        系统组成这里包含几方面含义:系统类别,系统构成,系统功能等。了解这些内容的本质其实是帮助我们明确测试的范围,选者适当的测试方法来进行测试。

        系统类别:分清系统类别是我们掌握什么样的技术的前提,掌握相应技术做性能测试才可能成功。例如:系统类别是bs结构,需要掌握 http协议,java,html等技术 。或者是cs结构,可能要了解操作系统,winsock,com等。所以甄别系统类别对于我们来说很重要。

        系统构成:硬件设置,操作系统设置是性能测试的制约条件,一般性能测试都是利用测试工具模仿大量的实际用户操作,系统在超负荷情形下运作。不同的系统构成性能测试就会得到不同的结果。

        系统功能:系统功能指系统提供的不同子系统,办公管理系统中的公文子系统,会议子系统等,系统工能是性能测试中要模拟的环节,了解这些是必要的。

    ·选择测试度量的方法

    经过第一步,将会对系统有清醒的认识。接下来我们将把精力放在软件度量上,收集系统相关的数据。

    度量的相关方面:

    * 制定规范

    * 制定相关流程, 角色,职责

    * 制定改进策略

    * 制定结果对比标准

    ·学习的相关技术和工具

         性能测试是通过工具,模拟大量用户操作,对系统增加负载。所以需要掌握一定的工具知识才能进行性能测试。大家都知道性能测试工具一般通过 winsock,http等协议纪录用户操作。而协议选择是基于软件的系统架构实现(web一般选择http协议,cs选择winsock协议),不同的性能测试工具,脚本语言也不同,比如rational robot中vu脚本用类c语言实现。

          开展性能测试需要对各种性能测试工具进行评估,因为每一种性能测试工具都有自身的特点,只有经过工具评估,才能选择符合现有软件架构的性能测试工具。确定测试工具后,需要组织测试人员进行工具的学习,培训相关技术。

    ·制定评估标准

             任何测试的目的都是确保软件符合预先规定的目标和要求。性能测试也不例外。所以必须制定一套标准。

          通常性能测试有四种模型技术可用于评估:

             *线性投射:用大量的过去的,扩展的或者将来可能发生的数据组成散布图,利用这个图表不断和系统的当前状况对比。

             *分析模型:用排队论公式和算法预测响应时间,利用描述工作量的数据和系统本质关联起来

             *模仿:模仿实际用户的使用方法测试你的系统

             *基准:定义测试和你最初的测试作为标准,利用它和所有后来进行的测试结果进行对比

    ·设计测试用例

        设计测试用例是在了解软件业务流程的基础上。设计测试用例的原则是受最小的影响提供最多的测试信息,设计测试用例的目标是一次尽可能的包含多个测试要素。这些测试用例必须是测试工具可以实现的,不同的测试场景将测试不同的功能。因为性能测试不同于平时的测试用例,尽可能把性能测试用例设计的复杂,才有可能发现软件的性能瓶颈。

    ·运行测试用例

        通过性能测试工具运行测试用例。同一环境下作的性能测试得到的测试结果是不准确的,所以在运行这些测试用例的时候,需要用不同的测试环境,不同的机器配置上运行。

    ·分析测试结果

          运行测试用例后,收集相关信息,进行数据统计分析,找到性能瓶颈。通过排除误差和其他因素,让测试结果体现接近真实情况。不同的体系结构分析测试结果的方法也不同,bs结构我们会分析网络带宽,流量对用户操作响应的影响,而cs结构我们可能更关心会系统整体配置对用户操作的影响。

    四、性能测试方法

      对于企业应用程序,有许多进行性能测试的方法,其中一些方法实行起来要比其他方法困难。所要进行的性能测试的类型取决于想要达到的结果。例如,对于可再现性,基准测试是最好的方法。而要从当前用户负载的角度测试系统的上限,则应该使用容量规划测试。本文将介绍几种设置和运行性能测试的方法,并讨论这些方法的区别。

      如果不进行合理的规划,对J2EE应用程序进行性能测试将会是一项令人望而生畏且有些混乱的任务。因为对于任何的软件开发流程,都必须收集需求、理解业务需要,并在进行实际测试之前设计出正式的进度表。性能测试的需求由业务需要驱动,并由一组用例阐明。这些用例可以基于历史数据(例如,服务器一周的负载模式)或预测的近似值。弄清楚需要测试的内容之后,就需要知道如何进行测试了。

      在开发阶段前期,应该使用基准测试来确定应用程序中是否出现性能倒退。基准测试可以在一个相对短的时间内收集可重复的结果。进行基准测试的最好方法是,每次测试改变一个且只改变一个参数。例如,如果想知道增加JVM内存是否会影响应用程序的性能,就逐次递增JVM内存(例如,从1024 MB增至1224 MB,然后是1524 MB,最后是2024 MB),在每个阶段收集结果和环境数据,记录信息,然后转到下一阶段。这样在分析测试结果时就有迹可循。下一小节我将介绍什么是基准测试,以及运行基准测试的最佳参数。

      开发阶段后期,在应用程序中的bug已经被解决,应用程序达到一种稳定状态之后,可以运行更为复杂的测试,确定系统在不同的负载模式下的表现。这些测试被称为容量规划测试、渗入测试(soak test)、峰谷测试(peak-rest test),它们旨在通过测试应用程序的可靠性、健壮性和可伸缩性来测试接近于现实世界的场景。对于下面的描述应该从抽象的意义上理解,因为每个应用程序的使用模式都是不同的。例如,容量规划测试通常都使用较缓慢的ramp-up(下文有定义),但是如果应用程序在一天之中的某个时段中有快速突发的流量,那么自然应该修改测试以反映这种情况。但是,要记住,因为更改了测试参数(比如ramp-up周期或用户的考虑时间(think-time)),测试的结果肯定也会改变。一个不错的方法是,运行一系列的基准测试,确立一个已知的可控环境,然后再对变化进行比较。

    基准测试

      基准测试的关键是要获得一致的、可再现的结果。可再现的结果有两个好处:减少重新运行测试的次数;对测试的产品和产生的数字更为确信。使用的性能测试工具可能会对测试结果产生很大影响。假定测试的两个指标是服务器的响应时间和吞吐量,它们会受到服务器上的负载的影响。服务器上的负载受两个因素影响:同时与服务器通信的连接(或虚拟用户)的数目,以及每个虚拟用户请求之间的考虑时间的长短。很明显,与服务器通信的用户越多,负载就越大。同样,请求之间的考虑时间越短,负载也越大。这两个因素的不同组合会产生不同的服务器负载等级。记住,随着服务器上负载的增加,吞吐量会不断攀升,直到到达一个点。


    图1.随着负载的增加,系统吞吐量的曲线(单位:页面/秒)

      注意,吞吐量以稳定的速度增长,然后在某一个点上稳定下来。

      在某一点上,执行队列开始增长,因为服务器上所有的线程都已投入使用,传入的请求不再被立即处理,而是放入队列中,当线程空闲时再处理。


    图2. 随着负载的增加,系统执行队列长度的曲线

      注意,最初的一段时间,执行队列的长度为零,然后就开始以稳定的速度增长。这是因为系统中的负载在稳定增长,虽然最初系统有足够的空闲线程去处理增加的负载,最终它还是不能承受,而必须将其排入队列。

      当系统达到饱和点,服务器吞吐量保持稳定后,就达到了给定条件下的系统上限。但是,随着服务器负载的继续增长,系统的响应时间也随之延长,虽然吞吐量保持稳定。


    图3. 随着负载的增加,系统中两个事务的响应时间曲线

      注意,在执行队列(图2)开始增长的同时,响应时间也开始以递增的速度增长。这是因为请求不能被及时处理。

      为了获得真正可再现的结果,应该将系统置于相同的高负载下。为此,与服务器通信的虚拟用户应该将请求之间的考虑时间设为零。这样服务器会立即超载,并开始构建执行队列。如果请求(虚拟用户)数保持一致,基准测试的结果应该会非常精确,完全可以再现。

      您可能要问的一个问题是:“如何度量结果?”对于一次给定的测试,应该取响应时间和吞吐量的平均值。精确地获得这些值的唯一方法是一次加载所有的用户,然后在预定的时间段内持续运行。这称为“flat”测试。


    图4. flat测试的情况(所有的用户都是同时加载的)

      与此相对应的是“ramp-up”测试。


    图5. ramp-up测试的情况(在测试期间,用户以稳定速度(每秒x个)增加)

      ramp-up测试中的用户是交错上升的(每几秒增加一些新用户)。ramp-up测试不能产生精确和可重现的平均值,这是因为由于用户的增加是每次一部分,系统的负载在不断地变化。因此,flat运行是获得基准测试数据的理想模式。

      这不是在贬低ramp-up测试的价值。实际上,ramp-up测试对找出以后要运行的flat测试的范围非常有用。ramp-up测试的优点是,可以看出随着系统负载的改变,测量值是如何改变的。然后可以据此选择以后要运行的flat测试的范围。

      Flat测试的问题是系统会遇到“波动”效果。


    图6. 一次flat测试中所测得的系统吞吐量的曲线(单位:页面/秒)

      注意波动的出现,吞吐量不再是平滑的。

      这在系统的各个方面都有所体现,包括CPU的使用量。


    图7. 一次flat测试中所测得的系统CPU使用量随时间变化的曲线

      注意,每隔一段时间就会出现一个波形。CPU使用量不再是平滑的,而是有了像吞吐量图那样的尖峰。

      此外,执行队列也承受着不稳定的负载,因此可以看到,随着系统负载的增加和减少,执行队列也在增长和缩减。


    图8. 一次flat测试中所测得的系统执行队列的曲线

      注意,每隔一段时间就会出现一个波形。执行队列曲线与上面的CPU使用量图非常相似。

      最后,系统中事务的响应时间也遵循着这个波动模式。


    图9. 一次flat测试中所测得的系统事务的响应时间

      注意,每隔一段时间就会出现一个波形。事务的响应时间也与上面的图类似,只不过其效果随着时间的推移逐渐减弱。

      当测试中所有的用户都同时执行几乎相同的操作时,就会发生这种现象。这将会产生非常不可靠和不精确的结果,所以必须采取一些措施防止这种情况的出现。有两种方法可以从这种类型的结果中获得精确的测量值。如果测试可以运行相当长的时间(有时是几个小时,取决于用户的操作持续的时间),最后由于随机事件的本性使然,服务器的吞吐量会被“拉平”。或者,可以只选取波形中两个平息点之间的测量值。该方法的缺点是可以捕获数据的时间非常短。

    性能规划测试

      对于性能规划类型的测试来说,其目标是找出,在特定的环境下,给定应用程序的性能可以达到何种程度。此时可重现性就不如在基准测试中那么重要了,因为测试中通常都会有随机因子。引入随机因子的目的是为了尽量模拟具有真实用户负载的现实世界应用程序。通常,具体的目标是找出系统在特定的服务器响应时间下支持的当前用户的最大数。例如,您可能想知道:如果要以5秒或更少的响应时间支持8,000个当前用户,需要多少个服务器?要回答这个问题,需要知道系统的更多信息。

      要确定系统的容量,需要考虑几个因素。通常,服务器的用户总数非常大(以十万计),但是实际上,这个数字并不能说明什么。真正需要知道的是,这些用户中有多少是并发与服务器通信的。其次要知道的是,每个用户的“考虑时间”即请求间时间是多少。这非常重要,因为考虑时间越短,系统所能支持的并发用户越少。例如,如果用户的考虑时间是1秒,那么系统可能只能支持数百个这样的并发用户。但是,如果用户的考虑时间是30秒,那么系统则可能支持数万个这样的并发用户(假定硬件和应用程序都是相同的)。在现实世界中,通常难以确定用户的确切考虑时间。还要注意,在现实世界中,用户不会精确地按照间隔时间发出请求。

      于是就引入了随机性。如果知道普通用户的考虑时间是5秒,误差为20%,那么在设计负载测试时,就要确保请求间的时间为5×(1 +/- 20%)秒。此外,可以利用“调步”的理念向负载场景中引入更多的随机性。它是这样的:在一个虚拟用户完成一整套的请求后,该用户暂停一个设定的时间段,或者一个小的随机时间段(例如,2×(1 +/- 25%)秒),然后再继续执行下一套请求。将这两种随机化方法运用到测试中,可以提供更接近于现实世界的场景。

      现在该进行实际的容量规划测试了。接下来的问题是:如何加载用户以模拟负载状态?最好的方法是模拟高峰时间用户与服务器通信的状况。这种用户负载状态是在一段时间内逐步达到的吗?如果是,应该使用ramp-up类型的测试,每隔几秒增加x个用户。或者,所有用户是在一个非常短的时间内同时与系统通信?如果是这样,就应该使用flat类型的测试,将所有的用户同时加载到服务器。两种不同类型的测试会产生没有可比性的不同测试。例如,如果进行ramp-up类型的测试,系统可以以4秒或更短的响应时间支持5,000个用户。而执行flat测试,您会发现,对于5,000个用户,系统的平均响应时间要大于4秒。这是由于ramp-up测试固有的不准确性使其不能显示系统可以支持的并发用户的精确数字。以门户应用程序为例,随着门户规模的扩大和集群规模的扩大,这种不确定性就会随之显现。

      这不是说不应该使用ramp-up测试。对于系统负载在一段比较长的时间内缓慢增加的情况,ramp-up测试效果还是不错的。这是因为系统能够随着时间不断调整。如果使用快速ramp-up测试,系统就会滞后,从而报告一个较相同用户负载的flat测试低的响应时间。那么,什么是确定容量的最好方法?结合两种负载类型的优点,并运行一系列的测试,就会产生最好的结果。例如,首先使用ramp-up测试确定系统可以支持的用户范围。确定了范围之后,以该范围内不同的并发用户负载进行一系列的flat测试,更精确地确定系统的容量。

    渗入测试

      渗入测试是一种比较简单的性能测试。渗入测试所需时间较长,它使用固定数目的并发用户测试系统的总体健壮性。这些测试将会通过内存泄漏、增加的垃圾收集(GC)或系统的其他问题,显示因长时间运行而出现的任何性能降低。测试运行的时间越久,您对系统就越了解。运行两次测试是一个好主意——一次使用较低的用户负载(要在系统容量之下,以便不会出现执行队列),一次使用较高的负载(以便出现积极的执行队列)。

      测试应该运行几天的时间,以便真正了解应用程序的长期健康状况。要确保测试的应用程序尽可能接近现实世界的情况,用户场景也要逼真(虚拟用户通过应用程序导航的方式要与现实世界一致),从而测试应用程序的全部特性。确保运行了所有必需的监控工具,以便精确地监测并跟踪问题。

    峰谷测试

      峰谷测试兼有容量规划ramp-up类型测试和渗入测试的特征。其目标是确定从高负载(例如系统高峰时间的负载)恢复、转为几乎空闲、然后再攀升到高负载、再降低的能力。

      实现这种测试的最好方法就是,进行一系列的快速ramp-up测试,继之以一段时间的平稳状态(取决于业务需求),然后急剧降低负载,此时可以令系统平息一下,然后再进行快速的ramp-up;反复重复这个过程。这样可以确定以下事项:第二次高峰是否重现第一次的峰值?其后的每次高峰是等于还是大于第一次的峰值?在测试过程中,系统是否显示了内存或GC性能降低的有关迹象?测试运行(不停地重复“峰值/空闲”周期)的时间越长,您对系统的长期健康状况就越了解。

    结束语

      本文介绍了进行性能测试的几种方法。取决于业务需求、开发周期和应用程序的生命周期,对于特定的企业,某些测试会比其他的更适合。但是,对于任何情况,在决定进行某一种测试前,都应该问自己一些基本问题。这些问题的答案将会决定哪种测试方法是最好的。

      这些问题包括:

    结果的可重复性需要有多高?
    测试需要运行和重新运行几次?
    您处于开放周期的哪个阶段?
    您的业务需求是什么?
    您的用户需求是什么?
    您希望生产中的系统在维护停机时间中可以持续多久?
    在一个正常的业务日,预期的用户负载是多少?
      将这些问题的答案与上述性能测试类型相对照,应该就可以制定出测试应用程序的总体性能的完美计划。

  • 性能测试(并发负载压力)测试分析-简要篇

    2007-6-05

    分析原则:

    • 具体问题具体分析(这是由于不同的应用系统,不同的测试目的,不同的性能关注点)
    • 查找瓶颈时按以下顺序,由易到难。
      服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器操作系统瓶颈(参数配置)-〉中间件瓶颈(参数配置,数据库,web服务器等)-〉应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)
      注:以上过程并不是每个分析中都需要的,要根据测试目的和要求来确定分析的深度。对一些要求低的,我们分析到应用系统在将来大的负载压力(并发用户数、数据量)下,系统的硬件瓶颈在哪儿就够了。
    • 分段排除法 很有效

    分析的信息来源:

    • 1 根据场景运行过程中的错误提示信息
    • 2 根据测试结果收集到的监控指标数据

    一.错误提示分析

     分析实例:

    • 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.业务操作响应时间:

    • 分析方案运行情况应从平均事务响应时间图和事务性能摘要图开始。使用“事务性能摘要”图,可以确定在方案执行期间响应时间过长的事务。
    • 细分事务并分析每个页面组件的性能。查看过长的事务响应时间是由哪些页面组件引起的?问题是否与网络或服务器有关?
    • 如果服务器耗时过长,请使用相应的服务器图确定有问题的服务器度量并查明服务器性能下降的原因。如果网络耗时过长,请使用“网络监视器”图确定导致性能瓶颈的网络问?/li>
     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)'

     

    UNIX资源监控指标和描述

      监控指标 描述

      平均负载 系统正常状态下,最后60秒同步进程的

      平均个数

      冲突率 在以太网上监测到的每秒冲突数

      进程/线程交换率 进程和线程之间每秒交换次数

      CPU利用率 CPU占用率(%)

      磁盘交换率 磁盘交换速率

      接收包错误率 接收以太网数据包时每秒错误数

      包输入率 每秒输入的以太网数据包数目

      中断速率 CPU每秒处理的中断数

      输出包错误率 发送以太网数据包时每秒错误数

      包输入率 每秒输出的以太网数据包数目

      读入内存页速率 物理内存中每秒读入内存页的数目

      写出内存页速率 每秒从物理内存中写到页文件中的内存页数

      目或者从物理内存中删掉的内存页数目

      内存页交换速率 每秒写入内存页和从物理内存中读出页的个数

      进程入交换率 交换区输入的进程数目

      进程出交换率 交换区输出的进程数目

      系统CPU利用率 系统的CPU占用率(%)

      用户CPU利用率 用户模式下的CPU占用率(%)

      磁盘阻塞 磁盘每秒阻塞的字节数

    注:上述SQL Server和Oracle数据库分析,只是一些简单、基本的分析,特别是Oracle数据库的分析和优化,是一门专门的技术,进一步的分析可查相关资料。

  • 性能测试监控点

    2008-12-22 11:12:46

    Unix主机

    • CPU使用率;
    • 内存使用状况;
    • Disk I/O;
    数据库服务器
    • Cache命中
    • Long Transaction
    • 索引使用情况
    • 数据库进程CPU使用状况
    • 数据库内存使用状况
    • 数据库连接数量
    应用服务器
    • MQ的主要进程内存使用状况
    • MQ的进程数量
    • TEMIP主要进程内存使用状况
    WEB服务器
    • 进程的CPU和内存使用状况
    • Cache命中
    • 平均响应时间等
    对这些内容的记录需要通过操作系统提供的性能观测工具或是应用自身提供的性能观测工具:
    1. 在Unix环境中,可以用top、vmstat、iostat程序观察需要记录的内容,更好的方法是自己写一个简单脚本,把时间信息和输出信息一同存入本地日志文件。在本测试中,我们用Perl和Unix的Shell脚本实现了对输出信息的抽取和格式化,生成的记录文件可以方便地被Excel等程序进行处理;
    2. 对于数据库环境,可以用Oracle自带的性能监测工具或是第三方软件(如TOAD等)观察性能并存成文件;
    3. 对WEB服务器,可以用WEB Server自带的性能监测工具监测其性能。
  • 性能测试续2 基准测试

    2007-6-07

    基准测试
    基准测试的关键是要获得一致的、可再现的结果。可再现的结果有两个好处:减少重新运行测试的次数;对测试的产品和产生的数字更为确信。使用的性能测试工具可能会对测试结果产生很大影响。假定测试的两个指标是服务器的响应时间和吞吐量,它们会受到服务器上的负载的影响。服务器上的负载受两个因素影响:同时与服务器通信的连接(或虚拟用户)的数目,以及每个虚拟用户请求之间的考虑时间的长短。很明显,与服务器通信的用户越多,负载就越大。同样,请求之间的考虑时间越短,负载也越大。这两个因素的不同组合会产生不同的服务器负载等级。记住,随着服务器上负载的增加,吞吐量会不断攀升,直到到达一个点。

    1.随着负载的增加,系统吞吐量的曲线(单位:页面/秒)
    注意,吞吐量以稳定的速度增长,然后在某一个点上稳定下来。
    在某一点上,执行队列开始增长,因为服务器上所有的线程都已投入使用,传入的请求不再被立即处理,而是放入队列中,当线程空闲时再处理。



    2. 随着负载的增加,系统执行队列长度的曲线
    注意,最初的一段时间,执行队列的长度为零,然后就开始以稳定的速度增长。这是因为系统中的负载在稳定增长,虽然最初系统有足够的空闲线程去处理增加的负载,最终它还是不能承受,而必须将其排入队列。
    当系统达到饱和点,服务器吞吐量保持稳定后,就达到了给定条件下的系统上限。但是,随着服务器负载的继续增长,系统的响应时间也随之延长,虽然吞吐量保持稳定。



    3. 随着负载的增加,系统中两个事务的响应时间曲线
    注意,在执行队列(图2)开始增长的同时,响应时间也开始以递增的速度增长。这是因为请求不能被及时处理。
    为了获得真正可再现的结果,应该将系统置于相同的高负载下。为此,与服务器通信的虚拟用户应该将请求之间的考虑时间设为零。这样服务器会立即超载,并开始构建执行队列。如果请求(虚拟用户)数保持一致,基准测试的结果应该会非常精确,完全可以再现。
    您可能要问的一个问题是:如何度量结果?对于一次给定的测试,应该取响应时间和吞吐量的平均值。精确地获得这些值的唯一方法是一次加载所有的用户,然后在预定的时间段内持续运行。这称为“flat”测试。



    4. flat测试的情况(所有的用户都是同时加载的)
    与此相对应的是“ramp-up”测试。



    5. ramp-up测试的情况(在测试期间,用户以稳定速度(每秒x个)增加)
    ramp-up
    测试中的用户是交错上升的(每几秒增加一些新用户)。ramp-up测试不能产生精确和可重现的平均值,这是因为由于用户的增加是每次一部分,系统的负载在不断地变化。因此,flat运行是获得基准测试数据的理想模式。
    这不是在贬低ramp-up测试的价值。实际上,ramp-up测试对找出以后要运行的flat测试的范围非常有用。ramp-up测试的优点是,可以看出随着系统负载的改变,测量值是如何改变的。然后可以据此选择以后要运行的flat测试的范围。
    Flat
    测试的问题是系统会遇到波动效果。



    6. 一次flat测试中所测得的系统吞吐量的曲线(单位:页面/秒)
    注意波动的出现,吞吐量不再是平滑的。
    这在系统的各个方面都有所体现,包括CPU的使用量。



    7. 一次flat测试中所测得的系统CPU使用量随时间变化的曲线
    注意,每隔一段时间就会出现一个波形。CPU使用量不再是平滑的,而是有了像吞吐量图那样的尖峰。
    此外,执行队列也承受着不稳定的负载,因此可以看到,随着系统负载的增加和减少,执行队列也在增长和缩减。



    8. 一次flat测试中所测得的系统执行队列的曲线
    注意,每隔一段时间就会出现一个波形。执行队列曲线与上面的CPU使用量图非常相似。
    最后,系统中事务的响应时间也遵循着这个波动模式。



    9. 一次flat测试中所测得的系统事务的响应时间
    注意,每隔一段时间就会出现一个波形。事务的响应时间也与上面的图类似,只不过其效果随着时间的推移逐渐减弱。
    当测试中所有的用户都同时执行几乎相同的操作时,就会发生这种现象。这将会产生非常不可靠和不精确的结果,所以必须采取一些措施防止这种情况的出现。有两种方法可以从这种类型的结果中获得精确的测量值。如果测试可以运行相当长的时间(有时是几个小时,取决于用户的操作持续的时间),最后由于随机事件的本性使然,服务器的吞吐量会被拉平。或者,可以只选取波形中两个平息点之间的测量值。该方法的缺点是可以捕获数据的时间非常短。
    性能规划测试
    对于性能规划类型的测试来说,其目标是找出,在特定的环境下,给定应用程序的性能可以达到何种程度。此时可重现性就不如在基准测试中那么重要了,因为测试中通常都会有随机因子。引入随机因子的目的是为了尽量模拟具有真实用户负载的现实世界应用程序。通常,具体的目标是找出系统在特定的服务器响应时间下支持的当前用户的最大数。例如,您可能想知道:如果要以5秒或更少的响应时间支持8,000个当前用户,需要多少个服务器?要回答这个问题,需要知道系统的更多信息。
    要确定系统的容量,需要考虑几个因素。通常,服务器的用户总数非常大(以十万计),但是实际上,这个数字并不能说明什么。真正需要知道的是,这些用户中有多少是并发与服务器通信的。其次要知道的是,每个用户的考虑时间即请求间时间是多少。这非常重要,因为考虑时间越短,系统所能支持的并发用户越少。例如,如果用户的考虑时间是1秒,那么系统可能只能支持数百个这样的并发用户。但是,如果用户的考虑时间是30秒,那么系统则可能支持数万个这样的并发用户(假定硬件和应用程序都是相同的)。在现实世界中,通常难以确定用户的确切考虑时间。还要注意,在现实世界中,用户不会精确地按照间隔时间发出请求。
    于是就引入了随机性。如果知道普通用户的考虑时间是5秒,误差为20%,那么在设计负载测试时,就要确保请求间的时间为1 +/- 20%)秒。此外,可以利用调步的理念向负载场景中引入更多的随机性。它是这样的:在一个虚拟用户完成一整套的请求后,该用户暂停一个设定的时间段,或者一个小的随机时间段(例如,1 +/- 25%)秒),然后再继续执行下一套请求。将这两种随机化方法运用到测试中,可以提供更接近于现实世界的场景。
    现在该进行实际的容量规划测试了。接下来的问题是:如何加载用户以模拟负载状态?最好的方法是模拟高峰时间用户与服务器通信的状况。这种用户负载状态是在一段时间内逐步达到的吗?如果是,应该使用ramp-up类型的测试,每隔几秒增加x个用户。或者,所有用户是在一个非常短的时间内同时与系统通信?如果是这样,就应该使用flat类型的测试,将所有的用户同时加载到服务器。两种不同类型的测试会产生没有可比性的不同测试。例如,如果进行ramp-up类型的测试,系统可以以4秒或更短的响应时间支持5,000个用户。而执行flat测试,您会发现,对于5,000个用户,系统的平均响应时间要大于4秒。这是由于ramp-up测试固有的不准确性使其不能显示系统可以支持的并发用户的精确数字。以门户应用程序为例,随着门户规模的扩大和集群规模的扩大,这种不确定性就会随之显现。
    这不是说不应该使用ramp-up测试。对于系统负载在一段比较长的时间内缓慢增加的情况,ramp-up测试效果还是不错的。这是因为系统能够随着时间不断调整。如果使用快速ramp-up 查看(572) 评论(0) 收藏 分享 管理

  • 测试人员面试题

    2008-12-22 11:12:46

    01. 为什么要在一个团队中开展软件测试工作?
      因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

    02. 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
      我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试

    03. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同04. 的测试类型的区别与联系(如功能测试、性能测试……)
      测试类型有:功能测试,性能测试,界面测试。
      功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
      性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
      界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
      区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试

    04.您认为做好测试用例设计工作的关键是什么?
    白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
    黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题


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

      黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
      白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

      软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
      1、是否有不正确或遗漏的功能?
      2、在接口上,输入是否能正确的接受?能否输出正确的结果?
      3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
      4、性能上是否能够满足要求?
      5、是否有初始化或终止性错误?

      软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
      1、对程序模块的所有独立的执行路径至少测试一遍。
      2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
      3、在循环的边界和运行的界限内执行循环体。
      4、测试内部数据结构的有效性,等等。

      单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

      单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

      集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。

      系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)

      系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。

      验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
    验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

    06. 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
      软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
    测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)

    07. 您认为做好测试计划工作的关键是什么?
      1. 明确测试的目标,增强测试计划的实用性
      编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
      2.坚持“5W”规则,明确内容与过程
      “5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。
      3.采用评审和更新机制,保证测试计划满足实际需求
    测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。
      4. 分别创建测试计划与测试详细规格、测试用例
      应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。

    08. 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
      1.等价类划分
      划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.

      2.边界值分析法
      边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
      使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.

    3.错误推测法
      基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
      错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.

    4.因果图方法
      前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.

    09. 请以您以往的实际工作为例,10. 详细的描述一次测试用例设计的完整的过程。
      就说最近的这次网站功能的测试吧
      首先:得到相关文档(需求文档和设计文档),理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了),考虑到测试环境,测试用例,测试时间等问题。
      第二步:设计测试用例,测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有另一个测试人员负责,可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小,所以不考虑):这次的网站的输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的,有个标志位),网站启动后会立刻去刷那张表,得到多条数据,然后在进行处理。处理过程中,会经历3个步骤,网站才算完成了它的任务。有3个步骤呢,就可以分别对  这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等),得出了差不多50个用例。界面测试,也就是用户看的到的地方,包括发送的邮件和用户填写资料的页面展示。
      第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境已经很熟了,只有有机器能空于下来做该功能测试就可以做了),因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦,需要web服务器(Apache,tomcat),不过这次需求呢,网站部分只用到了tomcat,所以只要有tomcat即可
      第四步:执行测试

    11. 您以往是否曾经从事过性能测试工作?如果有,12. 请尽可能的详细描述您以往的性能测试工作的完整过程。
      是的,曾经做过网站方面的性能测试,虽然做的时间并不久(2个月吧),当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做。
    性能测试类型包括负载测试,强度测试,容量测试等
      负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
      强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况
      容量测试:确定系统可处理同时在线的最大用户数   
      在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比),

      Web服务器指标指标:
      * Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
      * Successful Rounds:成功的请求;
      * Failed Rounds :失败的请求;
      * Successful Hits :成功的点击次数;
      * Failed Hits :失败的点击次数;
      * Hits Per Second :每秒点击次数;
      * Successful Hits Per Second :每秒成功的点击次数;
      * Failed Hits Per Second :每秒失败的点击次数;
      * Attempted Connections :尝试链接数;  

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

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

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

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

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

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

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

    33.      你对测试最大的兴趣在哪里?为什么?
      最大的兴趣就是测试有难度,有挑战性!做测试越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章,是关于如何做好一名测试工程师。一共罗列了11,12点,有部分是和人的性格有关,有部分需要后天的努力。但除了性格有关的1,2点我没有把握,其他点我都很有信心做好它。
      刚开始进入测试行业时,对测试的认识是从无忧测试网上了解到的一些资料,当时是冲着做测试需要很多技能才能做的好,虽然入门容易,但做好很难,比开发更难,虽然当时我很想做开发(学校专业课我基本上不缺席,因为我喜欢我的专业),但看到测试比开发更难更有挑战性,想做好测试的意志就更坚定了。
      不到一年半的测试工作中,当时的感动和热情没有减退一点(即使环境问题以及自身经验,技术的不足,做测试的你一定也能理解)。
      我觉得做测试整个过程中有2点让我觉得很有难度(对我来说,有难度的东西我就非常感兴趣),第一是测试用例的设计,因为测试的精华就在测试用例的设计上了,要在版本出来之前,把用例写好,用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个新任务时,你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的),而技术基础可就没那么简单了,这需要你自觉的学习能力,比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的,后台是怎么响应用户请求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备,可能会遇到什么难题?需求细节是不是没有确定好?这些问题都能在设计用例的时候发现。
      第二是发现BUG的时候了,这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发现大部分的bug,还有一部分bug需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例,测试出bug。还有如何发现bug?这就需要在测试用例有效的情况下,通过细心和耐心去发现bug了,每个用例都有可能发现bug,每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数据流及结果都得看仔细了,bug都在里面发现的)。如何描述bug也很有讲究,bug在什么情况下会产生,如果条件变化一点点,就不会有这个bug,以哪些最少的操作步骤就能重现这个bug,这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题。

    34. 你的测试职业发展是什么?
      测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年累积测试经验,按如何做好测试工程师的11,12点要求自己,不断的更新自己改正自己,做好测试任务。

    35. 你自认为测试的优势在哪里?
      优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。

    36. 你以前工作时的测试流程是什么?
      公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。我说下我1年来不断改正(自己总结,吸取同行的方法)后的流程吧。需求评审(有开发人员,产品经理,测试人员,项目经理)->需求确定(出一份确定的需求文档)->开发设计文档(开发人员在开始写代码前就能输出设计文档)->想好测试策略,写出测试用例->发给开发人员和测试经理看看(非正式的评审用例)->接到测试版本->执行测试用例(中间可能会补充用例)->提交bug(有些bug需要开发人员的确定(严重级别的,或突然发现的在测试用例范围之外的,难以重现的),有些可以直接录制进TD)->开发人员修改(可以在测试过程中快速的修改)->回归测试(可能又会发现新问题,再按流程开始跑)。

    37. 当开发人员说不38. 是BUG时,39. 你如何应付?
      开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。

    23.你为什么想离开目前的职务?
      因为公司运作情况并不理想,公司需要调整部门体系,公司考虑到缩减部门人员,所以大批量的裁员(有6,7个),这是我的第一份工作,对公司也有较深的感情,因为在这里我找到了职业理想(就是测试),所以公司需要精简人员,我自愿退出。虽然很舍不得,但我将会有新的发挥能力的舞台。

    24:你对我们公司了解有多少?

    25:你找工作时,最重要的考虑因素为何?
      工作的性质和内容是否能让我发挥所长,并不断成长。

    26:为什么我们应该录取你?
      您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。

    27:请谈谈你个人的最大特色。
      我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。

    28.白箱测试和黑箱测试是什么?什么是回归测试?

    29。单元测试、集成测试、系统测试的侧重点是什么?

    30。设计用例的方法、依据有那些?

    31。一个测试工程师应具备那些素质和技能?

    32.集成测试通常都有那些策略?

    33.你用过的测试工具的主要功能、性能及其他?

    34.一个缺陷测试报告的组成

    35.基于WEB信息管理系统测试时应考虑的因素有哪些?

    36.软件测试项目从什么时候开始,?为什么?

    37.需求测试注意事项有哪些?

    38.简述一下缺陷的生命周期

    39.测试分析测试用例注意(事项)?
      你在你所在的公司是怎么开展测试工作的?是如何组织的?
      你认为理想的测试流程是什么样子?
      你是怎样工作的?
      软件测试活动的生命周期是什么?
      请画出软件测试活动的流程图?
      针对缺陷采取怎样管理措施?
      什么是测试评估?测试评估的范围是什么?
      如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么?
      测试结束的标准是什么?
      软件验收测试除了alpha,beta测试以外,还有哪一种?
      做测试多久了?
      以前做过哪些项目?
      你们以前测试的流程是怎样的?
      <答:测试计划-测试用例设计-测试执行-测试分析报告>
      用过哪些测试工具?
      为什么选择测试这行?
      <答:它是一个新兴的行业,有发展潜力,而且很锻炼人,需要掌握更多的技能,比做开发要更难>
      为什么值得他们公司雇用?
      如果我雇用你,你能给部门带来什么贡献?
      如何从工作中看出你是个自动自觉的人
      你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
      通常你对于别人批评你会有什么样的反应
      如果明知这样做不对,你还会依主管的指过去做吗
      如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理
      你觉得什么样的人最难相处
      为什么值得他们公司雇用?
        帮助公司提高软件质量和测试部门的技术水平
      如果我雇用你,你能给部门带来什么贡献?
        分享我的测试经验和测试技能,提高测试部门技术水平
      如何从工作中看出你是个自动自觉的人
             自动自觉范围太广
          1. 工作成果
          2. 工作质量  
      你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
        在有足够的资源和合理的工作量的情况下,完全可以按时完成,并能比一般人做的更好
      通常你对于别人批评你会有什么样的反应
        有错即改,无措勉之

      如果明知这样做不对,你还会依主管的指过去做吗
        在公司内部下级是否有申诉渠道?

      如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理
        为什么抱怨?是怎么样的问题?
        如果是客服问题,提交客服部门解决
        如果是质量问题,分析原因,下一版本改进
      你觉得什么样的人最难相处
        自以为是的人

      什么叫单元测试?
        请就软件测试人员应该具备什么样的基本素质说说你的看法。

      请就如何在开发中进行软件质量控制说说你的看法
       简述软件测试的意义,以及软件测试的分类

    1、功能测试,性能测试,界面测试,安全测试(可以简单点,比如只涉及到COOKIES里的内容),压力测试(商业性质的网站) 等等,B/S软件也要根据其具体功能采用不同的测试策略。
    2、态度、责任心、自信、敏锐的观察力、良好的发散思维
    3、先设计后开发模式,加强单元测试,加强代码走查,有一套完整的白盒测试方法。关键是加强开发人员的质量意识,增进程序员向工程师水平发展。
    4、意义嘛,就自己想吧。软件测试的分类,这个很多人都按各种方法去分。无明确答案给你。

    对测试的理解——基本的测试知识,对测试是否认可? 75。
        3、谈一谈过去自己的工作——了解经历、提供进一步提问的素材,表达能力   
    测试技能
    测试设计的方法并举例说明——测试技术的使用
    测试工具——熟悉程度,能否与当前工作匹配?
    如何做计划?如何跟踪计划?——日常工作能力
    如果开发人员提供的版本不满足测试的条件,如何做?——与开发人员协作的能力
    熟悉unix系统、oracle数据库吗?——是否具备系统知识
    做过开发吗?写过哪些代码?——开发技能
    阅读英语文章,给出理解说明?——部分英语能力
    文档的意义——是否善于思考?(最简单的概念,不同层次的理解)
    假如进入我们公司,对我们哪些方面会有帮助?——讲讲自己的特长
    随便找一件物品,让其测试——测试的实际操作能力
    软件测试的方法有?
    软件测试的过程?
    有一个新的软件,假如你是测试工程师,该如何做?

    软件测试分哪两种方法?分别适合什么情况?
    2。一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。
    3。软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。
    4。测试用例通常包括那些内容?着重阐述编制测试用例的具体做法
    5。在分别测试winform的C/S结构与测试WEB结构的软件是,应该采取什么样的方法分别测试?他们存在什么样的区别与联系?
    6。在测试winform的C/S结构软件时,发现这个软件的运行速度很慢,您会认为是什么原因?您会采取哪些方法去检查这个原因?
    7。描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程
    你在五年内的个人目标和职业目标分别是什么?
      分析这个问题是用来了解你的计划能力的,通过这个问题,面试人同时还可以知道你的目标是否符合企业对你的安排。
      错误回答我想在将来的某个时候考虑这个问题。如今企业的领导者更换频繁,我认为做太多的个人计划是荒谬可笑的,不是吗?
      评论这种回答属于令人反感的一类。首先,当有人想了解你的目标时,"将来的某个时候"这种通俗说法并不奏效。其次,认为企业很脆弱,领导者更换频繁,这种说法毫无疑问会令人反感,而且也是不合理的。最后,认为做计划可笑,看不起这个问题,而且反问面试人,这些都注定了这样的求职者最终会失败。
      正确回答从现在起的五年之内,我希望能够在一个很好的职位上待几年,而且最好有一次晋升,然后就期待着下一步。不管是向上提升,还是在企业内横向调动,对我个人来说,我希望找到一家企业——一家愿意做相互投入的企业——待上一段时间。
      评论这个问题没有回答得过分具体(那样可能会产生漏洞),而且它表明你有雄心,并且思考过在企业中的成长方式。通过表达横向调动和向上提升的愿望,表明你是一个有灵活性的人。
     问题23 你怎样做出自己的职业选择?
      分析 面试人提出这个问题是为了了解求职者的动机,看看他(她)应聘这份工作是否有什么历史渊源,是否有职业规划,是不是仅仅在漫无目的地申请很多工作。
      错误回答 我一直都想在企业界工作。自孩提时代起,我就梦想自己至少也要成为大企业的副总裁。
      评论 除了难以令人相信之外,这种回答还存在一个问题:它表明求职者会对副总裁以下的职位不感兴趣。
      正确回答 在上大学四年级前的那个夏天,我决定集中精力在某一领域谋求发展。尽管我是学商业的,但是我不知道自己最终会从事哪一行业的工作。我花了一定的时间考虑自己的目标,想清楚了自己擅长做的事情以及想从工作中得到的东西,最后我得出了一个坚定的结论,那就是这个行业是最适合我的。
      评论 这种回答表明,求职者认真地做过一些计划,缩小了自己的关注点,而且也认准了前进的方向。这种回答还表明,求职者理解个人职业规划的重要性,并且有能力做出认真的个人决策。
    1. 你都用什么测试方法
    2.怎么编写案例
    3.怎么才能够全面的测试到每一个点
    1. 你都用什么测试方法
    针对不同的产品或者系统或者模块,有不同的测试方法。总体而言有白盒测试和黑盒测试。
    2.怎么编写案例
    案例的编写与测试阶段的定义有很大的关系。系统测试和unit测试的案例可能不同。总体而言测试案例根据系统的需求而定。
    3.怎么才能够全面的测试到每一个点
    测试的全面性主要需要在设计测试计划的时候考虑,从测试策略,产品需求等等多个角度考虑从而定义全部的测试点。
    1、谈谈软件测试技术,以及如何提高
    2、谈谈软件测试职业发展,以及个人的打算
    3、谈谈软件测试在企业的地位,也可以结合软件生命周期来谈
    有可能清晰的思路比确切的答案更重要
    在这里,主要说下笔试和面试的问题,希望大家共同参考。
         1,一般公司里实际的软件测试流程是什么样的?你们公司又是怎样的?
         2,软件工程师要具有那些素质?
         3,你会哪些测试工具?怎么操作?
         4,你能不能说下你的3到5年的职业计划(规划)
         5,你觉得你来应聘有那些优势?
    其余的还好说,但就第4个问题,我感到不好说哦!希望大家给个意见
    第一关:首先要自我介绍,自己的性格怎么样,目前的工作经历积累了一些什么经验取得了些什么值得一说的成果。然后要说说对软件测试怎么看?还有对于软件测试有什么自己的想法。为什么会想到要做这行(因为我的简历上的工作经历没有关于测试方面的)。哦,还有期望薪资。
    第二关:认为软件测试人员所要具备的基本素质,如果遇到问题会怎样处理,如果得不到研发人员的配合(就是研发说这个不是问题)你又会怎么处理?然后就是一些基本概念,比如软件测试的流程有哪些?如果我上任了,首先会怎么开始自己的工作计划。
    (前两关通过了后面这个就好过多了)
    第三关:像我介绍了一下公司的情况,告诉我主要针对什么内容的测试,会不会使用数据库。告诉我大概要做哪些内容,详细的可以上岗以后慢慢熟悉。
    大概就这么多了,这对没有经过这一关的不知道有没有帮助,仅供参考吧
    我觉得就像李波说的,关键是要给对方留下好印象:)

    面试官最后会问你有什么问题要问吗。作为应聘者的你一般不要说没问题问,这会给面试官留下你不太重视这份工作的坏印象。所以如果你想得到这份工作的话应该抓住这最后的表现自己的机会:
    你可以问:
    1.         贵公司近期和远期的发展目标是什么?
    2.         贵公司的主要竞争对手有哪些?
    3.         贵公司有多少开发人员有多少测试人员?
    4.         贵公司又进一步扩充测试人员的计划吗?
    5.         如果我有幸能进入贵公司的话,我有怎么样的发展?
    6.         测试人员的沟通能力很重要,贵公司有规范的沟通渠道吗?
    7.         请介绍一下贵公司的福利情况。
    8.         请问我什么时候能知道结果?
  • LoadRunner监控Windows/Unix系统资源的配置

    2008-12-22 11:12:46

    LoadRunner监控Windows/Unix系统资源需要做两件事情:

      1、配置被监视的服务器,以便于LoadRunner能够获取系统资源使用情况的数据

      2、在LoadRunner的Controller中添加计数器

      添加计数器比较简单,这里主要讲如何配置Windows/Unix服务器。

      一、配置UNIX系统:

      1、 修改/etc/xinetd.d/下的三个conf文件 rlogin , rsh ,rexec 这三个配置文件,把这三个文件里的disable =yes都改成 disable = no ( disabled 用在默认的 {} 中 禁止服务),或是把# default: off都设置成 on 这个的意思就是在xinetd启动的时候默认都启动上面的三个服务。

      2、 执行: rpc.rstatd

      3、 检查是否启动rstatd,输入命令: rpcinfo –p。如果能看到:

      程序 版本 协议 端口

      *** **** udp 741 rstatd

      那就说明rstatd服务启动了

      4、 LR中添加计算器

      如果系统没有安装rstatd的话,上面的操作将会不成功,需要先安装rstatd,安装rstatd过程很简单:

      1、从安装光盘或网上找到安装文件(一般是rstatd***.tar.gz)

      2、解压缩安装包:

      tar xzvf rstatd***.tar.gz

      3、进入源文件目录运行配置文件和编译:

      $ ./configure

      $ make

      $ make install

      安装好之后,就按上面的步骤启动rstatd即可。

      (说明:以上的操作需要root用户权限)

      二、配置windows系统

      1、 保证被监视的windows系统开启以下二个服务:Remote Procedure Call(RPC) 和Remote Registry Service

      2、 获得对远程计算机的管理权限,请在命令提示符(运行cmd命令)下执行以下命令:

      net use \\<计算机名>/用户:[<域>\<远程计算机名>]

      提示输入密码时,输入远程计算机的密码。

      例如:

      net use \\192.168.18.67 administrator

      net use \\192.168.18.67 /user:administrator

      如果提示错误,则不加用户名:

      net use \\192.168.18.67

      需要用户名和密码的话,系统会提示输入用户名和密码,按提示做即可。

      如果看到“命令成功完成”的提示,则说明配置成功了。

  • LR监控Apache

    2008-12-22 11:12:46

    打开<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=IdleServersCounter0=IdleWorkers,同时修改注释信息Label0=#Idle Servers (Apache)Label0=#Idle Workers (Apache),描述信息也建议修改;

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

    然后保存并关闭该文件,重新打开Controller并添加计数器,这样监视就正常了。
  • 让你一眼区分瓶颈是Memory、processor OR disk

    2008-12-22 11:12:46

    各项硬件使用剖析(一)---让你一眼就能区分瓶颈是Memory、processor ORdisk!
    
    各项硬件使用剖析(一)
    各项硬件的资源,如CPU、内存、硬盘输入输出、网络带宽等等。在实际查看架构之前,先强调一个观念,不管是使用系统上哪一种资源,当使用率持续超过80%时,系统的性能一定会急速下滑,而不会显示线性关系,如下图所示:
    
        响应时间
    
    
    
    
                   
                   使用率        80%
               资源使用率与系统响应时间的关系
    注:从《操作系统》的知识来理解,如果在多用户环境中cup的使用率大于80%,进程就会在运行队列中花费大量的等待时间,响应时间和吞吐量就会下降。
    3.1,内存Memory
          通常系统中所发生的问题是由于内存不足所导致,这是较常见的。所以我们应该先监视内存,确认我们的服务器有足够的内存。若要执行 windows 2000 上的 iis 5.0(如MOD的web服务),一个专用web 服务器所需 ram 的最小容量是 128mb,但最好是 256mb 到 1gb。因为「iis 文件缓存」默认是使用最多一半可用的内存,因此备有的内存越多,「iis 文件缓存」就越多。 
    
      附注:windows 2000 advanced server 最多可支持 8gb 的 ram,但是「iis文件缓存」将不会利用 4gb 以上的 ram。
         所有在Windows系统执行的应用程序都以为自已最起码有2GB的连续内存(称之为虚拟内存),当应用程序的线程在存取内存时,操作系统会将其映射(mapping)到某块物理内存,若物理内存不足,操作系统就把物理内存中某些较少用到的区块写至硬盘,以空出该物理内存给当前需要的程序。
    Available MBytes 可用物理内存数  
         说明:Available MBytes 是计算机上运行进程可用的物理内存数量,以兆字节为单位。通过计算清零、空闲和待命内存列表的内存空间总数而得到。空闲内存可以马上使用; 清零内存是由零值填满的内存页,用来防止后续进程获得旧进程使用的数据; 待命内存是从进程工作集(其物理内存)中删除然后进入磁盘的内存,但是该内存仍然可以收回。该计数器仅显示最后一次观察到的值; 不是平均值。
         技 术 :一般要保留10%的可用内存。最低最低不能<4M,此值过小可能是内存不足或内存泄漏;
         原 因 :因为IIS默认最多会使用50%的可用内存供文件缓存使用,所以要保留10%的可用内存(以供尖峰时间使用)。
         知识点:物理内存、虚拟内存、IIS文件缓存、清0内存(程序常发生的错误)、待命内存。
    
           
    Page Faults/sec、Pages Input/sec、Page Reads/sec
        注(重要):导致严重的延迟原因:是因为硬件分页错误。
         说 明: Page Faults/sec 是指处理器处理错误页的综合速率。用错误页数/秒来计算。当处理器请求一个不在其工作集(在物理内存中的空间)内的代码或数据时出现的页错误。这个计数器包括硬错误(那些需要磁盘访问的)和软错误(在物理内存的其它地方找到的错误页)。许多处理器可以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。
          Pages Input/sec 指为解决页错误从磁盘上读取的页数。(当处理需要不在其工作集或物理内存的任何地方的代码或数据,而需要从磁盘上检索时出现硬页错误)。
                 Page Reads/sec 是指为解析硬页错误而读取磁盘的次数。(当处理请求的硬 页错误不在工作集和物理内存其它地方中的代码或数据,而必须从磁盘上检索时 就会出现硬页错误)。如果 Page Reads/Sec 比率持续保持为 5,表示可能内存不足(阈值为>5.越小越好)。
    
         可能引起页面错误的操作:应用程序向内存请求一个分页,但系统无法在所需的位置上找到它,就构成了一个页面错误。
         技 术:
             总述:可能涉及到1,由于页交换而导致内存不足;2,由于页交换而导致磁盘瓶颈;
                   当这些值很低时,服务器应该可以很快地响应请求;当这些值较高时,是因为你花了太多的内存在缓存处理上,而没有留足够的内存供系统的其它部份使用。可以增加内存或降低缓存的ram大小来解决;
             详细:
                  page Faults/sec:只表明数据不能在内存的指定工作集中立即使用;
                  page Input/sec: page input/sec > page reads/sec; 
                  page Reads/sec: 阈值为>5.越小越好,大数值表示磁盘读而不是缓存读;
    Page/sec:指为解析硬页错误从磁盘读取或写入磁盘的页数(是Pages Input/sec 和 Pages Output/sec 的总和)。其值推荐00-20如果服务器没有足够的内存处理其工作负荷,此数值将一直很高。如果大于80,表示有问题(太多的读写数据操作要访问磁盘,可考虑增加内存或优化读写数据的算法),如果值比较低,说明Web 服务器响应请求比较快,否则可能是服务器系统内存短缺引起( 也可能是缓存太大,导致系统内存太少)。
    
    3.2,Processor
    随着用户请求从网站获得快速的响应时间,以及在这些网站上不断增加的动态内容,需要利用到快速、有效的处理器用量。当一个或多个进程几乎耗尽所有处理器时,就会发生瓶颈,这会迫使准备好执行的进程线程必须在队列中等待处理器时间。
    (web方面) windows 2000 及 iis 5.0 的最大性能增益来自于解决内存问题。在决定改变web 服务器上处理器的个数之前,请先排除内存问题,再监视下列「性能计数器」。
    % Processor Time 指处理器执行非闲置线程时间的百分比;通俗一点讲就是CPU 使用率。这是监视处理器活动的主要指示器。它通过在每个范例间隔中衡量处理器用于执行闲置处理线程的时间,并且用100%减去该值得出。(每台处理器有一个闲置线程,该线程在没有其它线程可以运行时消耗周期)。可将其视为范例间隔用于做有用工作的百分比。
    正常值<90,此值过大表示处理器的性能已经不能应付程序的要求,要换更快的处理器。该数值持续超过 90%,则表示此测试的负载对于目前的硬件过于沉重。排除内存因素,如果该计数器的值比较大,而同时网卡和硬盘的值比较低,那么可以确定CPU 瓶颈。
    
    Processor Queue Length:是指处理列队中的线程数。显示在由 Web服务器所有处理器共享的队列中等待执行的线程数。如果处理器列队中总是有2个以上的线程通常表示处理器堵塞。
    参考值:小于2。处理器瓶颈会导致该值持续大于 2。
    
    
    3.3, Physical Disk:
        因为 MOD的WEB(iis 5.0) 会将记录文件写入磁盘上,所以在一般磁盘活动中,甚至会有高达 100 % 的客户端缓存存取次数。一般来说,如果有记录以外的大量磁盘读取活动,即表示系统上有其它区域需要调整。例如,硬件分页错误会导致大量的磁盘活动,但它们表示 ram 不足。 
    
    %Disk Time %:  指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间的百分比。如果三个计数器都比较大,那么硬盘不是瓶颈。如果只有%Disk Time比较大,另外两个都比较适中,硬盘可能会是瓶颈。在记录该计数器之前,请在Windows 2000 的命令行窗口中运行diskperf -yD。正常值<10,此值过大表示耗费太多时间来访问磁盘,可考虑增加内存、更换更快的硬盘、优化读写数据的算法。若数值持续超过80 (此时处理器及网络连接并没有饱和),则可能是内存泄漏。
    
    Pages per second :  每秒钟检索的页数。该数字应少于每秒一页。
    
    
    如果这三个计数器(processor: % processor time, network interface connection: bytes total/sec及physicaldisk: % disk time)的值都很高,则硬盘不会引起站点的瓶颈。
    
    补充:
      Avg. Disk Queue Length 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。正常值<0.5,此值过大表示磁盘IO太慢,要更换更快的硬盘。
      Disk Transfers/sec 指在此盘上读取/写入操作速率。正常值<(Disk Bytes/sec)/3,此值过大表示系统要求的IO速度已接近硬盘的最大速度,要更换更快的硬盘。
        磁盘使用情况计数器和内存计数器(磁盘瓶颈or内存不足?):
    Physical Disk\ % Disk Time 、Physical Disk\ Avg.Disk Queue Length 例如,包括 Page Reads/sec 和 % Disk Time 及 Avg.Disk Queue Length。如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。
    
       3.4, 网络容量、等待时间及带宽  
      测试目标:在系统试运行之后,需要及时准确地了解网络上正在发生什么事;什么应用在运行,如何运行;多少PC正在访问LAN或WAN;哪些应用程序导致系统瓶颈或资源竞争
    作用
    1,分析关键应用程序的性能
    2,定位问题的根源是在客户端、服务器、应用程序还是网络
    3,哪些应用程序占用大量带宽
      基本上,网络是客户端向服务器传送请求的线路。它花在您的服务器上来回传递这些请求及响应的时间,对用户能察觉的服务器性能来说是个最大限制因素之一。这种请求-响应的循环时间就称为等待时间,等待时间对于web 服务器管理员来说几乎是无法控制的。例如,您对 internet 上速度缓慢的路由器,或是客户端及服务器之间的物理距离所能作的处理实在不多。
       在主要是由静态内容组成的站点上,网络带宽最有可能是性能瓶颈的来源。即使是一般的服务器也可能用满一条 t3 连接 (45mbps) 或 100mbps fast ethernet 连接。测量有效带宽最简单的方法是判定您的服务器是以哪个速度传送及接收资料的。
    Network Interface Bytes Total/sec: 为发送和接收字节的速率,包括帧字符在内。判定网络连接是否存在瓶颈。若要在传送量中留些空间供尖峰时间用,则不应常使用超过 50% 的容量。如果这个数字十分接近连接的容量,而处理器及内存的使用都很适中,则此连接也会是个问题。参考值:该计数器的值和目前网络的带宽相除,结果应该小于50%。
    如果您正在计算机上执行的其他服务也使用网络连接,请监视「web service: maximum connections」及「web service: total connection attempts」计数器,以检查您的web服务器是否能够尽可能地使用它需要的连接数目。请记得将这些数字与内存及处理器使用量作比较,如此才能确定连接就是问题,而不是其它组件有问题。
    Connection Attempts/sec:Web服务尝试连接的频率。
    Maximun Connections:“最大连接数”是和Web服务同时建立起来的最大连接数。 
    
  • 软件测试中有关界面测试经验总结

    2008-12-22 11:12:46

    1.应验证界面显示内容的完整性:

      a) 报表显示时应考虑数据显示宽度的自适应或自动换行。

      b) 所有有数据展现的界面(如统计、查询、编辑录入、打印预览、打印等),必须使测试数据的记录数超过一屏/一页,以验证满屏/页时其窗体是否有横向、纵向滚动条或换页打印,界面显示是否正常;

      2.应验证界面显示内容的一致性:

      a) 如有多个系统展现同一数据源时,应保证其一致性;

      3.应验证界面显示内容的准确性:

      a) 对于报表中的所有字段值都应该有明确的定义,对于无意义的字段值,不应该显示空,应显示“--”或“/”,表示该字段值无意义。

      4.应验证界面显示内容的友好性:

      a) 对统计的数据应按用户习惯进行分类、排序。

      b) 某些重要信息在输入、修改、删除时应有“确认”提示信息;

      c) 界面内容更新后系统应提供刷新功能。

      d) 用户在退出系统后重新登陆时应考虑是否需要自动返回到上次退出系统时的界面;

      5.应验证界面提示信息的指导性:

      a) 在多个业务功能组成的一个业务流程中,如果各个功能之间的执行顺序有一定的制约条件,应通过界面提示用户。

      b) 用户提示信息应具有一定的指导性,在应用程序正在进行关键业务的处理时,应考虑在前台界面提示用户应用程序正在进行的处理,以及相应的处理过程,在处理结束后再提示用户处理完毕。

      c) 在某些数据输入界面,如果要求输入的数据符合某项规则,应在输入界面提供相应的规则描述;当输入数据不符合规则时应提示用户是否继续。

      d) 在对任何配置信息修改后,都应该在用户退出该界面时提示用户保存(如果用户没有主动保存的情况下);

      6.应验证界面显示内容的合理性:

      a) 在对某些查询功能进行测试时,应考虑查询条件的设置的合理性以及查询结果的互补性。如某些后台处理时间不应该作为查询条件。

      b) 界面测试时,应考虑某一界面上按钮先后使用的顺序问题,以免用户对此产生迷惑。例如只能在查询成功后显示执行按钮。

      c) 界面测试时,应验证窗口与窗口之间、字段与字段之间的浏览顺序是否正确;

      7.界面测试时,应考虑用户使用的方便性:

      a) 在某些对数据进行处理的操作界面,应考虑用户可能对数据进行处理的频繁程度和工作量,考虑是否可以进行批量操作。

    8.界面测试时,应考虑界面显示及处理的正确性:

      a) 界面测试时应验证所有窗体中的对象状态是否正常,是否符合相关的业务规则需要。

      b) 应验证各种对象访问方法(Tab 健、鼠标移动和快捷键)是否可正常使用,并且在一个激活界面中快捷键无重复;

      c) 界面测试不光要考虑合理的键盘输入,还应考虑是否可以通过鼠标拷贝粘贴输入。

      d) 对于统计查询功能的查询结果应验证其是否只能通过界面上的查询或刷新按键人工触发,应避免其他形式的触发。

      e) 对界面上的任何对象进行拖拉,然后进行查询、打印,应保证查询打印结果不变;

      9.界面测试时,应考虑数据显示的规范性:

      a) 确保数据精度显示的统一:如单价0元,应显示为0.00元;

      b) 确保时间及日期显示格式的统一;

      c) 确保相同含义属性/字段名的统一;

      d) 对所有可能产生的提示信息界面内容和位置进行验证,确保所有的提示信息界面应居中。

  • HTML颜色参考

    2008-05-15 15:36:56

    在HTML里,颜色有两种表示方式。一种是用颜色名称表示,比如blue表示蓝色。另外一种是用16进制的数值表示RGB的颜色值。RGB是Red,Green,Blue意思,RGB每个原色的最小值是0,最大值是255,如果换算成16进制表示,就是(#00),(#FF)。比如白色的RGB(255,255,255),就用#FFFFFF表示;还有黑色的RGB(0,0,0),就用#000000表示。

    注:在W3C制定的HTML 4.0标准中,只有16种颜色可以用颜色名称表示(aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow),其它的颜色都要用16进制RGB颜色值表示。

    当然,现在的浏览器支持更多的颜色名称。不过为保险起见,建议你还是采用16进制RGB颜色值来表示颜色。并且在值前加上#这个符号。

    为了方便大家找到合适的颜色,我们在这里列了一些颜色说明,以供大家参考,不妨作为一种速查工具。

    Web安全颜色

    以前,很多电脑显示器最多支持256色,因此出现了216种Web安全颜色,以保证网页的颜色能够正确显示。

    那为什么不是256种Web安全颜色呢?因为Microsoft和Mac操作系统有40种不同的系统保留颜色。

    以下就是216种Web安全颜色:

    #000000 #000033 #000066 #000099 #0000CC #0000FF
    #003300 #003333 #003366 #003399 #0033CC #0033FF
    #006600 #006633 #006666 #006699 #0066CC #0066FF
    #009900 #009933 #009966 #009999 #0099CC #0099FF
    #00CC00 #00CC33 #00CC66 #00CC99 #00CCCC #00CCFF
    #00FF00 #00FF33 #00FF66 #00FF99 #00FFCC #00FFFF
    #330000 #330033 #330066 #330099 #3300CC #3300FF
    #333300 #333333 #333366 #333399 #3333CC #3333FF
    #336600 #336633 #336666 #336699 #3366CC #3366FF
    #339900 #339933 #339966 #339999 #3399CC #3399FF
    #33CC00 #33CC33 #33CC66 #33CC99 #33CCCC #33CCFF
    #33FF00 #33FF33 #33FF66 #33FF99 #33FFCC #33FFFF
    #660000 #660033 #660066 #660099 #6600CC #6600FF
    #663300 #663333 #663366 #663399 #6633CC #6633FF
    #666600 #666633 #666666 #666699 #6666CC #6666FF
    #669900 #669933 #669966 #669999 #6699CC #6699FF
    #66CC00 #66CC33 #66CC66 #66CC99 #66CCCC #66CCFF
    #66FF00 #66FF33 #66FF66 #66FF99 #66FFCC #66FFFF
    #990000 #990033 #990066 #990099 #9900CC #9900FF
    #993300 #993333 #993366 #993399 #9933CC #9933FF
    #996600 #996633 #996666 #996699 #9966CC #9966FF
    #999900 #999933 #999966 #999999 #9999CC #9999FF
    #99CC00 #99CC33 #99CC66 #99CC99 #99CCCC #99CCFF
    #99FF00 #99FF33 #99FF66 #99FF99 #99FFCC #99FFFF
    #CC0000 #CC0033 #CC0066 #CC0099 #CC00CC #CC00FF
    #CC3300 #CC3333 #CC3366 #CC3399 #CC33CC #CC33FF
    #CC6600 #CC6633 #CC6666 #CC6699 #CC66CC #CC66FF
    #CC9900 #CC9933 #CC9966 #CC9999 #CC99CC #CC99FF
    #CCCC00 #CCCC33 #CCCC66 #CCCC99 #CCCCCC #CCCCFF
    #CCFF00 #CCFF33 #CCFF66 #CCFF99 #CCFFCC #CCFFFF
    #FF0000 #FF0033 #FF0066 #FF0099 #FF00CC #FF00FF
    #FF3300 #FF3333 #FF3366 #FF3399 #FF33CC #FF33FF
    #FF6600 #FF6633 #FF6666 #FF6699 #FF66CC #FF66FF
    #FF9900 #FF9933 #FF9966 #FF9999 #FF99CC #FF99FF
    #FFCC00 #FFCC33 #FFCC66 #FFCC99 #FFCCCC #FFCCFF
    #FFFF00 #FFFF33 #FFFF66 #FFFF99 #FFFFCC #FFFFFF

    微软支持的颜色名称

    下面是微软IE4.0以上都支持的颜色名称:

    aliceblue
    (#F0F8FF)
    antiquewhite
    (#FAEBD7)
    aqua
    (#00FFFF)
    aquamarine
    (#7FFFD4)
    azure
    (#F0FFFF)
    beige
    (#F5F5DC)
    bisque
    (#FFE4C4)
    black
    (#000000)
    blanchedalmond
    (#FFEBCD)
    blue
    (#0000FF)
    blueviolet
    (#8A2BE2)
    brown
    (#A52A2A)
    burlywood
    (#DEB887)
    cadetblue
    (#5F9EA0)
    chartreuse
    (#7FFF00)
    chocolate
    (#D2691E)
    coral
    (#FF7F50)
    cornflowerblue
    (#6495ED)
    cornsilk
    (#FFF8DC)
    crimson
    (#DC143C)
    cyan
    (#00FFFF)
    darkblue
    (#00008B)
    darkcyan
    (#008B8B)
    darkgoldenrod
    (#B8860B)
    darkgray
    (#A9A9A9)
    darkgreen
    (#006400)
    darkkhaki
    (#BDB76B)
    darkmagenta
    (#8B008B)
    darkolivegreen
    (#556B2F)
    darkorange
    (#FF8C00)
    darkorchid
    (#9932CC)
    darkred
    (#8B0000)
    darksalmon
    (#E9967A)
    darkseagreen
    (#8FBC8B)
    darkslateblue
    (#483D8B)
    darkslategray
    (#2F4F4F)
    darkturquoise
    (#00CED1)
    darkviolet
    (#9400D3)
    deeppink
    (#FF1493)
    deepskyblue
    (#00BFFF)
    dimgray
    (#696969)
    dodgerblue
    (#1E90FF)
    firebrick
    (#B22222)
    floralwhite
    (#FFFAF0)
    forestgreen
    (#228B22)
    fuchsia
    (#FF00FF)
    gainsboro
    (#DCDCDC)
    ghostwhite
    (#F8F8FF)
    gold
    (#FFD700)
    goldenrod
    (#DAA520)
    gray
    (#808080)
    green
    (#008000)
    greenyellow
    (#ADFF2F)
    honeydew
    (#F0FFF0)
    hotpink
    (#FF69B4)
    indianred
    (#CD5C5C)
    indigo
    (#4B0082)
    ivory
    (#FFFFF0)
    khaki
    (#F0E68C)
    lavender
    (#E6E6FA)
    lavenderblush
    (#FFF0F5)
    lawngreen
    (#7CFC00)
    lemonchiffon
    (#FFFACD)
    lightblue
    (#ADD8E6)
    lightcoral
    (#F08080)
    lightcyan
    (#E0FFFF)
    lightgoldenrodyellow
    (#FAFAD2)
    lightgreen
    (#90EE90)
    lightgrey
    (#D3D3D3)
    lightpink
    (#FFB6C1)
    lightsalmon
    (#FFA07A)
    lightseagreen
    (#20B2AA)
    lightskyblue
    (#87CEFA)
    lightslategray
    (#778899)
    lightsteelblue
    (#B0C4DE)
    lightyellow
    (#FFFFE0)
    lime
    (#00FF00)
    limegreen
    (#32CD32)
    linen
    (#FAF0E6)
    magenta
    (#FF00FF)
    maroon
    (#800000)
    mediumaquamarine
    (#66CDAA)
    mediumblue
    (#0000CD)
    mediumorchid
    (#BA55D3)
    mediumpurple
    (#9370DB)
    mediumseagreen
    (#3CB371)
    mediumslateblue
    (#7B68EE)
    mediumspringgreen
    (#00FA9A)
    mediumturquoise
    (#48D1CC)
    mediumvioletred
    (#C71585)
    midnightblue
    (#191970)
    mintcream
    (#F5FFFA)
    mistyrose
    (#FFE4E1)
    moccasin
    (#FFE4B5)
    navajowhite
    (#FFDEAD)
    navy
    (#000080)
    oldlace
    (#FDF5E6)
    olive
    (#808000)
    olivedrab
    (#6B8E23)
    orange
    (#FFA500)
    orangered
    (#FF4500)
    orchid
    (#DA70D6)
    palegoldenrod
    (#EEE8AA)
    palegreen
    (#98FB98)
    paleturquoise
    (#AFEEEE)
    palevioletred
    (#DB7093)
    papayawhip
    (#FFEFD5)
    peachpuff
    (#FFDAB9)
    peru
    (#CD853F)
    pink
    (#FFC0CB)
    plum
    (#DDA0DD)
    powderblue
    (#B0E0E6)
    purple
    (#800080)
    red
    (#FF0000)
    rosybrown
    (#BC8F8F)
    royalblue
    (#4169E1)
    saddlebrown
    (#8B4513)
    salmon
    (#FA8072)
    sandybrown
    (#F4A460)
    seagreen
    (#2E8B57)
    seashell
    (#FFF5EE)
    sienna
    (#A0522D)
    silver
    (#C0C0C0)
    skyblue
    (#87CEEB)
    slateblue
    (#6A5ACD)
    slategray
    (#708090)
    snow
    (#FFFAFA)
    springgreen
    (#00FF7F)
    steelblue
    (#4682B4)
    tan
    (#D2B48C)
    teal
    (#008080)
    thistle
    (#D8BFD8)
    tomato
    (#FF6347)
    turquoise
    (#40E0D0)
    violet
    (#EE82EE)
    wheat
    (#F5DEB3)
    white
    (#FFFFFF)
    whitesmoke
    (#F5F5F5)
    yellow
    (#FFFF00)
    yellowgreen
    (#9ACD32)
  • HTML元素参考手册

    2008-05-15 15:35:48

    HTML元素参考手册 HTML Elements Reference

    a

    表示超链接的起始或目的位置。

    acronym

    表示取首字母的缩写词。

    address

    表示特定信息,如地址、签名、作者、文档信息。

    applet

    在页面上放置可执行内容。

    area

    定义一个客户端图像映射中一个超级链接区域的形状、坐标和关联 URL。

    b

    指定文本应以粗体显示。

    base

    指定一个显式 URL 用于解析对于外部源的链接和引用,如图像和样式表。

    basefont

    设置显示文本时作为默认字体的基础字体值。

    bdo

    允许作者为选定文本片断禁用双向法则。

    bgsound

    使页面能够带有背景声音或配音。

    big

    指定所含文本要以比当前字体稍大的字体显示。

    blockquote

    表示文本中的一段引用语。

    body

    指明文档主体的开始和结束。

    br

    插入一个换行符。

    button

    指定一个容器,其中所含的 HTML 会被显示为一个按钮。

    caption

    表格的标题,对表格的简单描述。

    center

    将指定文本和图像居中显示。

    cite

    用斜体显示标明引文。

    code

    表示代码范例。

    col

    说明基于列的表格缺省属性。

    colgroup

    说明表格中一列或一组列的缺省属性。

    comment

    表示不可见的注释。防止所包含的文本或者HTML源代码被浏览器解析和显示。

    dd

    在定义列表中表示定义。定义通常在定义列表中缩进显示。

    del

    表示文本已经从文档中删除。

    dfn

    表示术语的定义。

    dir

    表示目录列表。

    div

    表示一块可显示 HTML 的区域

    dl

    表示定义列表。

    dt

    在定义列表中表示定义术语。

    em

    强调文本,通常以斜体显示。

    embed

    允许嵌入任何类型的文档。

    fieldset

    在字段集包含的文本和其它元素外面画一个方框。

    font

    用于说明所包含文本的新字体、大小和颜色。

    form

    说明所包含的控件是某个表单的组成部分。

    frame

    在 FRAMESET 元素内表示单个框架。

    frameset

    表示一个框架集,用于组织多个框架和嵌套框架集。

    head

    提供了关于文档的无序信息集合。

    hn

    以标题样式显示文本。

    hr

    画一条横线。

    html

    表明文档包含 HTML 元素。

    i

    指定文本应以斜体显示。

    iframe

    创建内嵌漂浮框架。

    img

    在文档中嵌入图像或视频片断。

    input

    创建各种表单输入控件。

    input type=button

    创建按钮控件。

    input type=checkbox

    创建复选框控件。

    input type=file

    创建文件上载控件,该控件带有一个文本框和一个浏览按钮。

    input type=hidden

    传输关于客户/服务器交互的状态信息。

    input type=image

    创建一个图像控件,该控件被点击后将导致表单立即被提交。

    input type=password

    创建与 INPUT type=text 控件类似的单行文本输入控件,不过并不显示用户输入的内容。

    input type=radio

    创建单选钮控件。

    input type=reset

    创建一个按钮,点击该按钮后,将重置表单控件回其初始值。

    input type=submit

    创建一个按钮,点击该按钮后,即提交表单。

    input type=text

    创建一个单行的文本输入控件。

    ins

    表示插入到文档中的文本。

    isindex

    使浏览器显示一个对话框,提示用户输入单行文本。

    kbd

    以定宽字体显示文本。

    label

    为页面上的其它元素指定标签。

    legend

    在 fieldSet 对象绘制的方框内插入一个标题。

    li

    表示列表中的一个项目。

    link

    允许当前文档和外部文档建立连接。

    listing

    以固定宽度的字体显示文本。

    map

    包含客户端图像映射的坐标数据。

    marqueee

    创建一个滚动的文本字幕。

    menu

    创建一个无序列表。

    meta

    向服务器和客户端传达关于文档的隐藏信息。

    nobr

    不换行显示文本。

    noframes

    包含对于那些不支持 FRAMESET 元素的浏览器使用的 HTML。

    noscrīpt

    指定在不支持脚本的浏览器中显示的 HTML。

    object

    在 HTML 页面中插入对象。

    ol

    编制排序列表。

    optgroup

    允许作者对 select 元素中的选项进行逻辑分组。

    option

    表示 SELECT 元素中的一个选项。

    p

    表示一段。

    param

    设置 APPLET、EMBED 或 OBJECT 元素的属性初始值。

    pre

    以固定宽度字体显示文本。

    q

    分离文本中的引语。

    s

    带删除线方式显示文本。

    samp

    表示代码范例。

    scrīpt

    指定由脚本引擎解释的页面中的脚本。

    select

    表示一个列表框或者一个下拉框。

    small

    指定内含文本要以比当前字体稍小的字体显示。

    span

    指定内嵌文本容器。

    strike

    带删除线显示文本。

    strong

    以粗体显示文本。

    style

    指定页面的样式表。

    sub

    说明内含文本要以下标的形式显示,比当前字体稍小。

    sup

    说明内含文本要以上标的形式显示,比当前字体稍小。

    table

    说明所含内容组织成含有行和列的表格形式。

    tbody

    指明哪些行作为表格的主体。

    td

    指定表格中的单元格。

    textarea

    多行文本输入控件。

    tfoot

    指明哪些行作为表尾。

    th

    指定标题列。标题列将在单元格中居中并以粗体显示。

    thead

    指定哪些行作为表头。

    title

    文档的标题。

    tr

    指定表格中的一行。

    tt

    以固定宽度字体显示文本。

    u

    带下划线显示文本。

    ul

    表示不排序的项目列表。

    var

    定义程序变量,通常以斜体显示。

    wbr

    向一块 NOBR 文本中插入软换行。
  • 测试工具下载地址

    2008-04-02 15:19:02

  • [转载] 一个测试部负责人给总经理的一封信

    2008-03-05 17:43:23

    本来很想面对面地与您聊一下测试部成立以来遇到的一些问题、现状、还有未来的发展,我怕一谈到我们的测试部,我可能就会有情绪。因为我对测试部投入了一腔热血,也付出了我全部的精力,但目前的测试部将要走的走,离的离,如果全部走了,留下来服役最长的也超过不了一年,我面对现状,倍感凄楚!不仅仅是一个***的离职让我有此感慨,是这种现象逼得我不得不去反思。测试部为什么留不住人?我为测试部做了些什么?测试部要不要留住人?为什么要?如果需要留住人,我们该如何去做?与其他公司比我们的测试哪些做得好,而哪些又有不足,是什么原因导致的?今后的测试部该走向何方?

    A
    :测试部为什么留不住人?
         1
    对测试了解的人较少。目前国内相关人士有95%以上的人对测试这个行业还处理不了解的状态(包括当初我自已),这种不了解表现在测试人员技术素质低、测试比开发要低一个档次、测试只是东点点、西碰碰的活……”,但现实又何尝不是如此?!我不得不承认目前国内的情况与此相差无几。网上的BBS还有一些热血青年在高喊我们要翻身做主人,我们要与开发平起平座!的论调,我看过心想:要实现这种想法,还必须要有漫长的路要走。首先是观念的改变,公司全体都要有充分的认识。从人员的任用标准,开发、测试的投入比例开始考虑;再者就是测试从业人员自身专业素养,必须要掌握世界先进的测试管理工具及自动化测试工具。只有这样,才能与之平起平座。

           2
    测试部工作负荷较重。现在我们公司存在***123***Pro***Net等版本,还区分简繁体、中英文,***Pro一直以来都在不断地加新功能,不断地反复测试,加上还要写手册,支援一些培训任务、制作演示数据。

          3
    薪资待遇问题。目前的薪资制度很难找到或留住优秀人才,一般从没经验到测试部,一年学成后不管调到那一个部门,或者另找工作,待遇可能都比呆在测试部要好,这种情况大多数人都愿意离开。

          4
    学习机会。当初进来对BKD可能有新鲜感,但一年后,对大部分功能都会比较熟悉,对个人而言就没有更多的激情。

          5
    大环境因素。远在北仑,想学点东西还真有点困难。

    B
    :测试部要不要留住人?为什么要?
          1
    我们的软件发布之后存在一些无法预知的BUG,不能说全是测试部的责任,但有的责任却不可以推辞。有时看到客户反映的一些问题,很想冲着测试负责人指责一顿,但静下来想,他才来几个月这种深层次的问题叫他如何能找出来。心想,如果是老员工去负责可能就不会存在此问题了。

          2
    老员工的存在能够凭着自已的经验去带领新人成长,并能抽出身来研究新的测试方法及技术,对测试部的实力的提高有帮助,实际上就是产品质量保证的重要条件。

           3
    一个部门都是新秀,无法建立起组织层次,让谁去做小组负责人,其他人都不会服。

    C
    :如果需要留住人,我们该如何去做?
          1
    我自已要加强新知识的吸纳、传授,人员的管理;
          2
    减少工作负荷。
          3
    力所能及的提供一些培训机会。
          4
    在薪资制度,或者人员异动制度有所改善。

    D
    :我为测试部做了些什么?
          1
    说句心里话做测试也是我当初无奈地一种选择(当初的无奈也是我对测试不了解的一中表现),但我负责了测试之后,在各个方面存在很多不足,但一心一意、尽心尽力地想把他做好。不断地从网上、书本学习软件测试方法,与网友交流,也了解了许多自动化测试工具。现在测试部所有的成员都能够对测试有个很清楚的认识。
          2
    培训了多名实施顾问及服务人员。
          3
    2000年是我起步的一年,2001年是我技术成长的一年,2002年是我管理进步的一年。

    E
    :与其他公司比我们的测试哪些做得好,而哪些又有不足,是什么原因导致的?
          1
    黑盒测试做得较好,对商业逻辑的理解能力强。
          2
    人员的凝聚力强,都敢于担当重任。
          3
    对白盒测试未曾涉及。
          4
    对自动化测试只停留在探索阶段。
          5
    测试用例做得不太好。
          6
    没有全面掌握、使用各种测试方法。
          7
    对微软提供功能,而我们软件又会使用到该功能的知识了解的少。

    F
    :今后的测试部该走向何方?
          1
    测试部为纯技术部门,所有的商业逻辑等知识只要能看懂文档即可,商业逻辑是否正确应该在需求阶段就应该定义下来,而不是靠测试部来发现,因为改需求的成本极高。
          2
    从黑盒向黑盒加白盒,再转向白盒方向,这就要求所有的测试人员必须掌据源代码读写的能力。
          3
    一部分人必须掌握自动化测试的技术,以便提高工作效率。


          可能占用了您的很多时间,但事关到测试部的未来,我不想看一个架构完善的开发部旁边是一个弱不禁风的测试部,这样的开发处的效能也会大打折扣,我们产品的质量也会受影响,我不认为产品质量是测试部测出来的,但测试也是保证质量的手段之一。

  • [转载]建立高效的测试团队

    2008-03-05 17:42:33

    作者 : 段念

              曾经和一位担任测试经理不久的朋友和我谈到过他们部门建设的问题。刚开了个头,这位经理就急不可耐地倒起了苦水: 部门的工作真是不好开展,员工没有劲头 ……”“ 某某员工简直是不可救药,总是把事情办砸 ……” 某某员工真是让人着急,来公司三年了,对业务也熟悉,你想要提拔她吧,她就是不上进,让她去做一点以前没做过的事情她都会惊慌失措 老员工都死气沉沉,新员工都没有上进心 ……” 某某最近要辞职了,我也不明白怎么回事,我还一直以为他工作得很愉快呢 ……” 。足足在发了半个多小时的牢骚以后,他仍然沉浸在自己的痛苦中。

            说实在的,我真的很同情他,也很同情他现在的处境。作为一个新上任的测试经理,自然会有一股子劲头,恨不能一夜之间就让部门面貌焕然一新,恨不能让所有的员工一夜之间突飞猛进 …… ,可惜,罗马不是一天建成的,部门管理的问题也绝对不会解决得那么轻易。

            管理是一种艺术,对测试团队的管理更是一种需要小心的艺术。测试工程师一般都敏感且自尊,他们有发现缺陷的能力,自然也能轻易发现你在管理工作中的疏忽;他们能够评价应用系统,评价你的管理工作对他们来说也不是难事。

            那么,真的就那么难建立一个高效的测试团队吗?实际上,管理工作的核心是 ,作为测试部门的负责人,只要抓住了这点,就能很顺利地把整个团队调动起来。我在不同的公司经历过不同的测试团队,在我的感觉中,测试工程师其实都是很好相处的人。测试工程师不是纯粹的技术人员,他们一般来说都敏锐、有耐心、有责任心、能承受工作压力,也具有比较好的沟通能力。但是, 测试工程师 这个对他们的统称掩盖了太多他们之间的不同。

            回到我们在文章最初的例子,当我问那位新测试经理 你觉得你理想中的测试工程师是什么样子的呢? 这个问题的时候,他的回答是 我希望他们都能有上进心、积极进取、有高的技术水平,同时能够承担工作压力。 我想,他的回答可能是用对自己的要求来要求部门所有的测试工程师了。一个全是将军的团队绝对不会比一个分工明确、高效协作的团队更加有战斗力。

            那么,究竟如何来建立一个高效的测试团队呢?这个问题,一定是 仁者见仁,智者见智 的问题。不过在这里,我不揣冒昧,说一些自己的看法。

    1    测试团队中的

            首先,高效的测试团队需要不同角色的 。根据我的经历,一般来说,测试团队中经常都有些这样类型的员工:

    1.1    不同类型的员工

    l         老虎

            测试部门的老虎是那些有活力、有冲劲的人。他们聪明、能干、敏锐、不惧怕压力。每个我见过的测试经理都期望能找到这样的人才,可惜,这样的人才并不多见,而且,这样的人才大多都是依靠测试组织自己培养出来的,一只 外来的 虎不一定能在新的组织中也发挥虎的威力。

            不过,即使在部门中有了老虎的存在,还必须为老虎创造出适合他的空间。很多测试经理都会为部门中能人的离去而烦恼,但在烦恼的同时,你有没有想过为什么他要离去?纯粹为了薪酬待遇? —— 实际上,老虎是很有上进心的,一旦他发觉自己只能在一个固定的环境中做固定的事情,他就会选择离开。要想留住这种类型的人才,必须为他创造一个时刻充满挑战的环境 —— 让他开拓一片天地,让其他角色来 守城 ,最可能是最合适的搭配。

    l      

            牛是最勤勤恳恳的,踏实、勤劳、敬业是牛最好的写照。这样的员工能完成你交给他的明确的任务,把明确的任务交给他是最让人放心的。但美中不足,这样的员工往往缺少主动的创造性,明明他对业务很熟悉,明明他经验很丰富,但一旦要他跳出自己习惯的工作氛围和角色,创造性地完成一些工作,他们就束手无策了。这种类型的员工让人又爱又恨,爱的是他勤勤恳恳的态度,恨的是他不肯进取的心态。

    l        猴子

            猴子是聪明的代名词,这种类型的员工聪明、大胆、活跃。在部门里,这类员工总是在鼓捣各种新工具、新技术、新名词。他们是工具引入的主要建议者和新技术采用的主要倡导者。这类员工对新事物有执着的热情,愿意去了解每一种他们所能接触到的新东西。对于解谜,这类员工有着天生的爱好,他们最大的兴趣就是从谜团一样的系统中找到能证明自己聪明的证据。然而,这类员工的缺点几乎和优点一样明显 —— 缺乏持之以恒的耐心,一旦他们不得不长期进行一些重复性强的工作(例如,手工的回归测试),他们就会表现出不耐烦和由此因为疏忽产生错误。

    l        长颈鹿

            长颈鹿在这里并不是 迟钝 的同义词。长颈鹿通常是一个部门中最有前瞻能力的人。他们具有对软件测试深入的理解和认识,能够对测试部门的发展提出非常好的建议(而不仅仅是意见),唯一的问题是,对细节上他们总是缺乏关注,能够给出漂亮的流程图或是建议书,但如果由他来执行,则一定是一场灾难。

    l       狐狸

            测试部门中也会存在一些狡猾的人,我们可以把他们称为 狐狸 。狐狸这种类型的员工总是整个部门看上去最为忙碌的一个 —— 他们为自己揽下一个又一个的工作,却用一个工作去掩饰在另一个工作上投入的无效劳动。每当你问起这类员工 “A 事情进行得如何? ,他们总能用 我正在忙着 B 事情(或是 C 事情) 这样的回答搪塞你。最终的结果是,经过几个月时间的忙碌,他们可能拿不出任何有效的工作成果。

    l        鼹鼠

            当然,这种类型的员工可能是我们都不希望见到的。他们永远都想没有睡醒一样,更多时候看到的是他们茫然的眼神。交给他的任何工作都可能没有理由地失败,而且,更可怕的是,他们很少能够从失败中学习到教训。

            对这些不同类型员工来说,重要的不是改变他们的性格类型,而是要了解他们的性格类型,再根据他们的性格类型为他们分配不同的工作,让他们能够在一个能顺利施展自我和自我前进的环境中工作。

    1.2     不同类型员工的对策

    l         老虎 —— 给他挑战,把部门最重要的、最困难的工作交给他,你只需要充分发挥他的主动性,定期让他汇报工作的进展就可以。让老虎觉得最安全的方法是让他能够充分证明自己的能力。当然,要注意的是,如果一个团队中有几只老虎,合理分配他们的工作(负责不同的方面)可能是一个好主意。

    l         —— 让他做自己最擅长的事情。牛会很高兴自己在某个方面可以一直发展,直到成为这方面业务或是实施方面的专家。让他接手老虎开拓的工作范围,做一个好的执行者对组织是最有利的。当然,牛有时候也会提出想要一些 挑战 ,这时候最好先为他准备好退路。

    l         猴子 —— 部门新技术研究的不二人选。无路是在测试自动化、测试工具引入、新的测试方法和测试技术引入方面,都可以仰仗猴子。不过,最大的风险来自于他们的不确定性和其天生地乐观心态,因此,如果让他们主导某个项目(例如,测试工具引入项目),要他们更加频繁地汇报工作进展和为他们规划细节。

    l         长颈鹿 —— 参谋。在规划部门发展的时候,可以多听听他们的意见,但最好不要让他们去完全承担部门测试过程改进的任务,在执行方面,他们可能并不会照顾到太多的细节。

    l         狐狸 —— 拿掉他用来隐藏自己的 多任务 。明确交给他一个任务,例如 完成某项目的测试 ,时刻关注他们在任务进行过程中的报告,一旦发现他们主动承担不属于自己的任务,就要立刻分析,看他们是否又犯了老毛病。

    l         鼹鼠 —— 怎么说呢?给他一个机会吧。可能是他并不真正热爱这个工作,也或者是他有些心理上的疙瘩没有解开,不管怎么说,找出他这样糟糕表现的原因,如果真的没有办法改变他的工作,很可能只能选择让他离开现在的团队了。

    1.3      团队成员的默契

            没有一个测试团队可以依靠一个人取得成功,成功必然是大家共同努力的结果。在短时间内建立一支成功的团队非常困难,因为你必须按照部门的规划去了解每个团队成员、对他们进行培训、在必要的时候重新培训等等。

            然而,由于种种原因,一个团队不可能总保持在建立之初的状态,有老成员的离开、也有新成员的加入。团队规模可能在变化,团队承担的职责也可能在发生变化。那么,在这些变化的同时,我们怎样让一个团队始终保持人员上相对的成功呢?答案就是 默契

            一个团队必须依靠制度才能建立这种默契。比如,建立员工之间的定期的沟通会、强制的培训和接受培训的机制、人员的定期轮换、岗位角色的互相备份等等。这方面没有定式可以遵循,每个人都可以按照自己团队的特点来建立体系,但必须要有这样的体系,才能将团队的成果和发展以某种形式固定下来。

    2       测试团队的 规则 氛围

            除了人员之外,最重要的就是团队的 规则 ,也就是团队赖以生存的规范土壤了。一个团队的战斗力更多地体现在 令行禁止 上,因此,对成功的测试团队而言,必须要有明确的角色分工和明确的团队规则。

            另外, 氛围 也是测试团队的一个重要因素。所谓测试团队的氛围,就是一种置身其中的感受,一个高效的测试团队,必然有良好的氛围。

    2.1      学习和交流的氛围

            一个高效的团队必然是一个持续学习的团队。测试团队中每个测试工程师其实都会对自己的未来有自己的规划,也会希望自己能够在团队中学习到更多的知识和技能。高效团队依赖团队中的每一个人来达到 高效 的目的,也要求每个团队成员都具有良好的技能,因此,学习的氛围是高效的测试团队必不可少的。

            但是,要建设学习型组织,并不是一件轻易的事情。组织不可能把学习作为一个任务来下达,因此学习必须要与工作进行结合;另外,如何调动组织中 能者 带动 暂时不能者 进行学习,也是很有技巧的事情。

    l         部门讲师制度

            部门讲师制度是一种比较有效的制度。在我的实践中,部门讲师是一种权利,也是一种责任: 部门讲师 认证是获得 高级测试工程师 级别的必要条件;同时,要保留住 部门讲师 的认证,必须保证每月至少 4 个小时的内部课程,而且,内部课程获得的评价要大于平均 8 分。

            除此之外,每年评选一次年度的 最佳内部讲师 ,每年对内部讲师进行一次重新认证,内部讲师可以优先获得一些外部交流的机会等等,这些都进一步将内部讲师变成了一种荣誉,从而使更多的成员愿意为整个团队奉献自己的知识和经验。

    l         专题

  • 转:微软软件开发三宝

    2008-03-05 17:38:01

    七月 17, 2007 – 8:22 am |
    Tags: No Tags

    今天,对于从事软件开发的同行来说,无需我来具体解说微软的秘密到底是什么,因为微软在大力兜售《微软的秘密》中的秘密,这就是MSF(Microsoft Solution Framework)–微软解决方案框架。在此我只想谈谈我个人感觉到的微软软件开发的三大法宝:三权分立式的开发组织结构;程序经理(PM)的“刀”;测试人员的“火眼金晶”

    而当我进微软中国研发中心后,有一点突出感受:大家之间非常客气,尤其是各专业分工之间、比如程序经理、开发(Developer)、测试(Tester)相敬如宾。完全不同于

    看过《微软的秘密》的朋友、或是受过MSF培训的朋友、我微软的同事们(还在微软或已经出来的),应该能够理解我的这种感受。MSF是一种生根于美国的三权分立的政治文明的开发组织框架,在研发体系中程序经理、开发、测试也是三权分立的(产品经理算市场体系),代表着需求、技术、质量控制三种驱动力量的相互制衡。

    微软在桌面软件上后发制人、横扫竞争对手,很大程度上是这种三权分立式的软件开发组织框架的功劳。MSF具有极强的克隆能力,微软只要抽调三个有经验的程序经理、开发、测试,马上能够带出一支新队伍,哪怕新招员工都是大学毕业生(微软还愿意招“未经污染的”新人)。所以那时,大家从来没有看到微有软扩张乏力的时候。而且依照MSF,在有明确竞争对手的市场上,不会犯大错误,这就是民主的好处!

    程序经理的“刀”,也是一种个人感受。我做产品规划时(Product Planner, 研发体系中类似产品经理的角色),当看到程序经理制订研发计划、为了按时发布软件版本时,大刀阔斧地砍功能,我真的心如刀割!程序经理为何会挥舞“屠刀”?因为微软极度重视要按时发布软件版本,研发团队要向公司承诺、微软要向业界承诺,承诺发布计划,并要兑现承诺。

    进微软之前,我从来没有看到软件公司像微软这样重视测试。首先测试的待遇基本和开发一致,为了保证实现平等,微软在文化上还特意予以强调。在实际工作中,测试拥有“至高无上”的地位。有一种说法“开发前期听PM的,开发后期听测试的”。开发后期,测试检测出来的Bug实际上就是高悬在开发头顶的鞭子。有了待遇、文化、地位上的保证,微软便拥有了测试的“火眼金晶”。

    不犯大错,按时发布版本,保证质量,专注和坚持,因此我们看见微软在桌面软件上超越一个个竞争对手。

    不过,微软会犯大错、屡见推迟发布:

    • 民主是保守的,群体思维特征往往会错过变革,而不像一个君主制的明君可以及早洞察趋势,发起、引导变革。Microsoft=Windows! Windows! Windows!的群体思维几乎让微软在Internet上犯下致命错误,差点被Netscape打翻。
    • 当微软试图继续在Windows为大家提供一个统一的“世界”时,我们便看到微软一再推迟发布Windows的新版本。因为这个“世界”太庞大了,项目组太大了,协同太复杂了。“安得倚天抽宝剑,把汝裁为三截?”

    时至今天,信息技术如此深刻地融入社会的各个层面,引发了极其深刻的变革和创新,甚至开始营造现实社会之外虚拟现实,微软的软件基因–MSF需要进化了。自《微软的秘密》出版后,微软的软件开发再无秘密。

    “比竞争对手学的更快是唯一真正可以持续的竞争优势。”

  • 转:个人的测试部如何开展多项目测试工作?如何发挥作用?有感

    2008-03-05 17:29:53

     分析测试案例:三个人的测试部如何开展多项目测试工作?如何发挥作用?有感!

    题目:三个人的测试部如何开展多项目测试工作?如何发挥作用?

         这个问题在测试时代贴出来的时候,自认为有些经验的我当时回复了这个帖子,之后,很多测试的朋友认识了我,就这个问题大家互相在MSN上交流了好几次,在和同行的交流后,情不自禁的分析起这个案例来,因此就有了我的这篇随笔.

         看着这个题目,分析起来,就像在写一篇作文.^_^.命题还太大了,而且不那么容易写啊!先看看案例内容:
    公司背景:
         1,公司是做软件外包的,有一个测试部门,但只有三人。
         2,针对公司的开发特点,制定了一些相应流程,给出了若干文档模板。
         3,公司高层的意思是说,项目启动后,每个项目临时组建一个测试team,测试部跟进一人,作为对测
            试的流程,方法的指导,同时也作具体的测试工作。
    假设测试主管认为:
           由于测试部的力量比较弱,人员水平不齐,上述要求实现有些困难。

    分析案例:
         1,公司的软件是外包的,那么可以肯定测试的软件大多数是项目.
              通常在我做测试的时候,测试分四种类型:产品测试,项目测试,个性化测试,第三方验收测试.不同的测试对象使用的测试策略不一样.
              项目测试,由于是针对用户来做的,个人认为:对用户的需求一定要把握好.这是最最重点的.当然还包括需求变更.把握好了这个,首先测试的方向就不会错误.
          2,针对公司的开发特点,制定了一些相应流程,给出了若干文档模板
               既然根据项目开发的特点制定了相应的测试流程,那么就要确定你的测试流程真的实用么?真的正确有效么?这点通常是最难把握的,然而也是大多数人不去重视和思考的.个人认为:有效的测试流程干活起来效率高.
         3,公司高层的意思是说,项目启动后,每个项目临时组建一个测试team,测试部跟进一人,作为对测
     试的流程,方法的指导,同时也作具体的测试工作.
               既然公司的高层领导都已经决定了测试的方式,做为测试的主管,当你认为不可行时,就要分析为什么不可行并说明原因.如果得到他的认可,也许会采用你的方法,因为领导说的算啊!!!!!! 
         4,测试部的力量比较弱,人员水平不齐.
            面对这种情况,就要提高测试人员的水平,这就要看公司的人力资源,公司的资力是否有能力聘请到好的测试人员了.从另一方面也提醒了测试管理者,要加强测试团队建设了.
     
    个人感想:
          做为一个测试人员,碰上这样的情况后,应该多分析了解目前所测试的项目,包括项目背景,开发人员水平,公司对这个项目的关注态度,这个项目的客户需求等等。俗话说的好,知己知彼百战百剩!只有对项目特别熟悉了,你才能高效率的测试这个项目.当然这不是一下就能领会的,需要在工作中不停的总结经验.
         做为一个测试主管,分析的面积就更广了,毕竟是主管要考虑的问题自然比测试人员要多的多,要考虑目前的测试流程是否实用,目前的测试分工是否正确有效,目前的测试任务是否能完成,应该用什么方法解决,在这样的项目里怎么考核测试人员的工作,要和项目经理进行有效的沟通,和上级领导有效的沟通,和测试人员, 最终用户进行有效的沟通,让大家的测试目的和思想达成一致,这样最后做出事情的结果才能得到大家的认同等等等等.可见,想做一个真正的测试主管很不容易啊!各方面的能力都要发挥出来才行.
         写到这里,有点累啊!感觉好像有点离题,不知道写的这些是否能得到同行的认可.但继续写吧!
         做为一个公司领导,首先他的思想和决策会影响公司的文化.开工司的目的很明确----挣钱.怎么挣就是他的策略了.就像打仗一样,怎么打了.测试对于领导来说,他看不到直接的效益,所以目前国内的企业都不重视测试.我指的是真正意义上的重视,原因很简单,测试不能给他挣钱啊!现在很多公司都是为了过CMM 而过,说白了,是为了赢得更多的客户信任才去过.在国内,人的因素起着主导地位,想过CMM的方法太多了,^_^这么说,这个社会也太黑暗了些哦!其实也不全黑,重视产品质量,重视测试的公司,从长远角度来看,还是可以行万里路的.那些伪略产品终究会没有市场.
           所以啊,本人一直鼓励测试同行去重视测试工作的公司发展,那样个人才会有前途.现在的公司都很抠门,不会给你培训,不会给你做个人发展计划,不会让你对公司有依靠的感觉,让你就像一个机器人一样,按照他的思维方式去工作,不然的话,你走人吧!呵呵!!!!!!!国内IT公司的企业文化确实不怎样啊!!!!
         
    最后总结:
          三个人的测试部想有效的开展多项目测试工作和发挥作用,那就看什么样的公司领导,什么样的测试领导,什么样的测试人员,什么样的项目,什么样的客户了.这些是主要的关键因素.人决定一切啊!!!!!!!!!!!!!!!!!

  • (转)软件评测复习知识点(ZT :小颖)

    2008-03-05 16:15:28

    第一部分:软件评测知识
    1.   软件质量与软件测试
    软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档、数据以及程序进行测试
    软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力
    2.   软件测试与质量保证
    软件测试只是质量保证工作中的一个环节,软件质量保证与软件测试是软件质量工程的两个不同层面的工作;
    质量保证:通过预防、检查与改进来保证软件质量,采用全面质量管理和过程改进的原理来开展质量保证工作,主要关注软件质量的检查与测试,主要着眼于软件开发活动的过程、步骤和产特
    软件测试:通过执行软件来,对过程中的产物(开发文档和程序)进行走查,发现问题,报告质量
    3.   软件测试的目的
    测试是程序的执行过程,目的在于发现错误;
    一个好的测试用例在于发现了至今未发现的错误;
    一个成功的测试是发现了 至今未发现的错误的测试;
    4.   软件测试原则
    所有的软件测试都应追溯到用户需求
    应当把“尽早地和不断地进行软件测试”作为测试者的座右铭
    完全测试是不可能的,测试需要终止
    测试无法显示软件潜在的缺陷;
    充分注意测试中的群集现象
    程序员应避免检查自己的程序
    尽量避免测试的随意性
    5.   软件测试对象
    程序开发过程中的各个文档、源程序
    6.   软件测试过程模型-V模型
    是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;
    局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现
    7.   软件测试过程模型-W模型
    在V模型的基础上,增加千开发阶段的同步测试,形成W模型;测试与开发同步进行,有利用尽早的发现问题
    局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整
    8.   软件测试过程模型-H模型
    在H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行
    9.   测试模型使用
    在实际工作中应灵活地运用各种模型的优点
     V模型
    强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;忽略了测试的对象不应该仅仅包括程序,没有明确指出对需求、设计的测试
    W模型
    补充了V模型中忽略的内容,强调了测试计划等工作的先行和对系统需求和系统设计的测试;与V模型相同,没有对软件测试的流程进行说明
    H模型
    强调测试是独立的,只要测试准备完成,就可以执行测试
     
    10.  单元测试
    定义
    又称模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作;可以从程序的内部结构出发设计测试用例,多个模块测试可以平行地独立进行测试
    目的
    发现模块内部可能存在的各种差错
    内容
    模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
    步骤
    利用设计文档设计测试用例;创建被测模块的桩模块或驱动模块;利用被测试模块、驱动模块和桩模块来建立测试环境,进行测试
     
     
    11.集成测试
    定义
    又称组装测试或联合测试,在单元测试基础上,将所有模块按概要设计和详细设计进行组装
    目的
    发现模块连接中的接口可能存在的各种差错
    内容
    穿越模块之间的数据是否会丢失;一个模块组装后是否会对另一模块或其他模块存在影响;各个子功能组装在一起是否会达到预期的父功能;全局数据结构是否有问题;单个模块的错误累积起来是否会放在
    组装方法
    一次性组装方式,非增殖式方式也叫整体拼装,对模块分别测试然后将所有模块组装;第二种增殖式组装方式,可以是自顶向下或自底向上
    完成标志
    成功地执行了测试计划中规定的所有测试用例;修正了所发现的错误;测试结果通过专门小组的评审
     
    12.确认测试
    目的
    验证软件的功能和性能及其他特性是否与用户的要求一致
    测试内容
    有效性测试 运行黑盒测试方法验证所测软件是否满足需求规格说明书列出的需求;所有文档正确且便于使用;软件可移植性、易用性、兼容性进行测试;软件配置复查 保证软件配置的所有成分都齐全
     
    13.系统测试
    目的
    验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试
    测试内容
    在真实或模拟系统运行环境下,检查完整的程序系统能否和系统(硬件设备、网络、系统软件)正确配置、连接,满足用户需求
     
    14.验收测试
    测试内容:根据任务书或合迥、供需双方约定的验收依据文档进行对整个系统的测试与评审,确认是否接收或拒绝系统;
    15.开发方测试
    通常也叫‘验收测试’或‘a测试’,在软件开发环境中,开发者检测与证实软件的实现是否满足软件设计说明或软件需求说明的要求
    16.用户测试
    在用户的应用环境下,用户检测与核实软件实现是否符合自己预期的要求。B测试通常被认为是用户测试,把软件有计划地免费地分发到目标市场,让用户大量使用、评价检查软件
    17.第三方测试
    由第三方测试机构来进行的测试,也称独立测试
    18.动态测试
    通过人工或使用工具运行程序进行检查,分析程序的执行状态和程序的外部表现
    19.静态测试
       不运行程序,能过人工对程序和文档进行分析与检查,包括走查、符号执行、需求确认等
    20.白盒测试
    通过对程序内部结构的分析、检测来寻找问题,检查程序的结构及路径是否正确,检查程序的内部动作是否按照设计说明的规定正常进行
    21.黑盒测试
    又称功能测试,通过运行程序发现其缺陷和错误,在程序界面处进行测试
    22.灰盒测试
    介于白盒和黑盒测试之间,关注输出对于输入的正确性,也关注程序的内部结构,但没有白盒测试那样详细、完整
    23.测试分类
    开发过程
    单元、集成、确认、系统、验证
    实施组织
    开发方、用户、第三方
    测试技术
    白盒、黑盒、灰盒或静态、动态
     
    24.软件问题分类
    软件错误、软件缺陷、软件故障、软件失效
    软件错误:在软件生存周期内的不希望或不可接受的人为错误
    软件缺陷:存在于软件(文件、程序、数据)之中的不希望或不可接受的偏差
    软件故障:软件运行过程中出现的一种不希望或不可接受的内部状态。
    软件失效:软件运行时产生的一种不希望或不可接受的外部行为
    25GB/T16260.1 产品质量-质量模型
    质量模型:代表软件质量属性的总体
    软件质量特性与度量:质量特性和子特性、外部度量、内部度量
    外部、内部质量的质量模型:质量属性包括:功能性、可靠性、易用性、效率、维护性和可移植性
    26GB/T18905.1 软件工程 产品评价-概述
    概述了软件产品评价的过程,提供了评价需求和指南
    27GB/T18905.5 软件工程 产品评价-评价者用的过程
       
    28.软件测试的国内外现状
    国外:软件测试已成为一个独立的产业,在软件公司占有重要的地位,软件测试理论研究蓬勃发展,软件测试市场繁荣,开发了大量的测试工具;
    国内:软件测试成为一个新兴产业,测试技术贫乏,从业人员少,测试服务没有足够规模;著名的软件公司已成立了专业的测试队伍,国家在职业资格中新增了‘软件评测师’,企业资集认证时软件测试能务成为重要指标,软件产品增加了登记测试,成立第三方测试机构,软件测试成为一个独立课程
    29.软件评测发展趋势
        测试工作将进一步前移
    软件架构师、开发工程师、QA人员、测试工程题将进行更新的融合
    测试行业将得到充分的尊重
    设置独立的测试部门将得到越来越多公司的软件公司的共识
    测试外包服务将快速增长
    30.测试过程的特性与要求
    软件测试过程
    是一抽象的、遵循GB/T18905《评价者用的过程》中定义软件评价过程的模型
    评价过程的特性
    可重复性:同一评价者按同一评价规格说明对同一产品进行重复地评价,应产生同一种可接受的结果
    可再现性:同不同评价者同一评价规格说明对同一产品进行评价,应产生同一种可接受的结果
    公正性:评价应不偏向任何特殊的结果
    客观性:评价结果应是客观事实
    评价过程的要求
    一般要求
    组织和质量体系:评价者应立足于一个组织;评价组织为保证质量,可以建立质量体系
    请求者职责:对软件产品确立必要的合法权利;为标识和描述产品提供必要的信息;阐述初步评价需求,与评价者协商确定实际需求,需求遵守相关的法规和标准;阐述对评价提交的信息的保密性需求;必要时在开发者和评价者之间起中介作用;必要时向评价者提供计算机和其他设备
    评价者职责:检查请求者对软件产品是否有充分合法的权利;按规定对请求者提供保密承诺;提供有资格的人员,以便实施评价;提供评价工具和技术;按照评价需求实施测试;保证评价过程中的所有记录 ;保证及时向请求者提交评价报告
    活动要求
    确立软件评价需求
    编制评价规格说明
    制定评价计划
    评价执行
    作评价结论
     
    31.软件测试与配置管理
    配置管理活动
    配置项标识:标识测试样品、标准、工具、文档报告等配置项的名称和类型、标识各配置项的所有者及储存位置
    配置项控制(变更控制):规定测试基线、基线创立时间、变更控制委员会人员组成、职能、确定变更请求的处理程序和终止条件、变更过程中测试人员变更的职能等
    配置状态报告:定义报告形式、内容和提交方式、确认过程记录和跟踪问题报告、更改请求、更改次序;确定测试报告提交的时间与方式;
    配置审计:确定审计执行人员和执行时机;确定审计的内容与方式;确定发现问题的处理方法
     
    32.测试的组织与人员  
    测试的组织
    组织结构设计因素:垂直还是缓、市场还是产品、集中还是分散、分级还是分散、专业人员还是工作人员、功能还是项目
    独立测试组织:没有此组织,建立系统不会理想
    集中管理的测试组织:成立独立部门,集中管理
    选择测试组织结构方案的准则:提供软件测试的快速决策能力;利于合作;能够独立运作并具有精干的人员配置;有利于协调测试与质量管理的关系;有利于满足软件测试过程管理要求;有利于为测试技术提供专有技校;充分利用现有测试资源;对测试者的职业道德产生积极影响
    测试的人员
    测试组织管理者
    具有理解与评价软件测试政策、标准、过程、工具、培训和度量的能力;具有领导能力;具有吸引并留住杰出测试专业人才的能力;具有沟通、支持和控制能力;具有测试时间、质量和成本控制能力
    测试人员
    应具有的能力
    一般的表达、交流、协调、质量意识、软件工程能力;测试技能和方法;测试规划能力;测试执行能力;测试分析、报告和改进能力;
    职业发展:
    1~2年测试技能;3~4年测试过程;4~5年测试组织工作;5~6年技术管理;6~12年测试管理
    人员培训
    按培训内容分类:测试基础知识和技能培训;测试设计培训、测试工具培训;测试对象软件产品培训;测试过程培训;测试管理培训
     
    33.软件测试风险分析
    软件测试风险:是软件测试过程出现的或潜在的问题,造成的原因主要是测试计划的不充分、测试方法有误或测试过程的偏离,造成测试的补充以及结果不准确
    软件测试风险主要是对测试计划执行的风险分析与制定要采取应急措施;重点在措施
    测试计划的风险:一般指测试进度滞后或出现非计划事件;常见的有交付日期、测试需求、测试范围、测试资源、人员的能力、测试预算、测试环境、测试支持、测试工具;
    34.软件测试的成本管理
    测试实施成本
    测试准备成本、测试执行成本、测试结束成本
    低测试实施成本
    测试准备环境尽可能使用软件和测试环境配置自动化;测试实施尽可能采用自动化测试工具(测试用例自动化执行),人工测试最好请初级技术人员,不使用测试工程师;测试结束编制测试报告测试结果与预期结果比较采用自动化方法(测试文档编制模板化)
    质量成本要素
    一致性成本(用于测试实施成本)、非一致性成本(由出现的问题和故障引起)
    质量成本=一致性成本+非一致性成本
    缺陷探测率DD P
    =Bugs(tester)/ (Bugs(tester)+ Bugs(customer)) 衡量测试投资回报的一个重要指标注:第116页计算题
     
    35.文档测试的范围
    用户文档
    用户手册、操作手册、维护修改建议
    开发文档
    需求说明书、概要设计、数据库设计、详细设计、可行性研究报告
    管理文档
    项目开发计划、测试计划、测试报告、开发进度月报、开发总结报告
     
    36.用户文档的内容
    包装上的文字及图案;宣传材料、广告及其他插页;授权/注册登记表;最终用户许可协议;标签和不干胶条;安装和设置指导;用户手册;联机帮助;指南、向导;样例、示例和模板;错误提示信息;
    37.用户文档测试的要点
    明确读者群:根据读者群(如初级、中级、高级用户)的不同来检查文档内容,保证用户能够看得懂、能理解
    术语:文档中术语的描述要适合定位的读者群,用法一致,标准定义与业界规范相吻合
    文档内容的正确性:要保证所有信息是真实正确的
    文档内容的完整性:要完全根据提示逐步操作,检查是否存在遗漏的地方
    文档与程序的一致性:按照文档操作后,检查软件返回的结果与文档描述是否一致
    文档的易用性:检查是否便于用户查找相应的内容
    图表与界面截图:检查所有图表与界面截图与发布的程序版本一致
    样例和示例:检查所有的样例和示例能够正确完成;
    语言:中文文档保证无错别字和二义性
    印刷与包装:印刷质量,包装质量
    38.用户手册的测试
    准确的按照手册的描述使用程序;尝试每一条建议;检查每条陈述;查找容易误导用户的内容;
    39.在线帮助的测试
    内容的准确性;帮助功能的可靠性;每一条索引和主题列表要逐条检查,是否能够由索引进入主题;帮助系统中的每一个超级链接;主题是否全部能够在索引中找到;帮助系统的风格应简洁;
    40.功能易用性测试
    业务符合性
    程序实现的业务逻辑与实际业务逻辑是否一致;
    功能定制性
    对软件功能应能够灵活定制
    业务模块集成度
    对于存在紧密关系的模块,是否方便功能转换,从一个功能进入到别一个功能
    数据共享能力
    对于多处使用的数据应可以一次输入多处使用,减少用户重复工作
    约束性
    对于流程性强的操作,应能够限制操作顺序;对非法信息应不允许进行系统
    交互性
    对于用户的每一次操作,应能够给出提示或回应,使用户清晰的看到系统的运行状态
    错误提示
    对于关键操作完成后或删除数据之前给出明确的提示信息;
     
    41.用户界面测试:界面整体、界面元素测试
    界面整体
    规范性测试:符合现行标准和规范
    合理性测试:界面与软件功能是否相融洽,界面的布局是否协调
    一致性测试:使用的控件、标签风格、错误提示信息、操作方法是否一致
    界面定制性测试:界面元素的可定制性;工具栏的可定制性;统计检索的可定制性;报表的可定制性
    界面元素
    窗口测试:大小、显示、窗口大小改变、多个窗口同时打开、支持操作方法等
    菜单测试:是否符合需求;措辞是否准确;顺序是否合理;图形布局是否一致
    图标测试:是否符合表达习惯;不同的目标是否采用不同的图标;图标尺寸是否合适;建议与对应功能相似;图标上是否有标注
    鼠标测试:交互环境中是否可以识别鼠标操作;多次点击是否识别;无规则点击是否会产生无法预料的结果;右键弹出菜单是否正确;
    文字测试:界面文字是否正确,准确,无二义性;
     
    42.硬件兼容性测试
    目的
    确认软件系统对于服务器端、客户端及网络所需的环境是否正确、合理
    测试内容
    最低配置是否能满足系统运行的需要;在推荐配置下系统的响应是否迅速;考察软件对运行硬件环境有无特殊说明;软件系统能否运行在多种硬件配置环境下
    与整机兼容性
    确认要求的最低配置和推荐配置的合理性和正确性;主要指标:机型的要求;CPU;内存;硬盘
    与板卡及配件兼容性
    独立板卡;主板芯片组;驱动程序中的自由软件
    与打印机的兼容性
    对不同厂商、不同型号的打印机进行以下测试:安装;打印测试页;调整纸张大小;选择分辨率;调整打印方向;逐页、多份打印;双面打印、网络打印
    其他
    红外线鼠标、键盘、扫描仪、视频软件,刻录软件的兼容性
     
    43.软件兼容性
    与操作系统的兼容性
    确认软件系统是否与多种类型的操作系统兼容,包括安装、关键流程的检查;操作系统包括Windows平台、Linux平台、UNIX平台;Macintosh 图形专用软件
    与数据库的兼容性
    确认软件系统在不同数据库的可移植性、互操作性,对完整性、应用系统测试;性能测试;数据库包括SQL;ODBC;JDBC;ADO;OLE DB;JDO
    与中间件的兼容性
    指对不同版本、不同补丁包的兼容性进行测试,检查应用程序是否能够正确运行,性能的变化;
    与浏览器的兼容性
    创建一个兼容性矩阵,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性;如Applets,Javascrīpt,ActiveX,VBscrīpt
    与其他软件的兼容性
    与支持软件(财务软件导出Excel)的兼容性测试;与其他同类软件的兼容性(与其他同类软件同时在机器中使用);与其他非同类软件的兼容性
     
    44.数据兼容性测试
    不同数据格式兼容性
    确认软件之间能否正确地交互和共享信息,不同格式的信息是否兼容;包括系统与其他系统复制粘贴文字是否正确;旧版本信息在新版本是否能打开;新版本文件在旧系统中是否能打开;同类软件是否可以进行数据交换
    XML符合性
    XML能够使不同来源的结构化的数据较容易地结合在一起,提供一个描述数据和交换数据的有效手段;测试步骤:在测试工具中建立标准模板;用被测软件按要求导出数据;将导出的数据与标准模板进行对比匹配测试;输出测试结果;
     
    45.平台化软件兼容性测试
    平台化软件概述
    用来构建与支撑应用软件的独立软件系统;基本要素包括支撑环境(应用系统开发与运行的基本条件)和开发体系(开发与维护管理应用软件的工具与方法);分类包括技术支撑型平台和应用实现平台
    平台化软件优点
    应用的广泛性(各行业);良好的开发性(保证接口的统一);具有灵活性和扩展性;快捷的适应性
    平台化软件兼容性
    测试内容:跨硬件平台能力(不同规模硬件平台上式);跨操作系统能力;支持多种数据库系统;客户端兼容性测试;数据兼容性测试
     
    46.新旧系统数据迁移测试
    新旧系统数据迁移
    数据迁移:新旧系统进行切换时,将历史数据进行清理、转换,并装载到新系统的过程;
    数据迁移的实现
    数据迁移的准备、数据迁移的实施、数据迁移后的校验
    数据迁移的测试
    对旧系统到新系统、新系统到旧系统进行迁移测试;生成备份测试迁移后的数据完整可靠性;
     
    47.安全测试-测试内容
    用户认证机制
    用户认证机制分为数字证书(检验用户身份的电子文件)、智能卡、双重认证、安全电子交易协议(SET电子商务中安全电子交易的国际标准);测试时有必要对用户认证机制进行全面测试,评价认证机制的合理性
    加密机制
    对加密、解密机制进行测试,验证使用是否合理,强度是否满足当前需求;保护数据安全的重要手段
    安全防护策略
    安全防护策略包括安全日志、入侵检测、隔离防护、漏洞扫描,是系统对抗攻击的主要手段
    数据备份与恢复手段
    是一种数据安全策略,需要对备份和恢复的效果进行测试,保证实际数据的安全性
    防病毒系统
    基本的防病毒技术:集中式管理、分布式杀毒(以策略为中心、以服务器为中心);数据库技术、LDAP技术的应用;多引擎支持;不同操作系统的防护;远程安装或分发安装;
    测试时对网络防病毒软件的选购、部署方式、策略定义进行评估和测试
     
    48.安全测试-测试策略
    安全系统
    安全系统防护体系
    由实体安全、平台安全、数据安全、通信安全、应用安全、运行安全、管理安全七层次,因此安全性测试测策针对7层进行测试和评估
    基本安全防护系统
    一般采用防火墙、入侵检测、漏洞扫描、安全审计、病毒防治、Web信息防篡改等基础安全技计,来保障应用系统的安全;测试时从以上方面分别进行测试
    证书业务服务系统
    包括证书认证及证书审核注册,需验证功能和性能;测试采用过程是否符合标准;证书类型是否正确;证书格式、申请、审核、下载功能是否正确;并发性、扩展性、备份
    证书查询验证服务系统
    验证功能和性能;测试查询、管理、证书信息发布、下载、更新功能;并发性、扩展性
    密钥管理系统
    验证功能和性能;测试密钥生成、发送存储、查询等基本功能,安全管理功能、系统管理功能;并发压力、最大量密钥系统的基本功能、密钥的保存期、备份;
    密码服务系统
    验证功能和性能;测试加解密功能、多密码算法支持、增加功能;长度、系统速度、扩展能力
    可信授权服务系统
    集中式授权服务 验证是否具有用户管理、审核管理、资源管理、角色管理等主要功能;分布式授权服务 验证其是否有资源访问的签名授权、授权管理等功能;同时还要对系统进行并发压力测试
    可信时间戳服务系统
    验证功能和性能;测试时间来源是否正确、保存功能、签发功能;时间精度、验证时间戳请求并发性、可扩展性
    网络信任域系统
    :由通过安全审查的网络可信接入设备和网络信任域管理系统组成;验证功能和性能;接入认证交换机、限制、管理、管理配置功能;认证时间、认证接入请求数并发性、接口
    故障恢复与容灾备份
    故障恢复、数据备份、容灾备份
     
     
     
     
    49.安全性测试方法
    功能验证
    采用黑盒测试方法,对涉及安全的软件功能进行测试
    漏洞扫描
    采用主机或系统漏洞扫描器自动检测远程或本机安全性弱点
    模拟攻击试验
    采用冒充、重演、消息篡改、服务拒绝、内部攻击、外部攻击、陷阱门、特洛伊木马方法进行测试
    侦听技术
    对数据进行截取分析的过程,主要用于对网络加密的验证
     
    50.软件产品安全测试
    侧重于用户对数据或业务功能的访问控制,数据存储和数据通信的远程安全控制
    用户管理和访问控制
    用户权限控制
    测试用户权限分配合理性、用户名、用户密码的各项限制
    操作系统安全性测试
    测试是否关闭和卸载了不必要的服务和程序、是否存在不必要的账户、权限设置合理性
    数据库权限的测试
    测试用户的权限,用于存储用户和口令的表信息尽量加密,程序中是否存在默认的用户名和密码
    通信加密
    测试软件系统通信息加密情况,采用验证和侦听技术完成,
    安全日志测试
    测试日志的完整性、正确性,是否提供安全日志的智能统计分析能力,
     
    51.网络系统全生命周期测试策略
    建设生命周期
    生命周期测试策略
    规划设计阶段
    利用仿真技术测试设计方案、网络设备评估,为网络选型提供依据;
    实施阶段
    进行网络质量测试,如吞吐量、包转发率、丢包率,保证系统的可用性和稳定性,为网络应用系统开发提供基准值
    与应用系统集成阶段
    完成应用系统的功能和性能测试,保证运行基本稳定后,将程序应用到网络上进行网络级测试,测试并发用户访问能力、响应时间、应用对网络资源占用情况,保证应用系统在网络平台上的性能
     
    52.网络测试-网络仿真技术
    定义
    是一种通过建立网络设备、链路和协议模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术,也称为网络模拟技术或网络预测技术
    原理
    在计算机构造虚拟的环境反映现实的网络环境,利用数据建模和统计分析的方法模拟网络行为,从而获取特定的网络特性参数;采用基于包的建模机制来模拟实际物理网络中包的流动,包括处理、组包、拆包过程
    应用
    在网络规划中应用
    为网络规划、设计提供可靠的定量依据;可以验证实际方案或比较多个方案
    在企业网络管理和优化中应用
    作为网络辅助管理工具、可以对企业业务网络通信情况进行统计找出瓶颈、可以查出业务配置的错误、可以模拟故障了解系统的处理情况、对新增业务进行性能测试、模拟访问量预测网络的承受负载
    在网络研发中应用
    构建接近于真实网络环境和业务,可以有效的模拟新协议的各种行为细节,作出公正的评判新协议的性能;对于大型通信设备制造商,可以作为其网络设备、协议以及应用开发的工具
    网络预测
    设置服务水平、完成日常网络容量规划、离线测试网络、网络失效和容量极限分析
    软件
    OPNET (OPNET公司)、NS
     
    53.网络性能测试
    指标
    吞吐量:指被测试设备或被测试系统在不丢包的情况下,能够达到的最大包转发速率
    丢包率:高负载状态下由于缺少资源而未转发的包的比例
    延时:系统在有负载的情况下转发数据包所需的时间
    背靠背性能:通过以最大帧速率发送突发传输流,并测量无包丢失时的最大突发长度来测试缓冲区容量
    TCP/IP 4~7层负载匀衡:建立连接数、会话连接数、连接数据
    IP语音网络测试:测试语音、数据流包的丢失、单向延时,延时抖动
    宽带XDSL网络性测试:帧测试、端到端IP测试、信元测试、PPP容量测试、ATM完整性测试
    VPN网络测试:最大隧道创建数量、包丢失、延时、响应时间
    路由测试:协议、路由压力性能
    类型
    可靠性测试、可接受性测试、瓶颈测试、容量规划测试、升级测试、功能/特性测试、吞吐量测试、响应时间测试、衰减测试、配置规模测试、网络设备评估测试
    对象
    网络平台:网络操作系统、文件服务器、工作站
    应用层:应用程序的客户端、桌面操作系统和数据软件
    子系统:路由器、集线器、交换机、网桥
    全局网络路径
    方法
    网络设备:(1)放入仿真网络环境中通过分析行为进行测试(2)使用的网络测试专用设备
    网络布线:使用工具,如网络电缆测试仪、令牌环网测试仪、以太网测试仪、光缆测试仪、企业级网络测试仪
    网络协议:专用工具
    网络性能:七层网络结构分析模型法、网络连接结构的分析法,客户端、网络链路、服务器端三个模块
    标准
    RFC;YD/T
    工具
    物理线缆测试仪、网络运行模拟工具、协议分析仪、专用网络测试设备
     
    54.网络测试-网络应用测试
    网络应用监控
    概述
    监控功能主要能过网络探测器设备安装在某一网段上采集数据
    目标
    及时准确了解网络状况,定位问题的根源
    工具
    Network Vantage:全面应用监控和报告产品,帮助发现和优化网络上的应用性能;
    Sniffer:捕捉流量、监控网络活动、分析错误信息,定位问题
    网络故障分析
    步骤
    清楚故障现象;收集需要的用于帮助隔离可能故障原因的信息;根据收集到的信息考虑故障原因;根据分析的故障原因,建立一个诊断计划;执行诊断计划;改变参数确认结果
    软件问题诊断
    建立在网络应用分析的基础上,分析关键因素:会话信息(往返行程和流量信息)、包信息、响应时间信息、负载信息、高峰信息、线程信息、响应时间预测、带宽模拟  注意421页故障定位举例
    硬件问题诊断
    物理层:连接方式、连接电缆、设备配置是否正确  使用show interface命令;
    数据链路层:路由器的配置、连接端口、接口与通信设备封装;通过查看路由器配置检查封装,show命令
    网络层:沿源到目标的路径,查看路由表,同时检查路由器接口的IP地址
     
    55Web应用的测试策略
    按系统架构分类
    客户端的测试、服务器端的测试、网络上的测试
    按职能分类
    应用功能的测试、Web应用服务的测试、安全系统的测试、数据库服务的测试
    按软件质量特性分类
    功能测试、性能测试、兼容性测试、安全性测试、易用性测试
    按开发阶段分类
    设计测试、开发测试、应用测试
     
    56Web应用设计测试
    设计测试的主要内容是对设计从全面性、适合性、标准性等方面进行检查
    总体架构设计测试
    采用瘦客户端或胖客户端是否合需求:瘦客户端 客户端只作少量处理、业务逻辑规则在服务器端执行;胖客户端 客户端即显示用户页面,又执行部分业务逻辑;验证设计中采用的模式是否适合需求
    确定Web架构的组成部分是否满足需求:验证各种服务器、中间件形成的架构是否满足需求,各种搭配是否兼容
    服务器的配置及分布是否满足需求:验证服务器的配置和分布是否满足用户的功能、性能、成本等需求
    客户端设计测试
    功能设置的测试:验证Web应用中各项功能设置是否满足需求,应主要实现信息服务、办公自动化、Internet支持
    信息组织结构设计的测试:信息组织结构设计模式包括线性结构、分层结构、非线性结构;验证设计模式是否符合用户需求,能否使用户直观、快捷的浏览到所需信息
    页面设计的测试:页面显示一致性、友好性、直观的导航系统、不同类型浏览器、布局
    服务器端设计测试
    容量规划测试:将所要求的延迟和带宽与该体系结构中每一环节的额定容量作一下比较,每个组成部分都必须满足需求;估算点击率是否满足需求;估算延迟和流量是否满足需求;估算Web应用系统所需服务器的资源消耗
    安全系统设计测试:对常识性安全策略、加密技术、防火墙、防毒体系进行测试
    数据库设计测试
     
    57Web应用开发测试
    对Web应用的源代码和组件进行测试,保证代码的正确性、组件的功能正常
    代码测试
    测试源代码规则、链接测试、框架测试(窗口大小改变信息改变情况)、表格测试(大小调整情况)、图形测试
    组件测试
    进行表单测试、Cookies测试、脚本测试、CGI(服务器端技术)、ASP测试(代码、不同浏览器)、ActiveX控件测试(客户端技术)
    使用Junit进行单元测试
     
    58Web应用运行测试
    与其他系统比较
    相同:测试内容、测试方法、测试手段基本相同;
    不同:测试重点不同;采用的工具不同
    功能测试
    可以采有黑盒测试方法进行功能测试,注意客户端的选择测试、客户端浏览器的配置、客户分辨率显示、内容测试
    自动化技术:Web应用链接质量保证技术、Web应用功能测试技术
    易用性测试
    界面测试:页面中各元素布局的协调性、不同页面风格的统一性、用户在界面中操作的便利性、界面动态操作测试
    辅助功能测试:用户是否能够较快的找到相应的使用说明、导航、站点地图、帮助信息功能
    图形测试:主要查看所有图形信息是否有明确的用途、大小、质量、颜色、风格
    负载压力测试
    负载测试测量Web系统在某一负载级别上的性能;压力测试测试系统的限制和故障恢复能力
    测试步骤:确定交易执行响应时间;做计最大并发用户数;模拟用户请求,逐步加压;负载没有达到应优化
    客户端配置与兼容性测试
    浏览器的配置测试:缓存设置、cookies设置、显示设置、安全设置各项不同的设置对Web功能的影响程序,影响的配置在功能说明书中是否进行描述
    平台兼容性测试:不同操作系统兼容性测试
    浏览器兼容性测试:与平台兼容性测试结合,测试不同操作系统下不同浏览器类型的应用
    安全性测试
    安全体系测试:测试内容包括部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、参数操作、异常管理、审核和日志记录
    应用级安全测试:测试注册与登录、在线超时、操作留痕、备份与恢复
    传输级安全测试:测试经客户端传送到服务器端可能存在的安全漏洞以及服务器防范非法访问的能力
     
    59.负载压力测试基本概念
    负载压力
    指系统在某种指定软件、硬件以及网络环境下承受的流量,如并发的用户数、持续运行时间、数据量等。其中并发的用户数是负载压力的重要体现。
    负载压力测试
    指在一定测试约束条件下,测试系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力,负载压力测试是性能测试的重要组成部分
    性能测试
    用来保证产品发布后系统的性能能够满足用户需求,包括两种测试策略:性能评测、性能调优
    负载测试
    通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试
    压力测试
    通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试压力测试是为了发现在什么情况下系统的性能会变得不可接受
    并发性能测试
    并发性能测试的过程,是一个负载测试和压力测试的过程;
    逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,能过综合分析交易执行指标,资源监控指标来确定系统并发性能的过程;
    并发性能测试是负载压力测试中的重要内容;
    并发性能测试包括:应用在客户端性能的测试、应用在网络上性能的测试、应用在服务器端上性能的测试三个方面
    疲劳强度测试
    采用系统稳定运行情况下所能支持的最大并发用户数,或者日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程
    大数据量测试
    l          大数据量测试包括独立的数据量测试和综合数据量测试两类
    l          独立的数据量测试:指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试
    l          综合数据量:指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试
     
    60.负载压力测试解决方案
    一.  并发性能测试
    并发压力过程与测试定位
    (1)         并发负载压力的实施:客户端——应用客户端的测试
    (2)         负载压力的传输介质:网络——应用网络上的测试
    (3)         压力到达:各类服务器——应用服务器端的测试
    二. 并发性能测试-应用服务端测试
    1. 目的:模拟大量并发用户执行不同业务操作,达到实施负载压力的目的
    1.   测试环境
    (1)         测试工具主控台(1个):负责管理各个测试工具代理,收集各类测试数据
    (2)         负载生成器(多个):即代理,模拟虚拟用户
    (3)         服务器
    2.   测试过程
    (1)         创建方案:方案信息包括    虚拟用户组(Vuser)
                                      Vuser将运行的测试脚本
                                      用于运行脚本的负载生成器
    (2)         定义测试目标:  虚拟用户数:测试应用程序可以同时运行多秒个Vuser
    每秒点击次数
    每分钟页面数    测试服务器稳定性
    每秒事务数
    事务响应时间:测试在期望的事务响应时间内可以同时运行多少个Vuser,在脚本中指定要测试的事务名称以及Vuser的范围
    (3)         制定方案执行计划:制定方案执行的时间安排,如开始时间、执行持续时间、启动/停止多少个Vuser数量等。注:如果脚本中包含有集合点,方案将不会按计划运行;集合点:在方案中指定Vuser,各Vuser执行的脚本,运行的时间,启动方案后,并不能保证所有的Vuser能够达到同步操作的效果,设置集合点,Vuser执行到集合点时,会被Controller滞留在集合点,等待所有Vuser全部到达后,执行某一项指定操作,从而达到同步并发的效果
    3.   影响服务器的负载级别
    (1)         选择在方案运行过程中活动的集合点
    (2)         选择加入每个集合的Vuser数
    4.   控制服务器上的负载峰值
    (1)         创建Vuser脚本,插入必要的集合点(采用录制功能将操作过程录制形成脚本,插入某一项操作的集合点)
    (2)         创建方案(建立Vuser组,指定每组的user及数量、运行的脚本等信息)
    (3)         向方案中添加Vuser组,搜索设置的集合点,并将集合点名称添加到‘集合信息’列表中
    (4)         设置虚拟用户负载的级别
    (5)         通过选择加入到方案中的集合点及加入每个集合的Vuser数,可以确定负载的精确级别
    (6)         设置集合的属性
    (7)         对于每一个集合,都可以设置集合策略
    (8)         运行方案(在此之前,可以同时配置负载生成器和Vuser行为)
    5.   客户端交易处理性能指标
    (1)         并发用户数指标
    (2)         交易处理指标:平均事务响应时间、每秒事务数、每秒事务总数、事条摘要、事务性能摘要、事务响应时间(负载下、百分比、分布)
    (3)         Web请求指标:每秒点击次数、吞吐量、吞吐量摘要、HTTP状态代码摘要、每秒HTTP响应数、每秒下载页面数、每秒重试次数,重试次数摘要、连接数、每秒连接数、每秒SSL连接数
    (4)         Web页面组件指标:激活网页细分、页面组件细分(随时间变化)、页面下载时间细分(随时间变化)、第一次缓冲时间细分(随时间变化)、已下载组件大小
    二.并发性能测试-应用网络上性能测试
        应用网络上性能测试包括:应用网络故障分析和网络应用性能监控
    1. 应用网络故障分析
    (1)         测试目标:显示网络带宽,延迟、负载和TCP端口的变化是如何影响用户的响应时间的
    (2)         作用
    l        优化性能
    l        预测系统响应时间
    l        确定网络带宽需求
    l        定位应用程序和网络故障
    (3)         网络故障分析工具
    l        作用:      使应用跨越多个网段的活动过程变得清晰
                    提供有关应用效率的统计数据
                    模拟用户在不同网络配置环境下的响应时间,决定应用投产的网络环境
    l        工作原理:  多个捕捉点:Agent,被动监听数据包来实现实时数据采集
                    一个分析:Agent Manager进行对所跟踪的数据的分析
    l        获取信息:  监控不同探针之间的连接状态,传输的字节数以及通信往返行程次数
    会话性能概要,监控哪段网络延迟大,带宽对网络双向性能的影响,节点用于处理和用于传输的时间
    服务器与客户端之间帧传输情况统计,监控到与应用相关的帧的分布,对每一个帧可以与相关的数据包关联,并且可以对帧解码
    服务器与客户端之间传送包信息统计,监控包的详细信息,并且可以将包与帧及线程相关联
    线程信息统计,监控线程的内容和生存周期,以及线程与数据包的关系
    负载的高峰时刻,负载的平均值,高峰时刻可以与相关的线程、数据包、帧相关联
    故障错误总结:应用级错误、TCP错误、IP错误、其他错误
       
    2. 网络应用性能监控指标
    (1)         测试目标:在系统试运行之后,需要及时准确地了解网络上正在发生什么事;什么应用在运行,如何运行;多少PC正在访问LAN或WAN;哪些应用程序导致系统瓶颈或资源竞争
    (2)         作用
    l        分析关键应用程序的性能
    l        定位问题的根源是在客户端、服务器、应用程序还是网络
    l        哪些应用程序占用大量带宽
    l        哪些用户产生了大量的网络流量
    (3)         网络应用性能监控工具
    l        组成:      探针:采集与存储数据,并根据应用对数据进行分类,设置的原则是根据网络组成和监控要求
    探针管理器:管理配置探针,设定数据采集与上传时间,合并收集的数据;
    时间服务器:对探针进行时针同步
    交互界面:数据展示平台
    l        监控信息:  应用监视:
    关键特性:客户和服务器通信量,应用响应时间和资源应用的业务水平等
    按会话统计传输负载:测试应用和会话级响应时间,以及自动为通过网络中每一个联网设备的每一个应用程序生成负载图
    应用、会话级、事务响应时间
    延迟在何处被引入网络,瓶颈在哪里
    趋势分析
     
     
    三.并发性能测试-应用服务器端的测试
    (一) 概述
    1. 对应用服务器端的测试主要包括三方面:操作系统、数据库和中间件的监控
    2. 监控手段:可以采用工具自动监控,也可以使用操作系统、数据库、中间件本身提供的监控工具
    3. 利用工具监控的优点
    (1)         减少故障诊断和分析时间 
    (2)         减少手工定位的时间和避免误诊
    (3)         在问题发生前定位故障
    (4)         验证可达到的性能水平和服务水平协议
    (5)         持续的服务器、数据库和应用性能和可用性监控
    (6)         故障诊断和恢复:自动报警、故障恢复程序、故障恢复信息
    (7)         服务器、应用可用性和性能报告
    (二) 操作系统监控
    操作系统的监控涉及后台重要服务器的操作系统监控,对于主流的操作系统,主要关注:内存、CPU、硬盘
    监控建议:
    1.磁盘管理
    (1)         采集物理读/写和逻辑读/写信息
    (2)         收集操作系统和其他平台上的磁盘忙信息
    (3)         监控I/O
    2.文件系统
    (1)         显示每个文件系统的使用率,检测文件系统空闲空间的大小
    (2)         剪裁文件系统-删除指定的CORE(核心)文件和其他文件
    (3)         显示文件系统的mount on device、type、size
    (4)         可以监控特殊的文件系统,如NFS(网络文件系统),CD-ROM
    (5)         检测特定文件的存在及超出特定期限的文件存在
    3.内存
    (1)         显示可用的内存数量
    (2)         决定当前的内存短缺量
    (3)         帮助分析内存问题
    (4)         显示内存的实存、所有虚存和kernel(核心内存)的状态等信息
    4.CPU
    (1)         记录CPU的使用率
    (2)         监测CPU参数,包括CPU idle(空闲),CPU waits,CPU system usage,CPU user usage,run queue length(运行队列长度)
    (3)         显示CPU context(上下关系) switches 的总数
    (4)         显示CPU处理系统任务和完成用户任务的时间比例
    5.操作系统举例
    (1)         UNIX操作系统
    (2)         Windows操作系统
    (三) 数据库监控
    1.共性的指标
    (1)         监控数据库系统中关键的资源
    (2)         监测读写页面的使用情况
    (3)         监控超出共享内存缓冲区的操作数
    (4)         监测上一轮询期间作业等待缓冲区的时间
    (5)         跟踪共享内存中物理日志和逻辑日志的缓冲区的使用率
    (6)         监控磁盘的数据块使用情况以及被频繁读写的热点区域
    (7)         监控用户事务或者表空间监控事务日志
    (8)         监控数据库锁资源
    (9)         监测关键业务的数据表的表空间增长
    (10)      监控SQL执行情况
    2.监控建议-针对监控内存缓冲区、会话及磁盘等方面
    (1)         监控超出共享内存缓冲区的操作:可以调整缓冲区大小,更好的支持系统运行
    (2)         扩展的会话/用户检查以及参数控制:发现不合理顺序扫描操作,从而分配附加的资源,修改应用程序,降低对系统资源的要求
    (3)         磁盘:监控数据块的使用情况以及被频繁读写的热点区域,可以平衡数据量的存储分配及I/O分配
    3.数据库举例
    (1)         Oracle:内存统计、SQL分析、会话统计、事件统计
    (2)         Sysbase:
    (3)         DB2:
    (4)         SQL Server:
     
    (四) 中间件监控
    1.中间件分类
    (1)         Web服务器: Apache
    (2)         Web应用服务器: Websphere、WebLogic
    (3)         应用服务器: tuxedo
    2.中间件举例
    (1)         TUXEDO:
    (2)         WebSphere:队列性能计数器、通道性能计数器
    (3)         WebLogic:LogBaroadcasterRuntime、ServerSecurityRuntime
     
    四.负载压力测试解决方案-疲劳强度测试
    强调长时间的考核,主要是过长时间运行系统,发现问题
    1.日常强度疲劳强度测试
       模拟系统的日常业务(正常情况),持续执行‘一段时间’,暴露系统的性能问题,如内存泄露、资源争用
    2.高峰业务疲劳强度测试
    (1)  模拟系统的高峰业务(最大业务量),持续执行‘一段时间’,暴露系统的性能问题
    (2)  时间指标要满足: (1) 这段模拟时间所处理的交易量要达到系统疲劳强度需求的业务量 (2) 在这段测试周期中必须通过加大负载,以及尽可能长的测试周期来保证疲劳强度测试
     
    五.负载压力测试解决方案-大数据量测试
    1.大数据量测试类型
    (1)         独立数据量测试:针对某些系统存储、传输、统计、查询等业务进行单用户大数据量测试,如大量的批处理任务
    (2)         综合数据量测试:采用并发测试、疲劳强度测试以及大数据量测试相结合的综合测试方案
    2.自动生成大数据量
    (1)         借助自动化测试工具,利用数据库测试数据自动生成工具,如TESTBytes
    (2)         利用自动化负载压力测试工具,模拟用户业务操作,同时并发数百个或数千个用户生成相关数据
    (3)         自主开发数据生成工具
    (4)         数据库本身的辅助工具
    3.大数据量管理
    (1)         手工管理:
    (2)         自动化工具管理:File-Aid/CS 数据库管理工具 ,完成比较数据和数据库结构;转换关系数据库数据成XML数据;比较XML数据与关系数据库数据;比较XML文件;数据迁移
     
    61.负载压力测试指标分析
       主要包括客户端交易处理性能指标、服务器资源监控指标、数据库资源监控指标、Web服务器监控指标、中间件监控指标
    62.负载压力测试实施
    测试计划
    分析应用程序:系统组件、系统配置、分析使用模型、分析任务分布
    定义测试目标:以可度量的指标制定目标、确定测试时间
    计划方案实施
    检查测试目标:响应时间、最优硬件配置、可靠性、瓶颈、系统容量
  • 测试杂谈

    2008-03-05 15:40:28


     
    我是喜欢软件测试的一个人,愿大家多多交流
    • 测试人员面试题

      2007-6-28



      01. 为什么要在一个团队中开展软件测试工作?
        因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

      02. 您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
        我曾经做过web测试,后台测试,客户端软件,其中包括功能测试,性能测试,用户体验测试。最擅长的是功能测试

      03. 您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同04. 的测试类型的区别与联系(如功能测试、性能测试……)
        测试类型有:功能测试,性能测试,界面测试。
        功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。
        性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
        界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。
        区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试

      04.您认为做好测试用例设计工作的关键是什么?
      白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
      黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题


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

        黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
        白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。

        软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试主要是为了发现以下几类错误:
        1、是否有不正确或遗漏的功能?
        2、在接口上,输入是否能正确的接受?能否输出正确的结果?
        3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
        4、性能上是否能够满足要求?
        5、是否有初始化或终止性错误?

        软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:
        1、对程序模块的所有独立的执行路径至少测试一遍。
        2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
        3、在循环的边界和运行的界限内执行循环体。
        4、测试内部数据结构的有效性,等等。

        单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

        单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

        集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。

        系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)

        系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。

        验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
      验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

      06. 测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
        软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
      测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)

      07. 您认为做好测试计划工作的关键是什么?
        1. 明确测试的目标,增强测试计划的实用性
        编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确
        2.坚持“5W”规则,明确内容与过程
        “5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。
        3.采用评审和更新机制,保证测试计划满足实际需求
      测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。
        4. 分别创建测试计划与测试详细规格、测试用例
        应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。

      08. 您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
        1.等价类划分
        划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.

        2.边界值分析法
        边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
        使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.

      3.错误推测法
        基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
        错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.

      4.因果图方法
        前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.

      09. 请以您以往的实际工作为例,10. 详细的描述一次测试用例设计的完整的过程。
        就说最近的这次网站功能的测试吧
        首先:得到相关文档(需求文档和设计文档),理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了),考虑到测试环境,测试用例,测试时间等问题。
        第二步:设计测试用例,测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有另一个测试人员负责,可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小,所以不考虑):这次的网站的输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的,有个标志位),网站启动后会立刻去刷那张表,得到多条数据,然后在进行处理。处理过程中,会经历3个步骤,网站才算完成了它的任务。有3个步骤呢,就可以分别对  这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等),得出了差不多50个用例。界面测试,也就是用户看的到的地方,包括发送的邮件和用户填写资料的页面展示。
        第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境已经很熟了,只有有机器能空于下来做该功能测试就可以做了),因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦,需要web服务器(Apache,tomcat),不过这次需求呢,网站部分只用到了tomcat,所以只要有tomcat即可
        第四步:执行测试

      11. 您以往是否曾经从事过性能测试工作?如果有,12. 请尽可能的详细描述您以往的性能测试工作的完整过程。
        是的,曾经做过网站方面的性能测试,虽然做的时间并不久(2个月吧),当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做。
      性能测试类型包括负载测试,强度测试,容量测试等
        负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
        强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况
        容量测试:确定系统可处理同时在线的最大用户数   
        在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比),

        Web服务器指标指标:
        * Avg Rps: 平均每秒钟响应次数=总请求时间 / 秒数;
        * Successful Rounds:成功的请求;
        * Failed Rounds :失败的请求;
        * Successful Hits :成功的点击次数;
        * Failed Hits :失败的点击次数;
        * Hits Per Second :每秒点击次数;
        * Successful Hits Per Second :每秒成功的点击次数;
        * Failed Hits Per Second :每秒失败的点击次数;
        * Attempted Connections :尝试链接数;  

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

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

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

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

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

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

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

      33.      你对测试最大的兴趣在哪里?为什么?
        最大的兴趣就是测试有难度,有挑战性!做测试越久越能感觉到做好测试有多难。曾经在无忧测试网上看到一篇文章,是关于如何做好一名测试工程师。一共罗列了11,12点,有部分是和人的性格有关,有部分需要后天的努力。但除了性格有关的1,2点我没有把握,其他点我都很有信心做好它。
        刚开始进入测试行业时,对测试的认识是从无忧测试网上了解到的一些资料,当时是冲着做测试需要很多技能才能做的好,虽然入门容易,但做好很难,比开发更难,虽然当时我很想做开发(学校专业课我基本上不缺席,因为我喜欢我的专业),但看到测试比开发更难更有挑战性,想做好测试的意志就更坚定了。
        不到一年半的测试工作中,当时的感动和热情没有减退一点(即使环境问题以及自身经验,技术的不足,做测试的你一定也能理解)。
        我觉得做测试整个过程中有2点让我觉得很有难度(对我来说,有难度的东西我就非常感兴趣),第一是测试用例的设计,因为测试的精华就在测试用例的设计上了,要在版本出来之前,把用例写好,用什么测试方法写?(也就是测试计划或测试策略),如果你刚测试一个新任务时,你得花一定的时间去消化业务需求和技术基础,业务需求很好理解(多和产品经理和开发人员沟通就能达到目的),而技术基础可就没那么简单了,这需要你自觉的学习能力,比如说网站吧,最基本的技术知识你要知道网站内部是怎么运作的的,后台是怎么响应用户请求的?测试环境如何搭建?这些都需要最早的学好。至少在开始测试之前能做好基本的准备,可能会遇到什么难题?需求细节是不是没有确定好?这些问题都能在设计用例的时候发现。
        第二是发现BUG的时候了,这应该是测试人员最基本的任务了,一般按测试用例开始测试就能发现大部分的bug,还有一部分bug需要测试的过程中更了解所测版本的情况获得更多信息,补充测试用例,测试出bug。还有如何发现bug?这就需要在测试用例有效的情况下,通过细心和耐心去发现bug了,每个用例都有可能发现bug,每个地方都有可能出错,所以测试过程中思维要清晰(测试过程数据流及结果都得看仔细了,bug都在里面发现的)。如何描述bug也很有讲究,bug在什么情况下会产生,如果条件变化一点点,就不会有这个bug,以哪些最少的操作步骤就能重现这个bug,这个bug产生的规律是什么?如果你够厉害的话,可以帮开发人员初步定位问题。

      34. 你的测试职业发展是什么?
        测试经验越多,测试能力越高。所以我的职业发展是需要时间累积的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年累积测试经验,按如何做好测试工程师的11,12点要求自己,不断的更新自己改正自己,做好测试任务。

      35. 你自认为测试的优势在哪里?
        优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。

      36. 你以前工作时的测试流程是什么?
        公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。我说下我1年来不断改正(自己总结,吸取同行的方法)后的流程吧。需求评审(有开发人员,产品经理,测试人员,项目经理)->需求确定(出一份确定的需求文档)->开发设计文档(开发人员在开始写代码前就能输出设计文档)->想好测试策略,写出测试用例->发给开发人员和测试经理看看(非正式的评审用例)->接到测试版本->执行测试用例(中间可能会补充用例)->提交bug(有些bug需要开发人员的确定(严重级别的,或突然发现的在测试用例范围之外的,难以重现的),有些可以直接录制进TD)->开发人员修改(可以在测试过程中快速的修改)->回归测试(可能又会发现新问题,再按流程开始跑)。

      37. 当开发人员说不38. 是BUG时,39. 你如何应付?
        开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认。

      23.你为什么想离开目前的职务?
        因为公司运作情况并不理想,公司需要调整部门体系,公司考虑到缩减部门人员,所以大批量的裁员(有6,7个),这是我的第一份工作,对公司也有较深的感情,因为在这里我找到了职业理想(就是测试),所以公司需要精简人员,我自愿退出。虽然很舍不得,但我将会有新的发挥能力的舞台。

      24:你对我们公司了解有多少?

      25:你找工作时,最重要的考虑因素为何?
        工作的性质和内容是否能让我发挥所长,并不断成长。

      26:为什么我们应该录取你?
        您可以由我过去的工作表现所呈现的客观数据,明显地看出我全力以赴的工作态度。

      27:请谈谈你个人的最大特色。
        我的坚持度很高,事情没有做到一个令人满意的结果,绝不罢手。

      28.白箱测试和黑箱测试是什么?什么是回归测试?

      29。单元测试、集成测试、系统测试的侧重点是什么?

      30。设计用例的方法、依据有那些?

      31。一个测试工程师应具备那些素质和技能?

      32.集成测试通常都有那些策略?

      33.你用过的测试工具的主要功能、性能及其他?

      34.一个缺陷测试报告的组成

      35.基于WEB信息管理系统测试时应考虑的因素有哪些?

      36.软件测试项目从什么时候开始,?为什么?

      37.需求测试注意事项有哪些?

      38.简述一下缺陷的生命周期

      39.测试分析测试用例注意(事项)?
        你在你所在的公司是怎么开展测试工作的?是如何组织的?
        你认为理想的测试流程是什么样子?
        你是怎样工作的?
        软件测试活动的生命周期是什么?
        请画出软件测试活动的流程图?
        针对缺陷采取怎样管理措施?
        什么是测试评估?测试评估的范围是什么?
        如果能够执行完美的黑盒测试,还需要进行白盒测试吗?为什么?
        测试结束的标准是什么?
        软件验收测试除了alpha,beta测试以外,还有哪一种?
        做测试多久了?
        以前做过哪些项目?
        你们以前测试的流程是怎样的?
        <答:测试计划-测试用例设计-测试执行-测试分析报告>
        用过哪些测试工具?
        为什么选择测试这行?
        <答:它是一个新兴的行业,有发展潜力,而且很锻炼人,需要掌握更多的技能,比做开发要更难>
        为什么值得他们公司雇用?
        如果我雇用你,你能给部门带来什么贡献?
        如何从工作中看出你是个自动自觉的人
        你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
        通常你对于别人批评你会有什么样的反应
        如果明知这样做不对,你还会依主管的指过去做吗
        如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理
        你觉得什么样的人最难相处
        为什么值得他们公司雇用?
          帮助公司提高软件质量和测试部门的技术水平
        如果我雇用你,你能给部门带来什么贡献?
          分享我的测试经验和测试技能,提高测试部门技术水平
        如何从工作中看出你是个自动自觉的人
               自动自觉范围太广
            1. 工作成果
            2. 工作质量  
        你的工作通常能在时限内完成吗.(我想问一下就是她问这个问题的动机是什么)
          在有足够的资源和合理的工作量的情况下,完全可以按时完成,并能比一般人做的更好
        通常你对于别人批评你会有什么样的反应
          有错即改,无措勉之

        如果明知这样做不对,你还会依主管的指过去做吗
          在公司内部下级是否有申诉渠道?

        如果你接到一个客户抱怨的电话,你确知无法解决他的问题,你会怎么处理
          为什么抱怨?是怎么样的问题?
          如果是客服问题,提交客服部门解决
          如果是质量问题,分析原因,下一版本改进
        你觉得什么样的人最难相处
          自以为是的人

        什么叫单元测试?
          请就软件测试人员应该具备什么样的基本素质说说你的看法。

        请就如何在开发中进行软件质量控制说说你的看法
         简述软件测试的意义,以及软件测试的分类

      1、功能测试,性能测试,界面测试,安全测试(可以简单点,比如只涉及到COOKIES里的内容),压力测试(商业性质的网站) 等等,B/S软件也要根据其具体功能采用不同的测试策略。
      2、态度、责任心、自信、敏锐的观察力、良好的发散思维
      3、先设计后开发模式,加强单元测试,加强代码走查,有一套完整的白盒测试方法。关键是加强开发人员的质量意识,增进程序员向工程师水平发展。
      4、意义嘛,就自己想吧。软件测试的分类,这个很多人都按各种方法去分。无明确答案给你。

      对测试的理解——基本的测试知识,对测试是否认可? 75。
          3、谈一谈过去自己的工作——了解经历、提供进一步提问的素材,表达能力   
      测试技能
      测试设计的方法并举例说明——测试技术的使用
      测试工具——熟悉程度,能否与当前工作匹配?
      如何做计划?如何跟踪计划?——日常工作能力
      如果开发人员提供的版本不满足测试的条件,如何做?——与开发人员协作的能力
      熟悉unix系统、oracle数据库吗?——是否具备系统知识
      做过开发吗?写过哪些代码?——开发技能
      阅读英语文章,给出理解说明?——部分英语能力
      文档的意义——是否善于思考?(最简单的概念,不同层次的理解)
      假如进入我们公司,对我们哪些方面会有帮助?——讲讲自己的特长
      随便找一件物品,让其测试——测试的实际操作能力
      软件测试的方法有?
      软件测试的过程?
      有一个新的软件,假如你是测试工程师,该如何做?

      软件测试分哪两种方法?分别适合什么情况?
      2。一套完整的测试应该由哪些阶段组成?分别阐述一下各个阶段。
      3。软件测试的类型有那些?分别比较这些不同的测试类型的区别与联系。
      4。测试用例通常包括那些内容?着重阐述编制测试用例的具体做法
      5。在分别测试winform的C/S结构与测试WEB结构的软件是,应该采取什么样的方法分别测试?他们存在什么样的区别与联系?
      6。在测试winform的C/S结构软件时,发现这个软件的运行速度很慢,您会认为是什么原因?您会采取哪些方法去检查这个原因?
      7。描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程
      你在五年内的个人目标和职业目标分别是什么?
        分析这个问题是用来了解你的计划能力的,通过这个问题,面试人同时还可以知道你的目标是否符合企业对你的安排。
        错误回答我想在将来的某个时候考虑这个问题。如今企业的领导者更换频繁,我认为做太多的个人计划是荒谬可笑的,不是吗?
        评论这种回答属于令人反感的一类。首先,当有人想了解你的目标时,"将来的某个时候"这种通俗说法并不奏效。其次,认为企业很脆弱,领导者更换频繁,这种说法毫无疑问会令人反感,而且也是不合理的。最后,认为做计划可笑,看不起这个问题,而且反问面试人,这些都注定了这样的求职者最终会失败。
        正确回答从现在起的五年之内,我希望能够在一个很好的职位上待几年,而且最好有一次晋升,然后就期待着下一步。不管是向上提升,还是在企业内横向调动,对我个人来说,我希望找到一家企业——一家愿意做相互投入的企业——待上一段时间。
        评论这个问题没有回答得过分具体(那样可能会产生漏洞),而且它表明你有雄心,并且思考过在企业中的成长方式。通过表达横向调动和向上提升的愿望,表明你是一个有灵活性的人。
       问题23 你怎样做出自己的职业选择?
        分析 面试人提出这个问题是为了了解求职者的动机,看看他(她)应聘这份工作是否有什么历史渊源,是否有职业规划,是不是仅仅在漫无目的地申请很多工作。
        错误回答 我一直都想在企业界工作。自孩提时代起,我就梦想自己至少也要成为大企业的副总裁。
        评论 除了难以令人相信之外,这种回答还存在一个问题:它表明求职者会对副总裁以下的职位不感兴趣。
        正确回答 在上大学四年级前的那个夏天,我决定集中精力在某一领域谋求发展。尽管我是学商业的,但是我不知道自己最终会从事哪一行业的工作。我花了一定的时间考虑自己的目标,想清楚了自己擅长做的事情以及想从工作中得到的东西,最后我得出了一个坚定的结论,那就是这个行业是最适合我的。
        评论 这种回答表明,求职者认真地做过一些计划,缩小了自己的关注点,而且也认准了前进的方向。这种回答还表明,求职者理解个人职业规划的重要性,并且有能力做出认真的个人决策。
      1. 你都用什么测试方法
      2.怎么编写案例
      3.怎么才能够全面的测试到每一个点
      1. 你都用什么测试方法
      针对不同的产品或者系统或者模块,有不同的测试方法。总体而言有白盒测试和黑盒测试。
      2.怎么编写案例
      案例的编写与测试阶段的定义有很大的关系。系统测试和unit测试的案例可能不同。总体而言测试案例根据系统的需求而定。
      3.怎么才能够全面的测试到每一个点
      测试的全面性主要需要在设计测试计划的时候考虑,从测试策略,产品需求等等多个角度考虑从而定义全部的测试点。
      1、谈谈软件测试技术,以及如何提高
      2、谈谈软件测试职业发展,以及个人的打算
      3、谈谈软件测试在企业的地位,也可以结合软件生命周期来谈
      有可能清晰的思路比确切的答案更重要
      在这里,主要说下笔试和面试的问题,希望大家共同参考。
           1,一般公司里实际的软件测试流程是什么样的?你们公司又是怎样的?
           2,软件工程师要具有那些素质?
           3,你会哪些测试工具?怎么操作?
           4,你能不能说下你的3到5年的职业计划(规划)
           5,你觉得你来应聘有那些优势?
      其余的还好说,但就第4个问题,我感到不好说哦!希望大家给个意见
      第一关:首先要自我介绍,自己的性格怎么样,目前的工作经历积累了一些什么经验取得了些什么值得一说的成果。然后要说说对软件测试怎么看?还有对于软件测试有什么自己的想法。为什么会想到要做这行(因为我的简历上的工作经历没有关于测试方面的)。哦,还有期望薪资。
      第二关:认为软件测试人员所要具备的基本素质,如果遇到问题会怎样处理,如果得不到研发人员的配合(就是研发说这个不是问题)你又会怎么处理?然后就是一些基本概念,比如软件测试的流程有哪些?如果我上任了,首先会怎么开始自己的工作计划。
      (前两关通过了后面这个就好过多了)
      第三关:像我介绍了一下公司的情况,告诉我主要针对什么内容的测试,会不会使用数据库。告诉我大概要做哪些内容,详细的可以上岗以后慢慢熟悉。
      大概就这么多了,这对没有经过这一关的不知道有没有帮助,仅供参考吧
      我觉得就像李波说的,关键是要给对方留下好印象:)

      面试官最后会问你有什么问题要问吗。作为应聘者的你一般不要说没问题问,这会给面试官留下你不太重视这份工作的坏印象。所以如果你想得到这份工作的话应该抓住这最后的表现自己的机会:
      你可以问:
      1.         贵公司近期和远期的发展目标是什么?
      2.         贵公司的主要竞争对手有哪些?
      3.         贵公司有多少开发人员有多少测试人员?
      4.         贵公司又进一步扩充测试人员的计划吗?
      5.         如果我有幸能进入贵公司的话,我有怎么样的发展?
      6.         测试人员的沟通能力很重要,贵公司有规范的沟通渠道吗?
      7.         请介绍一下贵公司的福利情况。
      8.         请问我什么时候能知道结果?
    • 性能测试监控点

      2007-6-14

       

      Unix主机

      • CPU使用率;
      • 内存使用状况;
      • Disk I/O;
      数据库服务器
      • Cache命中
      • Long Transaction
      • 索引使用情况
      • 数据库进程CPU使用状况
      • 数据库内存使用状况
      • 数据库连接数量
      应用服务器
      • MQ的主要进程内存使用状况
      • MQ的进程数量
      • TEMIP主要进程内存使用状况
      WEB服务器
      • 进程的CPU和内存使用状况
      • Cache命中
      • 平均响应时间等
      对这些内容的记录需要通过操作系统提供的性能观测工具或是应用自身提供的性能观测工具:
      1. 在Unix环境中,可以用top、vmstat、iostat程序观察需要记录的内容,更好的方法是自己写一个简单脚本,把时间信息和输出信息一同存入本地日志文件。在本测试中,我们用Perl和Unix的Shell脚本实现了对输出信息的抽取和格式化,生成的记录文件可以方便地被Excel等程序进行处理;
      2. 对于数据库环境,可以用Oracle自带的性能监测工具或是第三方软件(如TOAD等)观察性能并存成文件;
      3. 对WEB服务器,可以用WEB Server自带的性能监测工具监测其性能。
    • 性能测试续2 基准测试

      2007-6-07

      基准测试
      基准测试的关键是要获得一致的、可再现的结果。可再现的结果有两个好处:减少重新运行测试的次数;对测试的产品和产生的数字更为确信。使用的性能测试工具可能会对测试结果产生很大影响。假定测试的两个指标是服务器的响应时间和吞吐量,它们会受到服务器上的负载的影响。服务器上的负载受两个因素影响:同时与服务器通信的连接(或虚拟用户)的数目,以及每个虚拟用户请求之间的考虑时间的长短。很明显,与服务器通信的用户越多,负载就越大。同样,请求之间的考虑时间越短,负载也越大。这两个因素的不同组合会产生不同的服务器负载等级。记住,随着服务器上负载的增加,吞吐量会不断攀升,直到到达一个点。

      1.随着负载的增加,系统吞吐量的曲线(单位:页面/秒)
      注意,吞吐量以稳定的速度增长,然后在某一个点上稳定下来。
      在某一点上,执行队列开始增长,因为服务器上所有的线程都已投入使用,传入的请求不再被立即处理,而是放入队列中,当线程空闲时再处理。



      2. 随着负载的增加,系统执行队列长度的曲线
      注意,最初的一段时间,执行队列的长度为零,然后就开始以稳定的速度增长。这是因为系统中的负载在稳定增长,虽然最初系统有足够的空闲线程去处理增加的负载,最终它还是不能承受,而必须将其排入队列。
      当系统达到饱和点,服务器吞吐量保持稳定后,就达到了给定条件下的系统上限。但是,随着服务器负载的继续增长,系统的响应时间也随之延长,虽然吞吐量保持稳定。



      3. 随着负载的增加,系统中两个事务的响应时间曲线
      注意,在执行队列(图2)开始增长的同时,响应时间也开始以递增的速度增长。这是因为请求不能被及时处理。
      为了获得真正可再现的结果,应该将系统置于相同的高负载下。为此,与服务器通信的虚拟用户应该将请求之间的考虑时间设为零。这样服务器会立即超载,并开始构建执行队列。如果请求(虚拟用户)数保持一致,基准测试的结果应该会非常精确,完全可以再现。
      您可能要问的一个问题是:如何度量结果?对于一次给定的测试,应该取响应时间和吞吐量的平均值。精确地获得这些值的唯一方法是一次加载所有的用户,然后在预定的时间段内持续运行。这称为“flat”测试。



      4. flat测试的情况(所有的用户都是同时加载的)
      与此相对应的是“ramp-up”测试。



      5. ramp-up测试的情况(在测试期间,用户以稳定速度(每秒x个)增加)
      ramp-up
      测试中的用户是交错上升的(每几秒增加一些新用户)。ramp-up测试不能产生精确和可重现的平均值,这是因为由于用户的增加是每次一部分,系统的负载在不断地变化。因此,flat运行是获得基准测试数据的理想模式。
      这不是在贬低ramp-up测试的价值。实际上,ramp-up测试对找出以后要运行的flat测试的范围非常有用。ramp-up测试的优点是,可以看出随着系统负载的改变,测量值是如何改变的。然后可以据此选择以后要运行的flat测试的范围。
      Flat
      测试的问题是系统会遇到波动效果。



      6. 一次flat测试中所测得的系统吞吐量的曲线(单位:页面/秒)
      注意波动的出现,吞吐量不再是平滑的。
      这在系统的各个方面都有所体现,包括CPU的使用量。



      7. 一次flat测试中所测得的系统CPU使用量随时间变化的曲线
      注意,每隔一段时间就会出现一个波形。CPU使用量不再是平滑的,而是有了像吞吐量图那样的尖峰。
      此外,执行队列也承受着不稳定的负载,因此可以看到,随着系统负载的增加和减少,执行队列也在增长和缩减。



      8. 一次 查看(409) 评论(0) 收藏 分享 管理

    • 测试组的成立

      2008-03-04 21:33:25

      首先个人觉得公司成立软件测试部门或小组的必要性和必然性,不需要进一步的探讨。但是具体的情况一定要按照公司的情况来实施,所谓情况主要指的是不同公司的特殊性:包括项目的情况,客户的情况,公司结构体制的情况。楼主说的情况和我现在的公司十分类似,稍有不同的是我们的测试组是在公司的老部门质量工程部门衍生出来的。至于上面所提到的什么时候建立专门的测试组,我想既然已经有了这样的计划,那么在大多条件满足后,就尽量越快越好。5个不同小组的情况,就会联带出很多的不同行业的项目,这里对测试人员就有着更多的要求,这里不仅仅是测试方法、理论知识的掌握、测试工具的熟练程度,更重要的是对行业应用领域知识的了解,会要求测试组所有成员对各部门的项目都要有个自己的概念,但是毕竟你不能让任何人都成为超人,根据测试成员的不同条件可有不同侧重的分工,互相协助工作。再一点,测试组搭建之初要以较高的姿态介入十分必要,公司的领导层和相关人员一定要保证在这一领域的强制性和权威性,为以后的工作模式流程提前做好规划。考虑到楼主公司的项目基本为对日软件外包的项目,具有其特点,本人接触的日本项目极其有限,测试方面只是停留在根据需求上的一些功能测试,和与日语翻译共同测试关于一些提示性文档和项目内部涉及到的语法问题进行维护。据我了解很体系的对日项目,很多规程都是由日方提供,具体的工作模式及管理制度除了坚持自己的内部观点外还要更多的考虑到日方提供的资源和要求。
    451/3123>