性能测试基础---性能测试基础指南

·企业对于性能测试工程师的要求:
  ·要求熟练掌握至少一种性能测试工具,并且能够实现性能测试脚本的开发。
  ·能够获取、分析、提炼性能需求。
  ·能够根据性能需求去进行测试场景的设计和实现。
  ·能够根据性能的需要进行必要的监控。
  ·能够根据性能测试结果、集合监控、服务器日志等数据分析、定位性能瓶颈
  ·能够提出调优建议。
  ·能够根据需要编写合格的性能测试报告。
  ·具备良好的沟通表达能力、团队合作能力。
  ·掌握一些其他必要的工具。

·性能测试工程师所面临的挑战
  ·资源问题
    人力
    物力

  ·知识面问题:
    广度优于深度
    技术更新

·性能:
  什么是性能?
  性能是指事物的性质和能效。
  对于软件系统来说,性能指标、说法很多,但是性能从本质上来说,就是两点:
  ·how fast:是用来衡量一个系统的处理效率。
  ·how much:是用来衡量一个系统的处理能力。

PS:一般来说,论及一个系统的性能,必须要同时衡量这两点。
  系统的性能其实没有绝对意义上的好和坏,只有是否满足或者符合需求。

·常见的性能指标:
  性能指标很多,常见的一般有下列指标:
    ·响应时间:反应的一个系统的处理效率。
    工具的解析执行-DNS解析-连接的建立时间-请求的发送-服务器的处理时间-响应的接收。

  ·吞吐量:反应的是一个系统的处理能力。
    ·TPS/QPS:每秒事务数/每秒请求数。
    ·Throughput:统计的是数据流量,单位是byte。统计方式可以是网络流量or磁盘流量。

·资源利用率:
  事实上,资源利用率作为性能指标的意义远远小于其作为分析、定位性能瓶颈的数据的意义。
    一般来说,我们监控的资源是指:系统资源、服务器资源、数据库资源等。
    ·系统资源:CPU、内存、磁盘IO、网络带宽
    ·服务器资源:CPU、内存、连接数、GC等
    ·数据库资源:CPU、内存、缓存命中率、热点块、慢查询、执行计划等等。

PS:通常来说,响应时间和吞吐量指标都是由性能测试工具自身来提供。而资源利用率则可以通过专业的第三方工具来实现监控。

·负载用户的分类:
    性能测试的实现方式:通过性能测试工具在协议级别去模拟实现大量的虚拟用户去访问被测服务器。

    虚拟用户数取决于负载用户的数量。
    负载用户一般可以分为以下几类:
    ·系统最大用户数:理论上系统希望支持的最大用户。
    用户不一定是真实的人,可能是人、可能是设备、可能是接口的调用者。

·在线用户数:所谓在线是指长时间使用系统的人数。
  在线用户是小于等于系统最大用户数的。
  不同的行业,比例也有很大差异。

·并发用户数:
并发分为两种:
  ·严格意义的并发:对于服务器而言,服务器同时处理的请求的数量就是并发数。
    计算公式:服务器端并发处理能力=TPS*平均响应时间

    对于性能测试来说,是指同时发送给服务器的请求的数量。

·广义意义的并发:在线即并发。
  因为从某种意义上来说,用户在线即使没有发送请求(没有操作)、也是会要消耗服务器资源的,比如说连接数。

·性能测试的分类:
性能测试按目的可以分为以下几类:
  ·负载测试:测试目的就是为了得到系统的最大处理能力、最佳性能表现和最大有效负载用户数。
注意事项:
  ·负载用户的起点和变动。
  ·每一轮负载测试的环境的一致性。

·压力测试:是为了测试系统的稳定性。
实现方式:使得系统长时间在高压力情况下进行测试。
一般:7*24小时。

  ·容量测试:是为了测试系统在特定容量条件下的性能表现,或者通过测试去评估在特定容量条件下的性能表现。
  一般来说,系统容量是指以下方面:数据库、磁盘、网络带宽、连接数、缓冲池大小等。
  通常来说,数据库容量是我们在做性能测试的时候需要重点关注的。
要从以下几个角度考虑测试环境和真实线上环境的数据库的一致性:
  ·数据库的大小 单位是byte(GB\TB)
  ·数据库的级别 单位是条数。是指数据库中的记录的数量。
  ·数据特征

·基准测试:就是为了获取基准的性能指标。通常就是指响应时间和资源利用率
基准分为两种情况:
  ·同一轮次:通常来说建议取一个用户进行测试。

  ·不同轮次:以上一轮次为基准进行测试。

  ·配置测试:一般来说是为了获取系统的最低配置和推荐配置。
某些情况下,也会用于线上配置、线上环境性能的评估。

·并发测试:是为了测试系统是否存在资源争用、事务冲突、锁的升级等问题。

·性能测试工程师的自我修炼:
  ·了解操作系统
  ·了解计算机网络相关的知识。
  ·熟练掌握至少一种性能测试工具。
  ·熟练掌握至少一种服务器
  ·熟练掌握至少一种数据库
  ·熟练掌握至少一种编程语言。
  ·熟练文档的编写。
  ·具有良好的学习习惯和学习方式。

原文地址:https://www.cnblogs.com/wendy-0901/p/11576679.html

时间: 2024-11-03 19:18:50

性能测试基础---性能测试基础指南的相关文章

【腾讯开源】Android性能测试工具APT使用指南

[腾讯开源]Android性能测试工具APT使用指南 2014-04-23 09:58 CSDN CODE 作者 CSDN CODE 17 7833 腾讯 apt 安卓 性能测试 开源 我们近日对腾讯的安卓平台高效的性能测试工具APT团队进行了专访.APT,适用于开发自测和定位性能瓶颈,帮助完成性能基准测试.竞品测试.我们为大家准备了从安装部署到开启APT各功能的介绍资料,方便大家参考. 我们近日对腾讯的安卓平台高效的性能测试工具APT团队进行了专访.APT,Android Performanc

js基础--javascript基础概念之语法

掌握一门语言 必须先掌握它的语法! javascript 的语法和C.Java.Perl 的语法有些相似.但是比它们更加宽松. javascript 中的一切都是严格区分大小写的.例如变量: demo 和 Demo 两个变量是完全不同的. javascript 标示符,所谓标示符 是指 变量.函数.属性 的名字或函数的参数.标示符的格式是按照以下规则组合的一个或多个字符. 1.第一个字符必须是字母,下划线,或 $ 符号. 2.其他字符可以是字母.下划线.$ . 或数字. 注意 不能把关键字 保留

js基础--javascript基础概念之数组(二)

js基础--javascript基础概念之数组 数组栈方法 数组可以像栈一样.栈是一种先进后出的数据结构,最先添加的数据最后一个出来.栈方法添加数据也称为 推入  移除数据称为 弹出. js为数值栈方法提供了 push()   和  pop() ;  两个方法. push() push() 方法接受参数就是你要添加进入到数组的值.push()  方法会将他们逐一添加到数组的末尾  数组的length属性会跟着更新数据. *push(多个数组元素值) 返回的修改后的数组长度 var array =

js基础--javascript基础概念之数组

js基础--javascript基础概念之数组 在ECMAScript 中 ,数组是很常用的数据类型,js中的数组和其他很多语言的数组有明显的区别.js的数组可以保持任何类型的数值,一个数组中可以保存着多个不同类型的数值.js数组大小(长度)是可以调整的.可以随着数据的添加自动增长数组长度. 创建数组: 一.数组字面量 数组字面量由一对包含数组项的方括号[]表示. var array = [ 'kin', 'cheong', 'change', 'hello', 'haha', 'hi' ];

js基础--javascript基础概念之语句(二)

js基础--javascript基础概念之语句(二)label,break,continue.. break .  continue 语句. break  continue 语句用于在循环中精确控制代码的执行,其中break语句会立即退出循环,执行循环后面的语句. continue 则退出循环后返回到再次进入循环中. 如: var num = 0; for(var i = 0; i<=100; i++){ if(i >= 10){ break; } num = i; } alert(num);

[.net 面向对象编程基础] (7) 基础中的基础——修饰符

[.net 面向对象编程基础] (7) 基础中的基础——修饰符 在进入C#面向对象核心之前,我们需要先对修饰符有所了解,其实我们在前面说到变量和常量的时候,已经使用了修饰符,并且说明了变量和常量的修改符. 首先 修饰符是什么? 修饰符用于限定类型以及类型成员的申明 从定义可以看出按功能分为两类:访问修饰符和声明修饰符 1.访问修饰符 (5个) 访问修饰符 说明 public 公有访问.不受任何限制. private 私有访问.只限于本类成员访问,子类,实例都不能访问. protected 保护访

[.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

[.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如三元表达式,可以让你少写N多个if和case语句. 表达式 由 操作数(operand) 和 运算符(operator) 构成 1.运算符分类和优先级   2.运算符按操作数目分类   一元运算符 -x  x++  x-- 二元运算符 x+y  x+1 三元运算符 c ? x : y 3.表达式分类

js基础--javascript基础概念之变量与作用域

js基础--javascript基础概念之变量.作用域 javascript按照ECMA-262 的定义,变量与其他语言变量有所不同.js变量时松散的,不需要事先定义变量类型的.这使得他只是一个保存特定值的一个名称.变量与其数据类型可以在脚本的生命周期内改变. 还有明白几点: JavaScript的变量作用域是基于其特有的作用域链的,JavaScript没有块级作用域. 基本类型和引用类型的值 ECMAScript 的变量有两种不同的数据类型:分别是 基本数据类型值 和 引用类型值 : 基本数据

[.net 面向对象编程基础] (3) 基础中的基础——数据类型

[.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型存储,就跟我们买来衣服一样,裤子,上衣,冬天的,夏天的,总要分个类再放进衣柜中一样.越是高级的编程语言,数据类型分的越详细. 问题来了,这么多数据类型,我们是不是要一一记住,这真不是个省心的事情,不用怕,不用怕,不用怕,重要的事情说三遍. 重点:C#就15种数据类型. 准确来说,是15种预定义类型,

js基础--javascript基础概念之语句

js基础--javascript基础概念之语句 ECMA-262定义了一组语句(流程控制语句) 语句定义了EMCAScript 语法. 常见的if语句. 语法: if(condition) statement1 else statement2 其中.Condition 可以是任意表达式.而且对这个表达式求值的结果不一定是布尔值.因为script 会自动调用boolean 将值转换为布尔值.如果condition 的值是 true .则执行statement1 语句  否则  执行 stateme