攻破性能测试,这篇文章就够了!
今天我们来聊一聊, 性能测试, 相信通过本篇文章, 大家对性能测试会有深入的了解.
1.什么是性能测试
性能测试是为了验证在一定环境下系统满足性能需求的测试, 主要是验证性能指标(响应时间, 吞吐量, 资源利用率, 事务等)
2.压力测试和负载测试:
压力测试
使系统处于超过预期负载的状态下,验证系统持续处理业务的能力,主要目的是检查系统在峰值负载情况下的应用表现,以及系统什么时候出现异常。
负载测试:
对系统不断施加负荷(并发用户数),验证系统在不同负载(不同数量的并发用户)下的性能表现(不关注稳定性,也就是不关注长时间运行)。
在实际测试中,我们从较小的负载开始,逐步增加负载(并发用户数量)直至系统的某项或多项性能指标达到安全临界值,主要目的是找到系统处理能力极限和性能临界点
3.软件应用性能约束---硬技能
1.网络环境
2.硬件设备(CPU、内存、存储设备)
3.操作系统、应用中间件、数据库、WEB代理服务等选型
4.数据库设计和数据库访问实现(SQL语句)
5.系统架构(同步、异步)
6.后台代码编写
7.前端设计与编码
8.客户端浏览器的选型与版本
4.性能测试学习基础要求---硬技能
基本的C、Java语法
工具的基本使用, 如Jmeter、Loadrunner等
数据库基本语法及数据库架构原理, 如Mysql, Oracle, Postgres等
linux系统安装部署、常用命令
应用中间件: Tomcat, nginx, apache, Weblogic部署安装
网络协议及JDK等
5.性能测试三步曲 --- 价值最大化(如何使用最少成本达到性能目标)
性能测试的需求是非功能需求, 如果需求没做好或开发没做好, 才会有性能测试问题
第一: 负载, 通过模拟真实用户发起请求实现对系统的压力
第二: 监控 通过不断加压, 持续监控系统各种性能指标
第三: 调优 对软件的架构和配置及代码进行调优
6.如何获取有效的性能测试需求
1.客户提出明确的性能需求
2.根据之前版本的测试数据进行分析
3.需求分析与定位
4.参考其它同行业的项目
5.参考其它资料数据
6.分析被测系统特性
7.性能测试点(功能点/业务)的选取
1.是否为关键业务
2.用户常用的功能
3.访问量大的功能点
4.占用系统资源较多的功能点
5.可能造成系统瓶颈的业务流程
6.从生产环境提取响应时间较长的业务
8.常见的性能需求
示例 1:
系统登录时间 5s 以内。
示例 2:
主要功能的单点操作在 2 秒钟内完成;
系统支持 50 用户并发,响应时间 5 秒以内;
在20%用户处于系统登录,20%用户处于创建客户,20%用户处于信息删除,40%用户处于信息查询状态下,系统 50 用户在线的吞吐率(TPS)应达到 30 事务/秒。
注:单点操作指单用户对单一功能点的操作。
示例 3:
系统支持 100 并发用户
50 个并发用户进行核心业务新增操作响应时间不超过 5 秒
50 个并发用户进行核心业务查询操作响应时间不超过 3 秒
示例 4:
平台最大用户数不低于 1000
最大并发用户数不低于 200
在硬件和网络环境正常的基础下,50 个并发用户凭证保存时间不超过 10 秒,科目明细账查询时间不超过 2 秒
示例 5:
要求并发用户 100 以上,并能在硬件资源配置合理的前提下,在 3-5 秒内做出响应,最大相应时间不能大于 5 秒
9.性能调优
针对性能测试过程中发现的性能瓶颈,配合项目相关人员进行性能调优。性能调优是指为软件提供较佳的性能,用于解决系统响应速度太慢等问题。
一般观察到的性能问题现象有:
响应时间太长
系统的 TPS 低于预期
相同的环境, 但TPS(每秒事务数) 比之前低
资源利用率长时间处于耗尽的状态(如 CPU、内存、硬盘或网络等)
通常性能调优的目标是。
性能调优是持续的错误尝试,因为大部分情况下无法一眼看出问题所在,需要不断的修改和尝试看看结果如何。如果没有文档记录,你可能会在性能调优的迷宫中打转,做一些类似而重复的事情,但总理不出头绪。所以我们每一次尝试都需要有文档记录。
攻破性能测试, 仍然需要大量的积累, 欢迎大家持续关注公众号"软件测试藏经阁", 会持续更新大家最关注的软件测试, 测试开发, 车载测试, 性能测试等核心内容。