- 性能测试门槛较高,选择前还是要谨慎,那么看下一名合格的性能测试工程师要求:
- 硬件大概信息,当硬件出现性能瓶颈后,提出可供替代硬件方案信息建议
- 系统框架的优劣势,以及框架下各模块的合理配置优化建议
- 上面这条好高大上,要完成这样任务的门槛也不低,我们来看下:
- 编程语言:Java,C,C#,C++,PHP,你不知道以后的工作他们哪个会出现在你的视线中.....
- Java,php占比较高,目前的主流互联网公司都在用Java,创业公司PHP会多一些
- C,C#,C++,如果你不是去做银行的外包项目或者游戏公司,这部分一般用不到滴。
- 服务端: Tomcat,Apache,IIS,Nginx,Mybatis,servlet,这些可不是要求你拼写单词哦~
- 数据端:Oracle,Mysql,Sqlserver,Postgresql,Mongodb,Redis,Mercache
- 好吧,这样的性能测试工程师至少我还没有见过,但我认为至少掌握以下硬性技能内容:
- 性能测试工具的选择,以及掌握编写脚本的语言
- 公司项目框架基本了解,数据的流转以及存储
- 项目所用服务配置以及优化方法--参数辣么多记不住,其实网络上可以找到很多有用的信息,优化还是需要自身积累
- 服务端所用编程语言需要你本身具备该技能--当然low点的办法是拉个后台开发人员陪你一起
- 项目所用数据库的合理配置和优化方法 -- 本文后面可供查询了解
- 编程语言:Java,C,C#,C++,PHP,你不知道以后的工作他们哪个会出现在你的视线中.....
- 专职性能还好,如果说你想大包大揽,那么你不仅累,还要维护很多的知识,很痛苦,我还在挣扎中....
- ####编写已用4小时,分享个bootstrap编写的github主页(记录我的职业生涯中积累的点点滴滴~):
- 性能测试划分
- 性能测试准备工作
- 性能测试常见问题
- Linux监控
- 数据库监控
- 服务器参数配置
- Selenium+YSlow+ShowSlow实现页面性能评估自动化,还是不错的工具。
- 配置测试:硬件选型,软件参数配置(数据库,服务器配置)
- 基准测试:以前版本作为基准
- 负载测试:找系统瓶颈,评估性能指标,更多的是过程,阶梯式
- 压力测试:高负载是压力,让系统崩溃,看恢复能力以及时间
- 关键业务
- 日PV量
- 逻辑复杂度
- 运营推广
- 内存和CPU消耗高的业务
- 一般性能测试构造数据时不要相同,因为可以避开缓存影响,需要测试缓存可以在处理
- 明确可用负载机,服务器软硬件信息
- 明确业务数据流走向,才可以更好的在出现问题时排查问题
- LR中声明局部变量放在脚本开头
- LR全局变量在globals.h中声明
- 网络瓶颈:内网100M,吞吐率不能超过100/8=12.5
- Ip欺骗时,主机应该单网卡,设置为静态IP,多网卡应禁用
- Get请求:发送数据少,返回数据多;Post请求:发送数据多,返回数据少,大部分关联都是在post数据中
- 添加负载机时,要勾选Use the Perc...选项,才可以一个脚本在多个负载机上运行,
否则只能同个脚本按组跑,可设置不同负载机ip
* hits per second:每秒点击次数,是指接收到服务器的状态码简单介绍了HTTP协议的概要,我们再来介绍HTTP协议处理状态和返回状态码的含义 HTTP协议处理状态,当一个XMLHttpRequest初次创建时,这个属性的值从0开始,直到 接收到完整的HTTP响应,这个值增加到4。 这五个状态中每一个都有一个相关联的非正式的名称,下表列出了状态,名称和含义: 状态 名称 描述 0 Uninitializ 初始化状态。XMLHttpRequest对象已创建或已被abort()方法重置 1 Open send()方法未调用。请求还没有被发送 2 Sent send()方法已调用,HTTP请求以发送到web服务器。未接收到响应 3 Receiving 所有响应头部都已经接收到,响应体开始接收但未完成’ 4 Loaded HTTP响应已经完全接收 ok,处理完毕的时候服务端,无论是成功还是失败都会返回一个状态码给客户端。
- 当性能指标出现拐点时:
- 负载机硬件资源
- 网络瓶颈 -- 观察网络吞吐量计算
- 服务器硬件资源 -- cpu,内存,磁盘
- 数据库服务器硬件资源 -- cpu,内存,磁盘
- 服务器的各项参数配置,若分布式需检查配置是否生效,以及请求分配规则是否合理
- 数据库各项性能指标 -- 下面有细节分析过程
- sql反推到代码块
- 第三方监控工具,监控运行代码;例如:jprofiler(java) xhprof(php)
- 数据库相关优化信息(向DBA靠近)
- 闲谈:
- 数据库很多种,常用也就几种,但作为测试想去做好调优同样不现实,关键性指标是我们提出合理化建议的武器
正确的职责定位会让你有更好的进步空间 - 面试常会被问到而且有意思的sql
- mysql: select * from 表名 where 条件 order by 字段 limit 1,3(指针从1开始,取3条记录)
- postgresql: select * from 表名 where 条件 order by 字段 limit 2 OFFSET 0(指针从0开始,取2条记录)
- sqlserver: select top 10 * from ( select top 20 * from 表明 order by 字段q asc) a order by 字段q desc(取10到19条记录)
- oracle: select * from (select rownum as rn,id from 表名 where 条件 order by 字段) where rn=行数 ( 或者 rn between n and m (取第n到第m条记录))
- 数据库通常监控指标:
- 数据库连接数
- 慢查询sql
- 线程池大小
- 每秒事务数
- QueryCache命中率
- 锁定状态
- 数据库常用性能策略:读写分离
- 数据库很多种,常用也就几种,但作为测试想去做好调优同样不现实,关键性指标是我们提出合理化建议的武器
- 闲谈:
- 服务器相关参数优化
- 最大连接数
- 线程池
- 释放链接时间