发布新日志

  • 如何使用VSTS做性能测试 二

    ralf_540 发布于 2013-02-05 15:56:56

    1.1        新建LoadTest场景

    1.       选择新建一个Loadtest脚本

     

    VSTS中,我们可以认为Load test就是在建立一个测试场景,这个场景去加载执行测试脚本已达到压力测试的目的。

    2.       在建立Load Test后,系统会弹出一个建立场景的向导帮助用户完成相关的操作:

     

    3.       设置“Load Pattern”,系统提供了两种加载用户的方式:持续加载所有用户“Constant Load”,分布加载用户“Step load”。可以根据不同需要灵活配置达到不同的测试目的。

     

     

    4. Test Mix Model 选项中我们可以对虚拟用的加载方式进行控制,系统提供了以下三中的方式,利用这三种方式可以更好的模拟实际的系统负载。

     

    5. 选择要加载的web test脚本,在VSTS可以选择加载多个脚本。

     

    6. Test Mix 中可以选择每个脚本使用的虚拟用户的百分比。

     

    7. Browser Mix 中我们可以设置测试过程中模拟的浏览器的模式,通过下图我们可以看到VSTS中支持IE7Firefox IE6.0等多个浏览器模式,功能较为强大。

    8.Network Mix 中,我们可以设置模拟网络带宽,系统支持多种网络模式。

    9. Counter Sets 中我们可以设置想要监控的服务器的资源。添加一个服务器或者计算机到场景中,即可在测试的过程中添加计数器、监控系统资源

     

     

    10.Run Settings 中我们可是设置场景运行的时间和方式。

     

    11. 运行Run Test开始Load Test场景测试工作。

     

    12. 在测试界面中出现性能计数器,我们可以在右边的Counters 添加个人所需或者关心关键的性能计数器,计数器的选择需要根据系统的各方面的预先表现进行有针对性的添加。

     

    13. 在测试运行完毕后,系统会自动生成一份测试Summary 报告:

    生成的报告中包含 test run information ”、“over results”、“error”等等信息,帮助分析结果。

    1.2        添加事务点

          之前有过性能测试经验的同事可能会发现,在VSTS的录制界面中没有添加事务点、集合点的功能,如图:

    实际上我们可以在脚本生成后,在脚本中右键添加。由于在录制过程中会生成许多的requst请求,那么再想添加事务点时会有出错的可能。我们可以使先使用添加注释的方式标注事务点。

    在脚本中我们使用右键可以插入许多方法,其中包括添加事务点:

    1.3        添加计数器

    计数器的添加在VSTS中,不是很方便。只有在Load Test运行时才能够添加用户关心的计数器,使用不是很方便。

    对于添加我们想要监控的服务器可以使用以下步骤添加:

    1.在界面的Run Setting 中右键选择“Manage Counter Sets

     

    2. 选择“Add Computer”,并输入计算机名称即可选择需要监控的系统信息,如图:

    但是VSTS在运行时只会显示默认的一些技术信息,我们需要手工的去添加一些自己关心的计数器,是否能够保存设置,目前还是研究中。

    通过以上的步骤,我们可以完整的进行一次次压力测试。

    有关计数器详细列表和分析的相关内容,将在以后的学习中进行总结。

    2         工具分析

       对于使用VSTS进行压力测试,个人认为该工具能够基本完成轻量级的压力测试工作,而且在脚本可读性方面具有一定的优势。但是该工具也存在着一些缺陷:

    1.       VSTS只能进行基于web协议的压力测试,在协议扩展方面不强。如在RHIS系统中DAP模块的压力测试无法进行。

    2.       计数器只能在测试开始时进行,如果计数器添加多时,会极大的增加工作量,并且不能被保存,人性化不足。

    3.       出具的测试报告信息量较少,只能导出EXECLTEXT格式的报告。

    4.       监控的服务器上需要安装客户端,增加系统资源消耗。

    5.       不支持对中间件、数据库的监控,如was oracle 等等。但是支持.net环境和IIS 对目前的RHIS系统较为适用。

       VSTS这套工具集中许多测试工具,包括单元测试、手工测试、压力测试等等,功能比较强大,但是如果要专业化的测试性能和压力,VSTS中的Load Test 只能基本满足测试基于web协议的测试工作。

        目前在RHIS项目中可以对WEB系统进行测试,基本可以满足测试要求。

     

  • 如何使用VSTS做性能测试 一

    ralf_540 发布于 2013-02-05 14:32:49

       因为文档中图片较多,有需要的请留下联系方式,我回邮件转发,谢谢!

       支持原创,转发请注明出处,谢谢~

    1         前言

    1.1        目的

    本文档主要介绍如何在VSTS环境中进行LoadTest测试,给测试人员和初次使用者提供参考。

    对该工具进行LoadTest测试的优劣进行简单的分析说明。

    1.2        软件版本

    本文档中使用的VSTS 版本为2008

    VSTS visual studio team 2008 缩写。

    1.3        测试环境准备

    本次文档中使用的虚拟环境为RHIS 1.1 测试环境,VSTS2008工具安装在本机中。

    1.4        测试需求

    在测试VSTS是否适合在RHIS项目中进行Loadtest,个人认为需要在以下几个方面进考察:

    1.       工具能够录制和手工编写脚本,满足测试的需求。

    2.       工具能够进行参数化设置,对脚本中的部分变量进行参数化,已达到多用户并发的要求。

    3.       工具能够监控服务器和客户机的系统资源,以便输出报告进行软硬件性能瓶颈分析。

    4.       工具是否能够出具良好的测试报告。

     

    2         Loadtest测试

    2.1        测试步骤

    使用VSTS进行Loadtest测试时,基本步骤如下:

    1.       首先建立一个webtest脚本,录制或者手工皆可。

    2.       参数化测试脚本。

    3.       验证测试脚本

    4.       新建一个Loadtest脚本

    5.       建立场景,包括设计场景的各种设置,并发人数、运行时间、客户端等等

    6.       运行测试场景

    7.       添加服务器监控计数器

    8.       搜集测试结果,出具报告

    接下来我们就开始一步步的学习怎样使用VSTS进行一次完整的Loadtest测试。

     

    2.2        新建Test项目

    使用VSTS进行测试工作时,我们首先需要新建一个测试项目。

    1.       打开VSTS2008选择Test Team 进入界面:

     

    2.3        新建WebTest脚本

    1.       选择新建一个测试项目,并设置好项目的名称,存储路径:

    2.       在工具栏中选新建一个Test

      

     

    3.       在界面中我们可以看到VSTS中所支持的所有的测试类型。我们在这里选择webtest,设置好测试名称和存储路径:

               

    4.       在弹出的录制界面中,输入URL地址开始录制脚本

     

     

    5.       按照测试要求或者需要录制完毕脚本后,出现以下的界面

    6.       对于录制完毕的脚本我有时需要进行的参数化工作,在VSTS中可以利用特有的方式对测试脚本进行参数化,已达到测试需要。

     

    7.       选择需要进行参数化的步骤,在界面的右侧选择value,则可以进行参数化工作。选择“Add Data Source

     

    8.       在弹出的界面中,我们可以发现VSTS提供三种数据参数化模式“Databse”、“CSV File”、“XML File”三种方式,这里我们使用CSV文件进行参数化。

     

    点击“Next”,进行下一步

     

    9.       在文件选择界面中,选择参数化源文件,点击确认:

    10.界面中出现的列表即系统可以使用的参数数据:

    11. 点击“Finish”后,系统会出现提示信息,并在项目列表中出现数据源信息:

    12. 同样在右侧的工具栏中,可以看到参数化的相关信息:

    13. 参数完毕后,我们可以运行下脚本,检验脚本是否正确:

    点击Test工作区域的“Run Test”,检验脚本。

    脚本运行完毕后,我们看到脚本是否参数化成功:

    上面是脚本运行完毕后的报告页面。我们可以从上面得到许多相关的运行信息:脚本运行的当前步骤、测试结果、与步骤对应的WEB页面等等。

    Test脚本验证完毕后,我们可以进行下一步的Loadtest的工作。

     

  • Monkey原理

    bling123 发布于 2018-03-14 15:45:09

    1、Monkey 是一个可以运行在模拟器或设备上的程序,它可以生成用户时间的伪随机序列,如点击,触屏,或者抓取,也包含一系列的系统级的事件。我们可以使用Monkey对自己开发的应用程序做压力测试,使用随机且可重复的操作。

    2、原理:

    (1) 根本是通过runMonkeyCyles()方法循环获取事件,一个事件结束之后,通过调用getNextEvent()方法获取下一个事件

    (2) 获取事件是从事件队列里面获取,这是需要组建事件队列MonkeyEventQueue,队列由MonkeyEvent构成。

    (3) 将事件注入到系统:MonkeyEvent通过command设计模式将具体的事件(如:MonkeyActivityEventMonkeyKeyEventMonkeyMotionEvent)通过injectEvent()方法逐一注入到系统中。

  • QC基本操作汇总(上)

    suikuanger 发布于 2008-08-11 22:21:21

     

    若你为manager接一个项目,你会利用qc干什么?   

             

    第一步:1、项目管理:建域、建项目;                 

        2、人员管理:增加用户、用户与项目进行关联          

     

    TD----QC  站点管理员:QC后台进行管理; 项目管理员:具体的测试项目

    前台入口:http// IPport / qcbin / start_a.htm

    后台入口:http// IPport / sabin /

    主站入口:http// IPport / qcbin /

     

    一、  建域建项目

    1.  进入后台http// IPport / sabin /

    2.  切换到 site projects

    3.  建域:点击工具栏上Creat Domain,弹出对话框输入域名(以公司为单位可加地名,如BWFBJ(博为峰北京));

    4.  建项目:点击工具栏上Creat Project 选中域在其上点击右键---Creat Project---Create an empty project---输入project name---select project administrator---next---create激活;

     

    二、  增加用户(两种方法)

    方法one    

    1.以站点管理员身份登陆后台:http// IPport / sabin /

    2.切换到 site users

    3.左上角+ new user

     

    方法two

    1.  以项目管理员身份登录到前台http// IPport / qcbin / start_a.htm

    2.  TOOLS(左上角)----自定义菜单下的customize…

    3.  选择set up project users(第二个);

    4.  Add user ---new

     

    更改成员构成:后台—site users---选中成员点右键---pssworddelete

     

    三、  用户与项目关联(两种方法)

    方法one

    1.以站点管理员身份登录到后台:http// IPport / sabin /

    2.切换到 site projects

    3.选中项目---切换到project users

    4Add 即可从 users list中选择项目成员;

     

    方法two

    1.以站点管理员身份登录到后台:http// IPport / sabin /

    2.切换到 site users

    3.左边可选择需要关联的人员,选中变为阴影;

    4.右边切换user project---select projects—弹出最右边树型选择框---选择该人员对应的项目并搭钩,然后点击选择框右上方的箭头符号进行添加;

     

    第二步:内部测试方面的管理:                   

     

    QC四大功能模块:

    QC 中的模块

    测试过程阶段

    QC管理的内容

    Requirment

    测试计划和测试设计

    测试项和测试子项

    Testplan 

    测试实现

    测试用例

    Testlab

    测试执行

    测试执行策略+执行某次测试活动所执行的具体用例+执行结果

    Defect

    测试执行

    缺陷

     

     

     

     

        一、需求管理requirements

     

    ◎创建需求

    1.  以相应的用户登录到其项目的系统前台http// IPport / qcbin / start_a.htm

    2.  切换到requirements

    3.  点击该界面左上方的+按钮输入name等相关信息—submineg name:启动;需求编号:SRS-HAIDA-001)注:ReqIDqc自建的!

    4.  定义测试需求树---定义子需求(Attachments可以进行需求描述);

     

    分析测试需求:

    l         QA管理者对需求进行检查,置为“已复查”状态

    l         查看测试需求与测试计划的覆盖、缺陷的关联

    l         通过“覆盖范围视图”可以添加和修改测试覆盖范围

    l         通过创建报告和图表来统计需求

    l         也可将报告或图表导出保存

     


    本文出自夼儿洼地的51Testing软件测试博客,转载请保留出处及链接:http://www.51testing.com/?198615
  • QC缺陷流程图

    angelna 发布于 2009-03-17 19:14:01

    开发人员:
            reopen-fixed
            reopen-not fix
            reopen-rejected
            open-fixed
            open-rejected
            open-not fix

    测试人员:
            fixed-closed
            not fix-left
            rejected-abandon
            duplicate-abandon

    测试leader:
            new-open
            new-duplicate
            rejected-judge
            not fix-judge
            close-reopen

    仲裁人员:
            judge-rejected
            judge-reopen

  • 从Excel里面将测试步骤导入到QC中

    hmilyjch 发布于 2010-04-29 23:19:15

    主要是装一个QC plugin插件  叫做:QCMSExcelAddin.exe
    按照顺序装好


    在Excel 2007里
    加载项/可以看到Export To Quality Center
    点击该按钮
    可以按照步骤先连接到QC服务器上
    再设置字段和Excel列的对应关系

    最后,就可以导入成功

    注意:
        导入的时候需要选中待导入的测试用例的行,选择多了,就会导入出错


    整个过程中,最重要的是安装好插件
    插件安好了,没有什么特别的难处

  • 常用功能的测试检查表checklist

    linghan1991 发布于 2011-05-16 09:14:24

    1.必输项是否有红星标记,如果不输入提示是否跟相应的Label对应,提示的顺序是否跟Form输入域的排列次序一致;
    2.输入的特殊字符是否能正确处理:`~!@#$%^&*()_+-={}[]|\:;”’ <>,./?;
    3. Form下拉菜单的值是否正确,下拉菜单的值通过维护后是否正确显示并可用;下拉菜单比如是机构编码,要到机构编码的维护界面查询一下是否Form列出的与其一致;
    4.涉及到下拉菜单的编辑修改Form,要检查在编辑和修改From中,下拉菜单是否能正确显示当前值;
    5.Form提交后,要逐项检查输入的内容跟通过查询的结果一致;
    6.有多层下拉菜单选择的情况要校验两层菜单的选择是否正确;
    7.备注字段的超长检查;
    8.提交保存后能否转到合适的页面
    9.编辑Form显示的数据是否跟该记录的实际数据一致;
    10.编辑权限的检查,比如:user1的数据user2不能编辑等;
    11.可编辑数据项的检查,比如:数据在正式提交之前所有的属性都可以编辑,在提交之后,编号、状态等不能编辑,要根据业务来检查是否符合需求
    12.对于保存有事务Transaction提交,比如一次提交对多表插入操作,要检查事务Transaction的处理,保证数据的完整和一致;
    13.其他的合法性校验。

    查询功能检查点:
    1.查询输入Form是否正常工作,不输入数据是否查询到全部记录;
    2.当查询的数据非常多的时候,性能有无问题;
    3.查询的下拉菜单列出的数据是否正确;
    4.查询结果是否正确;对于复杂的查询要通过SQL来检查结果;
    5.如输入%*?等通配符是否会导致查询错误;
    6.查询结果列表分页是否正确,在点击下一页上一页时,查询条件是否能带过去,不能点击翻页时又重新查询;
    7.对于数据量比较大的表查询时,不容许无条件查询,避免性能问题的出现;
    8.对于查询输入项的值是固定的要用下拉菜单,比如状态、类型等;
    9.分页的统计数字是否正确,共X页,第N页,共X条记录等;
    10.对于查询有统计的栏目,比如:总计、合计等要计算数据是否正确;
    11.查询结果有超链接的情况要检查超链接是否正确;
    12. 查询权限的检查,比如:user1不能查询到user2的数据等;


    删除功能检查点:
    1.必须有“确认删除”的提示;
    2.根据需求检查是软删除还是硬删除,来检查数据库中是否还存在该条记录;
    3.是否有相关的数据删除,如果有要确认该相关的数据也已经删除,并且在同一事务中完成;
    4.是否有删除约束,如果有删除约束,要检查该记录是否被约束,如果被约束该记录不能被删除;
    5.如果是软删除,用查询、统计界面检查该条记录能否被查询出来,数据是否被统计进去;
    6.检查因为业务约束不能删除的数据能否被保护不能手工删除,比如:流程中已经审批的文件不能被删除;
    7.跟删除相关的权限问题,比如:需求要求只有管理员和该记录的创建人能够删除该记录,那就以不同的用户和角色登录进去,执行删除操作,检查是否与需求匹配;


    上传附件检查点:
    1.检查是否能正确上传附件文件;
    2.检查上传的文件是否能正确下载并打开;
    3.至少检查下列大小的文件能正确上传,0k,100k,1M,2M,4M,10M,20M等;
    4.如果没有指定类型的限制,至少上传以下几种类型的文件能否正确上传并正确打开,类型有:.doc,.xls,.txt,.ppt,.htm,.gif,.jpg,.bmp,.tif,.avi等;
    5.如果有文件类型的限制还要检查能上传的文件的类型;
    6.上传同名的文件,在打开的时候是否出错;
    7.有中文文件名的文件能否正确上传;


    影响操作性能的检查点:
    (不能代替系统性能测试压力测试,主要看系统在正常操作情况下的响应和处理能力)
    1.对数据记录条数比较多的表的查询操作,避免全表查询,比如对银行用户账号的查询就不能缺省全部查出,必须让用户输入查询条件;
    2.菜单树,测试大量数据时菜单树的响应情况;
    3.有日志的查询或者统计,要注意查询的效率;
    4.大报表的处理或者批处理的操作,要关注效率,比如:银行对帐、财务年终结算、财务年报表、系统初始化等;
    5.大报表的排序sort、组函数的使用等;
    6.大数据量的处理,如导入、导出、系统备份、文件传输等;

    文章出处:CNBLOG / 作者:卖烧烤的鱼

  • 巧测字段最大长度

    zdlzx 发布于 2011-08-31 12:47:37

    相信在测试过程中,大家都会碰到一个费时又枯燥的工作,即测试输入项可接受的最大长度是否符合需求。尤其是当一个新系统刚开发的时候,有大量的字段需要测试。而当众多的新功能需要测试的时候,这个测试点常常优先级不高,测试人员往往只是挑了其中一些重要的或者偶然碰到的字段进行了测试,有时甚至忘记这档子事了。不幸的是,根据来自生产环境的缺陷报告,我们几乎每个项目都碰到过由于用户输入了超长的字段而产生的产品缺陷,有的甚至严重妨碍了用户操作。这个差异告诉我们应该要测试字段的最大长度,而且要用一种更简单易行的办法使得做这个工作的代价较低。

     

    James Bach在他的网站(http://www.satisfice.com/tools.shtml) 上发布了他写的一个小程序Perlclip,可以用来生成一定规律的指定长度的字串,放在windows的剪贴板中,然后你可以粘贴到任何你想要输入的字段中。这是一个适用范围比较广的小工具,如果你还在自己手工输入长串数据,并且用word去计算这个字串的长度。那么建议你至少可以向前走一步,试试James的工具。

    有时,我们还需要贪心一点。想想,James工具只能一个一个地准备数据,而把这些数据粘贴到对应的输入框里还是需要手工来做。看数据字典、生成字串、粘贴、提交、验证;看数据字典、生成字串、粘贴、提交、验证。。。如此五步需要大量重复,是否也可以自动化呢?让我们以一个基于ExtJSweb应用为例,借助Sahi这个开源的轻量级web自动化工具,来尝试测试字段最大长度的更省力的办法。

    思路1: 从页面元素得到它的长度限制,然后生成一个最大长度的字串和一个最大长度加1(此处用边界值法简化)的字串,进行测试。但困难在于页面元素的长度限制在UI层得不到,只好放弃。

    思路2:在整个页面的字段中找到那个允许长度最长的字段,然后以这个最长的长度加1的随机串去填充各个某种特定输入类型(如textbox或者textarea)的所有字段,保存,看是否每个字段都报错。报错时页面应该提示数据非法(所有有长度校验的字段都失败),且此时失败的字段个数及相应的提示(最大长度是多少)应与数据字典一致。(需要人工检查)如果 DB出了异常,我们应该可以从服务器返回的信息或者异常的日志中知道哪个字段出错。

     

    这个思路没有大的问题,但是在我们具体的程序实现技术下碰到了两个问题。一、我们程序的页面上有些list因为也是textbox类型,所以被赋了值非法的长值。这并不是我们想要的,因为它把非法值的校验的和长度的校验揉杂在一起了。所以,我通过数据字典那边只抽出需要校验自由输入的长度的字段来屏蔽这个问题。二、我发现一些系统生成的只读的textbox字段,如某对象的ID,不应该通过我们的Sahi程序将它的值修改掉。还有一些UI不可见的元素,如开发人员设计中特意用到的一些oid,因为也是textbox类型,如果用我们的长字串代替了就会出错。所以我仅仅对UI可见的且非只读的textbox来做。经过上述修正,最后我的方法如下:

     

    准备工作:

    1. 准备一个包含两列的excel,第一列是需要验证字段长度的字段名,第二列是该字段允许的最大长度。当然,你也可以准备一个三列的excel,其中多一列字段的类型,以便你既可以生成字串又可以生成数字。

     

    步骤:

     

    1.    打开一个待测试的页面

    2.    跑验证字段长度的脚本

    a.    excel中每个页面label对应的textbox都填上excel中指定长度的字符串,然后一起保存。预期结果应该是保存成功(不因为字段长度的校验而失败)。以此方法还可以顺便就把label拼写错误(UI label与数据字典label匹配不上)的情况轻松地暴露出来。

    b.    excel中每个页面label对应的textbox都填上excel中指定长度再加1的字符串,观察系统行为。如果在前台已经做了校验,则观察前台的提示。如果前台不会禁止掉用户的超长输入,则通过保存来提交后台,预期结果应该是保存失败。

     

     

  • web性能测试基本性能指标

    chj_0205 发布于 2011-08-14 12:51:23

    Web性能测试的部分概况一般来说,一个Web请求的处理包括以下步骤:

    (1)客户发送请求

    (2)web server 接受到请求,进行处理;

    (3)web server 向DB获取数据;

    (4)web server生成用户的object(页面),返回给用户。给客户发送请求开始到最后一个字节的时间称为响应时间(第三步不包括在每次请求处理中)。

    1.事务(Transaction

    web性能测试中,一个事务表示一个从用户发送请求->web server接受到请求,进行处理-> web server DB获取数据->生成用户的object(页面),返回给用户的过程,一般的响应时间都是针对事务而言的。

    2.请求响应时间

    请求响应时间指的是从客户端发起的一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间,在某些工具中,响应通常会称为“TTLB”,即"time to last byte",意思是从发起一个请求开始,到客户端接收到最后一个字节的响应所耗费的时间,响应时间的单位一般为或者毫秒。一个公式可以表示:响应时间=网络响应时间+应用程序响应时间。标准可参考国外的3/5/10原则:

    1)在3秒钟之内,页面给予用户响应并有所显示,可认为是“很不错的”;

    2)在3~5秒钟内,页面给予用户响应并有所显示,可认为是“好的”;

    3)在5~10秒钟内,页面给予用户响应并有所显示,可认为是“勉强接受的”;

    4)超过10秒就让人有点不耐烦了,用户很可能不会继续等待下去;

    3、事务响应时间

       事务可能由一系列请求组成,事务的响应时间主要是针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出的.例如:跨行取款事务的响应时间就是由一系列的请求组成的.事务响应时间是直接衡量系统性能的参数.

    4.并发用户数

    并发一般分为2种情况。一种是严格意义上的并发,即所有的用户在同一时刻做同一件事情或者操作,这种操作一般指做同一类型的业务。比如在信用卡审批业务中,一定数目的拥护在同一时刻对已经完成的审批业务进行提交;还有一种特例,即所有用户进行完全一样的 操作,例如在信用卡审批业务中,所有的用户可以一起申请业务,或者修改同一条记录。

      另外一种并发是广义范围的并发。这种并发与前一种并发的区别是,尽管多个用户对系统发出了请求或者进行了操作,但是这些请求或者操作可以是相同的,也可以是不同的。对整个系统而言,仍然是有很多用户同时对系统进行操作,因此也属于并发的范畴。

      可以看出,后一种并发是包含前一种并发的。而且后一种并发更接近用户的实际使用情况,因此对于大多数的系统,只有数量很少的用户进行严格意义上的并发。对于WEB性能测试而言,这2种并发情况一般都需要进行测试,通常做法是先进行严格意义上的并发测试。严格意义上的用户并发一般发生在使用比较频繁的模块中,尽管发生的概率不是很大,但是一旦发生性能问题,后果很可能是致命的。严格意义上的并发测试往往和功能测试关联起来,因为并发功能遇到异常通常都是程序问题,这种测试也是健壮性和稳定性测试的一部分。

    用户并发数量:关于用户并发的数量,有2种常见的错误观点。 一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把在线用户数量理解为并发用户数量。实际上在线用户也不一定会和其他用户发生并发,例如正在浏览网页的用户,对服务器没有任何影响,但是,在线用户数量是计算并发用户数量的主要依据之一。

    5.吞吐量

    指的是在一次性能测试过程中网络上传输的数据量的总和.吞吐量/传输时间,就是吞吐率.

    6、 TPStransaction per second

    每秒钟系统能够处理的交易或者事务的数量.它是衡量系统处理能力的重要指标.

    7、点击率

    每秒钟用户向WEB服务器提 交的HTTP请求数.这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位.如果把每次点击定义为一个交易,点击率和TPS就是一个概念.容易看出,点击率越大,对服务器的压力越大.点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个 HTTP请求.

    8.资源利用率

    指的是对不同的系统资源的使用程度,例如服务器的CPU利用率,磁盘利用率等.资源利用率是分析系统性能指标进而改善性能的主要依据,因此是WEB性能测试工作的重点.

    资源利用率主要针对WEB服务器,操作系统,数据库服务器,网络等,是测试和分析瓶颈的主要参考.WEB性能测试中,更根据需要采集相应的参数进行分析。

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

    ?-g4piw*BF&@T128935

    指标51Testing软件测试网r!HA0HL|

    说明51Testing软件测试网H}1iT:j4P T

    ProcessorTime服务器CPU占用率,一般平均达到70%时,服务就接近饱和
    Memory Available Mbyte可用内存数,如果测试时发现内存有变化情况也要注意,如果是内存泄露则比较严重
    Physicsdisk Time物理磁盘读写时间情况

    lr@!GWAz|128935Web服务器指标51Testing软件测试网BHQBB'Q Sn

    指标

    'F-mOY1^128935

    说明

    +vH/Oa,_aByCW }128935
    Requests Per Second(Avg 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尝试链接数

    a0C9rn1X)Q128935数据库服务器性能指标

    RSPu9Z(O_(rn9|!w128935

    指标51Testing软件测试网K8],Ng.|9KmI

    说明51Testing软件测试网%S.?rR"^.j-R.a\

    User 0 Connections用户连接数,也就是数据库的连接数量
    Number of deadlocks数据库死锁
    Butter Cache hit数据库Cache的命中情况

    ^$]j(`6T Ro128935系统的瓶颈定义

    hf#k$t'g128935

    性能项

    m*pU5\M'c;S;|5[128935

    命令51Testing软件测试网$](jc{,\@ {|

    指标51Testing软件测试网 ^No5v4^v%@:D`

    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等待并运行队列
    51Testing软件测试网.k,g,_eo0wP

      稳定系统的资源状态51Testing软件测试网L(dGx;rQ\(B%S{ ji

    51Testing软件测试网X$Ya1Pa a+n w@f#p

    性能项51Testing软件测试网 ^ R zH0hS[O|.h

    资源51Testing软件测试网@vcLW| Yi

    评价51Testing软件测试网i5G U+t#L%g

    CPU占用率70%
    85%
    90%+很差
    磁盘I/0<30%
    <40%
    <50%+很差
    网络<30%带宽
    运行队列<2*CPU数量
    内存没有页交换
    每个CPU每秒10个页交换
    更多的页交换很差
    Y$~&pu?(z3vC128935

    /U1p+Q;w#Y2YyN(wa,\128935  通俗理解:

    3F*g{4n3KC128935

    4Y(Q}}5]U x+{ g128935  日访问量51Testing软件测试网@1\5z#`h*J.{,T1p

    51Testing软件测试网8HFx"l!fn5n1zL@+`A

      常用页面最大并发数51Testing软件测试网5^V4{M%[{

    51Testing软件测试网 l e YF?} BrvO

      同时在线人数51Testing软件测试网[4U3FoaU7P f#h!B

    51Testing软件测试网{j1AZb

      访问相应时间

    0]8vXc|K12893551Testing软件测试网8}V;L1b5Kl

      案例:51Testing软件测试网2sG+y*~yTe

    51Testing软件测试网-c7ua$bl,Ch

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

    K] X.g6S4~12893551Testing软件测试网V9?"i.s,Wv

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

    G;E3v E S12893551Testing软件测试网#Q,G X$Vj,n)F

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

    *t]nf a'e/e12893551Testing软件测试网%j ~ s+@1iN

       一种则需要测试服务器能否接受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万个并发用户,那速度,也绝对是嗖嗖的。51Testing软件测试网DN To!Axc

    51Testing软件测试网;w kx\-IBr

      另外暴寒1下,光设置全部进入运行状态就需要接近6个小时。具体的可以拿1个系统来压一下看看,可能会出现以下情况:

    Y(mD Aj9v_12893551Testing软件测试网*{9A/f&vl{D

      1、服务器宕机;51Testing软件测试网'M J$~*P7hHK

    51Testing软件测试网kcZ6^Gqm

      2、客户端宕机;

    2Z%L,{SpZ@j128935

    Q|&Q~:H(S? zB5]128935  3、从某个时间开始服务器拒绝请求,客户端上显示的全是错误;

    aqcsn:d$]u'o128935

    1b&t+Nh e}!Q5Lp128935  4、勉强测试完成,但网络堵塞或测试结果显示时间非常长。假设客户端和服务器之间百兆带宽,百兆/10000=10K,那每个用户只能得到10K,这个速度接近1个64K的MODEM上网的速度;另外以上分析全都没考虑系统的后台,比如数据库、中间件等。

    O?m~ B%{[128935

    b8c l }Q)y$bn128935  1、服务器方面:上面说的那样的PC SERVER需要50台;51Testing软件测试网#U*Xr3C(`

    ,Wg{f:p;Gp){.r/w!]128935  2、网络方面:按每个用户50K,那至少5根百兆带宽独享,估计仅仅网络延迟就大概是秒一级的;51Testing软件测试网c,L_X"Gy)mO

    a,a fl:eE K4C Q128935  3、如果有数据库,至少是ORACLE,最好是SYSBASE,SQLSERVER是肯定顶不住的。数据库服务器至少需要10台4CPU、16G内存的机器;

    aBz3PA4FR7xX B128935

    U~C2C4m128935  4、如果有CORBA,那至少再准备10台4CPU、16G内存的机器;再加上负载均衡、防火墙、路由器和各种软件等,总之没个1000万的资金投入,肯定搞不定。51Testing软件测试网B"wN#?c

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

    0f5O-v!M X rr12893551Testing软件测试网j)t:eT!{D#c3X q

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

    1d"e^V$]!b Je U/D12893551Testing软件测试网]I4IRYzy/[/Z

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

  • 外连接和内连接,左连接和右连接的区别及实例

    kakamissyou 发布于 2010-10-23 18:40:05



    http://alansun.javaeye.com/blog/196238

    实例:

    table1:StuInfo

    StuNo      NAME           Age
    2010001srliu28
    2010002gengbi24
    2010003xiaoniuniu24

    table2:StuCredit
    StuNo          Credit
    2010001   88
    2010002   99

    1.内连接,这个就不用说啦,就是两边都有StuNo

    select Info.NAME,Credit.credit from StuInfo as Info inner join StuCredit as Credit on Info.StuNo=Credit.StuNo

    2.外连接,比如这个要求查没有成绩的人,就用

    select Info.NAME,Credit.credit from StuInfo as Info LEFT join StuCredit as Credit on Info.StuNo=Credit.StuNo
    结果:
    srliu 88
    gengbi 99
    xiaoniuniu NULL

    查询结果中Credit为NULL的人就是没有成绩的

    可是如果仅仅要实现这个要求的话,这样的结果看起来不太令人满意。用这个就可以

    select * from StuInfo where StuNo not in (select StuNo from StuCredit)

    以上仅仅是为了演示一下,内连接外连接的用法了

数据统计

  • 访问量: 1176
  • 书签数: 1
  • 建立时间: 2008-05-24
  • 更新时间: 2008-10-24

RSS订阅

Open Toolbar