性能测试概述

一. 什么是性能测试

1.1 生活中遇到的软件的性能问题

资源泄露,包括内存泄露

• CPU 使用率达到100%,系统被锁定

线程死锁,阻塞等造成系统越来越慢

查询速度慢,或者列表的效率低

受外部系统影响越来越大

1.2 性能测试定义

测试人员借助性能测试工具(Jmeter/LoadRunner),模拟系统在不同的场景下,对应的性能指标是否达到预期

1.3 性能测试和功能测试有什么区别

功能测试:依靠人工执行,不管在什么场景下,只要能正常运行即可

性能测试:依靠工具完成,保证功能在正常运行的前提下,验证软件在一些极端的情况下是不是能够正常运行

1.4 影响一个软件性能因素有哪些

硬件:服务器CPU利用率,CPU核心数,内存,磁盘操作频率,网络

软件:算法,编程语言

用户:用户并发数,用户使用时长,用户访问频率

二. 为什么要做性能测试

• 获取系统性能的指标,作为性能指标的基准

(例如我系统的v1.0版本登录所用时长20ms,v2.0版本登录时长30ms,可以根据v1.0版本作为基准,来判断以后的版本的性能)

• 验证系统的性能是否达到要求(性能需求)

应用程序是否能满足要求中各性能指标

应用程序是否能处理预期的用户负载并有盈余能力

应用程序是否能处理业务所需要的事务数量

在预期和非预期的用户负载下,应用程序是否稳定

是否能确保用户在真正使用软件时获得舒服的体验

• 发现系统的性能瓶颈,内存泄漏等问题

• 系统正常工作的情况下的最大容量

• 帮助系统运维部门能更好的规划硬件配置

三. 性能测试常见的术语及性能测试衡量指标

3.1 并发用户数

并发用户会对系统造成压力。

系统用户数:该系统的注册用户数。例如QQ里存在6666个注册用户,他们可以是活跃用户,也可以是僵尸的。不会对系统产生压力

在线用户数:例如QQ中状态有在线,有离线。指的是成功登录系统的用户数。不一定会对系统产生压力

业务层面的并发用户数:同时向服务器发送请求的用户数量

后端服务器层面的并发用户数:同时向服务器发送请求的请求数量

3.2 响应时间

性能测试概述_第1张图片

用户相应时间(从用户发送请求到接受响应):N1+A1+N2+A2+N3+A3+N4

请求响应时间(服务器收到请求到发送响应):A1+N2+A2+N3+A3

事务响应时间: 事务响应时间是指从事务开始到事务结束所经过的时间,包括了所有请求和响应的时间。性能测试中重要的综合性性能指标.

这里的一个事物是一个业务度量单位,是指一组密切相关的子操作的组合,比如,一笔电子支付操作,后台处理的时候可能需要经过会员系统,账务系统,支付系统,银行系统等,这就是是一个关于支付事务里面包含的操作.

每秒事务通过数: 

TPS 是指每秒系统能够处理的事务数,它是衡量系统处理能力的重要指标.

当压力加大时,TPS曲线如果变化或者有平坦的趋势,很有可能是服务器开始出现了瓶颈了.如果环境没有发生大的变化,对于同一系统会存在一个最大处理事务能力,它并不随着并发用户的增减而改变.

地铁站检票机:

只有10台进站检票的机器,1台机器1秒能进1个人

并发用户为5,则TPS为5

并发用户为10,则TPS为10

并发用户为30,则TPS仍为10

点击率: 点击数/时间

每秒点击数代表每秒用户向Web服务器提交的HTTP请求数,点击率越大,服务器压力越大

吞吐量: 用户一次请求和服务器之间的数据交互量

吞吐率: 吞吐量/时间

四. 性能分类

4..1 基准性能测试

让系统在正常情况下运行,观察软件性能指标,建立一个性能基准,作为以后性能测试的参考

应用场景: 软件刚上线需要进行性能摸底

4.2 负载性能测试

验证软件在一定压力情况下运行,观察性能指标是否出现了拐点

4.3 压力性能测试

不断的对系统施加压力,验证系统长期处于饱和状态下,观察系统性能指标(往往会把系统搞崩溃)

在不断地加压过程中,一旦系统出现拐点(从量变到质变),系统可能就会出现崩溃,揭露高负载下系统的问题,例如资源竞争、同步问题、内存泄漏等;软后逐渐减少压力,观察瘫痪的系统是否可以自愈

4.4 可靠性测试

验证系统在一个持续的时间段内运行,在这个运行时间段,观察系统各项性能指标是否正常

在一定的软硬件环境下,长时间运行一定的负载,确定系统在满足性能指标的前提下是否运行稳定。与压力测试不同的是系统的负载并不是处于极限的状态下。重点是满足性能要求的情况下,系统的稳定性,比如响应时间,TPS是否稳定。

五. 性能测试执行流程

需求分析 -> 测试计划 -> 选择性能测试工具 -> 性能测试脚本编写 -> 执行性能测试脚本 -> 产出一个性能测试报告

你可能感兴趣的:(java,开发语言)