性能测试包括:
(1)评估系统的能力
(2)识别体系中的弱点
(3)系统调优
(4)验证软件系统的稳定性和可靠性
基础知识学习:
html :元素属性、表单 链接 url
C语言(有利于loadrunner学习): 看懂 分支循环 变量 函数定义
http请求 : post和get等
知道返回状态码 200 400 404 请求报头等信息
XML:和html差不多 ,
JSON : (post请求 数据很多是JSON传输)
数据库: 增删改查
性能测试分类:
1)负载测试(系统指标能达到的极限
加载方式包含:1 、加载一次
2、递增
3、随机加载
4、高低突变加载
2)压力测试 (强度测试):cpu、内存都在100%的时候,系统处理问题的能力
3)并发测试: 测试多个用户同时访问同一个应用、同一个模块等多久可以处理完这些请求
4)负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等
5)配置性测试:
多角度看待性能测试:
性能测试监控关键指标
1)资源指标:
CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%。
内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%。
磁盘I/O:磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是是读IO操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能。
网络带宽:一般使用计数器Bytes Total/sec来度量,Bytes Total/sec表示为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。
2)系统指标:
并发数:同一时间段与系统产生交互的数量
在线用户数:某段时间内访问系统的用户数,但不一定产生交互·
平均响应时间:系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间。对于系统快速响应类页面,一般响应时间为3秒左右。
事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录、提交订单操作均可定义为事务
TPS:每秒处理的事务数量
吞吐量:就是系统处理能力。也就是指软件系统在单位时间内能够处理多少个事务、请求、单位数据等。
思考时间:用户访问地址时的停顿时间
loadrunner分为 编写代码 场景组件 分析组件(下边为性能测试的一个流程)
步骤:首先进行需求分析
然后测试点的提取 (对哪些功能的性能进行测试,
指标如何提取:1)参考历史数据,
2) 客户提供,
3)同行业同项目的测试指标,
4)业界的通用的规则
指标的评估(例如TPS达到什么多大的水平,
如果是新系统 根据自己的测试标准为准或者根据老大定的指标为基准,然后逐渐提升达到下一个基准水平,这是循序渐进的过程)
然后制定计划,和其他人员进行评测,可行就进行接下来的测试,看是否达到我们之前期望达到的水平。
先脚本写好,然后去掉无用信息,每隔多少秒增加登录用户数,多长时间达到我的设定数,然后逐渐减到0,最后通过分析组件产生报告
性能测试指标都是人工分析出来的 ,而不是工具给你能提供出来的,长期工作产生的经验积累
jmeter(主要做接口测试)
主要是jemter+Jenkins+Ant自动化集成框架
监控LInux的一些性能指标(主要就是I/O cpu等)
服务器中间件的一个优化(主要是配置文件的优化),各中间件的一个平衡才能达到性能最优,而不是达到最大值最好
项目和框架调优:
每个网站都是逐渐优化的,而不是一次性达到的优化框架可以支撑,例如网页最初都是web服务器,数据服务器 文档服务器,三者组成,可能支撑不了,静态数据库的缓存,web和数据库里加些在数据库加些redies的缓存,流量增加 ,点击量增加,然后增加集群部署,(多加几台电脑web服务器,负载均衡,)
数据库进行分离(分库。分表、水平切分和垂直切分 ,不同业务拆分放在不同的数据库上 如何分库分表 多库多表)
根据业务的增长,进一步制定自己的优化策略 。
工具的选择 websevers的测试 (soapui)
jmeter loadrunner(测试接口的测试 http协议的)
页面功能的测试(loadrunner)
例如 最大链接数(MaxClients)
数据库优化:(主要是mysql的一个优化,抓取大范围sql,在牵扯小范围,然后一步步分析,加入慢查询开开,假设搜索到了10条慢查询语句,然后挑选了一条进行分析,是因为没做索引,还是语句太长,需要筛分),可以拆开让前端进行处理,处理完之后传给后台,减轻服务器的压力。
慢查询(必须开启了慢查询 才能看见)
JVM的调优:JVM将内存分为年轻带,年老代和持久带,
http://pengjiaheng.iteye.com/blog/552456 (JVM调优方法)
GC(垃圾回收机制),
监控一些内存率大小的时候,一些内存信息,占用的内存越来越大,检测内存泄漏的工具jprofiler_windows
nGrinder(性能自动化测试平台) 找到一个的实例 http://www.jianshu.com/p/f336180806cc
概念:
(1)Consume 用户PC客户端 访问端
(2)CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定DNS域名系统 域名与ip的绑定解析
(3)Load balancer(负载均衡) 负责多台Web servers负载均衡,将大量用户请求指引到多台Web servers。 web servers pool (Web服务器池)Image Server 用来存放网站静态资源,如图片、CSS、Javascript、Jquery等等资源文件,可以单独针对静态资源设置Http Header缓存信息,另外也有助于之后将Image Server作为CDN源。
(4) Monitor & Alert Server 主要是监测各类Server的运行情况,如CPU、请求数、请求等待时间、请求执行时间等等;此外还可用来接收并显示各类Application的异常信息,便于及时发现并处理各类系统运行异常。
(5)DB Server 根据业务和访问量大小,进行角色和功能的拆解,会有Core DB(核心数据库)、Report DB(报告数据库)、Query DB(查询数据库)、Distributor DB等等,以适应高访问量和性能的要求
(6) Batch Job Server 用来承担一些后台异步处理的任务,有助于降低系统设计的复杂度和各个系统功能之间的耦合性。 比如:任务系统定时跑任务 1.1日看12月31日的数据 帮你统计的数据就类似帖子回复数量(看有多少好评 多少差评 )晚上进行统计更新
(7)Web Server 部署电子商务前台购物系统,如商品展示、购物车、用户注册登录......等等。 Back-end Business System 指后台业务处理系统,如订单处理、产品管理、客户管理、采购管理、财务管理、库存管理......等等,该系统主要给公司内部用户使用。
(8)Message Router / Bus 进行消息的异步传输和处理,系统功能模块之间实现松散耦合,可让系统承受更高的访问量和业务量,极大提高了系统的吞吐量和性能。 Message Bus的概念,即“消息总线”。发送消息是向“Message Bus”中发送,并且需要注明发送的消息类型;同时,任何人都可以随时从“Message Bus”中接听消息,并且可以通过消息类型来进行筛选,只接收你感兴趣的话题。 WMS 负责仓库的收货入库、订单出库、库存管理等。
(9)内存泄漏:内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
例子:假设有100M的内存 我这个程序循环使用这个100M内存,上传图片的时候 每次都需要获取用户的图片的信息 ,获取完存到了本地服务器,然而没有把存储用户信息的用户内存删掉,然后继续接受第二个第三个用户的图片信息,每次都存用户信息 但是不删掉,以至于用掉了内存就不能再用了,这就是内存泄漏》
重要的是了解系统架构等,而不是只是简单的会测试工具。