1、性能测试基础 性能测试课程内容 第一章 性能测试概述 第二章 性能指标值 第三章 性能测试类型 第四章 性能测试流程 第五章 性能测试工具1 性能测试概述 1.1 初见性能测试 1.2 性能测试行业背景 1.3 性能测试定义 1.4 性能测试目的1.1 初见性能测试 从奥运会门票说起 官方新闻如下:10月30日,北京奥组委面向境内公众启动第二阶段奥运会门票预售,然而,为了让更多的公众实现奥运梦想的“先到先得,售完为止”的销售政策适得其反,公众纷纷抢在第一时间订票,致使票务官网压力激增,导致系统瘫痪。性能问题分析:从上午9点开始售票到中午12点,3个小时内,票务网站被浏览次数达到2000万次。官
2、方票务网站的浏览量在第一个小时达到800万次,每秒钟从网上提交的门票申请超过20万张,这与他们提供的100万次/小时流量相差甚远。票务呼叫中心热线从9点到10点的呼入量超过了200万人次1.2 性能测试行业背景 1.互联网用户越来越多,生活节奏越来越快 2.软件系统的规模日益庞大,结构日趋复杂 3.软件性能问题越来越突出,以后做性能测试是必然 4.性能测试人员从业人数目前较少1.3 性能测试定义 性能测试是通过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试 1.4 性能测试目的 1.评估 评估系统是否满足性能需求 2.调优 解决性能测试中发现的瓶颈和问题 3.稳
3、定 验证系统是否稳定可靠 性能测试课程内容 第一章 性能测试概述 第二章 性能指标值 第三章 性能测试类型 第四章 性能测试流程 第五章 性能测试工具思考 一个优秀的性能测试工程师需要哪些方面的知识?2 性能测试指标值 2.1 事务事务(TransactionTransaction)2.2 响应时间(Response TimeResponse Time)2.3 TPS 2.4 吞吐量 2.5 点击率 2.6 并发用户数(Concurrent users)2.7 资源利用率2.1 事务 在web性能测试中,一个事务表示一个“从用户web ServerDBweb server用户”的过程,一般的响
4、应时间都是针对事务而言的。端到端,一个完整的操作过程,比如一次登录、一次筛选条件查询,一次支付等。2.2 响应时间 响应时间指的是从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间。在某些工具中,响应时间通常会称为“TTLB”,即“time to last byte”,意思是从发起一个请求开始,到客户端收到最后一个字节的响应所耗费的时间。响应时间的单位一般为“秒”或者“毫秒”。一个公式可以表示:响应时间=网络响应时间+应用程序响应时间。2.3 TPS Transaction Per Second:每秒事务数。指服务器在单位时间内(秒)可以处理的事务数量,一般
5、以request/second为单位 TPS=事务总量/事务完成时间。那么如何理解:事务通过TPS?2.4 吞吐量 吞吐量(任一秒上从服务器获得的数据量Throughput)吞吐量指的是单位时间内处理的客户端请求数量。通常情况下,吞吐量用请求数/秒或者页面数/秒来衡量。从业务角度看,吞吐量也可以用访问人数/天 或者页面访问量/天来衡量。2.5 点击率 点击率是指客户端 Hit Rate Hit Rate:是指每秒发送的HTTP请求的数量,点击率越大对server造成的压力就越大 一次页面点击,可以包含多次请求2.6 并发用户数 Concurrent users 并发数是指同时进行请求的客户的数
6、量,并发数用于模拟用户的真实负载情况(并发情况是对系统最大的考验),并发数同时使用系统的用户数。并发用户数的特点:同一时刻 对服务器有负载(注意:全部用户、在线用户、并发用户三者之间的区别)2.7 资源利用率 是指软件系统在内存、CPU、网络、I/O的利用率等方面的Resourceutilization。资源利用率指的是对不同系统资源的使用程度,例如服务器的CPU(s),内存,网络带宽等。资源利用率通常以占用最大值的百分比n%来衡量。不同视角下的性能 用户角度 响应时间(最关心的指标)2/5/8原则:过长时间的等待会让客户烦躁不安 系统稳定性(把对软件的信心留住)HTTP 500:数据库崩溃、
7、应用服务器崩溃HTTP 404:服务器无法回应 系统角度 网络延迟、数据延迟 系统资源的使用情况 开发角度 代码实现(算法等)数据库实现(数据模型设计、语句的实现方式等)思考和练习 假设:理发店共有3名理发师 每位理发师剪一个发的时间都是1小时 容忍的等待时间+剪发时间是3小时,超过3小时走人 理发店如何扩大业务规模?理发店模型和性能拐点有什么关系?性能测试课程内容 第一章 性能测试概述 第二章 性能指标值 第三章 性能测试类型 第四章 性能测试流程 第五章 性能测试工具3 性能测试类型 3.1 性能测试 3.2 负载测试 3.3 压力测试 3.4 配置测试 3.5 并发测试 3.6 容量测试
8、3.1 性能测试 狭义上的性能测试是一种“正常”的测试,主要是测试正常使用时,系统是否满足要求,同时可能为了保留系统的扩展空间进行一些稍稍超出“正常”范围的测试。性能测试一般是对需求进行的测试。广义上的性能测试包含所有关于性能方面的测试。3.2 负载测试 通过在被测系统上不断增加压力,知道性能指标。例如:响应时间超过预定指标或者某种资源已经达到饱和状态。这种测试考验找到系统的处理极限,为系统调优提供数据。负载测试一般压力要大些。3.3 压力测试 对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接受不能接受的性能点,来获得系统能够提供的最大服务级别的测试。例如测试一个web站点的大量的
9、负荷下,何时系统的响应会退化或者失败。3.3 压力测试 对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接受不能接受的性能点,来获得系统能够提供的最大服务级别的测试。例如测试一个web站点的大量的负荷下,何时系统的响应会退化或者失败。性能测试/负载测试/压力测试之间的区别 性能测试,表示在一个给定的基准下,能执行的最好情况,例如,在没有负重的情况下,你跑100米需要花多少时间 负载测试,也是性能测试,但是他是在不同的负载下的。对于刚才那个例子,如果扩展为:在50公斤、100公斤、200公斤等情况下,你是否还是背负?你的极限是多少?-峰值 压力测试,是在不断增加负载的情况下的性能测试。
10、对于刚才那个例子,如果改为:逐步增加重量,在跑步的过程中你什么时候会跑不动,挂掉!-稳定性3.4 配置测试 配置测试主要是通过测试找到系统各项资源的最佳分配原则。配置测试是系统调优的重要依据,例如我们可以不停的调整oracle的内存来决定cpu和内存的匹配情况。(当前配置-调优-未来业务增长)3.5 并发测试 测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在思索或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。集合点的概念3.6 容量测试 测试系统能够处理的最大会话能力。确定系统可处理同时在线的最大用户数,通常和数据库有关。容量测试目的是通过测试预先分析出反映软件系统应
11、用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。思考 商城系统中,如何需要做性能测试,你会怎么设计性能测试场景?性能测试课程内容 第一章 性能测试概述 第二章 性能指标值 第三章 性能测试类型 第四章 性能测试流程 第五章 性能测试工具4 性能测试流程 4.1 了解被测试项目的性能测试需求 4.2 分析被测试项目的性能测试需求 4.3 编写性能测试计划/测试用例 4.4 相关资源准备(功能相对稳定)4.5 脚本维护(编写程序)4.6 执行脚
12、本(执行程序)4.7 分析结果 4.8 性能调优 4.9 性能测试报告4.1 了解被测试项目的性能测试需求 响应时间 持续运行时间(资源监控)并发用户量4.2 分析被测试项目的性能测试需求 响应时间的确定(依据具体的业务)哪些是系统经常用到的业务 并发用户量的确定(可以估计或者通过日志得到)增加、删除、查询、修改至少都要做一个脚本 可扩展的空间(1年后,用户量增加。)4.3 编写性能测试计划/测试用例 覆盖测试的需求 测试的周期和风险的评估 人力资源、硬件资源、软件资源的配备 测试的手段和工具应在测试计划中有所体现 增加、删除、查询、修改至少都要做一个脚本 可扩展的空间(应依据具体的需求决定取
13、舍测试)4.4 相关资源准备(功能相对稳定)人力资源(测试、开发、数据库、系统管理人员)硬件资源(硬盘、内存、CPU)软件资源(操作系统、数据库、应用服务器等)注:所有资源的准备应赶早不赶晚,在做大容量测试时应考虑数据的提前准备,尽量让最擅长的人做最擅长的事。4.5 脚本维护(编写程序)脚本录制 脚本修改/完善 脚本参数化 脚本及其数据的存储 程序的编写通常为多线程来实现4.6 执行脚本(执行程序)脚本保存 参数文件保存 结果信息保存4.7 分析结果 测试通常提供问题的定位(应积极和其他人员讨论)结果信息保存 分析结果的对比4.8 性能调优 应补充多方面的知识(如:系统、数据库、应用服务器等知
14、识)每次应只调整一方面的配置(更好定位问题)性能问题产生的原因分析?4.9 性能测试报告 性能测试目的 性能测试软件性能需求 性能指标值 性能测试策略 性能测试环境 性能测试工具要求 性能测试数据要求 性能测试结果分析 性能测试过程数据 性能测试缺陷 性能测试风险评估作业 网上搜索性能测试方案和性能测试报告,整理成思维导图,并在课堂讲述其包含的内容和理解 性能测试课程内容 第一章 性能测试概述 第二章 性能指标值 第三章 性能测试类型 第四章 性能测试流程 第五章 性能测试工具5 性能测试工具 5.1 性能测试工具原理 5.2 常见的性能测试工具 5.3 性能测试工具选择5.1 性能测试工具原
15、理 脚本生成通过代理方式接收客户端发送的数据包,记录并将其转发给服务器端;接收到从服务器端返回的数据流,记录并返回给客户端 压力生成:根据脚本内容,产生实际的负载,扮演产生负载的角色 监控系统则可以对 数据库、应用服务器、服务器的主要性能计数器进行监控5.2 常见性能测试工具 Loadrunner Jmeter ab(ApacheBench)NeoLoad Loadstorm 压测宝等压力测试平台工具5.2 常见性能测试工具5.2 常见性能测试工具 服务器端性能测试工具:需要支持产生压力和负载,录制和生成脚本,设置和部署场景,产生并发用户和向系统施加持续的压力。web前端性能测试工具:需要关于
16、心浏览器等客户端工具对具体需要展现的页面的处理过程。移动端性能测试工具:同web端性能测试工具也需要关心页面的处理过程,另外还要具体数据采集的功能,比如:手机CPU、内存、电量,启动时间等数据的记录。资源监控工具:这个主要是能够收集性能测试过程中的数据以及良好的结果展现方式。5.3 性能测试工具选择成本方面:工具成本:商业功能强大,提供售后服务。开源工具免费,功能有限。学习成本:项目要考虑工具学习成本(比如:时间),测试人员熟悉一款流程的商业和开源免费性能工具,和脚本开发语言支持的协议:性能测试通常跟协议联系非常紧密,比如B/S的系统通常使用http协议进行客户端和服务器商的信息交换,C/S的系统通常使用socket协议进行信息交换。生命力:现在的性能测试工具非常多,比如LR,jmeter这类较大众的工具网上相关的资料非常多,但一些小众工具可能网上资料比较少。跨平台:思考 网上搜索,常见的性能测试工具,并理解性能测试的原理