性能实战读书笔记
- 格式:doc
- 大小:501.00 KB
- 文档页数:24
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)尽早发现性能问题以降低修复缺陷的成本。
核心模块并发性能测试包含三方面的内容●完全一样功能的并发测试●完全一样操作的并发测试●相同/不同的子功能并发(二)组合模块用户并发性能测试的用例设计组合模块的性能测试是最能反映用户实际使用情况的测试。
它是在前面哥哥核心模块运用良好的基础商,把系统的一些具有耦合关系的模块组合起来的测试,因此可以理解成是“集成性能测试”。
组合模拟用户并发测试最重要的是模拟实际用户较常见的场景,只有这样才可以真实的反映用户使用系统的情况,进而发现系统的瓶颈和其他一些性能问题。
典型用户场景主要通过下面几种方法得到。
●需求、设计文档:系统的需求、设计文档会反映出有多少用户类型,这为用户分组提供了可靠的依据。
在大多数的系统设计文档中都会涉及到系统的组织结构管理或者权限管理,根据这些资料可以设计各个模块的用户群体分类。
●现场调查:去用户现场调查是最直接的方法,通过和用户进行交谈或者正式的交流可以取得所需的信息。
最有效的方法就是拿到用户单位的通讯录,通讯录里面有各个部门的人员情况,自然就可以统计出系统各类用户的使用情况。
通过这些资料很容易对不同业务模块的用户数量进行评估。
●通过系统来采集数据:通过系统手机资料也是一种有效的辅助手段,适用于系统试运行或者投产阶段的性能测试。
1)发现接口方面的功能问题。
2)尽早发现综合性能问题。
组合模块并发性能测试包含三方面的内容●具有耦合关系的核心模块进行组合并发测试。
●彼此独立的,内部具有耦合关系的核心模块组的并发测试●基于用户场景的并发测试。
疲劳强度与大数据量测试3.1性能测试实施与管理性能测试流程如下:测试需求分析->测试计划制定与评审->测试用例设计与开发->测试执行与监控->分析测试结果->编写性能测试报告->测试经验总结。
第一步:测试需求分析:测试负责人要和项目干系人进行沟通,同时收集各种项目资料,尤其要搞清楚用户对待性能测试的态度。
其干系人有客户代表(客户是否关注性能测试,客户在软件性能方面的需求等)、项目经理(大概确定性能测试的一些里程碑要求,进而确定需要多少人力资源以及一些重要环节的优先级)、产品经理(通常会比较明确提出性能需求,通过产品经理确定原始的性能需求,可以避免在后来设计过程中产生的一些误差)、销售经理(在初期投标或者给客户的系统解决方案中,通常都会承诺一些性能指标,这些性能指标是性能测试首要完成的任务,也是预期指标性能测试用例设计的主要内容)、需求分析员(可以了解基本的业务需求以及一些更加明确的性能指标,由于需求人员是需求文档的主要作者,因此通过需求分析员还可以确定哪些业务是核心业务,为后面编写核心业务模块的测试用例打下良好的基础)第二步:测试计划制定与评审:计划主要包含测试范围、测试环境、测试方案简介、风险分析等。