tion Center Test运行的专用代理服务器。经过浏览器的任何请求都会被Application Center Test代理捕捉到。
为了完成测试,请关闭浏览器对话框并把用于测试的ASP.NET页面的链接粘贴到地址栏中。点击浏览器的"转到"按钮或直接按下回车键,再次出现了数据表格。下一步,关闭浏览器,你可能看到与图3类似的信息:
图3:捕捉到的请求
上面的对话框中的请求的详细信息部分现在被Application Center Test代理捕捉到的请求所填充了。这也是浏览器发送的HTTP请求。现在点击"停止记录",接着点击"下一步"。你会得到一个提示,需要给该测试输入一个名称(我用的是"My Test"),接着你可以点击"完成"关闭向导。
恭喜你!你现在是一个性能测试工程师了--很容易,对吗?
你还可以选择很多其它的设置信息和配置选项。你右键点击"测试"列表中的"My Test"节点并选择"属性" 可以看到这些设置。在这些选项中你可以模拟多个浏览器、多个用户、"热身"时间的参数(不会被报告其结果)以及测试的持续时间。你可以以后研究这些设置并阅读一些讨论测试原理和测试策略的文章。我们不在细节上花费太多时间,直接运行测试吧。
运行测试并建立基线
要运行刚才建立的测试,只需要简单地右键点击该测试并选择"开始测试"。测试开始以后,点击"显示详细信息"按钮。细节框中将显示正在运行的测试的一个图表,同时显示在运行测试过程中可能出现的任何错误(图5所示)。第一次运行这个测试建立了基线,我们可以把它与当前的和未来的性能进行对比。图4显示的基线是每秒大约90个请求。
图4:基线图表
现在你拥有了一个确定的基线了,你可以对应用程序作一些修改以测量修改所引起的性能提升或降低。的确,我使用的测试示例极其简单,但是我会显示出对这一小段代码进行少量的修改可能对应用程序的性能产生很大的影响。
了解改善的部分
评估的方面越多,改善的机会就越大。在例子中我将对应用程序作一些小的修改,并在每个修改之后进行评估。尽管在现实情况下你不可能每步修改都进行这样的测试,但是你应该有周期性检查性能的习惯。对于我们公司的Community Server产品,我们拥有一套用于评估总体应用程序开销的基线。如果进行了重大的修改,开发者就可以使用前面的测试数据来研究性能的提升或降低。
我对示例应用程序的第一处修改是改变返回数据量的限制。我把SQL查询SELECT * FROM Products改变为SELECT TOP 25 * FROM Products。这好像只是对代码进行了微小的修改。毕竟我只是限制屏幕中输出的数据量,但是其结果却是惊人的。其性能从每秒90个请求上升到200以上--性能提高了100%以上。由于你拥有基线,你知道了限制绑定到数据表格的数据量一定会影响性能。我还要修改其它一些东西。
下一步,修改<asp:DataGrid/>服务器控件,添加EnableViewState="false":
<asp:DataGrid EnableViewState="false" id="DataGrid1" runat="server" />
ViewState是ASP.NET的一个重要的特性,但是并非总是需要的。实际上,大多数使用了ViewState的数据表格都是不需要它的。在例子中,通过禁止ViewState,我可以提高166%的性能。我们继续!
下一步,添加下面的代码以激活输出缓冲(OutputCaching):
<%@ OutputCache Duration="60" VaryByParam="none" %>
图5:输出缓冲
现在重新运行该测试。太惊人了!性能提高了600%,如图5所示。你可以调整OutputCache的持续数值,例如把OutputCache的持续值设置为1秒--你可以看到性能再次有很大的变化。
建立测试环境
测试操作是CPU密集型的事务,因此在运行测试的时