性能测试(1)-开篇杂谈
性能测试(1)-开篇杂谈
自学性能测试很辛苦。所以想趁着我学习的时候,记录下我的一点一滴。等到将来拿出来看的时候,可以有东西来给我回味。
我呢,本来学校出来是做开发的,但是呢,工作难找,谁会要要一个专科而且没有经验大学生来写代码呢?找工作,很不容易,到处受挫折。为了得到那万恶的RMB来买自己心爱的显卡来打游戏,曾经一度去了工地,拿起了大锤。当起了圣骑士(其实就是小民工)。嘴里还高喊"大地母亲忽悠着你~",然后猛地一锤子落下,再费力的举起大锤,高喊"为了辛多雷的荣耀~",又是一锤子。我果然不甘心这种生活,所以决定"先就业,再择业"选择了低门槛的测试行业,信誓旦旦的想着,先做两年,等我有经验了再转开发。可是现实不容许我这样。这条错路想回头太艰难了。所以呢,既然走错了了路。就将错就错吧,所以我走在测试的路上发现了很多东西,发现测试不是人们看到的那么低门槛的职业。与我年幼时的梦想相近。"黑客"每一个搞计算机的人,谁没有梦想过黑客呢?而测试行业跟"黑客"真的隔得太近了。简直就像是在黑客破坏系统前,先把系统破坏掉。预估到这种风险的可能,然后修复。所以我开始正视测试行业了,真正快乐的人是那种在走弯路时也不忘享受风景的人。O(∩_∩)O~
理论上性能测试工程师需要达到的标准:
- 是否能够独立开发脚本
- 能否对需求进行性能分析并获得性能需求
- 能否开发脚本和场景完成对用户行为的模拟
- 能否通过性能测试发现比较具体的性能瓶颈
- 能否根据性能瓶颈提出有效的调优方案
- 文档编写环境搭建的能力
- 团队协作与沟通的能力
性能测试工程师需要掌握的技能:
- C/C++,因为C配上Loadrunner是很常见的性能测试员应该具备的实力
- Loadrunner,可以模拟大量的用户进行压力测试。工具有很多种,但是LR是典型。关键是知道运行原理,和自己想要的需求是什么。我之所以用LR是因为我在做游戏中的压力测试时,需要很有游戏玩家上线走动,而请这么多的玩家,公司消费很大,所以可以用LR模拟玩家的消息请求。来做很多个机器人在游戏里面走动。
- SQL,熟悉数据库可以用来造数据,你说,LR可以造数据啊,但是大量的数据怎么办呢?20W条玩家数据,你用LR刷一晚上,都未必能刷完。而用数据库,也许就几时分钟或者几小时的事情。而且据大神说,性能调优,有70%的问题是来自数据库。所以数据库学好,很有必要的。
- Linux/Windows,学好操作系统,能让你对系统更加了解自己所用的东西,哪里可能会出现缺陷。如果不了解操作系统原理,不了解操作系统的内部结构和其向用户提供的很多重要的库函数和系统调用,就不能有效的发现这些软件的缺陷。也不知道出了问题该怎么维护。
- TCP/IP协议,学好网络不会有错的。不管是用来攻击还是防御,都是一门很有意思的学问。我们测试,说白了就是"破坏"。像黑客一样,能比黑客先破坏掉系统的安全并且修复。可能系统上线的时候会少很多麻烦。
- 配电脑,会配电脑就会对一些CPU指标呀,内存指标特别敏感。什么样的电压会造成系统不稳定啊,什么样的内存会不兼容。所以会配电脑,也是可以提升性能测试的水平的。
性能测试的一些总结和归纳
从上图看性能测试基本占了整个软件测试50%的测试内容,如负载测试,压力测试,性能测试,大数据测试。等等。可想而知性能测试在测试中的重要性。
其实性能测试,就是洗白的了黑客。每个搞计算机的,谁没有想当黑客的梦想呢。下面是一些高手总结黑客的学习方向。希望能帮助到有兴趣的朋友。
性能测试的概念
性能测试(Performance Testing)
在一定的负载情况下,系统的响应时间等特性是否满足特定的性能需求,从某些角度来说,性能其实是功能的一种。
对于系统测试来说,作为一个优秀的系统测试工程师需要有"系统"的视角,来分析被测系统。
- 功能测试:某个功能点
- 性能测试:整个系统包括软件和硬件
软件测试是指:
在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。
资源可能包括其他软件产品、系统的软件和硬件配置。对于用户操作的系统,功能性、可靠性、易用性和效率的组合可以由使用质量从外部进行测量。
衡量一个软件的性能,需要从软件效率的一下3点考虑
- 时间特性
---在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力
- 资源利用性
---在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力。
- 效率依从性
---软件产品遵循与效率相关的标准或约定的能力
也就是说,我们需要确保软件在一定的资源下达到一定的性能,并且遵守相关的标准或协议。例如我们从来不会奢望以太80386的电脑能够在1分钟内启动完成winodws系统,因为我们知道这样的硬件违反了产品的标准。但是如果一台高级的主流配置电脑在1分钟内无法启动Windows系统,你就会开始怀疑是不是自己的硬件存在某些问题,如果是硬件问题,那么你就会觉得这个操作系统慢,不好用了。
所以作为一个性能测试工程师的主要工作目标就是确保系统能够在一定的硬件、软件环境下达到一定的性能指标。