关于性能测试的学习

做测试一年多来,虽然平时的工作都能很好的完成,但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺,所以,在工作之余也做了一些测试方面的知识的补充。不足之处,还请大家多多交流,互相学习。

现在看来,虽然平时工作中,所涉及虽然的是自动化测试,但更多的是功能测试,今天了解了一下性能测试。

同时,我也清楚的意识到,对于测试工具而言,会不会或者熟悉不熟悉是迟早的事,只要你经常用,但掌握测试的基础知识,了解一些测试思想和观念,更能让我们受益无穷。

下面总结一下我所学习到的性能测试:

性能测试(Performance Testing):是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试。通过负载测试,确定在各种工作负载下的系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

负载测试(Load Testing):是模拟实际软件所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其他加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(CPU、内存等),以检验系统的行为和特性,以发现系统可能存在的性能瓶颈,内存泄漏,不能实时同步等问题,负载测试更多的体现了一种方法或一种技术。

压力测试(stress testing):在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下的操作行为,从而有效地发现系统的某项功能隐患,系统是否具有良好的容错能力和可恢复能力。压力测试可分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统奔溃的破坏性压力测试。

三者的区别: 从测试的目的出发,从用户的需求出发,就比较容易区分性能测试、负载测试和压力测试了。性能测试是为了获得系统在某种特定的条件下(包括特定的负载条件下)的性能指标数据,而负载测试、压力测试是为了发现软件系统中所存在的问题,包括性能瓶颈、内存泄漏等。通过负载测试,也是为了获得系统正常工作时所能承受的最大负载,这时的负载测试就成为了容量测试。通过压力测试,可以知道在什么极限情况下系统会奔溃、系统是否具有自我恢复性等,但更多的是为了确定系统的稳定性。

性能测试工具(目前只是知道有这些工具,后期在使用过程中在总结它们的使用方法):

(1) Apache Jmeter: 用户手册 http://jmeter.apache.org/usermanual/index.html

(2) Load Runner

(3) QTP(Quick Test)

(4) Web Polygraph

性能测试不单单是熟悉测试工具,更要注意的是其中的测试思想,下面可以了解一下关于性能测试的三个观念:

  • 精确和模糊

i.e. 一辆汽车开100公里需要多少汽油?

做假设(assumption),下面有3个阶段的假设:

a. 做了假设却不知道自己做了假设

有些人根据自己的切身体验来做测试,然后写测试报告给别人看,关键是你觉得自己的测试是正确的,但并不是所有人都是处于你所处的环境,做和你测试时做完全一样的事情,所以测试出来的结果只会误导到别人。比如前面提到的那个耗油的问题,有人的做法是我开100公里看看,得出来多少就是多少。

b. 做了过多的假设

”当路面平坦,一路绿灯,风速5km/h,只有一名70kg的乘客,时速稳定在70km/h,良好驾驶习惯,… , 的情况下,油耗是7.1L/100km.“这样可能很严谨,但对于读你报告的读者,这样的数据没有多大的意义。

c. 做必要和合理的假设

生活中有些时候是需要一些妥协和折衷的,如果这些折衷是必要的和合理的。因为跳出来看,我们的测试需要提供有价值的信息,所以为了这样有价值的信息,做出必要的合理的假设是可以接受的。

  • 宏观与微观

这也是一个有趣的对立。在做性能测试,特别是整个产品的性能测试的时候,我们看到的是产品的核心功能和主要的大的功能模块,比如数据库、web服务器、核心的daemon等等。在脑海里,我们有一个架构图,哪怕你没有把它画出来。所以有时候,我们会想,性能测试对于产品的视角是宏观的,看大的组件,而不是具体的细节的东西。

果真是如此吗?看看下面的例子:

1. 把daemon的log级别改为debug (log_level从2改到5)之后,性能下降了差不多一半。

2. 关掉一个cache选项

3. 打开keepalive选项

4. 打开DNS反向查询

......

上面都是些细枝末节的设置,一个配置项而已,藏在DB的某张表或者某个ini里面。但是改变之后,得到的性能结果可能大不相同。

这时候,其实要不要考虑细枝末节,主要是看他到底是否Critical。至于怎样的才是至关重要的,这还需要在以后的工作中思考和总结。

  • 项目和任务

性能测试本身肯定是一个任务,无论对于被安排去做这个的人,或者安排的人。但是它有时候也像一个项目,对于去做这件事情的人。为什么呢?

首先你需要和很多的人打交道。

产品经理或者客户:获取需求,设定目标。

QA manager/lead:讨论resource和schedule。包括需要的机器,环境,软件,还有整个计划。

开发人员:查找问题和调优等。

功能测试的owner: 性能测试人员可能不是什么功能都很懂。

Admin:Lab,网络,DB等等

其次,它是一个周期很长,跨度很大的工作。特别是对于一个比较大的产品而言。你需要准备详细的测试设计,包括目标、范围、可能的方法,以及上面提到的资源和时间计划;然后邀请很多人来评审这个计划;接下来要准备工具、环境和测试数据。然后是执行,记录分析结果。如果有问题还要反复的调整和regression。最后要整理报告,回答疑问。

说它是一个项目一来是因为上面的原因导致工作的复杂性,还有一些原因是因为性能测试带有评测的性质,因为你是在试图去度量、衡量或者评价一个东西,而且带有比较绝对的结果。这样导致性能测试不可避免的要引入一些权威性的问题,尽管你并不一定期望这样。这使得很多的东西就像一个其他项目一样,有期望管理和良好的外部沟通和协调的需要。所以有时候,更愿意把它作为一个小的项目来看待,这样或许可以做得更全面。

本文参考:

http://blog.csdn.net/superqa/article/details/6067448

    http://www.cnblogs.com/fnng/archive/2012/12/09/2809974.html

时间: 2024-10-07 04:25:51

关于性能测试的学习的相关文章

JMeter性能测试介绍学习一

上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测试目标网站是fnng.cnblogs.com  和 tt-topia.rhcloud.com 2)测试目的是该网站在负载达到20 QPS 时的响应时间. QPS 解释 QPS:Query Per Second 每秒查询率.是一台查询服务器每秒能够处理的查询次数.在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量. 为了达成预期

性能测试调休学习链接

tomcat http://www.myexception.cn/program/1352632.html JVM http://www.linuxidc.com/Linux/2011-12/48616.htm

Jmeter性能测试视频教程

Jmeter性能测试实战视频教程 课程观看地址:http://www.xuetuwuyou.com/course/39 课程出自学途无忧网:http://www.xuetuwuyou.com 本课程从实战角度,由浅入深讲解Jmeter性能测试,学习本课程需要具备拥有一定性能测试基础知识. 课时1:认识jmeter 课时2:jmeter常用功能介绍 课时3:jmeter两种脚本录制方法 课时4:自动化测试badboy实战 课时5:jmeter性能测试小小的实战 课时6:jmeter元件作用域与执行

软件性能测试的本质

? 淘宝网每年的双11活动都是对其服务器性能的挑战.因为在这一天所有商品半价,购物的用户量剧增.做为淘宝网的高层更多的关心在线用户数,用户交易量,总交易金额等,做为一名技术人员,我们可能更关心当天系统的吞吐量.每秒钟点击率以及系统资源的消耗情况等,对!这就是系统的性能.那么性能的本质是什么呢?我试抓住一些点来解释. 基于用户体验的性能测试 但对于一个用户来说,他可以不关心上面这些(系统的性能参数),大约有一部分的消费者会因为网站过于技术化或者性能问题而选择了离开.换言之,如果你的网站速度太慢客户

性能测试总结(三)--工具选型篇

本篇文章主要简单总结下性能测试工具的原理以及如何选型.性能测试和功能测试不同,性能测试的执行是基本功能的重复和并发,需要模拟多用户,在性能测试执行时需要监控指标参数,同时性能测试的结果不是那么显而易见,需要对数据进行分析.这些特点决定了性能测试更适合通过工具来完成. 一.浅谈为什么需要工具 我们来看下工具的定义:它原指工作时所需用的器具,后引申为为达到.完成或促进某一事物的手段.(---来自百度的解释) 1.从人类进化的角度来看,会制造并使用工具是人和猿人最根本的区别,因为工具可以帮助我们提高生

对初学LoadRunner朋友们的一些建议

摘要:随着Internet的普及与迅速发展,企业业务量的迅速加大,数据大集中成为一种趋势,IT系统承载的负荷越来越重,系统性能的好坏严重的影响了企业对外提供的服务质量.从而对IT系统的性能进行测试和调优引起企业的重视,进而性能测试工程师成为IT市场的"香悖悖",并且性能测试有着极高的技术挑战.于是吸引了大量的测试爱好者来学这方面的技术,而一谈到性能测试很多人便会想到鼎鼎大名的LoadRunner这款优秀的性能测试工具,然而到这里问题就产生了. LoadRunner与性能测试的关系:Lo

TeamWork#3,Week5,Scrum Meeting 11.4

今天我们进行了第一次Scrum Meeting,总结了最近一段时间的工作成果和经验教训,并分配了每个成员下一步的工作.网络爬虫对我们来说是一个难点,因为之前接触比较少,所以需要从头学起.我们参考了大量的同类工程,从中学到了很多实用的知识,并且有了一个初步的简单架构.在一周之内会我们实现APP与服务器数据库的连接并具有完整功能,等待爬虫完成后再进行整合.以下是任务统计和以后的安排: 成员 已完成 待完成 彭林江 学习网络爬虫的相关知识,完成菜品信息的分类和识别 实现与数据库安全连接与数据传输功能

迟来2015年目标

2014年很多目标都没有实现,所以2015年拖了好久也没有写新年目标,所有的目标都只是口号,都没有做成,一点动力都没有,除了自责跟后悔,然后就是无尽的无助和恐慌,我不知道这是怎么了?明明知道这样不对,却没有改变的勇气跟动力,看着别人的工作都在上升,自己却在原地踏步.Pay more attention to what you want! 今年只做成三件事: 1.Java Web的学习[1月——3月]投入时间120小时,每周至少10小时 2.性能测试的学习[4月——7月]投入时间150小时,每周至

mongodb+asp.net webapi开放平台系列

一步一步,从未知到懵懂到…… 脚印从来没有停止过…… mongodb+asp.net webapi开放平台系列渐行渐近…… 梳理此项目中的知识点包括mongodb,asp.net webapi  oauth2 elasticsearch mvc mongodb基础知识学习 Mongodb学习笔记一(Mongodb环境配置) Mongodb学习笔记二(Mongodb基本命令) Mongodb学习笔记三(Mongodb索引操作及性能测试) Mongodb学习笔记四(Mongodb聚合函数) asp.