性能实战读书笔记.docx
《性能实战读书笔记.docx》由会员分享,可在线阅读,更多相关《性能实战读书笔记.docx(60页珍藏版)》请在冰豆网上搜索。
性能实战读书笔记
Web性能测试实战读书笔记
测试人员的要求:
1)掌握常见自动化测试工具的使用。
2)具备一定的编程能力。
3)掌握基础数据库知识。
4)掌握常见的操作系统知识。
5)掌握一些Web应用服务器例如Weblogic和Websphere等的使用。
6)具有综合分析问题的能力,例如通过综合分析测试结果来确定系统瓶颈。
7)制定合适的性能测试策略以及性能测试方案并按照方案对系统进行全面的测试和分析。
1.1性能测试的主要术语
1.并发用户:
1)严格意义并发:
即所有用户在同一时刻做同一件事情或者操作,这种操作一般指做同一类型的业务。
2)广义范围并发:
多个用户对系统发出请求或者进行操作,但是这些请求或者操作可以是相同的,也可以是不同的,但是对整个系统而言,仍然是有很多用户同时对系统进行操作,因此也属于并发的范畴
3)两者的区别与联系:
后者包括前者,后者更加接近用户的实际使用情况。
对于Web性能测试而言,这两种的并发都需要进行测试,通常是先进性严格意义上的并发测试(模块的选择一般选择发生使用比较频繁的模块中),再进行广义范围并发测试。
严格意义并发,一般和功能测试关联起来,因为并发功能遇到异常都是程序的问题,这种测试也是健壮性和稳定性测试的一部分。
2.并发用户数量:
同以时刻与服务器进行交互的在线用户数量.公式(使用系统的用户数量*(5%~~~~20%)=并发用户数)
错误理解
1)并发用户数量理解为使用系统的全部用户数量
2)并发用户数量理解为在线用户数量(浏览网页信息的用户)
3.请求相应时间:
客户端发出请求到得到响应的整个过程时间。
(等于网路相应时间+应用程序与系统响应时间)
4.事务相应时间:
5.吞吐量:
指的是在一次性能过程中,网络上传输的数据量的总和
6.吞吐率:
吞吐量/传输时间,即:
单位时间内网路上传输的数据量,也可以指单位时间内处理的客户端请求数量。
它是衡量网络性能的重要指标。
7.TPS:
每秒钟系统能够处理的交易或者事务的数量。
它是衡量系统处理能力的重要指标。
8.点击率:
每秒钟用户向Web服务器提交的HTTP请求数。
9.资源利用率:
指的是对不同系统资源的使用程度(CPU利用率、磁盘利用率、内存利用率、缓存利用率)。
主要针对Web服务器、操作系统、数据库服务器、网络等,是测试和分析瓶颈的主要参考。
1.2Web性能测试种类
1.压力测试:
对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收用请求的性能点,来获得系统能提供的最大服务级别的测试
2.负载测试:
通过在被测系统上不断增加压力,直到性能指标达到极限。
这种测试为系统调优提供依据。
3.强度测试:
强度测试主要是为了检查程序对异常情况的抵抗能力。
强度测试总是迫使系统在异常的资源配置下运行。
强度测试是一种特别重要的测试,对测试系统的稳定性以及系统未来的扩展空间均具有重要意义。
因为在这种情况下进行的测试,更容易发现系统是否稳定以及性能方面是否容易扩展。
4.并发测试:
主要指测试多个用户同时访问同一个应用程序、同一个模块或者数据记录时是否存在死锁或者其他性能问题
5.大数据量测试:
1)一种针对某些系统存储、传输、统计查询等业务进行大数据量的测试。
2)另一种是与并发测试相结合的极限状态下的综合数据测试。
6.配置测试:
主要时通过测试找到系统各项资源的最优分配原则。
配置测试是系统调优的重要依据。
7.可靠性测试:
在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
8.狭义性能测试:
主要用于描述常规的性能测试,通过模拟生产运行的业务压力和使用场景组合来测试系统的性能是否满足生产要求。
1.3性能测试常见的认识误区
1.提高一下硬件配置就可以提高性能了,因此性能测试不重要。
2.性能测试在所有其它测试完成后,测试一下看看就可以了。
3.性能测试独立于功能测试。
4.性能测试就是用户并发测试。
5.在开发环境下进行一下性能测试就可以了。
6.系统存在瓶颈,就不能使用。
7.不切实际的性能指标。
1.4性能调优基础知识
性能调整的步骤:
1)确定问题
●应用程序代码:
通常情况下,很多程序的性能问题都是写出来的,因此对于发现瓶颈的模块,应该首先检查一下代码。
●数据库配置:
数据库配置经常引起整个系统运行缓慢,一些诸如Oracle的大型数据库都是需要DBA进行正确的参数调整才能投产的。
●操作系统配置:
操作系统配置不合理也可能引起系统瓶颈。
●硬件设置:
硬盘速度、内存大小等都是容易引起瓶颈的原因,因此这些都是分析的重点。
●网络:
网络负载过重导致网络冲突和网络延迟。
2)确定原因
●问题的影响是什么:
响应时间还是吞吐量,或者其他问题?
●是大多数用户还是少数用户遇到了问题?
如果是少数用户,这几个用户与其它用户的操作有什么不同?
●系统资源监控的结果时候正常:
CUP的使用时候到了极限?
I/O情况如何?
●问题时候集中在某一类模块中。
●是客户端还是服务器出现问题?
●系统硬件配置是否够用?
●是否实际负载超过了系统的负载能力?
●是否未对系统进行优化?
通过这些分析及一些具体系统相关的问题,可以对系统瓶颈有更深入的了解,进行分析出真正的原因。
3)确定调整目标和解决方案
●提高系统吞吐量。
●缩短响应时间。
●更好地支持并发。
4)测试解决方案
5)分析调整结果
●系统调整是否达到或者超出了预定目标。
●系统是整体性能得到了改善,还是以牺牲某部分性能来解决问题的。
●调整是否可以结束了。
最后,如果达到了预期目标,调整工作就基本可以结束了。
Web全面性能测试模型
2.1Web全面性能测试模型包括如下内容
●Web性能测试策略制定原则
●Web性能测试用例设计模型
●Web全面性能测试模型使用方法
1)Web全面性能测试模型中,把Web性能测试分为8个类别
1.预期指标的性能测试:
系统在需求分析和设计阶段都会提出一些性能指标。
2.独立业务性能测试:
一些核心业务模块对应的业务,这些模块通常具有功能比较复杂、使用比较频繁、属于核心业务特点。
核心业务模块在需求阶段就可以确定,用户并发测试是核心业务模块的重点测试内容。
3.组合业务性能测试:
多用户不同(对一个或者多个模块的不同功能进行操作)操作,组合业务性能测试是最接近用户实际使用情况的测试,也是性能测试的核心内容。
4.疲劳强度性能测试:
在系统稳定运行的情况下,以一定的负载压力来长时间运行系统的测试,其主要目的是确定系统长时间教大业务量时的性能。
可以判断系统运行一段时间后是否稳定。
5.大数据量性能测试:
分三种,
●第一种:
针对某些系统存储、传输、统计查询等业务进行大数据量的测试。
●第二种:
极限状态下的数据测试,主要时指系统数据量达到一定程度时,通过性能测试来评估系统的响应情况,测试的对象也是某些核心业务或者常用的组合业务。
●第三种:
结合前两种情况进行的大数据量测试。
6.网络性能测试:
主要是为了准确展示带宽、延迟、负载和端口的变化是如何影响用户的响应时间的。
7.服务器(操作系统、Web服务器、数据库服务器)性能测试:
分为初级和高级两种形式
●初级形式:
主要是指在业务系统工作或者进行前面其他种类性能测试的时候,监控服务器的一些计数器信息,通过这些计数器对服务器进行综合性能分析,找出系统瓶颈,为调优或者提高性能提供依据。
●高级形式:
一般不由测试人员进行,而是由专门的系统管理来进行。
8.一些特殊测试:
指配置测试、内存泄漏测试等一些特殊的Web性能测试
Web全面性能测试模型包括以下三部分
第一部分:
Web性能测试策略模型
第二部分:
Web性能测试用例设计模型:
性能测试的8项归纳形成五类测试用例
1.预期指标的性能测试
2.并发用户的性能测试
3.疲劳强度和大数据量的性能测试。
4.服务器性能测试。
5.网络性能测试。
第三部分:
模型使用方法
(一)独立核心模块用户并发性能的测试用例设计
1)发现一些核心算法或者功能方面的问题。
一些多线程、同步并发算法在但用户模式下测试是很难发现问题的,通过模拟多用户的并发操作,更容易验证是否正确和稳定。
2)尽早发现性能问题以降低修复缺陷的成本。
核心模块并发性能测试包含三方面的内容
●完全一样功能的并发测试
●完全一样操作的并发测试
●相同/不同的子功能并发
核心模块的性能测试用例示例
功能
当在线用户到达高峰时,发送和接收普通邮件正常。
保证2000个以内用户可以同时访问邮件系统,能够正常发送和接收邮件。
目的
测试系统2000个以内的用户同时在线时能否正常发送邮件。
方法
采用LoadRunner的录制工具录制一个邮件发送过程,然后利用其完成测试,要监视数据库服务器和Web服务器的性能。
其中发送的邮件为普通的邮件,附件大小不超过1MB
并发用户数与事务执行情况
并发用户数
事务平均响应时间
事务最大响应时间
平均每秒处理事务数
事务成功率
每秒点击率
平均流量(B/s)
100
……
150
200
并发用户数与数据库主机
并发用户数
CPU利用率
MEM利用率
磁盘I/O参数
DB参数1
其它参数
100
……
150
200
并发用户数与应用服务器的关系表
并发用户数
CPU利用率
MEN利用率
磁盘I/O参数
100
……
150
200
(二)组合模块用户并发性能测试的用例设计
组合模块的性能测试是最能反映用户实际使用情况的测试。
它是在前面哥哥核心模块运用良好的基础商,把系统的一些具有耦合关系的模块组合起来的测试,因此可以理解成是“集成性能测试”。
组合模拟用户并发测试最重要的是模拟实际用户较常见的场景,只有这样才可以真实的反映用户使用系统的情况,进而发现系统的瓶颈和其他一些性能问题。
典型用户场景主要通过下面几种方法得到。
●需求、设计文档:
系统的需求、设计文档会反映出有多少用户类型,这为用户分组提供了可靠的依据。
在大多数的系统设计文档中都会涉及到系统的组织结构管理或者权限管理,根据这些资料可以设计各个模块的用户群体分类。
●现场调查:
去用户现场调查是最直接的方法,通过和用户进行交谈或者正式的交流可以取得所需的信息。
最有效的方法就是拿到用户单位的通讯录,通讯录里面有各个部门的人员情况,自然就可以统计出系统各类用户的使用情况。
通过这些资料很容易对不同业务模块的用户数量进行评估。
●通过系统来采集数据:
通过系统手机资料也是一种有效的辅助手段,适用于系统试运行或者投产阶段的性能测试。
1)发现接口方面的功能问题。
2)尽早发现综合性能问题。
组合模块并发性能测试包含三方面的内容
●具有耦合关系的核心模块进行组合并发测试。
●彼此独立的,内部具有耦合关系的核心模块组的并发测试
●基于用户场景的并发测试。
组合业务性能测试用例
功能
在线用户达到高峰时,用户可以正常使用系统,目标是满足500个以内用户同时在线使用系统。
目的
测试系统500个以内的用户同时在线时能否使用比较常见的模块:
公文系统、电子公告、网上论坛。
方法
采用LoadRunner的录制工具录制三项业务:
业务1:
在公文系统内,进行打开,修改等操作。
业务2:
在电子公告系统内,查看、发布公告。
业务3:
在网上论坛系统内发布贴子,查看文章。
每项业务分配一定数目的用户,利用LoadRunner来完成相关参数的测试。
并发用户数与事务执行情况
并发用户数
事务平均响应时间
事务最大响应时间
平均每秒处理事务数
事务成功率
每秒点击率
平均流量(B/s)
300
业务1
业务2
业务3
业务1
业务2
业务3
业务1
业务2
业务3
业务1
业务2
业务3
……
400
500
并发用户数与数据库主机
并发用户数
CPU利用率
MEM利用率
磁盘I/O参数
DB参数1
其它参数
300
……
400
500
并发用户数与应用服务器的关系表
并发用户数
CPU利用率
MEN利用率
磁盘I/O参数
300
……
400
500
某银行项目性能测试策略案例
产品类型
银行卡审批业务系统,使用非常频繁,业务量每年达到200万次左右,属于银行领域的特殊应用软件。
项目背景
系统属于第二次重新开发,前一开发商在系统开发完成后没有通过性能测试,100个左右用户并发访问系统时数据库服务器崩溃。
因此新的系统从项目启动开始,性能测试已经成为用户关注的焦点。
用户要求
用户提出性能方面首先要过关,否则功能再好也不会投产。
性能测试策略
从系统设计阶段开始进行性能测试准备工作,测试人员主要时参加系统的设计,评审。
因为前以开发商失利的重要原因是数据库设计不合理,所以这次重点讨论了数据的设计。
系统设计阶段完成了性能测试方案的设计。
单元测试阶段通过测试工具对一些重要模块的算法进行测试。
主要是一些并发控制算法的性能问题,测试对象是一些核心业务模块。
集成测试阶段进行组合模块的性能测试。
整个系统测试阶段都在进行性能测试,并和功能测试同步进行。
功能测试引起的一些相关修改,应立刻进行性能测试。
验收测试阶段,应在用户现场的投产环境中进行性能测试,根据形式结果对系统运行环境进行调优,达到较佳的运行效果。
某OA项目性能测试策略案例
产品类型
企业办公系统,用户数目在1000人以内,主要是一些信息的发布,以及公文流转,收发邮件等功能。
软件系统的地位属于辅助办公功能。
因此该类软件属于议案类型的应用软件,对性能要求不高,性能测试不属于重要工作。
项目背景
已有稳定产品。
主要是按照客户的个性化需求进行二次开发。
用户要求
要求系统响应时间不要过慢,可以满足2000个用户来使用。
性能测试策略
系统测试阶段开始进行性能测试准备工作,完成测试用例设计。
目标主要是评估系统性能,根据测试结果对系统进行一定的优化。
验收测试阶段在用户现场执行性能测试用例,根据测试结果进行一定的调优工作,提交测试报告给用户以便进行系统验收。
性能测试策略制定基本原则
软件类别
用户重视程度
系统类软件
应用类软件
一般应用
特殊应用
高度重视
从设计阶段就开始针对系统架构、数据库设计等方面进行讨论,从跟原来提高性能。
系统类软件一般从单元测试阶段开始性能测试实施工作,主要是测试一些和性能相关的算法或者模块
设计阶段开始进行一些讨论工作,主要在系统测试阶段开始进行性能测试实施。
从设计阶段开始针对系统构架、数据库设计等方面进行讨论,从根源来提高性能;
特殊应用类软件一般从单元测试阶段开始性能测试实施工作,主要是测试一些和性能相关的算法或者模块。
中等重视
可以在系统测试阶段的功能测试结束后进行性能测试。
一般重视
可以在系统测试阶段的功能测试结束后进行性能测试。
不怎么重视
可以在软件发布前进行性能测试,提高测试报告即可
疲劳强度与大数据量测试
疲劳强度测试用例
极限名称
200个用户同时使用系统的三个模块。
前提条件
测试用的客户端要有足够的资源,否则客户端down机失去测试意义。
运行方法
连续运行16小时。
测试方法
采用loadRunner录制三个任务,然后开始对系统施压。
输入/动作
用户数量
任务1:
进入邮件系统,进行发送、接收、删除等操作。
100
任务2:
进入公告系统,查看公告。
50
任务3:
查看网上论坛,阅读、发布帖子。
50
任务1:
20小时28分
邮件发送事务开始出现“网络超时不能发送”的现象。
无故障
无
任务3:
18小时36分
阅读帖子事务超时
大数据量测试用例
功能
数据库中的短信息表可以保存所有不能及时发送的短信息,用户上线后又能及时发送已经保存的信息。
目的
方法
并发用户数与事务执行情况
输入说明
事务平均响应时间/s
事务最大响应时间/s
平均每秒处理事务数/s
事务功能率/s
每秒点击率
平均流量(KB/s)
模拟8000个用户不在线的情况:
并发向数据库中输入8000条记录
1.988
2.078
3980
100%
无
236
模拟8000个用户在线的情况:
并发向数据库中删除8000条记录
1.009
2.068
5036
100%
无
278
……
……
……
……
……
……
……
3.1性能测试实施与管理
性能测试流程如下:
测试需求分析->
测试计划制定与评审->
测试用例设计与开发->
测试执行与监控->
分析测试结果->
编写性能测试报告->
测试经验总结。
第一步:
测试需求分析:
测试负责人要和项目干系人进行沟通,同时收集各种项目资料,尤其要搞清楚用户对待性能测试的态度。
其干系人有客户代表(客户是否关注性能测试,客户在软件性能方面的需求等)、项目经理(大概确定性能测试的一些里程碑要求,进而确定需要多少人力资源以及一些重要环节的优先级)、产品经理(通常会比较明确提出性能需求,通过产品经理确定原始的性能需求,可以避免在后来设计过程中产生的一些误差)、销售经理(在初期投标或者给客户的系统解决方案中,通常都会承诺一些性能指标,这些性能指标是性能测试首要完成的任务,也是预期指标性能测试用例设计的主要内容)、需求分析员(可以了解基本的业务需求以及一些更加明确的性能指标,由于需求人员是需求文档的主要作者,因此通过需求分析员还可以确定哪些业务是核心业务,为后面编写核心业务模块的测试用例打下良好的基础)
第二步:
测试计划制定与评审:
计划主要包含测试范围、测试环境、测试方案简介、风险分析等。
第三步:
测试用例设计与开发:
测试脚本开发主要指开发和用例相关的测试程序,测试脚本开发比较常见的做法是先通过测试工具录制用户的操作,然后进行修改(进行必要的代码修改和参数化)。
特殊项目的测试程序可能完全由测试人员自己编写。
第四步:
测试执行与监控:
主要包括性能测试实施和过程监控。
测试实施包括:
创建测试场景、执行测试场景、监视测试场景等。
监控测试项目是测试经理的主要职责,在执行过程中,通常会根据项目具体情况进行测试内容的调整。
第五步:
分析测试结果:
根据前面的测试数据来分析测试结果,为优化和调整系统提供依据。
分析的对象包括:
应用服务器、Web服务器、数据库服务器、操作系统、硬件资源等。
第六步:
编写性能测试报告:
包括:
测试过程记录、测试分析结果、系统调整建议等。
第七步:
测试经验总结:
通过总结本次工作经验和一些教训,能为以后的测试工作提供借鉴。
性能测试整体规划
1.测试环境规划
●网络环境设计
●操作系统环境规划:
当目标测试产品的服务器端在多种操作系统平台上运行时,就需要规划操作系统的测试环境。
不过很多应用系统在性能方面与操作系统关联不大,因此在性能测试中对操作系统进行规划的情形不是特别多。
●数据库环境规划:
数据库环境规划与操作系统环境规划类似,主要是指产品开发中,由于目标测试系统可能在不同数据库平台上运行,因此需要针对将要测试的数据库种类进行规划。
●Web服务器环境规划:
Web服务器环境规划很少见,一般某一产品基本会有相对固定的Web服务器,不过J2EE平台的应用系统可能要对多种Web平台进行测试规划。
●硬件资源环境规划:
软件性能离不开硬件的支持,为了保证系统投产后性能稳定,首先对开发环境提供一定的硬件资源进行评估。
硬件规划一般分为两类:
一类是开发出的产品要在不同的硬件环境上进行如小型机(Unix系统)和PCServer(Windows系统)因此需要进行和性能测试相关的硬件资源规划;另一类是开发出的产品对投产环境的硬件配置要求较高,这个时候做性能测试规划就要对硬件资源环境进行规划。
2.测试环境维护方面的规划
常见方法:
●用Ghost软件保证环境:
反复用Ghost类维护一些环境
●用VMWare保证环境:
VMWare可以在同一台电脑上构建出多个测试平台,能节约一定的成本,缺点是对机器硬件配置要求较高
●备份/恢复策略:
备份/恢复主要针对数据库,通过反复的备份/恢复可以重现测试中发现的性能问题,为调优提供有力的依据。
3.测试工具规划:
1)常见的性能测试工具
(1)LoadRunner:
(2)RationalPerformance
(3)QALoad
(4)WebLoad:
专门用于Web性能测试的工具,使用比较简单。
WebLoad支持基本的代码录制与资源监控功能。
(5)WAS:
微软提供的免费性能测试工具
(6)ApacheJMeter:
开源性能测试工具
(7)OpenSTA:
开源性能测试工具
2)选择工具策略:
主要从工具特性、工具核心功能、购买价格三个方面来考虑
●了解测试工具特点
●了解工具的主要功能
●了解工具的价格
3)自己开发性能测试程序
4.人力资源规划
性能测试团队角色与性能测试团队角色与职责
角色名称
主要职责
项目经理
确定性能测试策略与目标,制定性能测试计划。
负责测试工作的整体协调,与开发、支持等其他团队成员进行协作和沟通,保证性能测试工作的顺利进行。
系统架构设计师
协助测试设计人员进行系统功能分析,找出系统的压力点,尤其是分析压力下核心业务模块的运行情况。
测试设计人员
分析性能测试任务,根据性能测试需求设计相关的测试用例。
测试工具专家
使用测试工具开发脚本、创建测试场景、运行测试、实时监控数据等,并提供测试结果数据,协助其他人员进行性能分析。
数据库系统分析员
根据测试结果数据分析库瓶颈,并对数据库进行系统性能调优。
WebServer系统分析员
根据测试结果数据分析WebServer瓶颈,并对WebServer进行系统性能调优。
操作系统专家
为测试提供支持。
主要是分析操作系统的运行情况,发现操作系统瓶颈并进行优化。
性能测试计划制定
1.明确性能测试策略和测试范围
2.确定性能测试目标、方法、环境、工具
3.确定性能策思团队成员以及职责
测试计划的人员安排
姓名
角色
职责
A
项目经理
负责真个测试项目的管理与协调工作。
。
B
测试设计员、工具专家
设计并执行测试,分析系统瓶颈。
C
DBA、Weblogic专家、系统管理员
对系统进行调优。
D
用户代表
在用户现场进行测试时,提供一些办公方面的支持。
4.确定时间进度安排
测试计划的时间安排
任务描述