对于一个多用户的应用程序,性能是非常重要的。性能不仅是执行的速度,它包括负载和并发方面。Visual Studio是可以用于性能测试的工具之一。Visual Studio Test版或Visual Studio 2010旗舰版为自动化测试提供了支持。

介绍

对于一个多用户的应用程序,性能是非常重要的。性能不仅是执行的速度,它包括负载和并发方面。性能测试是对以下问题的回答

  • 我们如何确保我们的新的应用程序将支持预期的用户负载?
  • 如何避免在实际负载条件下会出现的问题?
  • 如何确定响应时间?
  • 如何规划服务器的容量?

Visual Studio是可以用于性能测试的工具之一。Visual Studio Test版或Visual Studio 2010旗舰版为自动化测试提供了支持。

这将是一系列文章的第二部分。

  • Part I: Web测试和配置

  • Part II:负载测试,RIG和负载测试术语。

  • Part III:性能计数器,负载测试结果分析。

负载测试(Load Test)

Load test 用于执行程序的负载测试。它可以模拟多个虚拟用户并执行测试脚本,以模拟真实用户在不同的服务器,如应用服务器,数据库服务器和Web服务器的负载。Load test可以使用任何的测试脚本。

术语说明
Think Time

Think Time是两个请求之间的时间。这可能是用户填写表单,浏览页面,或阅读一些文字等时花费的时间。Think Time用于模拟在真实用户的场景下,系统如何和一个真实用户的交互。

Constant Load (恒定负载)

Constant Load是指从测试开始到结束,有恒定数量的用户不间断地操作该网站。比如在1个小时的时间内,有25个用户正在使用该系统。所有25个用户不断地访问该系统。这种测试类型主要用于压力测试。

Step Load(阶跃负载)

在Step Load中,用户将阶梯式地加入。就是说在不同时期有不同的用户操作系统,并且用户的数量也不是恒定不变的。在Step Load模式下需要指定如下参数:

    • Start user count: -  测试开始时,有多少用户操作该系统
    • Step duration:- 每隔多少秒后下一批用户将加入该系统
    • Step user count:- 一个阶梯时间段后,多少个用户将加入系统
    • Maximum user count:- 最大的用户数是多少。

测试组合(Test Mix)

测试组合指定不同的场景在系统中如何被执行或使用。不同的测试组合的设定是通过对系统使用情况的研究来形成的。

例如,如果我们在做某网络营销网站的负载测试,约60%的人会进行产品搜索,30%会买一些产品和10%会把产品保存为书签。根据这种使用情况的信息,就可以形成一个测试组合:60%的模拟用户将执行搜索脚本,30%将执行购买产品的脚本,其余的10%将执行把产品保存为书签的脚本。

负载测试的创建

在项目上点击鼠标右键,选择Add- >New Test - >Load test模板。这将打开新的负载测试向导

接下来,指定场景的名称,如"booking the ticket","searching a book"等。接下来指定Think Time profile。我们可以使用Web测试中记录的录制的的Think Time,也可以使用时间正态分布的Think Time。我们还可以使用第三个选项来避免使用Think Time。

接下来,指定负载模式。指定我们是否要使用constant load还是step load模式。在constant load模式中指定用户数。在step load的情况下,指定start user count,step duration,step user count和maximum user count。 


接下来,指定测试组合模式。提供的不同的选项有:

[下面的定义来自Visual Studio]

基于总测试数(Base on the total number of tests)

确定虚拟用户启动测试迭代时运行哪个 Web 性能或单元测试。 在负载测试结束时,运行特定测试的次数与分配的测试分布相匹配。 使测试组合基于 IIS 日志或生产数据中的事务百分比时,可使用此测试组合模型。

基于虚拟用户数(Based on the number of virual users)

确定将运行特定 Web 性能或单元测试的虚拟用户的百分比。 在负载测试中的任何时候,运行特定测试的用户数都与分配的分布情况相符。 使测试组合基于运行特定测试的用户的百分比时,可使用此测试组合模型。

基于用户节奏(Based on user pace)

在负载测试过程中,每个用户每小时运行每个 Web 性能测试或单元测试指定的次数。 如果希望虚拟用户在负载测试过程中以特定节奏运行测试,则可使用此测试组合模型。

基于顺序测试顺序(Based on sequential test order)

每个虚拟用户按照在方案中定义测试的顺序运行 Web 性能测试或单元测试。 虚拟用户以此顺序持续循环进行测试,直到负载测试完成为止。

(译者:简单来说,第一种配置每个虚拟用户每次执行的脚本都是随机的,所有用户执行的脚本总数的比例是确定的;第二种配置每个用户都执行固定的一个脚本,所有用户执行的脚本的总数的比例是确定的;第三种指定每个脚本在一个小时内需要运行的次数,客户端只需要完成这些工作量;第四种每个用户都循环地顺序地执行每个脚本)

接下来,指定测试组合。在测试组合中,我们将添加多个Web测试脚本到负载测试中。如果我们只有一个脚本,所有用户都将执行相同的任务。如果我们有2个或更多的脚本,我们可以指定有多少用户需要执行特定的任务。

例如,我们有两个脚本,一个用于搜索一本书,另一个用于购买一本书。在我的负载测试中,我可以指定70%的用户做搜索,剩下的30%做另一个操作。

测试组合是模拟真实的用户体验。有些功能被很多用户用到而另一些则没有那么频繁第被使用。取决于功能的使用情况,来测试系统,这将提供一个真正的性能结果。

在下面的例子中,我们选择了两个Web测试脚本,并指定测试组合为65%的用户将执行Webtest1,35%将执行Webtest2。

接下来,指定网络组合(Network Mix)。在这里,我们可以模拟网络如局域网,广域网或互联网,并且对系统在不同网络中的性能进行比较。

接下来,指定浏览器的组合(Browser Mix)。这对于确定系统是如何在不同的浏览器中执行是非常有用的。

接下来,增加作为web服务器、应用程序服务器和数据服务器的计算机系统,用于收集性能计数。为每个系统添加所需的性能计数器。

(译者:确保你的帐号被添加到各个服务器的Performance Monitor Users组中,这样控制器才有权限访问各个服务器)

接下来,指定测试的持续时间或迭代次数。如果设置了一个预热期,负载测试会在预热期逐渐地自动增加负荷。

一旦您完成创建负载测试,它会创建一个象下面这样的.loadtest文件。从下面的界面中,我们可以直接编辑和添加的所有设置。

选择constant Load模式,并选择相应的属性。从属性面板中,我们可以改变负载模式为Constant, Step或者 Goal based。

Goal based load test(基于目标的负载测试)用于找到满足条件的最大用户负载。例如,在这里,我们设定的目标为平均响应时间应为8分钟,一旦系统达到的目标,将停止执行。同样的方法,我们可以通过使用基于目标的测试,以找到处理器利用率70%的最大负荷。 

从Run Settings属性,我们可以改变的运行时间(Run Duration),网络测试连接池的大小(WebTest Connection Pool Size),网络测试连接模式(WebTest Connection Model),预热持续时间(Warm-up Duration)等。

我们可以指定计数器的阈值。一旦达到警戒水平时,它会显示警告。当它达到临界阈值时,请求将启动失败。 

您可以添加自定义计数器和计数器集到计数器集合。

从Scenario的属性中,我们可以改变的思考时间配置和对应的思考时间。

执行负载测试

选择“Run Test”来执行负载测试。

一旦测试开始,你可以在下面的屏幕中观察到不同的性能计数器和测试状态。您可以拖动左侧的计数器把它放置到图形区域,这将为相应的计数器显示图形。请求汇总和测试汇总下可以在概览部分中观察到。

我们可以从表格项中观察到的请求,错误,页面,事务和其他的细节,比如失败的次数,响应时间,内容长度。

您可以更改图形显示选项,如只显示一个图形,或两个垂直图,四纵板等

结果

一旦执行负载测试完成后,显示如下的汇总报告。

我们可以可以使用”Create Excel Report”来将报表导出到Excel。它创建了一个Excel报表的多个工作表来描述平均响应时间,测试运行,页面时间等,

我们可以创建两种类型的报告:

    • 趋势 - 创建一个Excel报表为选定的运行结果创建趋势图。
    • 比较 - 创建一个Excel报表来比较两个或更多运行结果。
    • Detail选项将允许我们在点状图中研究的测试结果。我们可以在底部区域选择一段时间,研究在特定的时期的趋势。

Rig(远程测试机组)

有时,在性能测试中,我们需要对系统进行非常高负载的测试。每台机器能够产生的负载时有限的。在一个电脑系统中,我们可以产生最多500至800个用户的负载。如果你需要更多的负载,我们需要添加多个电脑系统来执行负载测试。如果我们从多个系统中运行它,那么测试结果的分析和综合报告的创建将是困难的。

Rig是在多个客户端系统运行负载测试的解决方案。我们需要在一个系统上安装负载控制器(Load Controller)并在其他系统上安装负载代理(Load agent)。VSTS的Rig的是一组系统,它包括一个控制器和一个或多个代理。控制器将工作分配给代理,并且收集所有代理的数据,并建立一个单一的报告。

负载控制器,负载代理的安装和配置,请参考http://blogs.msdn.com/b/edglas/archive/2007/02/17/load-agent-and-load-controller-installation-and-configuration-guide.aspx

总结

Load test可用于在系统上执行不同的性能测试。我们可以通过设置不同的测试组合,用户负载,压力条件,网络组合,浏览器和负载模式来测试系统。通过查询下SQLEXPRESS中的LoadTest或者LoadTest2010数据库,Load test会生成一个详细的报告,此外,从结果中,我们可以创建一个Excel的趋势报告或比较报告。总结报告可以保存为HTML文件。

在PartIII中,我们将研究的重要性能计数器和性能测试结果分析。

Visual Studio进行负载测试,RIG和负载测试术语- Part II的更多相关文章

  1. Visual Studio 2015的安装和简单的测试

    首先是Visual Studio 2015的安装 Visual Studio是微软开发的一套基于组件的软件开发工具,目前最新的版本是2015. 在 I Tell you 网站下载Visual Stud ...

  2. visual studio 开发工具SVN集成工具,测试可用,成功集成

    使用说明:https://www.xiazaiba.com/html/24864.html 下载地址:点击下载集成插件

  3. 使用Visual Studio Team Services进行压力和性能测试(一)——创建基础的URL压力测试

    使用Visual Studio Team Services进行压力和性能测试(一)--创建基础的URL压力测试 概述 压力测试使应用程序更加健壮,并审核在用户负载下的行为,这样我们可以在当前的基础设施 ...

  4. Visual Studio 2017RC 版本相关资料

    Visual Studio 2017 RC版本说明 1.社区版 Visual Studio Community 2017 RC Visual Studio Community 2017 RC 是针对个 ...

  5. 11个Visual Studio代码性能分析工具

    软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...

  6. 在WINDOWS中安装使用GSL(MinGW64+Sublime Text3 & Visual Studio)

    本文介绍在Windows下安装使用GSL库,涉及GSL两个版本(官方最新版及GSL1.8 VC版).msys shell.GCC.G++等内容,最终实现对GSL安装及示例基于MinGW64在Subli ...

  7. .NET 11 个 Visual Studio 代码性能分析工具

    原文地址 软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行 ...

  8. [转]基于Visual Studio 2010 进行敏捷/Scrum模式开发

    http://www.infoq.com/cn/articles/visual-studio-2010-agile-scrum-development 根据Forrester Research今年第二 ...

  9. 11 个 Visual Studio 代码性能分析工具

    软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...

  10. 阿里云服务器Web Deploy配置和使用Visual Studio进行Web项目发布部署遇到的坑

    阿里云的服务器一直闲着,烧着银子,当初花几千大洋开通,本想弄信息化的项目为所帮扶的贫困户脱贫助手,不想势单力薄,一直没有找到好的项目.最近大家都在众志成城抗击新肺疫情,于是又想能不能尽点自己的力量,于 ...

随机推荐

  1. ubuntu账户密码正确但是登录不进去系统

    ubuntu12.04管理员账户登录不了桌面,只能客人会话登录 求助!!ubuntu12.04管理员账户登录不了桌面,只能客人会话登录. ctrl+alt+f1 ,切换到tty1,输入管理员帐号和密码 ...

  2. UVa 10570 Meeting with Aliens (暴力)

    题意:给定一个排列,每次可交换两个数,用最少的次数把它变成一个1~n的环状排列. 析:暴力题.很容易想到,把所有的情况都算一下,然后再选出次数最少的那一个,也就是说,我们把所有的可能的形成环状排列全算 ...

  3. pointcloud(点云)与mesh(面元)模型的区别

    点元与面元

  4. DRBD+Heartbeat实现自动切换

    1>HeartBeat介绍 Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项 ...

  5. [翻译]Writing Custom DB Engines 编写定制的DB引擎

    Writing Custom DB Engines  编写定制的DB引擎   FastReport can build reports not only with data sourced from ...

  6. FIREDAC的TFDJSONDataSets和TFDJSONDeltas查询和提交数据

    服务端代码: uses Data.FireDACJSONReflect, FireDAC.Stan.Storage, FireDAC.Stan.StorageBin, FireDAC.Stan.Sto ...

  7. 8.使用Exists监控ZNode的三大Change事件

    一. zookeeper是一个分布式的协调程序(所有程序都是通过订阅它来相互感知)   1. tcp(长链接) + watcher server ->client client ->ser ...

  8. XEvent--基础

    --SQL Server 扩展事件具有高度可伸缩且高度可配置的体系结构,--使用户能够按需收集解决性能问题或确定性能问题所需的信息.--1. 性能损耗小--2. 可配置性高--3. 可捕获底层事件 - ...

  9. jenkins pipeline中执行nohup java -jar ***.jar & 的时候会忽略执行jar之后的命令

    搜索关键词:pipeline中执行nohup时忽略执行& 问题: 在做自动化部署的时候,脚本如下: sh "ssh root@'$target_ip' nohup '$java_ho ...

  10. Tomcat启动报错Invalid character found in method name. HTTP method names must be tokens

    1.tomcat服务器需配置三个端口才能启动,安装时默认启用了这三个端口,当要运行多个tomcat服务时需要修改这三个端口,不能相同. 端口一: 修改http访问端口(默认为8080端口),配置文件为 ...