测试内容分享安排
分享内容 | 分享方式 | 分享时间 |
功能测试 | 在线 | 周五晚上8点至9点 |
性能测试 | 在线 | 周五晚上8点至9点 |
注:上面分享时间属于计划时间 ,具体分享时间请去QQ功能测群:467502959、性能测试群:11697006咨询
性能测试课程
1 职业发展
1.1 职业规划
1.2 大型互联网公司对测试人员的要求
1.3 个人职业发展定位于规划
2 性能测试基础知识
2.1 性能测试的概念
2.2 性能测试的意义
2.3 HTTP协议介绍
2.4 TCP/IP,TCP和UDP
2.5 WebService协议
2.6 Socket协议介绍
2.7 Cookie和Session
2.8 接口测试介绍
2.9 Java和JVM虚拟机
2.10 进程和线程的区别
2.11 服务端和客户端测试
2.12 链接数和连接池
2.13 数据库和NO-SQL
2.14 同步调用和异步调用
2.15 mock技术简介
2.16 Linux命令
2.17 互联网行业常用技术架构
3 性能测试体系
3.1 组织架构
3.2 职责描述
3.2.1 性能测试经理
3.2.2 性能测试分析师
3.2.3 性能测试工程师
3.3 性能测试流程
3.4 测试类型
4 性能评估模型
4.1 . 性能评估模型概述
4.2 . 闭环流程图
4.3 . TPS计算公式
4.4 . 影响因子
4.5 . 响应时间
4.6 . 稳定性要求
4.7 . 性能测试环境要求
4.8 . 并发量与吞吐量(TPS)的关系
4.9 . 线上性能数据采集
5 需求调研与分析
5.1 性能测试需求调研内容
5.1.1 . 项目背景
5.1.2 . 项目范围
5.1.3 . 项目目标
5.1.4 . 性能需求评估
5.1.5 . 性能测试指标要求
5.1.6 . 架构类
5.1.7 . 业务类
5.1.8 . 用户信息类
5.1.9 . 系统信息类
5.1.10 . 交易信息类
5.1.11 . 业务扩展类
5.1.12 . 生产系统历史交易量统计方法
5.2 业务模型分析
5.2.1 业务模型分析准则
5.2.1.1 分析目标 1
5.2.1.2 已上线系统 2
5.2.1.2.1 交易量分析 1
5.2.1.2.2 交易占比分析 2
5.2.1.2.3 单支交易分析 3
5.2.1.2.4 典型交易分析 4
5.2.1.2.5 批量交易分析 5
5.2.1.2.6 批量数据分析 6
5.2.1.2.7 生产问题分析 7
5.2.1.2.8 样例 8
5.2.1.3 未上线系统分析 3
5.2.1.3.1 风险分析 1
5.2.1.3.2 风险预防 2
5.2.2 业务模型分析过程
5.3 测试模型构建
5.3.1 业务场景来源与分类
5.3.2 业务场景来源
5.3.3 业务场景分类
5.3.4 业务场景与测试模型转换
5.3.5 测试模型调整
5.3.5.1 调整前提
5.3.5.2 调整原则
5.3.5.3 调整方法
5.4 压力与容量预估
6 性能测试准备
6.1 性能测试方案
6.2 测试策略
6.2.1 发起策略
6.2.2 执行策略
6.2.2.1 基准测试
6.2.2.2 单交易负载测试
6.2.2.3 混合场景测试
6.2.2.4 异常测试(健壮性测试)
6.2.2.5 高可用性测试
6.2.2.6 稳定性测试
6.2.2.7 其他场景
6.2.3 监控策略
6.3 性能测试环境申请
6.3.1 . 性能实验室申请流程
6.3.2 . 性能实验室资源状况
6.4 性能测试环境部署
6.4.1 . 环境搭建注意事项
6.4.2 . 环境启动常见问题FAQ
6.4.3 . Linux环境部署
6.4.3.1 . Linux基础命令
6.4.3.2 . Tomcat
6.4.3.2.1 参数配置
6.4.3.2.2 多实例部署
6.4.3.3 . Nginx
6.4.3.3.1 源码安装
6.4.3.3.2 参数配置
6.4.3.3.3 负载均衡配置
6.4.3.3.4 多域名配置
6.4.3.4 . Redis
6.4.3.4.1 源码安装
6.4.3.4.2 主从配置
6.4.3.4.3 多实例部署
6.4.3.5 . Dubbo
6.4.3.5.1 dubbo原理
6.4.3.5.2 zookeeper原理与搭建
6.4.3.5.3 spring和dubbo的集成
6.4.3.6 . 数据库
6.4.3.6.1 linux下数据库安装
6.4.3.6.2 参数配置
6.4.3.6.3 数据备份还原
6.4.3.7 . 实战nginx+tomcat+Java+mysql+redis环境部署
6.4.3.8 . 实战zookeeper+dubbo+spring+tomcat环境部署
6.5 资源监控工具部署
6.6 测试数据构造
6.6.1 . 业务接口构造测试数据
6.6.2 . 存储过程批量构造
6.6.3 . Java脚本构造测试数据
6.6.4 . LR构造测试数据
6.6.5 . JMeter构造测试数据
6.7 测试脚本开发
6.7.1 代码基础
6.7.2 http
6.7.3 WebService接口
6.7.4 Java脚本
6.7.5 Socket脚本
6.7.6 脚本规范
7 性能测试执行
7.1 性能测试工具
7.1.1 . Loadrunner
7.1.1.1 loadrunner简介和安装
7.1.1.2 LR工作原理
7.1.1.3 Vugen
7.1.1.3.1 录制与回放
7.1.1.3.2 关联、参数化
7.1.1.3.3 检查点、集合点
7.1.1.3.4 事物
7.1.1.3.5 常用函数
7.1.1.3.6 C语言函数扩展
7.1.1.3.7 思考时间
7.1.1.3.8 日志系统
7.1.1.3.9 参数和变量的转换
7.1.1.4 Controller
7.1.1.4.1 负载机管理
7.1.1.4.2 集群压力测试
7.1.1.4.3 场景设计
7.1.1.4.4 运行模式
7.1.1.4.5 并发用户管理
7.1.1.4.6 系统资源监控
7.1.1.4.7 常用图表
7.1.1.4.8 IP欺骗
7.1.1.5 Analysis
7.1.1.5.1 收集和分析结果
7.1.1.5.1.1 Analysis Summary
7.1.1.5.1.2 Running Vuser
7.1.1.5.1.3 Transaction Response Time(Percentile)
7.1.1.5.1.4 合并图
7.1.1.5.1.5 结果细分图分析
7.1.1.5.2 性能报告
7.1.1.5.3 Web性能诊断
7.1.1.6 录制及调试脚本
7.1.1.6.1 录制脚本前的设置
7.1.1.6.2 Run-time Setting设置
7.1.1.6.3 其他设置
7.1.1.7 脚本开发
7.1.1.7.1 http
7.1.1.7.2 https接口
7.1.1.7.3 WebService类型接口
7.1.1.7.4 JDBC接口-JavaVuser
7.1.1.7.5 Dubbo接口-JavaVuser
7.1.1.7.6 Socket接口测试
7.1.1.7.7 json接口
7.1.1.7.8 上传和下载场景处理
7.1.1.7.9 需要登录的接口场景处理
7.1.1.7.10 LR脚本扩展-C语言
7.1.1.7.11 APP脚本录制
7.1.1.7.12 Java
7.1.1.8 常见函数
7.1.2 . JMeter
7.1.2.1 JMeter介绍
7.1.2.2 JMeter安装
7.1.2.3 JMeter运行
7.1.2.3.1 命令行模式运行
7.1.2.3.2 集群模式运行
7.1.2.3.3 命令行选项
7.1.2.4 JMeter常用协议
7.1.2.5 JMeter常用场景
7.1.2.5.1 稳定TPS测试
7.1.2.5.2 并发压力测试
7.1.2.5.2.1 设置集合点
7.1.2.5.3 混合压力场景测试
7.1.2.5.4 参数化
7.1.2.6 JMeter主要组件介绍
7.1.2.6.1 线程组
7.1.2.6.2 控制器
7.1.2.6.3 取样器
7.1.2.6.4 逻辑控制器
7.1.2.6.5 监听器
7.1.2.6.6 定时器
7.1.2.6.7 Cookie管理器
7.1.2.6.8 Header管理器
7.1.2.6.9 断言
7.1.2.6.10 配置元件
7.1.2.6.11 前置处理器
7.1.2.6.12 后置处理器
7.1.2.6.13 执行顺序
7.1.2.6.14 Jmeter关联至正则表达式
7.1.2.6.15 聚合报告分析
7.1.2.6.16 BeanShell使用
7.1.2.6.17 Jmeter Debug
7.1.2.6.18 Jmeter插件
7.1.2.7 JMeter函数
7.1.2.7.1 函数列表
7.1.2.8 Jmeter性能监控
7.1.2.9 linux测试结果收集展示
7.1.2.10 JMeter持续集成
7.1.2.10.1 JMeter+Ant
7.1.2.10.2 JMeter+Maven
7.1.2.10.3 JMeter+Jenkins
7.1.2.11 JMeter+Selenium
7.1.2.11.1 使用JMeter JUnit Sampler
7.1.2.11.2 使用BeanShell Sampler
7.1.2.11.3 使用JMeter Plugins的WebDriver Sampler
7.1.3 . JVM监控工具
7.1.3.1 Java 自带的性能监控工具
7.1.3.1.1 具体案例
7.1.3.2 Eclipse Mat Usage
7.1.3.2.1 生成 Java heap Dump 文件
7.1.3.2.2 MAT安装
7.1.4 . OS与网络监控与分析工具
7.1.4.1 top
7.1.4.2 vmstat
7.1.4.2.1 常用命令:vmstat 1
7.1.4.3 iostat
7.1.4.3.1 常用命令:iostat -x
7.1.4.4 netstat
7.1.4.4.1 常用命令:netstat -anltp
7.1.4.5 dstat
7.1.4.5.1 常用命令:dstat -cmsdnlpyt
7.1.4.6 Nmon
7.1.4.7 文件句柄数查看及修改
7.1.5 . 数据库分析与诊断工具
7.1.5.1 Oracle AWR
7.1.5.2 MySQL AWR
7.1.5.2.1 What is myawr
7.1.5.2.2 Myawr Data Model
7.1.5.2.3 Quickstart
7.1.5.2.4 Dependencies
7.1.5.2.5 Mysql WorkLoad Report
7.1.5.2.6 Mysql Snapshot Report
7.1.5.2.7 MySQL AWR 部署和报告生成
7.2 性能分析与调优
7.2.1 . 瓶颈定位整体思路
7.2.2 . 性能分析
7.2.2.1 前提
7.2.2.2 性能分析的目的
7.2.2.3 流程
7.2.2.4 常见性能瓶颈征兆
7.2.2.5 可能瓶颈点
7.2.2.5.1 硬件上的性能瓶颈点
7.2.2.5.1.1 磁盘瓶颈定位
7.2.2.5.2 中间件上的性能瓶颈点
7.2.2.5.2.1 中间件参数调优
7.2.2.5.2.2 JVM
Jvm内存结构
Jvm垃圾回收策略
Jvm参数调优
Jvm内存泄漏问题定位
7.2.2.5.3 应用程序上的性能瓶颈点
7.2.2.5.3.1 Web前端瓶颈分析
7.2.2.5.3.2 Java线程状态分析
7.2.2.5.3.3 Java线程死锁定位
7.2.2.5.3.4 Java线程性能定位
7.2.2.5.3.5 Tps低问题排查
7.2.2.5.3.6 响应时间长问题排查
7.2.2.5.3.7 应用程序架构调优
7.2.2.5.4 数据库调优
7.2.2.5.4.1 查询缓存
7.2.2.5.4.2 索引
7.2.2.5.4.3 执行计划
7.2.2.5.5 操作系统上的瓶颈点
7.2.2.5.5.1 Linux操作系统调优
7.2.2.5.5.2 Linux内核参数调优
7.2.2.5.5.3 Linux下CPU过高定位
7.2.2.5.6 网络设备上的性能瓶颈点
7.2.2.6 性能数据解读建议
7.2.2.7 如何定位性能问题
7.2.2.8 常见性能问题参考
7.2.2.9 方法
7.2.2.9.1 CPU
7.2.2.9.2 Memory
7.2.2.9.3 磁盘I/O
7.2.2.9.4 网络I/O
7.2.2.9.5 内核参数
7.2.2.9.6 JVM
7.2.2.9.7 线程池
7.2.2.9.8 JDBC连接池
7.2.2.9.9 SQL
7.2.2.9.9.1 索引
未建索引
未利用索引
使用效能低的索引
7.2.2.9.9.2 数据量
所有数据量
Select*很多列产生大量数据
select id,name表中有几百万行,产生大量数据
嵌套查询
关联查询
大数据量插入
7.2.2.9.9.3 锁
锁等待
死锁
游标
临时表
drop table
7.2.2.9.9.4 其他
exist代替IN
exist代替select count(*)
between代替IN
left outer join代替Not IN
union all 代替union
常用SQL尽量用绑定变量方法
7.2.3 . 性能调优
7.2.3.1 性能调优目标与策略
7.2.3.2 调优的原则
7.2.3.3 调优的基本步骤
7.2.3.3.1 确定问题
7.2.3.3.2 分析问题
7.2.3.3.3 确定调整目标和解决方案
7.2.3.3.4 分析调优结果
7.2.3.3.5 测试解决方案
7.2.3.4 性能调优的层次
7.2.3.4.1 设计调优
7.2.3.4.2 算法调优
7.2.3.4.3 代码调优
7.2.3.4.3.1 OOM分析工具
jvm heapdump分析工具MAT
本地内存溢出分析工具-pmap
本地内存溢出(续)-用lsof工具分析IO
7.2.3.4.4 JVM调优
7.2.3.4.4.1 JVM分析工具
JVM监控简介
Jstat分析jvm内存使用情况
Jconsole监控系统资源、线程、内存
Pamp
lsof
jmap
7.2.3.4.5 网络调优
7.2.3.4.5.1 网页流量分析工具
HTTPwatch
YSlow
7.2.3.4.6 系统调优
7.2.3.4.6.1 业务性能分析工具
业务性能日志分析-filter
7.2.3.4.6.2 系统硬件资源监控工具-Nmon
nmon简介
nmon实时监控使用方法
nmon实时收集数据方法
nmon不足点
7.2.3.4.6.3 OS监控工具
netstat监控
Thread监控
DB连接数监控
7.2.3.4.6.4 执行日志
7.2.3.4.7 数据库调优
7.2.3.4.7.1 Oracle分析工具
SQL执行计划分析工具-PL/SQL
数据库性能诊断工具-AWR
7.2.3.5 配置项性能调优参考
7.2.3.6 调优注意事项
8 性能测试报告与总结
9 性能准入标准与建议
10 性能测试实战
11 名词术语
11.1 . TPS、QPS、PV
11.1.1 Vuser
11.1.2 TPS
11.1.3 QPS
11.1.4 PV
11.2 . 注释
11.2.1 Vuser和TPS换算
11.2.2 如何获取Vuser和TPS
11.2.3 如何评价系统的性能
11.3 . ResponseTime
11.4 . std.Deviation
11.5 . ThinkTime
11.6 . Pacing
11.7 . 关联技术
11.7.1 自动关联
11.7.2 手动关联
11.8 . 集合点
11.9 . 用户数
11.9.1 注册用户
11.9.2 在线用户
11.9.3 并发用户
11.9.4 虚拟用户
11.10 . 每秒连接数
11.11 . 吞吐量
11.12 . 性能基线数据
11.13 . 页面渲染
11.14 . 性能测试单元测试
11.15 . 性能测试集成测试
11.16 . 软解析(soft prase)
11.17 . 硬解析(hard prase)
12 面试指导