对于一个多用户的应用程序,性能是非常重要的。性能不仅是执行的速度,它包括负载和并发方面。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. PHP逻辑运算符中的and和&&以及or和||是有区别的

    下图是PHP的逻辑运算符: 看图中and和&&都是“与”,而or和||都是“或”,初开起来没有区别,但实际上这里面有一个优先级别的区别,即: &&和||的优先级别要高于 ...

  2. Laravel 上传文件处理

    文件上传 获取上传的文件 可以使用 Illuminate\Http\Request 实例提供的 file 方法或者动态属性来访问上传文件, file 方法返回 Illuminate\Http\Uplo ...

  3. CSS 如何让Table的里面TD全有边框 而Table的右左边框没有

    比如这样一个CSS.td3{font-size: 14px;color: #FFFFFF;background-color: #000000;BORDER-RIGHT: #f6f6f6 1px sol ...

  4. 【转载】RHEL / CentOS 7 用 Yum 安裝 MySQL 5.6

    久久未更新... 换好工作出去玩耍了一趟, 现在安装机器啦~ 装一个mysql 到centos 7, 一次转载一篇文章, 记录下: 原文地址:http://www.phpini.com/mysql/r ...

  5. Gym 100792C Colder-Hotter (三分)

    题意:系统有一个点对,让你去猜,每次你猜一个,如果这个数和系统里的那个点距离比上一个你猜的近,那么返回1,否则返回0,第一次猜一定返回0,在不超过500次的情况下,猜出正确答案. 析:是一个简单的三分 ...

  6. Android实现求和运算

    实验要求: 用Android实现一个界面,在该页面点击实现加法运算. 代码实现 实现结果 输入结果为空时,如图 问题及解决 函数中使用了强制转换,当输入字符串是也能转换为int型数据,但是当输入字符时 ...

  7. 团体程序设计天梯赛L1-017 到底有多二 2017-03-22 17:31 155人阅读 评论(0) 收藏

    L1-017. 到底有多二 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一个整数"犯二的程度"定义为该数 ...

  8. SDJZUOJ迷宫问题

    题目描述 小明置身于一个迷宫,请你帮小明找出从起点到终点的最短路程. 小明只能向上下左右四个方向移动. 输入格式 输入包含多组测试数据.输入的第一行是一个整数T,表示有T组测试数据. 每组输入的第一行 ...

  9. chrome一个奇怪的问题

    我去........... 这牢骚发完了才发现,  多谢了个e 呃................. ================================= 晚上用bootstrap搭建一 ...

  10. android AlertDialog.Builder(Context context)换行

    今天无意中发现AlertDialog的 setMessage(String)的换行问题,很多人都说\n可以,不过的却原来就在java里面写好的是可以换行 ,但是如果这个string是在网页或者是其地方 ...