Posted on 2008-06-27 19:10
Jackei 阅读(2817)
评论(35) 编辑 收藏 所属分类:
04.软件性能测试00.置顶推荐
今天有同行在blog上留言,问“想从功能测试转向性能测试,但不知道需要哪些了解哪些知识,及怎样进行一个系统的学习”。这类问题之前也被问到很多次了,所以这次干脆整理一下,发个主题供同行们参考。如果需要补充,也欢迎大家留言一起讨论。
如果想真的做好性能测试,需要学习的东西还是比较多的。简单列一下吧。
1. 精通性能测试的基本概念,过程,方法论,了解性能工程;
2. 精通1个商业性能测试工具+1个开源性能测试工具,知道工具可以做什么,不可以做什么,以及工具使用中常见的问题和解决思路;
3. 扎实的计算机专业基础知识,包括计算机组成原理、操作系统、数据库原理、计算机网络原理;
4. 熟悉至少1个常用的数据库产品,例如SQL Server或者 Oracle,能进行一般的数据库管理操作,熟悉SQL脚本的使用,熟悉常用的数据调优工具和常用的counter;
5. 熟悉至少一个操作系统的原理,Windows或者Linux都可以,熟悉操作系统的体系架构、操作系统的重要基础概念,以及内存管理、存储/文件系统、驱动/硬件的管理、网络协议的实现及构成、性能的监控方法和原理,熟悉常用的counter;
6. 熟悉至少一个web server 产品,例如apache,了解一般的配置和常用的counter;
7. 熟悉至少一个应用服务器产品,例如tomcat,了解一般的配置,熟悉常用的服务器性能监控方法和原理,熟悉常用的counter;
8. 至少熟悉TCP/IP协议,熟悉HTTP协议,至少见过并了解三层、四层交换或者路由器的使用和配置。了解常用的与网络性能相关的counter;
9. 了解一般的大型企业应用的部署架构和应用架构;
10. 了解知名大型web应用、高并发量、高流量、实时响应要求高的超大规模网站的架构和优化历程;
11. 熟悉统计学的基础知识、常用分析方法以及实验设计方法,了解数学建模相关的知识;
12. 熟悉专属行业的业务知识和用户场景,例如电信行业的OSS系统所涉及的业务知识和用户场景,证券交易系统所涉及的业务知识和用户场景;
13. 大量的实际性能测试及优化经验;
14. 积极的参与到各类圈子、社团的讨论和交流、分享中。
暂时先想到了这么多,有兴趣的朋友可以一起讨论一下,相信每个人都有自己不同的经历和感想,可以跟其他人分享一下,提供参考。
另外,我之前也整理发布过不少性能测试方面的资料,从入门级的文章到 升级的必读都有一些,有兴趣可以参考。
资料收集:高并发 高性能 高扩展性 Web 2.0 站点架构设计及优化策略
http://www.cnblogs.com/jackei/archive/2007/10/07/915931.html
最全,最强的软件测试资料汇总 (性能测试,性能调优,功能测试,自动化测试,测试管理,测试工具,测试用例设计,缺陷分析预防,前沿测试技术...)
http://www.cnblogs.com/jackei/archive/2007/02/06/641647.html
(更新到 2007-6-14) 两个新的系列文章的写作计划——《LoadRunner 没有告诉你的》和《JMeter从入门到精通》
http://www.cnblogs.com/jackei/archive/2006/12/04/558720.html
不定期整理推荐 InfoQ 上面的优秀文章 ^_^ [UPDATED: 2008-6-20] —— 部分关于性能测试和优化,以及架构设计的优秀文章
http://www.cnblogs.com/jackei/archive/2007/09/22/902401.html
软件性能测试——blog上关于性能测试文章的全部列表
http://www.cnblogs.com/jackei/category/32808.html?Show=All
Feedback
我觉得至少做3年编程重要,再来看这些问题很多迎韧而解
@jackie de dedi
嗯,有开发经验对做好性能测试有很大的帮助——缺少实际的开发经验也是很多tester转向performance tester 和 SDET 最大的障碍之一。
Jackie提出的需要学习的东西,估计没有5年的专心学习,学不下来。
开发经验真的这么重要吗?
我觉得应该搞清,你是要做测试还是调优?
应该是不可以混为一谈的
没有开发经验确实是做性能测试甚至是自动化测试的很大的障碍。Jackie提出的这些知识,还是比较全面,同时大部分的测试工程师由于工作的经历和企业的产品所局限,要掌握这么广的知识面还是需要时间,可能只有少数的测试人员才能达到。更多,应该根据自己测试产品,来确定需要哪些知识面,然后有针对性的学习,这样会在比较短的时间内满足工作的需求。当然操作系统、计算机网络、数据库和要用的测试工具本身知识还是不可或缺,而相关的counter概念及其评价方法尤为重要。
我一直主张性能测试是要一个团队来做的,单独靠一个人来完成的,还是没有注重团队的作用,个人英雄主义的思想^_^
我觉得你可否把你列举的这些知识点按照不同的层次分列一下,这样或许更有指导意义:
如果仅仅只是提取性能数据的话,了解带宽和一两个性能测试工具就足够了
如果要进而发现问题所在需要掌握更多的知识点;
再而之若要提出解决方案则需要深入掌握某些知识点
Jackie老兄,你说的这些都会的国内找不到几个吧。呵呵
很同意,楼上前辈的说法。
通过工作,同步去学习,我觉得是一个非常好的方法。
因为这样可以立刻检验你学习的东西是否有效,当然平时的积累也是很重要的。
光针对测试而言,我觉得测试工具的掌握是非常重要的。
很好的掌握测试工具,可以使你模拟到很多不同的场景,得到尽量多的测试结果;(我觉得manager们是贪得无厌的)
同时,当你发现defect之后,进入调优阶段,你也可以利用测试工具尽量地满足开发人员的测试要求。通过tester和developer的合作进行调优,可以弥补之前所说的测试人员没有开发经验。
tester即使没有很好的开发经验,我觉得也是可以做好性能测试的。
“提出好的问题就是最好的开始”--Jackie
@fzxugang
部分同意你的观点
性能测试团队中包括测试专家,数据库专家,OS专家,网络专家和业务专家等等,通力合作
@Carrie
把测试本身跟测试工具拉的太近是一个很大的误区,我一直坚持认为测试工具的掌握不那么重要,测试方法,测试理念,测试思路反而跟重要。实在没有工具,你自己写一个啊,有时候我们做测试就是因为太依赖工具,反而把一些根本的东西丢了,比如测试用例设计(以为有了QTP就可不用设计?),测试结果分析(以为有了LR Analysis就可以不用分析吗),测试流程(以为有了TD或者QC就可以完成测试流程吗)。
--引用--------------------------------------------------
fzxugang: 我一直主张性能测试是要一个团队来做的,单独靠一个人来完成的,还是没有注重团队的作用,个人英雄主义的思想^_^
--------------------------------------------------------
嗯,也同意这种看法。其实MS内部也有专门的团队和专家是负责类似工作的,比如精通某个产品或者某个领域,当然也包括性能测试和基于MS产品的优化,比如ACE和PFE团队。
上面列出的东西很多,可以算是一种理想化的状态,在现实中,特别是国内的测试行业还是处于刚起步的阶段,包括性能测试在内,绝大多数人还是在摸着石头过河,所以现实中从事性能测试的同行的知识、能力、经验、技术都相差巨大。
拥有丰富的知识、经验和高超的技术水平的性能测试专家当然是好事,但是还有很多企业或团队需要开展性能测试的同时,又找不到这么强悍的专家;或者像 Compin 朋友说的那样,“大部分的测试工程师由于工作的经历和企业的产品所局限,要掌握这么广的知识面还是需要时间,可能只有少数的测试人员才能达到。更多,应该根据自己测试产品,来确定需要哪些知识面,然后有针对性的学习,这样会在比较短的时间内满足工作的需求”。
所以,列出这些内容请大家一起讨论的目的,是像我上面说的那样,“相信每个人都有自己不同的经历和感想,可以跟其他人分享一下”,希望能听到更多已经从事或正在从事性能测试工作同行的感受和看法。
多歧为贵,不取苟同!:D
@Jackei
绝对同意你这句话:缺少实际的开发经验也是很多tester转向performance tester 和 SDET 最大的障碍之一。
其实前几天我在答复一个朋友对职业发展的困惑的时候是这样说的:
在测试人员中,两类人员比较占优势:有业务能力,经验丰富的人员和有开发经验的开发者。您是属于前者。
对于两类人,因为背景不同,又有不同的切入点和优势,在从事自动化测试的时候,这两类人相对来说,占有很大的优势。
首先说业务人员,他们有丰富的业务知识和背景,了解客户需求什么,知道系统或者业务的缺陷集中在哪里,知道从什么地方入手最容易发现系统的问题,知道客户的使用习惯,所以所在这方面有优势,他们需要补充自己在测试方面的知识,加强自己在测试编码方面的能力,可以从测试工具入手,这里只是一个建议,就不多说了,因为展开讲,也是一个非常大的话题了。方向可以是自动化测试工程师。当然也可以入手性能测试,不过这个要求的知识面更加广泛,包括很大的范围,比如数据库,操作系统,网络等,我的博客有这方面的文章介绍,可以参考一下。
对于开发人员,他们也有很大的优势,那就是编码能力,但是也有劣势 ,那就是没有测试的经验,也许缺少从客户角度思考问题的习惯,凡事以技术为中心,容易犯一些错误,这些人可以以自己技术的优势,加强自己在性能测试或者自动化测试开发方面的能力,方向可以为自动化测试开发工程师或者性能测试工程师。
可能跟这里的讨论有些偏了,仅供参考。呵呵
@rickyzhu
我是觉得既然有现成的工具为什么还要花时间去自己写呢?
当然,自己写的可以完全满足你的场景要求。
但有时候,只需要在原来的基础上做一些小小的变动就可以实现你的要求。
为什么我们不选择便捷的路呢?
当然这个需要具体情况具体分析。
这是我最近的测试给我带来的感觉。
对于上面Ricky提到的“测试工具的掌握不那么重要,测试方法,测试理念,测试思路反而跟重要”,以及Carrie提到的“为什么我们不选择便捷的路”,再加上fzxugang朋友的“个人英雄主义的思想”,其实都在讨论两个核心问题:
1. 所谓的“性能测试工程师”这个职位,到底该如何定义?一个性能测试工程师到底该掌握哪些技能?
2. 在一个团队中,性能测试工程师的定位到底是怎样的?应该负责做哪些事情?又有哪些事情是性能测试工程师不该强求完成,而应该交给其他team member来协助的?
对于这两个问题,我想一时也不好有个定论,因为我们国内目前的现状是在不同的企业,情况千差万别,同行们对于这个问题的理解也各不相同。所以,我想“另辟捷径”,以我所熟悉的医学领域这个貌似完全不同的行业来做个类比 J
|
课程类型
|
课程名称
|
总学时
|
理论课
|
实验见习
|
|
基础医学课程
|
人体解剖学Human Anatomy
|
108
|
68
|
40
|
|
组织胚胎学Histology and Embryology
|
60
|
40
|
20
|
|
生理学Physiology
|
85
|
70
|
15
|
|
生物化学Biochemistry
|
85
|
70
|
15
|
|
病原学(1)Microbiology
|
54
|
39
|
15
|
|
病原学(2)Parasitology
|
31
|
25
|
6
|
|
医学免疫学Medical Immunology
|
85
|
66
|
19
|
|
病理学Pathology
|
75
|
55
|
20
|
|
病理生理学Pathphysiology
|
42
|
42
|
|
|
药理学Pharmacology
|
62
|
46
|
16
|
|
临床医学课程
|
诊断学 Diagnostics
|
72
|
38
|
34
|
|
实验诊断学Physical and Laboratory Diagnosis
|
36
|
28
|
8
|
|
医学影像学Radiodiagnostics
|
36
|
24
|
12
|
|
核医学Nuclear Medicine
|
20
|
18
|
2
|
|
外科总论General Surgery
|
40
|
34
|
6
|
|
动物手术学Operative Surgery
|
|
24
|
|
|
医学心理学Medical Psychology
|
20
|
20
|
|
|
医学遗传学Medical Genetics
|
30
|
30
|
|
|
预防医学Preventive Medical
|
45
|
33
|
12
|
|
医学统计学Medical Statistics
|
54
|
27
|
27
|
|
内科学Internal Medical
|
135
|
75
|
60
|
|
外科学Surgery
|
125
|
70
|
55
|
|
妇产科学Obstetrics and Gynecology
|
60
|
40
|
20
|
|
儿科学Pediatrics
|
60
|
40
|
20
|
|
神经病学Neurology
|
20
|
16
|
4
|
|
精神病学Psychiatry
|
20
|
16
|
4
|
|
中医学Chinese Traditional Medicine
|
40
|
30
|
10
|
|
传染病学Infectious Diseases
|
24
|
16
|
8
|
|
眼科学Ophthalmology
|
16
|
12
|
4
|
|
耳鼻咽喉科学Otorhinolaryngology
|
16
|
12
|
4
|
|
皮肤病与性病学Dermatology & Veneral Diseases
|
20
|
16
|
4
|
上面列出的,是某医学院校的临床医学专业课程设置,我截取了主要内容,原文http://jwc.shsmu.edu.cn/bvnews/upload/805.doc">点击这里下载。
可能大家不熟悉这个领域的话,看这张表会看得头痛,不过我也不是让大家一定要了解这个领域,我只是想借此讲讲一个医生是如何打造出来的,以及医生如何工作,顺便看看能否解答上面提到的两个问题:)
1. 目前的临床医学专业,通常要求是7年制或者8年制教学(本硕连读)——也就是说,一个人要经过7-8年的学习+实习,再到医院工作一年后,才能有机会考到牌照,成为一个合格的医生。这里可以清楚的看到,能否成为一个合格的医生,是有很明确的客观标准的,包括完整的培训体系、课程设置、课时要求以及认证资格。而我们目前进入测试行业,或者说成为一个性能测试工程师,却并没有这么明确的标准。换句话说,以国内目前的状况来看,大多数企业和同行还集中在使用某个工具录制脚本、设计场景、收集数据、生成图表看看几个counter的阶段,如果这就算是性能测试工程师的话,目前业内对于性能测试工程师的要求是否太低了?
2. 在医院里,医生是会分临床医生和辅助科室医生的,比如内、外、妇儿属于临床科室,而超声检查、CT、化验之类的属于辅助科室。
其中,临床医生需要做的工作,是通过望闻切问的方式对病人做一个初步检查,确定是否需要进一步由辅助科室进行其他检查,并根据各项检查的结果,对病人的病症做出诊断,提供治疗方案;最后是定期的病人复诊,临床医生根据病人每次复诊时的检查情况,确认是否需要调整治疗方案。
而辅助科室的医生,则根据临床医生的初步检查情况和检查要求,通过物理或化学的手段,借助各类仪器、试剂来对病人的某些具体的counter进行检查,并提供检查结果和反馈意见给临床医生。
好了,说了半天,大家觉得对于“性能测试工程师”这个职位,明确的职责定义是什么?性能测试工程师到底是临床医生?还是辅助科室的化验员?
再补充一点:无论是临床医生还是辅助科室医生,在N年的专业医学生学习过程中,所学习的课程科目相差不多,只是会有针对性的调整各科目的课时数。而并不是说临床医生可以不了解辅助科室如何进行检查,或者辅助科室的医生只要会操作设备或者分清化学试剂就可以了。
或者一个好的办法,是找几篇国内外、各类企业对 performance testing 这个职位的 JD 来总结一下,至少对现状的要求也有个感性的认识 :)
jackei老兄,这罗列的一大板可能会让刚想转入性能测试的同行犯晕哦,我估计更多是想从你这里得到在这个领域的不同阶段所需要掌握的知识。理想的,当然是如你所列,而现实中确实不太可能实现,基本上都是进入这个领域之后,在实际工作中,发现缺少某方面的知识,再去恶补的。
而现实中,缺少开发经验确实给做性能测试带来很多障碍。而个人认为zhu兄和Carrie所讨论的测试本身与工具,我觉得就好像武学中的心法与招式一样吧。双方所处的角度可能并不同,掌握了上乘心法,亦能自如运用任何工具为我所用,或自创。而只精通工具,失之,则无所适.但如能从某一工具中窥其全部,领略其后的精髓,那也不错。
其实这样说的话,真的未免让人有点晕。不过仔细看下去,似乎每一个又都是不可少的。
但是我觉得你列的是一个JD吧。我觉得如果针对一个企业一个产品来说,就没有必要这样要求了;我觉得对一个确定的产品来说要求如何即可:
1,产品通信模型;
2,要测试的系统通信协议;
3,网络架构;
4,统计信息;
5,复杂信息的图例;
6,应用分析;
7,系统监控和管理;
8,功能;
9,业务分析;
10,人为因素分析;
11,系统的开发语言;
12,数据库设计和管理;
这上面列到的也已经超出了很多人的个人能力范围。所以我觉得这样要求一个人的话,也是非常不理智,和没有道理的。
如果一个团队拥有这样的能力,就可以做了。我还是比较同意徐兄和朱兄、陈兄所说的,性能测试是一个团队。如果我所列的这个列表或者陈兄所列的来要求一个团队并不过分,但是要求一个P tester,未免有点强人所难。
即使这些东西,有一个人真的理解了这么多,我们先不说深度的问题,他所面对的产品是不是就能符合他所有的能力呢?这种几率是很小的,所以,我认为,在工作中学习,然后在工作中成长,要想练就一身面对任何产品都游刃有余的性能测试能力。
不可能。
--引用--------------------------------------------------
CoderZh: 原来还有这么多东西要学的啊
--------------------------------------------------------
还有人认为测试就是点点鼠标,等出错吗
从初级测试人员或功能测试人员转为做性能测试,要了解的东西还真不是一般的多。做测试不能失去耐心,我想学习也一样,一天一点进步,一步一个脚印。应该多多向各位前辈学习
希望不要有人拍偶,说说我的想法
--------------
本人的观点是白盒测试和性能测试都应该由开发人员做,至于负责人员是属于测试部门还是开发部门看公司的需求和架构。
理由如下:
1。做这两种测试都需要丰富的开发知识和系统知识,特别是性能测试,从严格意思上来说,他必须对系统的架构,组件之间的结合,数据设计非常的了解。这些都是测试人员需要学习多年了解的。
2。软件企业的发展需要更细致的分工。相信很多管理者都希望自己的下属能够全心全力的做好分内之事。工作就是工作,不是学习,如果一家公司有时间让他的员工可以在上班的时候学习工作以外的东西,那么他的管理肯定有问题。如果测试人员单想评在下班之后学习得来的东西就坐可以检查开发人员工作的事情,做为管理者的你放心嘛?
3。测试工具的学习曲线。测试人员和开发人员一样,学习测试工具同样一样。如果在有人指引的话,开发人员更可以很快的学习测试工具。特别是现今的工具越来越强大,越来越简单化,谁都可以很快的上手。测试人员还要学习语言,而开发人员凭着自己的优势,很快就可以使用工具了。而且对系统的熟悉更让他们可以很快的完成系统性能的瓶颈发现和调优。以前我就曾经教过4个高级程序员使用LR,他们在一天之内就解决了我们思考了几天的问题。这也是触动我有此想法的根本原因。
当然理解所有一直在努力奋斗的测试工程师们,为了能够展示更多自己的技能和赢得他人的尊重,大家包括我自己都在思考着如何进步。但是本人还是觉得性能测试可以作为提高自己能力的一个方面,但不要让他成为一个职业的发展方向。
当然这里排除那些简单录制回放的所谓的性能测试,如果有人认为录个脚本,加写虚拟用户,回放就是性能测试的话,我无话可说。
一家之言,肯定有异议,但本人不愿争论。
看了这个,吓死我了,我还远远不合格呀!^_^
jackei说得对,做性能测试需要掌握的知识确实很多,上面列的这些都对。
有些朋友的疑惑也是可以理解的,一个人精力有限,要同时掌握这么多,真是很难。那么怎样看待这个问题呢?
其实IT行业本身就有这个特点,知识日新月异,一天不学就会跟不上了,我想IT行业都发展了这么多年了,身处这个行业的人应该早就习惯了吧。对于开发人员来说,他需要不停地学习,今天用的是C,VB,VC,Delphi,明天就变成了java,.net,php,数据库一会是informix,一会是oracle,一会又会变成DB2,他们是怎么学得会的呢?一方面是因为他们要掌握的是编程的思想和算法,另一方面,因为他们是一个强大的team,一个team在一起工作,遇到不会的东西就互相讨论、学习,自然掌握起来就没那么吃力了。反观现在的测试人员,尤其是性能测试人员,多半是孤军奋战,放眼国内,真正可以称得上在做性能测试的人,实在太少了!所以才会形成现在的局面,一个性能测试工程师不得不自己去面对这么多知识技术,学习提高得又很慢,我想这才是我们面临的最大困难吧。
◎nckiki
看了你的想法,实在不敢苟同。
个人认为,你对性能测试的理解也是狭义的。针对你的理由,我发表一下我的看法:(个人的看法,希望大家多给意见)
1. 单单只是测试人员需要学习多年才能了解吗?估计开发人员也是需要的吧。
所以,象前面的前辈们说的那样,完成一个性能测试,我们需要的是一个团队,而不是一个测试人员或者一个开发人员。
2. “工作就是工作,不是学习” -- 为什么要将工作和学习割裂呢?这么说公司都希望自己的员工,进来的时候就知道1+1=2; 而离开的时候也只知道1+1=2呢?
所以,公司给员工提供学习的机会,不管是参加培训课程还是给员工自学的时间,这都是相当必要的。通过工作和学习的结合,使员工不断的成长,完成不可战胜的任务,这不是很好吗?
3. 你其中举的例子体现出来的道理,并不是说测试人员不应该做性能测试,而是测试人员应该与开发人员一起合作完成性能测试。试想,如果没有你教会了他们使用LR,他们能够用一天的时间解决你的问题吗?估计一天他们连LR的脚本都没有写好。
所以,术业有专攻。不要过分看低测试人员的作用。
最后,为什么性能测试不要成为职业发展的方向呢?俗话说,行行出状元。性能测试也是一个相当好的行业,我不贪心,我做榜眼行了:p
我是一个没有任何开发经验的做性能测试的测试人员。我依然相信,我前途光明!希望大家不要失去信心啊!
看了大家的回复,非常受益,激发了很多新的想法,有些思路也清楚了很多——这就是多讨论的好处 :D
我也总结一下大家讨论时提到的一些关键点吧。
1. 要做好性能测试,的确是需要丰富的专业知识和行业背景知识的,同时也需要大量的实际经验,仅仅会使用某个测试工具完成脚本的录制、场景设置和图表生成等简单操作是远远不够的,但是学习本身要根据实际工作需要来进行,慢慢来;
2. 性能测试是需要teamwork的,单枪匹马很难做好。所以,测试工程师要根据自己的经验和专长,明确自己在性能测试过程中的定位,因为性能测试相关领域的学习和经验积累是一个漫长的过程,在具体任务面前,不要勉强自己。
如果再回头看我一开始整理的那份表,对于没有做过实际项目开发就直接做测试的同行来说,的确是很难全部掌握好的,但是有几项是必需要掌握好的,包括:
1. 精通性能测试的基本概念,过程,方法论,了解性能工程;
2. 精通1个商业性能测试工具+1个开源性能测试工具,知道工具可以做什么,不可以做什么,以及工具使用中常见的问题和解决思路;
9. 了解一般的大型企业应用的部署架构和应用架构;
11. 熟悉统计学的基础知识、常用分析方法以及实验设计方法,了解数学建模相关的知识;
12. 熟悉专属行业的业务知识和用户场景,例如电信行业的OSS系统所涉及的业务知识和用户场景,证券交易系统所涉及的业务知识和用户场景;
毕竟性能测试包含的工作内容还是比较多的,从性能需求的review,到测试方案和计划的制定,测试用例的设计,实验室环境的搭建和数据的准备,再到脚本的录制开发和测试执行,以及后续的性能分析和不断的优化,要求测试工程师全部都能做好也是不现实的。
但是掌握好了上面的这些内容,至少可以把“从性能需求的review,到测试方案和计划的制定,测试用例的设计,实验室环境的搭建和数据的准备”这一段做好,这个是份内的事情;
如果“脚本的录制开发和测试执行”遇到一些实际的难题,可以找开发人员帮忙解决,但是主要负责人还是测试工程师;
最后的“性能分析和不断的优化”的确是难度最大,对于测试工程师来说也最难掌握好的,因为毕竟是不同的专业路线了,而且即使是经验丰富的开发人员,也都不是每样都能很强的。所以对于这部分,倒是可以考虑由架构师或者PM召集被测模块的开发人员+技术专家来一起进行,测试人员在这个过程中不断的跟进学习,让自己能成长起来,以后能解决越来越多的问题。
剩下的,就是永不停息的学习,学习,学习,以及不断的积累经验了。
——多歧为贵,不取苟同。
其实我自己,可能很多做过性能测试的同行开始时也一样,开始接触时并没有太多的学习规划,而是在当有这方面的工作需要后,基于任务目标针对性的去学习,并快速应用起来。在完成实际的性能工作之后,回过头来根据自己知识面和技能方面的不足,制定学习计划去弥补。
所以,对于没有实际性能测试经验的同行,我觉得最重要的就是找一个合适的软件,自己定制目标、计划、环境并练习起来,在实践中不断的学习,从而达到测试入门,并制定阶段性的学习计划。
实践出真知。在入门之后并逐渐的学习当中,你也会发现其实性能测试并没有那么的高不可攀,或者捉不到学习的方法了。
最后,就像jackie所说的,永不停息的学习、总结、探索、交流、提高了。
挨拍了,不过自己也没说清楚,回头再看,比较偏激。
刚写完了一个长篇大论,有兴趣的看看。
http://blog.csdn.net/imlogic/archive/2008/07/08/2624234.aspx
当时自己在Jackie的那个文中的评论提出“本人的观点是白盒测试和性能测试都应该由开发人员做,至于负责人员是属于测试部门还是开发部门看公司的需求和架构。”其实自己的观点很简单,开发人员因为他丰富的开发知识(当然排除刚入行或比较初级的开发人员)和对系统架构及设计的了解,可以极大的保证性能测试的质量。而且当发现问题后,可以帮助开发人员做后续的系统调优。而且性能测试也应该摒着“尽早开始”的原则尽可能的早些在开发早期执行。我也因此将此划入了性能测试的范畴,但是查找资料发现那其实是性能工程的内容,早已超越了性能测试的范围。性能测试只是性能工程的一个子集。回到最初,性能测试和功能测试其实都是一样的,计划,设计并实现测试,发现问题,在问题解决后继续确认问题是否修复,给出评估。
就目前来说,对于性能测试,毕竟有很少的测试人员能够达到Jackei要求的,毕竟这个是个高端的职位。前一段时间,我和其它的测试人员也探讨了测试的职业发展。
讨论后,发展的目标之一:自动化测试,不是Record/Replay,Modify script and Develop user-defined function or sub.而是更高一层的,开发自己的Dll文件(那.Net开发做例子),然后增强QTP等工具的不足,这个也是我目前的努力方向。如果能够写出一些Dll应付复杂的测试环境,那你的水平也跟开发的差不多了。
发展目标二:性能测试/安全测试,这个阶段要求的技术非常的复杂,而且学习的时间也是非常的长,如果没有实际的项目经验,很多东西也只是停留在理论的水平,很难有质的飞跃。这个技术水平的提高除了学习,还要看工作的机会。当然,我看到Jackei和Richy Zhu的公司都有这个机会接触到。我们公司目前的性能测试,还只是需要手工测试就OK了。
测试水平的提高,除了学习,还要有实际的项目,这个才是水平提高的关键。要不然,都是纸上谈兵。
引用一段 InfoQ 上对《Release It!》一书作者的访谈中的一段话,相信大家从中能有一些新的体会 :D
——正文开始——
InfoQ:你能列举几个大型系统未达产品标准就进行发布的例子吗?它们失败的原因又在哪里呢?
Michael Nygard:首先我举一个零售商的例子,这个公司曾经在几年前建立了一个全新的.com平台。为了满足预定的访问量指标,我们在发布前对此项目做了三个月的负载测试和性能调优。但是,最终它还是在首次启动后十五分钟就宕了机。怎么会发生这种事情呢?没错,我们是做了负载测试,问题是测试在某种程度上还是太过“温和”了。例如,在测试中所有的VU都默认使用cookie。后来我们发现开发工程师对会话(session)的设计存在很大问题,禁用cookie的浏览器会制造出大量的冗余会话。在测试中,VU是不会在一个会话中对同一个URL做多次访问的,因此负载大都被合理地分配到多个应用程序服务器上了。事实上,我们没有对刷屏者和代理购买程序采取任何防范措施。
如果你是一个.com系统的开发工程师,有一天测试人员过来告诉你说“我登记了一个程序错误,因为在短时间内用一个不使用cookie的浏览器去重复访问某个页面的时候,系统就挂掉了”。你真的应该感到幸运,因为有人这么早就给你指出了这个问题。
即使测试人员及时报告了此类bug,它们也可能马上被标为“关闭”,理由是需求计划书上标明了只支持使用cookie的用户。你就理所当然地只想着使用cookie的用户了。但是要知道,这并不意味着如果有人使用不带cookie的脚本访问网站的时候,它就该宕机啊!还就是有这么一批人,他们虽然不知道怎样使用cookies,但是他们能用"wget" 、 "curl" 或者VB编写脚本来访问你的网站。结果就是,不管你是愿意还是不愿意,他们都会来“光顾”的。
——正文结束——
原始出处:http://www.infoq.com/cn/articles/nygard-release-it" target="_new">http://www.infoq.com/cn/articles/nygard-release-it
真有那样的人,我记得在哪里看过一个介绍一个高手,他很早很早,早在internet刚出来的时候就用internet了,但是从来不用浏览器,他自己写了一个wget之类的脚本的东西,每当要访问一个页面的时候,就传一个参数进去,然后那个页面的信息就出来了,:COOL
就像www.goosh.org
--引用--------------------------------------------------
Jackei: 引用一段 InfoQ 上对《Release It!》一书作者的访谈中的一段话,相信大家从中能有一些新的体会 :D
——正文开始——
InfoQ:你能列举几个大型系统未达产品标准就进行发布的例子吗?它们失败的原因又在哪里呢?
Michael Nygard:首先我举一个零售商的例子,这个公司曾经在几年前建立了一个全新的.com平台。为了满足预定的访问量指标,我们在发布前对此项目做了三个月的负载测试和性能调优。但是,最终它还是在首次启动后十五分钟就宕了机。怎么会发生这种事情呢?没错,我们是做了负载测试,问题是测试在某种程度上还是太过“温和”了。例如,在测试中所有的VU都默认使用cookie。后来我们发现开发工程师对会话(session)的设计存在很大问题,禁用cookie的浏览器会制造出大量的冗余会话。在测试中,VU是不会在一个会话中对同一个URL做多次访问的,因此负载大都被合理地分配到多个应用程序服务器上了。事实上,我们没有对刷屏者和代理购买程序采取任何防范措施。
如果你是一个.com系统的开发工程师,有一天测试人员过来告诉你说“我登记了一个程序错误,因为在短时间内用一个不使用cookie的浏览器去重复访问某个页面的时候,系统就挂掉了”。你真的应该感到幸运,因为有人这么早就给你指出了这个问题。
即使测试人员及时报告了此类bug,它们也可能马上被标为“关闭”,理由是需求计划书上标明了只支持使用cookie的用户。你就理所当然地只想着使用cookie的用户了。但是要知道,这并不意味着如果有人使用不带cookie的脚本访问网站的时候,它就该宕机啊!还就是有这么一批人,他们虽然不知道怎样使用cookies,但是他们能用"wget" 、 "curl" 或者VB编写脚本来访问你的网站。结果就是,不管你是愿意还是不愿意,他们都会来“光顾”的。
——正文结束——
原始出处:<a href="http://www.infoq.com/cn/articles/nygard-release-it" target="_new">http://www.infoq.com/cn/articles/nygard-release-it</a>
--------------------------------------------------------
是不是说,在模拟请求的时候,也需要考虑用户请求模式的多样性呢?
即使考虑了,在性能测试中,应该如何模拟这些请求呢?
楼主也是bby 的成员吗?
我是华理的测仪051的学生,在上海市公共服务平台实习,我发现这个网站能给我们学校的科技成果转换带来便利之处,之前我校的超细粉末工程就和该平台有良好的合作关系,望能成为友情链接,该平台是上海市科委下属的公益平台,能提供各种关于科技方面的咨询和解答服务。
我发现楼主在软件检测方面知识丰富,有空来我们论坛做客一下吧
论坛网址:http://bbs.sgst.cn/ 研发公园
我的联系方式:msn:gumtree_zas@hotmail.com
QQ:260212806
@rickyzhu
你好,我是新来的,请问你的博客地址是?
(这个要求的知识面更加广泛,包括很大的范围,比如数据库,操作系统,网络等,我的博客有这方面的文章介绍,可以参考一下。)