我爱Aspx >> Asp.Net >> 用VS.NET中的测试工具测试ASP.NET程序ViewState是ASP.NET的一个重要的特性,但是并非总是需要的。实际上,大多数使用了ViewState的数据表格都是不需要它的。在例子中,通过禁止ViewState,我可以提高166%的性能。我们继续!
下一步,添加下面的代码以激活输出缓冲(OutputCaching):
| <%@ OutputCache Duration="60" VaryByParam="none" %> |
图5:输出缓冲 |
现在重新运行该测试。太惊人了!性能提高了600%,如图5所示。你可以调整OutputCache的持续数值,例如把OutputCache的持续值设置为1秒--你可以看到性能再次有很大的变化。
建立测试环境测试操作是CPU密集型的事务,因此在运行测试的时候,你可能看到CPU的占用率接近100%。它在与测试部件分享CPU时间的时候会拿走正在测试的应用程序的资源。所有的配置选项都会影响测试结果,其中一部分模拟现实世界要真实一些。例如,如果SQL Server和ASP.NET在同一台计算机上,就无法模拟网络I/O的开销。大多数应用程序使用的数据库都不在Web服务器上。
为了建立真实的测试环境,把大量的旧的用于开发的计算机作为客户端使用。不要使用虚拟机。在这些计算机上运行Application Center Test。下一步尽可能地模拟现实世界。在一个没有运行其它任何应用程序的服务器操作系统上运行该Web应用程序,并且连接到另一台服务器的数据库。
需要说明的是,在开发环境中运行"烟幕"测试也没有什么错误。烟幕测试不能模拟现实世界,但是仍然可以提供大量的有价值的数据,并且可以用于预计在现实世界中同样的测试产生的结果。
后续的步骤和测试覆盖现在你对如何测试和评估有了一些了解了,我推荐你在自己的应用程序上使用Application Center Test。了解你的用户在典型情况下如何使用应用程序是有好处的:哪些页面执行得更好,哪些页面没有改善?
例如,在Community Server中我们运行了多种类型的性能测试。主线(Mainline)测试包含了匿名和验证的情况。在大量个性化的应用程序中这一点可能显著的改变性能情况。
主线测试还包含了贯穿系统的通用路径,例如网络日志、图表、论坛的主视图,以及每个屏幕的不同视图。很明显,这些主线情形良好的执行情况是非常重要的,最好在这儿花费大量的时间以确保其正确性。
如果你管理或运行那些必须支持两个或多个并发用户的项目,并且你不知道自己的主页面每秒钟可以处理多少个请求,那么就遇到问题了。
如果你拥有性能测试脚本,那么在每次重要的修改之后都应该进行评估。如果实际上是你自己构造的代码,那么就可以经常深入源代码并且评价各部分和重新编译。这可以帮助你检查出问题在于程序编写得不好还是其它的原因。其它的原因有90%都出在数据访问代码部分。
你还可以测试应用程序中的通用路径。记录测试的时候,只需要输入用户可能使用的通用导航路径。Application Center Test将记录下这些信息,并且你可以重新播放准确的脚本。如果你喜欢,可以编辑生成的VBScript文件,给你的测试脚本引入延迟或其它有意义的输入信息。
我推荐的最后的测试需要做很多工作。例如,在Community Server中我们的开发者希望测试应用程序可以每分钟可以支持多少个post(张贴)操作。为了测试它,我们不是把内容写入窗体,而是建立一个新ASP.NET页面,它使用API来输入内容。接着这个页面在Application Center Test中运行,应用程序支持的每秒钟张贴操作的数量就产生了。换句话说,有时候为了测试所有的情形,你可能需要多做一些工作。
结论我没有解释Application Center Test提供的所有信息,但是我希望本文给了你足够的使用Application Center Test的知识,这样你才能够使用它来评估和改善自己的应用程序。请记住,建立基线、频繁的评估(至少在每次重大的修改之后)并识别出关键的部分。遵循这些简单的规则,你会对应用程序有更好的理解,并且很有希望找到提高性能的机会。
Ҷƪл˵?
通过避免10 个常见 ASP.NET 缺陷..[04-21]
ASP.NET 2.0服务器控件与form ru..[04-21]
使用 C# .NET 写入事件日志[04-21]
ASP.NET 2.0中Page事件的执行顺序[04-21]
ASP.NET Atlas 強力支援您期待已..[04-21]
在ASP.NET Atlas中调用Web Servi..[04-21]
文件压缩代码(为.Net2.0新增)[04-21]
ASP.NET 2.0+Atlas编写鼠标拖放程..[04-21]
ASP.NET2.0中Gridview中数据操作..[04-21]
ASP.NET 2.0中使用multiview控件[04-21]
通过避免10 个常见 ASP.NET 缺陷..[04-21]
ASP.NET 2.0服务器控件与form ru..[04-21]
使用 C# .NET 写入事件日志[04-21]
我的可爱的小外甥们小侄子们[04-21]
一个高中毕业生关于互联网创业的..[04-21]
BSP 模式的一些思考和结论[04-21]
RSS2.0中文规范详解及示例[04-21]
网易部落的rss弱智错误[04-21]
ASP.NET 2.0中Page事件的执行顺序[04-21]
雅虎搜虫大行动----快来抓毛毛虫..[04-21]