.net性能测试和优化1 基本概念

简介: 软件的性能问题是个绕不开的问题,最近看了这方面的一本书,把主要的内容笔记一下 Performance, load, and stress testing 性能测试 负载测试 压力测试 http://www.51testing.com/?uid-61747-action-viewspace-itemid-3036 性能测试的目的不是去找bugs,而是排除系统的瓶颈,以及为以后的回归测试建立一个基准。

软件的性能问题是个绕不开的问题,最近看了这方面的一本书,把主要的内容笔记一下

Performance, load, and stress testing

性能测试 负载测试 压力测试

http://www.51testing.com/?uid-61747-action-viewspace-itemid-3036

性能测试的目的不是去找bugs,而是排除系统的瓶颈,以及为以后的回归测试建立一个基准。而性能测试的操作,实际上就是一个非常小心受控的测量分析过程。

负载测试的目的找到一些在测试流程中前面的阶段所进行的粗略测试中没有被找出的bugs,例如,内存管理bugs,内存泄露,缓冲器溢出等等。保证应用程序达到性能测试中确定的性能基线。这个可以在运行回归试验时,通过加载特定的最大限度的负载来实现。

尽管性能测试和负载测试似乎很像,但他们的目的还是有差异的。一方面,性能测试使用负载测试的技术,工具,以及用不同的负载程度来测度和基准化系统。在另一方面来讲,负载测试是在一些已经定义好的负载程度上进行测试的,通常对系统加上最大负载之后,系统应该仍然可以提供全部功能。这里需要明确一点,负载测试并不是要对系统加载上过度的负载而使系统不能工作,而是要使系统像一个上满了油的机器嗡嗡叫.

压力测试是指通过对系统加载过度的资源或者例系统没有应该具有的令系统可以正常运作的资源,来使系统崩溃(在某些情况的时候,它又可以叫做负面测试)。

Profiling

.net程序有两种profiling的过程: performance-based / memory-based

Ø performance-based profiling

n 性能Performance profiling measures how long a method or function may take to run

Ø memory-based profiling

n 内存 memory profiling measures how much memory certain aspects of the application (or even individual objects) use

测试度量基本工具和查看指标 Performance and Load Test Metrics

性能监视器工具PerfMon tool (perfmon.exe)【Windows环境内置的一个工具】,如下是些参考资料,这个基本工具可以用于初步的侦测

MSDN http://technet.microsoft.com/zh-cn/library/cc749249(WS.10).aspx

使用性能监视器监视系统性能/运行情况 http://www.cnblogs.com/MaoBisheng/archive/2010/07/18/1780024.html

性能监视器使用http://wenku.baidu.com/view/255287f9941ea76e58fa04a9.html

使用性能监视器找出硬件瓶颈http://www.ygbk.info/archives/39.html

http://wenku.baidu.com/view/e3ee86a3b0717fd5360cdc16.html

Visual Studio Team Test

开发工具进行测试

Chapter 15 — Measuring .NET Application Performance

http://msdn.microsoft.com/en-us/library/ms998579.aspx

基本度量Basic metrics

CPU利用率和内存使用率

Web程序度量Web application basic metrics

response time / requests per second

Time to First Byte (TTFB)

其他的度量项

一些主要的度量项

基本类别

Category: Processor

• % Processor Time

Category: Process

• % Processor Time

• Working Set

Category: Memory

• Available Mbytes

• Pages/Sec

• Page Faults/Sec

Category: .NET CLR Memory

• Gen 0 heap size, Gen 1 heap size, Gen 2 heap size

• #Gen 0 Collections, #Gen 1 Collections, #Gen 2 Collections

Category: .NET CLR Exceptions

• # of Exceps Thrown / sec

Category: .NET CLR Jit

• % Time in Jit

Category: .NET CLR Security

• % Time in RT Checks

Category: .NET CLR Locks and Threads

• Total # of Contentions

• Contention Rate/Sec

Web/ASP.NET 类别

Category: ASP.NET

• Application Restarts

Category: ASP.NET Applications

• Pipeline Instance Count

• Requests in Application Queue

• Request Execution Time

• Requests/Second

Database

Category: Physical Disk

• Avg. Disk Queue Length

Category: SQL Server: SQL Statistics

• Batch Requests/Sec

Category: SQL Server: Databases

• Transactions/Sec

本系列是系统的看了下面的图书的一些总结和心得

.NET Performance Testing and Optimization

The Complete Guide

Paul Glavich and Chris Farrell

ISBN: 978-1-906434-40-3

相关文章
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
535 11
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
2342 8
|
缓存 JavaScript 中间件
如何测试中间件优化后的 Pinia 状态管理?
如何测试中间件优化后的 Pinia 状态管理?
522 163
|
定位技术 开发者
游戏开发者如何使用独享静态代理IP进行测试与优化
随着互联网技术的发展,使用代理IP的人数逐渐增加,特别是在业务需求中需要使用静态代理IP的情况越来越多。本文探讨了独享静态代理IP是否适用于游戏行业,分析了其优势如稳定性、不共享同一IP地址及地理位置选择等,同时也指出了需要注意的问题,包括可能的延迟、游戏兼容性和网络速度等。总体而言,选择合适的代理服务并正确配置,可以有效提升游戏体验。
291 2
|
JSON 测试技术 API
优化你的 REST Assured 测试:设置默认主机与端口、GET 请求与断言
REST Assured 是一个强大的 Java 库,用于简化 RESTful API 测试。本文详解了其核心功能:设置默认主机和端口以减少代码重复、发起 GET 请求并验证响应结果,以及通过断言确保接口行为符合预期。同时推荐 Apipost 工具,助力开发者提升 API 测试效率,实现更高效的接口管理与团队协作。掌握这些技巧,可显著优化测试流程与代码质量。
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
408 4
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
人工智能 监控 测试技术
探索软件测试中的自动化框架选择与优化策略####
【10月更文挑战第21天】 本文深入剖析了软件测试领域面临的挑战,聚焦于自动化测试框架的选择与优化这一核心议题。不同于传统摘要的概述方式,本文将以一个虚拟案例“X项目”为线索,通过该项目从手动测试困境到自动化转型的成功历程,生动展现如何根据项目特性精准匹配自动化工具(如Selenium、Appium等),并结合CI/CD流程进行深度集成与持续优化,最终实现测试效率与质量的双重飞跃。读者将跟随“X项目”团队的视角,直观感受自动化框架选型的策略性思考及实践中的优化技巧,获得可借鉴的实战经验。 ####
207 0
|
数据可视化 JavaScript 前端开发
利用Postman和Apipost进行API测试的实践与优化-动态参数
在API测试中,Postman和Apipost是常用的工具。Postman内置变量功能有限,面对复杂场景时需编写JavaScript脚本,增加了维护成本。而Apipost提供丰富的内置变量、可视化动态值配置和低代码操作,支持生成真实随机数据,如邮箱、手机号等,显著提升测试效率和灵活性。对于复杂测试场景,Apipost是更好的选择,能有效降低开发与维护成本,提高测试工作的便捷性和可维护性。
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
410 13