性能测试的概述
性能:百度百科定义:器物的性质与效用。
生活中:买手机,买电脑,买车 –》 性能好:快(时间短)、资源
软件的性能:软件在允许的范围内使用过程中的反应的速度(时间),消耗的资源的情况等等。
性能测试:是通过自动化测试工具模拟多种正常,峰值,以及异常的负载情况下对系统各项性能指标进行的测试。负载测试、压力测试、容量测试都属于性能测试。
负载测试:确定各种负载下系统的性能,目标是测试负载逐渐增加时各项指标的变化。
压力测试:是通过确定一个系统的瓶颈值或者不能接受的性能点,并且获取提供最大服务的测试。也叫极限测试。
容量测试:在可接受性能范围内,最大的负载情况下的测试。
为什么要做性能测试?
应用程序是否满足用户性能的需求?
应用程序在满足能够预期的用户负载的情况是否有盈余的能力?
应用程序在预期或者非预期的用户负载下,运行是否稳定?
应用程序能够确保用户在使用软件的时候有比较好的性能体验。
性能的问题根源?
多平台,超多服务器,异构系统,多应用并行,数千个网站同时工作,这个过程中特别容易出现交叉故障点。
误区:提高一些硬件配置,性能就变好了,优化了,所以不用做性能测试。
错误:只是临时解决了问题,根本问题没有解决。
影响性能的因素有哪些?
硬件环境
软件本身(算法逻辑,数据,中间件)
网络带宽
软件环境
性能的评定的标准:性能指标
响应时间:指的是从客户端发出请求开始,到接收到服务器的响应,并且看到响应的内容为止,这个时间段,称为响应时间。
响应时间=网络传输的时间+服务器的处理时间+浏览器解析呈现的时间
弱化网络传输时间和浏览器解析的时间:
- 前期测试建议在局域网测试;
- 性能测试建议一定要有独立的测试环境;(测试环境必须要进行数据初始化)。
- 在晚上测试。
用户数:
在线数:在软件上,不一定在操作
并发数:在软件上,并且在操作。(特定的时间点或者时间段,操作不一定相同)
在线数 >=并发数
实际需求 –》测试用例
- 测试500人 登录的性能 – 》在线数 500,并发没有要求;一个线程组实现或者多个线程实现
- 测试500人并发登录的性能 – 》在线数500,并发数500;实际测试,建议一个线程组实现,如果想要多个线程组,要进行设置
- 测试300人并发登录的性能,同时有200人正在注册 – 》500,并发数 500,
注册和登录在不同的线程组设置,还要进行并发设置
资源的利用率:cpu 内存 磁盘 网络
吞吐量:处理事务的总数据量
吞吐率:单位时间内处理的数量
点击量:点击数量
点击率:单位时间内点击的次数
吞吐量、吞吐率、点击量、点击率 都是从软件的处理能力反馈性能的。
例如:软件的响应时间是1秒,所以性能很好,判断正误?
错误,太片面,其它的性能指标不清楚,比如:只有一个用户使用
软件性能是否达标:依据是用户的性能需求。
不同的角度出发,不同的系统平台,对性能的要求不一样,关注的指标也不同。
何时进行性能测试?
一般都是在功能测试的中后期进行,性能测试依赖于功能测试的。性能测试一定要独立的测试环境,并且测试环境必须进行用户数据的初始化。
性能测试的过程?
前期准备(功能稳定,组建团队)
选择合适的测试工具(loadrunner 商用型、jmeter (开源版)、自研的(loadspace))
性能测试的计划方案(需求分析,计划,策略,资源)
性能测试的实现(准备测试环境—> 设计场景 – > 编写测试用例 – > 辅助工具)
性能测试的执行(工具执行脚本 – > 记录结果)
性能调优分析 – 》 回归测试
性能测试报告
要测试的目的:本次性能测试预期要达到的性能要求
测试概要的描述:结构,人员,环境,场景等等(重点),过程简介。
测试结果和数据
测试结论
Jmeter
基于java开发的开源的测试工具,轻量级
性能测试
接口测试
支持多种协议
Jmeter 的组成
性能测试的原理:基于协议,用工具模拟实际操作(发送多个请求),并且收集测试数据,生成测试报告。
负载发生器:产生负载,产生压力,模拟用户行为
用户生成器:脚本运行的引擎
资源生成器:生成测试过程中服务器的资源数据(收集测试数据)
报表生成器:根据测试中获取的数据,生成报表,提供可视化显示方式