性能测试系列:工作中的性能测试完整过程(学习总结)
一 性能测试发展阶段
1、初级——性能检测能力
知道并发用户数、响应时间、吞吐量;
知道负载测试、压力测试、疲劳强度测试、基准测试;
知道测试需求分析、测试方案制定、测试环境配置、测试数据准备、测试执行及测试结果分析;
编制性能测试方案:方案中应包括测试目的、测试依据、测试计划、测试内容、测试方法、测试环境;
使用商业化测试工具LoadRunner、开源的测试工具JMeter,能够识别应用协议录制脚本、简单调试脚本、配置测试策略、装载测试数据、收集测试数据;
分析交易的响应时间、支持的并发用户数、交易的吞吐量、网络的吞吐量、CPU的使用情况、磁盘读写情况;
2、中级——故障定位能力
故障诊断:
技术架构:负载均衡;
硬件:CPU、内存、硬盘;
网络:负载、延迟、传输故障;
软件:SQL语句、中间件配置;
应用:内存泄漏、线程级别、会话级别;
安全:防火墙;
故障分析:Youkit性能分析、Fiddler分析网络、Scribe、Chukwa日志系统
3、高级——性能调优能力
应用服务器调优:包括JVM调优、Server调优、JDBC调优、WEB、JMS、EJB调优;
数据库调优:包括核心参数调优、数据库连接池调优、SQL与索引调优、表及视图的调优;
操作系统调优:包括硬件的配置(CPU、内存、硬盘等)、核心参数、TCP/IP参数、补丁;
系统架构调优是系统层次上的优化,如采用Redis设置系统缓存数据库机制,减少数据库的访问代价。
建议性能优化:可从程序优化、业务处理方式优化、系统层次优化、系统架构优化、网络架构优化、硬件优化这个顺序展开。
二 性能测试完整项目流程
假设项目一个月,驻场。首先:
1、 所有文档模板甲方会提供,只填就行了。
2、 遇到功能阻碍等问题,联系甲方经理及时开会通知各方
第一周:
1、 开需求评审会,业务提供交易范围,通过业务人员了解每个业务路径,归纳相似业务,进行第一次剔除,再根据交易复杂度(包括流程长度的复杂度、造数复杂度)进行第二次剔除,一般挑流程只要一两步的业务,或者直接压一个接口。
评审挑出的业务。(有些会对每一步操作,选什么参数,都有详细要求)
2、 环境调研,尽量跟生产保持一致
3、 手动做通业务,编写脚本。
4、 编写测试方案,评审
第二周:
1、 检查测试环境,调试脚本,造数;
拿到系统要看配置,其中写配置信息要看是否开启了超线程。如何判断是否开启超线程。
搭建测试环境时,常遇到环境之间请求不通,多是由于防火墙。搭建环境时一定要检查防火墙配置。掌握linux系统防火墙有它就够了。
第三周:
1、 单基准,未达标的调优;
2、 单负载,未达标的调优;
informix登录数据库服务器后,切换到有onstat权限的用户,然后找数据库名,通过dbaccess命令可以查看,这个命令也是informix切换到数据库模式的命令。
可以用onstat -g sql 0查看全部的SQL
对某个sql查看其查询计划
set explain on avoid_execute;
select的sql
set explain off;
上面这三个sql写到xx.sql文件里,然后dbaccess 数据库名 xx.sql就行了。
这样在当前执行的目录下就会产生一个.out文件。命令详解+执行计划解析点我;
3、 混合负载,未达标的调优
4、 稳定性,未达标的调优(工作时间是8小时的,只运行8小时,7x24的,就跑12或者24小时,要根据数据量来)
5、 高可用; 性能测试系列:高可用测试linux常用命令;
第四周:
1、 统计测试结果; 测试监控系列:使用vb批量统计nmon结果;
给甲方看,甲方若有预期指标,就检测测试结果是否满足生产需要;若甲方没给指标,那就看结果他们是否满意。
2、 如果都满意,编写报告
三 性能测试过程总结
1.0 测试流程:后端性能测试包括性能需求获取、性能场景设计、性能测试脚本开发、性能场景实现、性能测试执行、性能结果报告分析、性能优化和再验证
1.1 测试方法
1.1.1 后端性能测试:通过性能测试工具模拟大量的并发用户请求,然后获取系统性能的各项指标
1.1.2 前端性能测试:关注的是浏览器端的页面渲染时间、资源加载顺序、请求数量、前端缓存使用情况、资源压缩等内容
典型规则:
1.1.2.1 减少 http 请求次数
1.1.2.2 减少 DNS 查询次数
1.1.2.3 避免页面跳转
1.1.2.4 使用内容分发网络(CDN)
1.1.2.5 Gzip 压缩传输文件
1.1.3 代码级性能测试:单元测试阶段就对代码的时间性能和空间性能进行必要的测试和评估
1.1.4 压力测试:压力测试往往被用于系统容量规划的测试
1.1.5 配置测试:主要用于观察系统在不同配置下的性能表现
1.1.6 并发测试
1.1.7 可靠性测试:是验证系统在常规负载模式下长期运行的稳定性
1.2 应用领域
1.2.1 能力验证
1.2.2 能力规划
1.2.3 性能调优
1.2.4 缺陷发现
1.3 测试工具
1.3.1 后端:
1.3.1.1 LoadRunner
1.3.1.2 JMeter
1.3.2 前端:
1.3.2.1 WebPagetest
1.4 测试类型
1.4.1 性能基准测试:通过对每个预发布版本的性能基准测试,我们可以保证新发布系统的整体性能不会下降,这也就是性能基准测试最终要达到的目的。
1.4.2 稳定性测试:成功标志是系统资源的所有监控指标不存在“不可逆转”的上升趋势、事务的响应时间不存在逐渐变慢的趋势、事务的错误率不超过 1%。
1.4.3 并发测试:集合点
1.4.4 容量规划测试:容量规划的主要目的是,解决当系统负载将要达到极限处理能力时,我们应该如何通过垂直扩展(增加单机的硬件资源)和水平扩展(增加集群中的机器数量)增加系统整体的负载处理能力的问题。
1.5 扩展知识:
互联网企业和传统软件企业的软件产品的后端性能测试,在原理以及基本方法上是基本一致的,区别较大的只是全链路压测。
互联网软件产品的全链路压测,由于需要实现海量并发以及流量隔离等操作,所以目前只有一些大型企业在做,比如饿了么、淘宝、ebay、美团等超级大的网站。
四 博客博文收藏
性能方面博主:
老_张;从最初的工具进化到了解决方案。
北京-宏哥;讲jmeter工具的。
一线码农;记录排查问题的;
性能方面文章: