LoadRunner的三大组件Virtual User Generator、Controller、Analysis分别负责脚本的录制与开发、场景的创建与执行、测试结果分析。
第1章 性能测试基础知识
狭义的性能测试 主要用于描述常规的性能测试,是指通过模拟生产运行的业务压力或用户使用场景来测试系统的性能是否满足生产性能的要求。
广义的性能测试 是压力测试、负责测试、强度测试、并发(用户)测试、大数据量测试、配置测试、可靠性测试等和性能相关的测试统称。
压力测试
对系统不断施加压力的测试,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。压力测试的目的是发现在什么条件下系统的性能变得不可接受,并通过对应用程序施加越来越大的负载,知道发现应用程序性能下降的拐点。压力测试和负载测试有些类似,但是通常把负载测试描述成一种特定类型的压力测试——例如增加用户数量或延长压力时间以对应用程序进行压力测试。
负载测试
对系统不断地增加压力或增加一定压力下的持续时间,直到系统的一些性能指标达到极限。
压力测试侧重压力大小,而负载测试往往强调压力持续时间。
强度测试
强度测试主要是为了检查程序对异常情况的抵御能力。强度测试总是迫使系统在异常的资源配置下运行。
疲劳强度测试是一类特殊的强度测试,主要测试系统长时间运行后的性能表现。
并发(用户)测试
主要指当测试多个用户并同时访问同一个应用程序、同一个模块或数据记录时是否存在思索或其他性能问题,几乎所有的性能测试都会涉及并发测试。LoadRunner中称之为并发虚拟用户。
大数据量测试
大数据量测试分为两种:一种是针对某些系统存储、传输、统计查询等业务进行大数据量的测试;另一种是与并发测试相结合的极限状态下的综合数据测试。此外,也可以把大数据量测试分为“运行时大数据量测试”与“历史大数据量测试”来进行测试用例设计。
配置测试
配置测试主要指通过测试找到系统各项资源的最优分配原则。配置测试是系统调优的重要依据。
可靠性测试
在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。其目的是测算在一定环境下,系统能正常工作的效率,通常用平均无故障时间(MTBF),即两次失败之间的平均时间来衡量。
性能测试的应用领域
l 系统的性能瓶颈定位
l 系统的参数配置
操作系统、数据库、中间件服务器等的参数配置是应用系统发生性能问题的重要原因。
l 发现一些软件算法方面的缺陷
l 系统的验收测试
l 系统容量规划
l 产品评估/选型
严格意义上的并发(即所有用户在同一时刻做同一件事情或操作,这种操作一般针对同一类型的业务)测试往往和功能测试关联起来,因为只要并发功能遇到异常通常都是程序的问题,这种测试也是健壮性和稳定性测试的一部分。
用户在线数量是统计并发用户数量的主要依据之一,但两者并不相同。并发主要针对服务器而言,是否并发的关键是看用户的操作是否对服务器产生了影响。因此,并发用户数量是在同一时刻与服务器进行交互的在线用户数量。
OA系统统计并发用户数量的经验公式为:使用系统的用户数量*(5%~20%)
(注:办公自动化(OA)是面向组织的日常运作和管理,员工及管理者使用频率最高的应用系统)
请求响应时间是指从客户端发出请求到得到响应的整个过程时间。请求响应时间通常会被称为“TTLB”,即“Time to last byte”,请求响应时间的单位一般为“秒”或“毫秒”。请求响应时间为“网络响应时间”和“应用程序与系统响应时间”之和。
事务响应时间 事务可能由一系列请求组成,事务的响应时间主要针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出的。事务响应时间和业务吞吐率都是直接衡量系统性能的参数。
吞吐量 指在一次性能测试过程中网络上传输的数据量的总和。吞吐量/传输时间,就是吞吐率。
并发用户数增加时,吞吐量不变,表明网络带宽已饱和,存在瓶颈。
吞吐率(Throughput) 通常用来指单位时间内网路上传输的数据量,也可以指单位时间内处理的客户端请求数量。它是衡量网络性能的重要指标。但是从用户或业务角度来看,吞吐量也可以用“请求数/秒”、“页面数/秒”、“业务数/小时或天”、“访问人数/天”、“页面访问量/天”来衡量。
TPS(Transaction Per Second) 每秒钟系统能够处理的交易或事务的数量。
点击率(Hit Per Second) 每秒钟用户向Web服务器提交的HTTP请求数。这个指标是Web应用特点的一个指标:Web应用是“请求-响应”模式,“点击”是Web应用能够处理交易的最小单位。需要注意的是,这里的点击不是指鼠标的一次“单击”操作,因为在一次“单击”操作中,客户端可能向服务器发出多个HTTP请求。
资源利用率 是对不同系统资源的使用程度。资源利用率是分析系统性能指标进而改善性能的主要依据。
在“全面性能测试模型”中,把常见的性能测试分为8个类别,然后结合测试工具把性能测试用例归纳为5类来进行设计。
预期指标的性能测试 针对预先确定的一些性能指标而进行的测试
独立业务性能测试 独立业务实际是指一些与核心业务模块对应的业务,这些模块通常具有功能比较复杂、使用比较频繁、属于核心业务等特点。这类特殊的、功能比较独立的业务模块始终是性能测试的重点。
组合业务性能测试 是最接近用户实际使用情况的测试,也是性能测试的核心内容。往往和服务器性能测试结合起来进行。
疲劳强度性能测试 是指在系统稳定运行的情况下,以一定的负载压力来长时间运行系统的测试。其主要目的是确定系统长时间处理交大业务量时的性能。
大数据量性能测试 主要测试运行时数据量较大或历史数据量较大时的性能情况。大数据量测试可以理解为特定条件下的核心业务或组合业务测试。
网络性能测试 主要是为了准确展示带宽、延迟、负载和端口的变化是如何影响用户响应时间的。在实际的软件项目中,主要是测试应用系统的用户数目与网络带宽的关系。网络测试的任务通常由系统集成人员来完成。
服务器性能测试 服务器性能测试主要是对数据库、Web服务器、操作系统的测试,目的是通过性能测试找出各种服务器的瓶颈,为系统扩展、优化提供相关的依据。
一些特殊测试 主要是指配置测试、内存泄漏测试等一些特殊的Web性能测试。
性能测试策略
① “系统类软件”、“特殊应用类软件(主要指银行、电信、电力、保险、医疗、安全等领域类的软件)”应该从设计阶段开始进行性能测试;② 制定性能测试策略的主要依据是软件的特点,用户对待系统性能的态度影响系能测试策略,但不起决定作用。
测试策略内容包括:产品类型、项目背景、用户要求、性能测试策略。
测试用例设计
预期指标的用例设计主要参考需求和设计文档,把里面十分明确地性能要求提取出来即可。
用户并发性能测试要求选择具有代表性的、关键的业务来设计测试用例。
核心模块并发性能测试是整个性能测试工作的基础。组合模块并发性能测试时最能反映用户实际使用情况的测试。
大数据量测试分为3种:
l 实时大数据量测试:模拟用户工作时的大数据量,主要目的是测试用户较多或某些业务产生较大数据量时,系统能否稳定地运行;
l 极限状态下的测试:主要是测试系统使用一段时间后,即系统累积一定量地数据后,能否正常地运行业务;
l 前面两种的结合。
网路性能测试的用例设计主要有以下两类:
① 基于硬件的测试;②基于应用系统的测试,在实际的软件项目中,主要测试用户数目与网路带宽的关系。
根据多数企业的实际情况,性能测试应该分为开发与用户现场两个阶段来进行。严格地讲,性能测试应该按照测试环境的软、硬件配置高低分为两个阶段。这两个阶段的性能测试都应该按照“需求分析-规划与设计-执行-调优-验证”的顺序来执行。
一般应用系统在用户现场的性能测试通常包含预期指标性能测试与用户并发性能测试。