一. 什么是性能测试
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 响应时间
用户相应时间(从用户发送请求到接受响应):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是否稳定。
五. 性能测试执行流程
需求分析 -> 测试计划 -> 选择性能测试工具 -> 性能测试脚本编写 -> 执行性能测试脚本 -> 产出一个性能测试报告