.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

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
22天前
|
安全 Linux 测试技术
提升龙蜥内核测试能力!探究持续性模糊测试优化实践
清华大学软件学院对Anolis OS使用靶向模糊测试方法将测试工作引向修改的代码,进而提高对业务代码的测试能力。
|
2月前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
51 4
|
3月前
|
存储 测试技术 持续交付
自动化测试与持续集成/持续交付(CI/CD):优化软件开发流程的利器
自动化测试与持续集成/持续交付(CI/CD)是现代软件开发中至关重要的环节,通过将自动化测试与持续集成/持续交付相结合,可以实现开发流程的高效优化,提高软件质量和交付速度。本文将探讨自动化测试与CI/CD的概念、原理及其在软件开发中的重要性,以及如何实施这些技术以提升团队的协作效率和软件交付质量。
57 1
|
3月前
|
jenkins 测试技术 持续交付
软件测试:基础概念
软件测试:基础概念
43 0
|
4月前
|
测试技术 UED
软件测试/测试开发|软件测试基础概念
软件测试/测试开发|软件测试基础概念
32 0
|
7月前
|
自然语言处理 测试技术 C#
NSubstitute:一个简单易用、灵活多变的.NET单元测试模拟框架
NSubstitute是一个开源的.NET单元测试模拟类库,该框架设计的主要目标是提供一个简单明了、易用性强、贴近自然语言的模拟测试框架。它使得开发者能够专注于测试工作,而不是纠结于测试替代实例的创建和配置。
78 5
|
3月前
|
监控 数据可视化 Java
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
53 1
|
1月前
|
敏捷开发 分布式计算 测试技术
深入理解软件测试中的自动化框架选择与优化策略
【2月更文挑战第29天】 在软件开发的生命周期中,测试环节扮演着至关重要的角色。随着敏捷开发和持续集成的普及,自动化测试成为确保软件质量和加快产品上市速度的关键手段。本文将探讨在构建自动化测试框架时面临的挑战,分析不同类型自动化框架的特点及其适用场景,并提出一系列优化策略,旨在帮助测试工程师提高测试效率,确保测试结果的准确性。
21 0
|
1月前
|
敏捷开发 分布式计算 数据管理
探索自动化测试在持续集成环境中的优化策略
【2月更文挑战第18天】 在高速迭代的软件开发过程中,自动化测试已成为确保产品质量和加快交付速度的关键。本文深入探讨了自动化测试在持续集成(CI)环境中面临的挑战,并提出了一系列优化策略。通过对测试流程、工具选择和测试数据管理等方面的细致分析,旨在为软件测试人员提供实用的改进方法,以提高自动化测试的效率和准确性。
|
8月前
|
测试技术
软件测试开发的基本概念
软件测试开发的基本概念