博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
性能测试流程详解
阅读量:2070 次
发布时间:2019-04-29

本文共 3215 字,大约阅读时间需要 10 分钟。

一.性能测试类似的称呼

  1. 压力测试:高压力下进行操作,看系统反应
  2. 负载测试:看能承受多大的负载,加压一直到崩溃
  3. 并发测试:广义,大量用户使用同一系统;狭义,大量用户使用同一系统
  4. 配置测试(对软硬件微调,充分利用资源)
  5. 可靠性测试

二.性能测试流程

  1. 了解需求
  2. 分析测试点
  3. 选取测试工具
  4. 编写测试计划
  5. 搭建测试环境
  6. 执行测试
  7. 性能调优
  8. 测试报告
  9. 评审

三.性能测试的一般指标

  1. 吞吐量(PV)、吞吐率(TPS等)
  2. 响应时间(RT)/ 应用响应时间(ART):3秒以内
    注意:响应时间包括呈现,数据传输,系统处理
  3. 事务成功率:99%以上
  4. 稳定波动正常范围
  5. CPU、内存、磁盘、网络带宽 都小于70%

四.测试需求分类

一定要仔细确认需求,不但体现你的专业,还能减少你的工作

1)新系统能力验证

比如,你们刚好开发了一个新系统,在上线前需要验证系统性能。这种情况比较简单;你可以有更多的自由选择测试环境、压力点和测试工具;测试策略上也比较灵活。并且如果性能测试结果没有明显的短板,也不需要进行调优。

2)客户有明确要求

这是一个好的结果,这说明客户对性能测试有一定的了解,知道他们需要的系统要达到一个什么样的标准。如:系统要求同时满足100用户登陆,平均每个用户登陆时间不能超过5秒。这个需求很明确,当然也不排除一些不懂装懂的用户,提一些不现实的要求。

不管怎么说,用户提要求了,这个比较容易,你可以对现系统做一次性能测试,至于,是通过优化系统还是增加硬件设备才能达到要求。就不是测试考虑的问题了。

3)找出系统性能瓶颈

这个需求的目的就很明确了,目的就是找出系统的性能瓶颈,进行调优或硬件扩容,所以性能测试的重点在系统的架构分析和业务分析上面。

4)稳定性验证(强度测试)

稳定性是系统的一个重要指标,因为系统一旦上线,就有可能会长期处在用户的访问状态,可能以前没发现的一些问题就会暴漏出来。比较典型的就是内存溢出,这种需求在测试策略上就要考虑性能测试的运行时长。

注意: 当拿到需求时一定要问测试的目的,一方面会显得你很专业;另一方面,我们通过测试目的可以知道后续性能测试工作的重点在哪儿?最主要的是,还可以揣摩出领导对这次测试的重视程度。_!

五.了解系统架构

前端,后端,数据库,中间件

vue + webpack

Linux + uwsgi + Nginx + python + MySQL

六.分析测试点

性能测试点的选取:

  • 发生频率非常高的(例如:某邮箱核心业务系统中的登录、收发邮件等业务,它们在每天的业务总量中占到90%以上)
  • 关键程度非常高的(产品经理认为绝对不能出现问题的,如登录等)
  • 资源占用非常严重的(导致磁盘I/O非常大的,例如某个业务进行结果提交时需要向数十个表存取数据,或者一个查询提交请求时会检索出大量的数据记录)

一般性能需求描述:

1、Web首页打开速度5s以下,Web登陆速度 15s以下。

2、邮件服务支持50万个在线用户

3、计费话单成功率达到99.999%以上。

4、在100个并发用户的高峰期,邮箱的基本功能,处理能力至少达到10QPS(TPS). QPS(TPS)–每秒钟请求/事物 数量

5、系统能在高于实际系统运行压力1倍的情况下,稳定的运行12小时。

6、这个系统能否支撑200万的VU(每天登录系统的人次) VU–Virtual user(虚拟用户)

七.根据测试点选取测试工具

工具,脚本,见仁见智,根据公司和需求进行选择

八.编写测试计划

1.简介

2.测试需求
3.测试环境
4.数据准备
5.测试工具
6.测试策略(采取什么策略来进行测试)
7.人力和时间安排(很多测试需要多个人员共同完成)

九.测试环境的搭建

保证测试环境与生产环境的一致性 :

1、硬件环境,包括服务器环境、与网络环境
2、软件环境,版本一致性,配置一致性
3、使用场景的一致性,基础数据的一致性,使用模式的一致性
注:由于资源的原因,环境很难完全一致,就会通过一些其他的方式进行模拟或者其他方法。

十.测试执行

1、准备测试数据

2、使用测试工具模拟测试点,回放OK
3、根据测试策略,使用不同的虚拟用户和测试组合 运行测试。
4、监控系统CPU、内存、中间件,数据库的性能,收集数据。
5、重复3、4。

十一.调优

  • 步骤一:确定问题

应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。

数据库配置:经常引起整个系统运行缓慢,一些诸如oracle 的大型数据库都是需要DBA进行正确的参数调整才能投产的。

操作系统配置:不合理就可能引起系统瓶颈。

硬件设置:硬盘速度、内存大小等都是容易引起瓶颈的原因,因此这些都是分析的重点。

网络:网络负载过重导致网络冲突和网络延迟。

  • 步骤二:分析问题

当确定了问题之后,我们要明确这个问题影响的是响应时间吞吐量,还是其他问题?是多数用户还是少数用户遇到了问题?如果是少数用户,这几个用户与其它用户的操作有什么不用?系统资源监控的结果是否正常?CPU的使用是否到达极限?I/O 情况如何?问题是否集中在某一类模块中? 是客户端还是服务器出现问题? 系统硬件配置是否够用?实际负载是否超过了系统的负载能力? 是否未对系统进行优化?

通过这些分析及一些与系统相关的问题,可以对系统瓶颈有更深入的了解,进而分析出真正的原因。

  • 步骤三: 确定调整目标和解决方案

得高系统吞吐量,缩短响应时间,更好地支持并发。

  • 步骤四:测试解决方案

对通过解决方案调优后的系统进行基准测试。(基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试)

  • 步骤五:分析调优结果

系统调优是否达到或者超出了预定目标?系统是整体性能得到了改善,还是以系统某部分性能来解决其他问题。调优是否可以结束了。

最后,如果达到了预期目标,调优工作就基本可以结束了。

十二.一般系统瓶颈

性能测试调优需要先发现瓶颈,那么系统一般会存在哪些瓶颈:

  • 硬件上的性能瓶颈:

一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL 语句、数据库设计、业务逻辑、算法等)。

  • 应用软件上的性能瓶颈:

一般指的是应用服务器、web 服务器等应用软件,还包括数据库系统。

例如:中间件weblogic 平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。

  • 应用程序上的性能瓶颈:

一般指的是开发人员新开发出来的应用程序。

例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够),造成系统在大量用户访问时性能低下而造成的瓶颈。

  • 操作系统上的性能瓶颈:

一般指的是windows、UNIX、Linux等操作系统。

例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。

  • 网络设备上的性能瓶颈:

一般指的是防火墙、动态负载均衡器、交换机等设备。

例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。 性能测试出现的原因及其定位十分复杂,这里只是简单介绍常见的几种瓶颈类型和特征,而性能测试所需要做的就是根据各种情况因素综合考虑,然后协助开发人员\DBA\运维人员一起定位性能瓶颈。

参考测试教程网 http://www.testclass.net/performance

转载地址:http://awjmf.baihongyu.com/

你可能感兴趣的文章
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
【Linux】进程的理解(二)
查看>>
【Linux】vim的简单配置
查看>>
ThreadLocal 那点事儿(续集)
查看>>
笔记本怎么设置WIfi热点
查看>>
如何实现字符串的反转及替换?
查看>>
Java面试题全集(上)
查看>>