记录测试工作中的点滴......

发布新日志

  • 性能测试不同的目标

    2009-06-17 15:07:58

    如果是为了验证系统性能是否达到用户需求,就用Performance Testing方法,即模拟真实的生产环境、采用典型的业务场景进行测试,以观察是否达到性能目标

    如果是为了调优,则应该采用Load Testing,找到系统的能力极限,确定瓶颈

    如果是为了发现缺陷(测试环境里好好的,一上线就出了很多问题),则应该采用Concurrency Testing方法,通过大量并发发现潜在的 死锁、泄漏等问题

    如果是为了Scalability,即系统能否能过升级设备的方式满足增长的性能需求,则应该采用 Configuration Testing和StreeTesting(使CPU使用率达到100%)

  • 可靠性参数

    2008-11-26 16:42:45

    MTTF

           平均无故障时间,定义为随机变量、出错时间等的"期望值"。但是,MTTF经常被错误地理解为,"能保证的最短的生命周期"MTTF的长短,通常与使用周期中的产品有关,其中不包括老化失效。

           N0个不可修复的产品在同样条件下进行试验,测得其全部失效时间为T1,T2,……TN0。其平均失效前时间(MTTF)为:

                              MTTF = (T1+T2+…Tn)/N0

          由于对不可修复的产品,失效时间即是产品的寿命,故MTTF也即为平均寿命。

          当产品的寿命服从指数分布时MTTF=1/λ

    MTTR

          平均维修时间,源自于IEC 61508中的平均维护时间(mean time to repair),目的是为了清楚界定术语中的时间的概念,MTTR是随机变量恢复时间得期望值。它包括确认失效发生所必需的时间,以及维护所需要的时间。MTTR也必须包含获得配件的时间,维修团队的响应时间,记录所有任务的时间,还有将设备重新投入使用的时间。

        其观测值是修复时间t的总和与修复次数之比:MTTR=(T1+T2+…Tn)/n

        式中:ti——i次修复时间;n——修复次数。

     MTBF

    失效或维护中所需要的平均时间,包括故障时间以及检测和维护设备的时间。对于一个简单的可维护的元件,MTBF = MTTF + MTTR。因为MTTR通常远小于MTTF,所以MTBF近似等于MTTF,通常由MTTF替代。MTBF用于可维护性和不可维护的系统。

        一个可修复产品在使用过程中发生了N0次故障,每次故障修复后又重新投入使用,测得其每次工作持续时间为T1,T2,……TN0,其平均故障间隔时间MTBF为:

                            MTBF=T/N0

    其中,T为产品总的工作时间。

      对于完全修复的产品,因修复后的状态与新产品一样,一个产品发生了N0次故障相当于N0个新产品工作到首次故障。因此:

                           MTBF=MTTF

     当产品的寿命服从指数分布时,产品的故障率为常数λ,则MTBF=MTTF=1/λ

     

  • 性能测试指标二

    2008-11-26 15:58:03

    稳定系统的资源状态

    性能项

    资源

    评价

    CPU占用率

    70%

    85%

    90%+

    很差

    磁盘I/0

    <30%

    <40%

    <50%+

    很差

    网络

    <30%带宽

    运行队列

    <2*CPU数量

    内存

    没有页交换

    每个CPU每秒10个页交换

    更多的页交换

    很差

    通俗理解:

    日访问量
    常用页面最大并发数
    同时在线人数
    访问相应时间

    案例:

    最近公司一个项目,是个门户网站,需要做性能测试,根据项目特点定出了主要测试项和测试方案:

        一种是测试几个常用页面能接受的最大并发数(用户名参数化,设置集合点策略)

        一种是测试服务器长时间压力下,用户能否正常操作(用户名参数化,迭代运行脚本)

        一种则需要测试服务器能否接受10万用户同时在线操作,如果是用IIS做应用服务器的话,单台可承受的最大并发数不可能达到10万级,那就必须要使用集群,通过多台机器做负载均衡来实现;如果是用websphere之类的应用服务器的话,单台可承受的最大并发数可以达到10万级,但为性能考虑还是必须要使用集群,通过多台机器做负载均衡来实现;通常有1个简单的计算方式,1个连接产生1个session,每个session在服务器上有个内存空间大小的设置,在NT上是3M,那么10万并发就需要300G内存,当然实际使用中考虑其他程序也占用内存,所以准备的内存数量要求比这个还要多一些。还有10万个用户同时在线,跟10万个并发数是完全不同的2个概念。这个楼上已经说了。但如何做这个转换将10万个同时在线用户转换成多少个并发数呢?这就必须要有大量的历史日志信息来支撑了。系统日志需要有同时在线用户数量的日志信息,还需要有用户操作次数的日志信息,这2个数据的比例就是你同时在线用户转换到并发数的比例。另外根据经验统计,对于1个JAVA开发的WEB系统(别的我没统计过,给不出数据),一般1台双CPU、2G内存的服务器上可支持的最大并发数不超过500个(这个状态下大部分操作都是超时报错而且服务器很容易宕机,其实没什么实际意义),可正常使用(单步非大数据量操作等待时间不超过20秒)的最大并发数不超过300个。假设你的10万同时在线用户转换的并发数是9000个,那么你最少需要这样的机器18台,建议不少于30台。当然,你要是买个大型服务器,里面装有200个CPU、256G的内存,千兆光纤带宽,就算是10万个并发用户,那速度,也绝对是嗖嗖的。

       另外暴寒1下,光设置全部进入运行状态就需要接近6个小时。具体的可以拿1个系统来压一下看看,可能会出现以下情况:
     1。服务器宕机;
     2。客户端宕机;
     3。从某个时间开始服务器拒绝请求,客户端上显示的全是错误;
     4。勉强测试完成,但网络堵塞或测试结果显示时间非常长。假设客户端和服务器之间百兆带宽,百兆/10000=10K,那每个用户只能得到10K,这个速度接近1个64K的MODEM上网的速度;另外以上分析全都没考虑系统的后台,比如数据库、中间件等。

     1。服务器方面:上面说的那样的PC SERVER需要50台;
     2。网络方面:按每个用户50K,那至少5根百兆带宽独享,估计仅仅网络延迟就大概是秒一级的;
     3。如果有数据库,至少是ORACLE,最好是SYSBASE,SQL SERVER是肯定顶不住的。数据库服务器至少需要10台4CPU、16G内存的机器;
     4。如果有CORBA,那至少再准备10台4CPU、16G内存的机器;再加上负载均衡、防火墙、路由器和各种软件等,总之没个1000万的资金投入,肯定搞不定。

       这样的门户系统,由于有用户权限,所以并不象jackie所说大多是静态页面。但只要是多服务器的集群,那么我们就可以通过1台机器的测试结果来计算多台机器集群后的负载能力的,最多额外考虑一下负载均衡和路由上的压力,比如带宽、速度、延迟等。但如果都是在1台机器上变化,那我们只能做一些指标上的计算,可以从这些指标上简单判断一下是否不可行,比如10万并发用户却只有1根百兆带宽,那我们可以计算出每个用户只有1K带宽,这显然是不可行的。但实际的结果还是需要测试了才知道,毕竟系统压力和用户数量不是线性变化的。

       这一类系统的普遍的成熟的使用,以及很多软件在方案设计后就能够大致估算出系统的性能特点,都导致了系统在软件性能方面调优的比例并不大(当然不完全排除后期针对某些代码和配置进行优化后性能的进一步提高),更多的都是从硬件方面来考虑,比如增加内存、硬盘做RAID、增加带宽、甚至增加机器等。


       网络技术中的10M 带宽指的是以位计算, 就是 10M bit /秒 ,而下载时的速度看到的是以字节(Byte)计算的,所以10M带宽换算成字节理论上最快下载速度为: 1.25 M Byte/秒!


  • 网站性能测试指标一

    2008-11-26 15:51:06

    通用指标(指Web应用服务器、数据库服务器必需测试项)

    指标

    说明

    ProcessorTime

    服务器CPU占用率,一般平均达到70%时,服务就接近饱和

    Memory Available Mbyte

    可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重

    Physicsdisk Time

    物理磁盘读写时间情况

    Web服务器指标

    指标

    说明

    Requests Per SecondAvg Rps

    平均每秒钟响应次数=总请求时间 / 秒数

    Avg time to last byte per terstion mstes

    平均每秒业务脚本的迭代次数 ,有人会把上面那个混淆

    Successful Rounds

    成功的请求

    Failed Requests

    失败的请求

    Successful Hits

    成功的点击次数

    Failed Hits

    失败的点击次数

    Hits Per Second

    每秒点击次数

    Successful Hits Per Second

    每秒成功的点击次数

    Failed Hits Per Second

    每秒失败的点击次数

    Attempted Connections

    尝试链接数

    数据库服务器性能指标

    指标

    说明

    User 0 Connections

    用户连接数,也就是数据库的连接数量

    Number of deadlocks

    数据库死锁

    Butter Cache hit

    数据库Cache的命中情况

    系统的瓶颈定义

    性能项

    命令

    指标

    CPU限制

    vmstat

    %user+%sys超过80%

    磁盘I/O限制

    Vmstat

    %iowait超过40%(AIX4.3.3或更高版本)

    应用磁盘限制

    Iostat

    %tm_act超过70%

    虚存空间少

    Lsps-a

    当分页空间的活动率超过70%

    换页限制

    Iostat,  stat

    虚存逻辑卷%tm_act超过I/O(iostat)30%,激活的虚存率超过CPU数量(vmstat)10倍时

    系统失效

    Vmstat, sar

    页交换增大、CPU等待并运行队列

  • HTML- based script 与 URL-based script(摘自测试者家园)

    2008-10-24 11:45:38

    在使用LoadRunner进行WEB脚本录制的时候,很多人不清楚URL-based 方式和 HTML-based方式的差别,以及何种情况下使用何种录制方式,这里给出一个简单的判断方法。

    HTML-based 方式

    HTML-based 方式对每个页面录制形成一条语句,对LoadRunner来说,在该模式下,访问一个页面,首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),然后建立几个连接分别获取相应的元素。

    URL-based 方式

    URL-based 方式将每条客户端发出的请求录制成一条语句,对LoadRunner来说,在该模式下,一条语句只建立一个到服务器的连接,LoadRunner提供了web_concurrent_start和web_concurrent_end函数模拟HTML-based的工作方式。

    如何决定选择何种录制方式?

    1、如果应用是WEB应用,首选是HTML-based方式;
    2、如果应用是使用HTTP协议的非WEB应用,首选是URL-based方式;
    3、如果WEB应用中使用了java applet程序,且applet程序与服务器之间存在通讯,选用URL-based方式;
    4、如果WEB应用中使用的javascrīpt、vbscrīpt脚本与服务器之间存在通讯(调用了服务端组件),选用URL-based方式。

  • LR VuGen协议介绍: Vuser脚本类型

    2008-10-04 20:52:39

    1  应用程序部署解决方案:Citrix ICA

       Citrix Vuser 脚本模拟 Citrix 客户端与服务器间的 Citrix ICA协议通信。VuGen 录制通信期间的所有活动,并创建 Vuser 脚本。对远程服务器执行操作时,VuGen 将生成描述这些操作的函数。每个函数都以ctrx 前缀开头。这些函数模拟鼠标和键盘的移动。此外,使用 ctrx 函数还可以通过等待打开特定的窗口同步对操作的重播。
       VuGen 还可以录制 Citrix NFUSE 会话。NFuse 会话使用浏览器,而不是客户端。要录制 NFUSE 会话,必须为 Citrix 和 Web Vuser 执行多协议录制。

    2   客户端/ 服务器: DB2 CLI、DNS、Informix、MS SQL Server、ODBC、Oracle(2 层)、Sybase Ctlib、Sybase Dblib 和 Windows Sockets 协议。

        使用适用于客户端服务器数据库(CtLib、DbLib、Informix、MS SQL Server、Oracle、ODBC 和 DB2-CLI)和 ERP Siebel Vuser协议,通过 VuGen 录制数据库客户端应用程序与服务器之间的通信。称为数据库 Vuser 脚本。

    3  自定义:C 模板、Visual Basic 模板、Java 模板、Javascrīpt 和 VBscrīpt 类型的脚本。

       除了录制会话以外,可以创建自定义的 Vuser 脚本。既可以使用LoadRunner API 函数,也可以使用标准的 C、Java、VB、VBscrīpt 或Javascrīpt 代码。通过 VuGen 可以在脚本中编写自己的函数,而不用录制实际会话。可以使用 LoadRunner API 或标准的编程函数。通过 LoadRunner API 函数可以收集关于Vuser 的信息。例如,可以使用 Vuser 函数来度量服务器性能、控制服务器负载、添加调试代码或者检索参与方案的 Vuser 的运行时信息。
    也可以通过在 Visual C 和 Visual Basic 环境中进行编程来开发 Vuser 脚本。在这些环境中,可以在导入 LoadRunner 库时,使用开发应用程序开发 Vuser 脚本。

    4 分布式组件:适用于 COM/DCOM、Corba-Java 和 Rmi-Java 协议。

      可以使用 CORBA、RMI 或 Jacada 等协议来录制用 Java 编写的应用程序或小程序。也可以使用 VuGen 的导航工具向脚本中添加任意方法.录制 COM 客户端应用程序时, VuGen 将生成若干函数,描述 COM 客户端-服务器活动。录制的脚本包含接口声明、API 调用和对方法的实例调用。每个COM 函数都以 lrc 前缀开头。在 VuGen 的主窗口中,可以查看和编辑录制的脚本。该窗口显示会话过程中录制的 COM API/ 方法调用,通过它,可以以可视方式跟踪应用程序COM/DCOM 调用。

      举例:关于录制Java语言Vuser脚本

      使用 VuGen 可以录制 Java 应用程序或小程序。VuGen 将创建一个完全使用 Java编写的脚本,该脚本通过 LoadRunner 特有的 Java 函数进行了  增强。录制完后,可以使用 JDK 库或自定义类通过标准 Java 代码来增强或修改该脚本。准备好脚本后,可以在 VuGen 中以独立模式运行它。Sun 的标准 Java 编译器javac.exe 将检查脚本中是否有错误,并对其进行编译。确认脚本可正常运行后,可将该脚本合并到 LoadRunner 方案中。在通过录制和手动增强创建脚本时,与 Java Vuser 脚本相关的所有规则和限制都适用。此外,该脚本中使用的所有具体的类都必须位于执行 Vuser 的计算机上,并在 classpath 环境变量中加以指定

    5 电子商务:FTP、LDAP、Palm、PeopleSoft 8 mulit-lingual、SOAP、Web (HTTP/HTML) 和双 Web/WinSocket 协议。

    6 Enterprise Java Bean:EJB测试和 Rmi-Java 协议。

      EJB 测试 Vuser 与标准的 Java Vuser 不同,因为 VuGen 会自动创建脚本以测试EJB 功能,无需录制或编程。生成脚本前,需要指定 JNDI 属性和关于应用程序服务器的其他信息。LoadRunner 的 EJB 检测器将扫描应用程序服务器并确定哪些EJB 可用。需要选择要测试的 EJB, LoadRunner 将生成测试每个 EJB 方法的脚本。它将为每个方法创建事务,以便您可以度量其性能并找出问题。另外,每个方法都包装在一个 try and catch 块中,以便进行异常处理。
     注意,要创建 EJB 测试脚本,必须在应用程序服务器主机上安装LoadRunner EJB 检测器,而且检测器必须处于活动状态。

     7 ERP/CRM:Baan、Oracle NCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、Siebel-DB2 CLI、Siebel-MSSQL、Siebel-Web 和 Siebel-Oracle 协议。

        Oracle NCA 是一种基于 Java 的数据库协议。使用浏览器,可以启动数据库客户端(一个小程序查看器)。可以通过 NCA 数据库的小程序查看器对其执行操作,从而无需使用客户端软件,并可以从所有支持小程序查看器的平台执行数据库操作。有一个专门为模拟 Oracle NCA 客户端而设计的 Vuser 类型。NCA 环境是一个三层环境。用户首先将一个 HTTP 调用从其浏览器发送到 Web服务器。此调用将访问调用 Oracle 应用程序小程序的启动 HTML 页。该小程序在客户机上本地运行,所有后续调用都通过专用的 NCA 协议在客户端和 Forms服务器之间传递。客户端(小程序查看器)与应用程序服务器(Oracle Forms 服务器)进行通信,然后该服务器将信息提交到数据库服务器 (Oracle 8.x)。
         VuGen 录制并重播客户端和 Forms 服务器(应用程序服务器)之间的 NCA通信。
         在录制 Oracle NCA 会话时,建议为 Oracle NCA 和 Web 协议创建一个多协议脚本

    8 传统:终端仿真 (RTE)。
       RTE Vuser 操作终端仿真器,以便加载测试客户端/ 服务器系统。
       RTE Vuser 将字符输入键入终端仿真器,然后将数据提交到服务器,并等待服务器响应。例如,假设您有一台用于维护某个维修公司的客户信息的服务器。现场服务代表每次修改数据时,都通过调制解调器使用终端仿真器来访问服务器数据库。服务代表访问有关客户的信息,然后录制他执行的修理操作的详细信息。 

    9 邮件服务:Internet 邮件访问协议 (IMAP)、MS Exchange (MAPI)、POP3 和SMTP。

    10 中间件:Jacada 和 Tuxedo (6、7)协议。

    11 流数据:Media Player (MMS) 和 Real 协议。
     
      流媒体是一个增长迅速的市场,使用流媒体可以在 Internet 上传送音频/ 视频内容。流媒体的含义是:可以将音频/ 视频内容传输给最终用户,而不需要首先下载整个文件。流式传输的工作原理是:让服务器在客户端显示内容的同时将内容源源不断地传输到客户端。RealPlayer 和 Media Player 都是显示流式内容的应用程序。
      使用 VuGen 可记录使用 RealPlayer 或 Media Player 协议进行通信的客户端应用程序与服务器之间的通信。

    12 无线:i-Mode、VoiceXML 和 WAP 协议。

        针对无线手机优化数据传输WAP 体系结构和 WWW 模型很相似。所有内容都被指定使用类似于标准Internet 格式的格式。在 WWW 域中,使用标准协议传输内容,在无线域(无线会话协议)中,则使用优化的类似于 HTTP 的协议传输内容。可以使用WWW 标准 URL 来查找所有 WAP 内容。
       WAP 使用很多 WWW 标准,包括创作和发布方法。WAP 以能够反映设备和网络特征的方式增强了某些 WWW 标准。增加了 WAP 扩展以支持移动网络服务,如“调用控制”和“消息传送”。它还顾及到了移动终端中存在的内存容量和CPU 处理能力等方面的限制。WAP 还支持低带宽和高滞后网络。
       WAP 假定存在负责对移动客户端发送和接收的数据进行编码和解码的网关。对传送到客户端的内容进行编码的目的是,尽可能减小在空中发送到客户端的数据的大小,同时尽可能减小客户端为处理该数据所需的计算能力。可以将网关功能添加到源服务器,或者放在专用网关中
       在通过录制和手动增强创建脚本时,与 Java Vuser 脚本相关的所有规则和限制都适用。此外,该脚本中使用的所有具体的类都必须位于执行 Vuser 的计算机上,并在 classpath 环境变量中加以指定.

Open Toolbar