Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19882525
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: 项目管理

2008-12-01 10:15:04

§8    应用负载压力测试

 

§8.1 负载压力测试概述

*负载压力基础概念

 

指系统在某种指定软件、硬件以及网络环境下承受的流量,如并发的用户数、持续运行时间、数据量等。其中并发的用户数是负载压力的重要体现。

 

*负载压力测试基础概念

       指在一定测试约束条件下,系统所能承受的并发用户量、运行时间、数据量,以确定系统所能承受的最大负载压力。

       负载压力测试有助于确认被测系统是否能够支持性能需求,以及预期的负载增长等。负载压力测试不只是关注不同负载场景下的响应时间等指标,它也要通过测试来发现在不同负载场景下会出现的,例如速度变慢、内存泄漏等问题的原因。

负载压力测试是的重要组成部分,负载压力测试包括并发性能测试、疲劳强度测试、大数据量测试等内容。概念介绍

 

-*性能测试

性能测试用来保证产品发布后系统的性能能够满足用户需求。其中系统性能包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等。负载压力是系统性能的一个重要方面。一般都包含性能调优与性能评测两种测试策略。

-*性能评测

性能评测包括:在真实环境下,检查系统服务等级的满足情况,评估并报告整个系统的性能;对系统的未来容量作出预测和规划。

-*性能调优

       性能调优一般的步骤为首先查找形成系统瓶颈或者故障的根本原因,其次是进行性能调整和优化,最后便是评估性能调整的结果。

-*负载测试

       负载测试时通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。

-*压力测试

    压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试。

-*并发性能测试

    并发性测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发用户数负载,直到系统的瓶颈或者不能接收的性能点,通过分析综合交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试中的重要内容。

并发性能测试包括:应用在客户端性能的测试、应用在网络上性能的测试、应用在服务器端上性能的测试三个方面。

-*疲劳强度测试

采用系统稳定运行情况下所能支持的最大并发用户数,或者日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程。

-*大数据量测试

大数据量测试包括独立的数据量测试和综合数据量测试两类。

独立的数据量测试:指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。

综合数据量:指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试。

*负载压力测试的目的

    1.在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况。

2.预见系统负载压力承受力,在应用实际部署之前,评估系统性能。

3.分析系统颈,优化系统。

a.瓶颈:应用系统中导致系统性能大幅下降的原因。硬件,操作系统、数据库或开发的应用程序中都有可能存在瓶颈。

b.建议首先消解决软件瓶颈,原因有三个:

软件瓶颈往往导致系统性能衰减更快,消除软件瓶颈,系统性能提升更快。

人为因素更易导致软件瓶颈要消除软件瓶颈,开发人员会更主动,并且可以节省资源。

盲目增加硬件则无形中增加维护费用,将来,软硬件不匹配的问题终究会暴露出来。

c.负载压力性能问题分为需要优化的性能问题和非系统优化所能解决的性能问题。我们主要讨论前者。

 

    由此可见,负载压力测试为企业项目的实施提供信心,帮助用户正确地进行容量规划,实现软硬件投资合理化,最终交付高质量的系统,避免项目投产失败,保证用户的投资得到相应的回报

 

*负载压力测试策略

负载压力测试可以采取利用手工进行测试和利用自动化测试工具进行测试两种测试策略。

手工模拟负载压力,方法是找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后拿秒表记录下响应时间,这样的手工测试方法可以大致反映系统所能承受的负载压力情况。

利用自动化负载压力测试工具进行测试可以在一台或几台PC机上模拟成百或上千的虚拟用户同时执行业务的情景,通过可重复的、真实的测试能够彻底地度量应用的性能,确定问题所在。不过需要大量人员和设备,测试人员的同步也不好解决。可以使用商业化的自动化测试工具,开发资源测试工具,自主开发工具。

利用商业化的自动化测试工具是进行负载压力测试的主要手段,知名的商业化的测试工具比如LoadRunnerQALoad等适应范围非常广,一般都经过了长时间的市场检验,测试效果得到业界的普遍认可,测试结果具有一定的可比性,支持和升级好,但是贵。

开源的主要有:OpenSTA,TestMaker,Apache JMeter

自主开发工具测试见教材。

 

*产品生命周期中负载压力测试计划

在需求分析中充分关注负载压力性能:在需求分析阶段,主要关注系统中的共享和有限的资源,比如网络,数据库表,线程。为负载压力测试分配10%的时间。

从设计中得到负载压力性能指标:涉及第3方等,为负载压力测试分配10%的资金。考虑应用规模和数据量的可升级性。

开发阶段创建一个为负载压力性能测试环境:确保合理精确的测试环境,并且此环境可重用;为测试环境指定规则的负载压力性能测试时间表;选择一个负载压力性能测试工具。

在验收阶段多等级范围内测试并调优:测试要如实表现系统的主要应用,测试可升级性。

运行阶段持续监控系统负载压力性能。

*负载压力测试中的盲点

负载压力测试工具存在盲点。被测软件功能不稳定时,不能记录错误。分布式,web结束加大了这些盲点。

负载压力测试期间有必要进行必要的功能内容检验。日志中记录所有操作,响应。但是会增加资源消耗,操作行为和大量日志。

 

阅读(3490) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~