vlambda博客
学习文章列表

想从功能测试进阶到性能测试?你至少得思考这几个问题!


想从功能测试进阶到性能测试?你至少得思考这几个问题!


本文首发于51Testing,作者 广州八神 是 51Testing特邀嘉宾。


以下是来自 51Testing 整理的对话实录,


不要忘记点“在看”表示支持哦!



01


现在在做功能测试,一般都是把软件界面和该软件的逻辑测试一下,工作大半年了想往性能测试方向转,感觉很多东西要学习,但是不知道从哪下手,请大神指点




  

有这种想转的思想很好。相信有很多和你同样情况的同学,同时,半年的经验一下子转过来是不可能的。

  首先,我建议在工作过程中在积累一年左右。主要是在做功能测试的同时,你可以自己搭建测试环境,加深对整个系统的理解,这个过程就在提高自己的学习能力和打下知识基础。被测项目用了哪些技能可以自己多多加深学习和理解。也就是在项目中自己更多的学习,利用工作中的测试项目充分学习。
  其次,学习一款性能测试工具。 我本人不建议上来就学那些操作系统、数据库等知识。毕竟先从工具入手是最快最合适的,至于会不会分析,那是知识的累积程度和思维方式的问题,是后面的问题,如果真想转,先学一款工具,把工具玩熟。且在功能测试中,如果有性能需求,多多参与。
  我在我的课程中也和大家说,性能测试拼的是对整个计算机体系的理解,而不仅仅是工具。但我们必须先掌握工具。以此为切点快速的入门。希望对你有帮助~


02


   把应用部署在云上,通过什么方式可以测出应用在云环境的性能特征?




  

无论部署在哪里,我们的关注点应该是不变的。而具体通过的方式,这点我在测试云平台的方面的经验并不多。但我相信即使云平台,其所依赖的技术应该也是不变的或者是基础技术的组合。因为在我看来。目前所有的所谓新技术(包括云)都是在已有的技术的灵活运行或者组合运用。就像ajax那样。因为云也是时代的产物。如果互联网没有那么快和普遍,磁盘没有这么低价。云也就不会存在了。像1888年牛顿发现那么多定律和1905年爱因斯坦提出相对论和光电效应这种绝对突破比起来。目前的技术没有绝对的突破了。希望你可以加强计算机基础知识的学习。这样我相信测试任何东西都会找到相应的方法。


03


   项目上一直没有用性能测试,请问怎样把性能测试引入项目?




  

需仔细和相关人员分析被测系统是否有性能相关的需求。相关人员包括需求人员、研发人员、市场人员以及其他利益相关人员。

  同时,性能需求的分析也不仅仅是显而易见的,还有一些隐形的。
  你的项目暂时没有性能测试估计是暂时没有因为性能问题产生过故障或用户量暂时不高。项目虽然暂时没有,但我认为仍可以平时学习性能测试相关的知识,一个是技多不压身,而就是,早晚用的上。


04


   希望给出一些性能测试项目的经验分享,项目实战的测试过程讲解等





  实战的例子还是有的。课程中有很多。但在这里没法详细说具体的项目。也希望可以将问题细化一些。这样可以更有针对一些。


05


    刚刚做测试大半年,希望往性能方面发展,有什么学习方针和学习路线可以借鉴参考参考一下,谢谢大神




  

建议在工作中学习,不要认为功能测试就学不到东西。自己暗暗多学。其次是学习和掌握一款测试工具。先不要急着对结果分析。等这些都熟练以后,再从计算机体系角度全方面的学习,进行提高。


06


   比如很多人来运行系统,查询慢,页面刷新慢,是不是这些和多人压测,反应慢相关的问题就是性能测试关注的问题?还有那些也是属于性能问题?





  我们学会如何使用性能测试的工具,模拟用户,传输参数,进行压测,出来报告,往后就不知道再可以做什么了。
  首先回复你的第一个问题:对于性能测试来说,我们不能单单理解为只是在多用户并发情况下的一种情况。 比如说我们在日常生活中,会说某样东西性能很不错。其实单单性能来说范围是很广的。比如对于一个单用户的导入操作,在100万数据下,我们预期是1分钟完成,但实际花了10分钟。这就不满足我们的性能需求。虽然是单用户的操作,但算系统的性能。同时,除了你说的慢,是性能指标外,其他的包括资源消耗、稳定性、可扩展性等都可以算为性能方面的指标。
  “我们学会如何使用性能测试的工具,模拟用户,传输参数,进行压测,出来报告,往后就不知道再可以做什么了。”   之所以不知道做什么了,就说明一方面经验欠缺,另一方面不确定,不自信。因为我们在实际过程中发现,本来测试结果很好,可有些测试人员总是想找出一些问题。这完全没有必要。既然达到了预期,那完全可以结束测试,而不是漫无目标的继续分析。而如果是没有达到预期目前,那该如何进行分析呢?这就是一个有经验的人和没有经验的人的区别了。当然,这些经验是需要时间和思维的积累的。完整的分析需要大量计算机相关的知识。


07


   在面对大用户量的系统并发 压力测试, 能不能说一下主要是从哪几个方面去考虑关注点?





  大户用量的主要关注系统的关键业务的响应时间、资源占用情况。一般来说这些是必须的。当然还有TPS。 除此之外,还要根据系统的特性来设计性能测试用例。比如有些系统有主从互备,那样我们就应该在测试过程中设计一个用例在其中一个故障情况下,系统的表现如何。这是需要覆盖的用例。设计什么用例,需要根据系统的特点。


08
  

熟悉了LR后老觉得自己已经靠近性能测试了,但是看了一本性能测试的书,才体会到工具只是里一个小小辅助部分,所以现在也就更迷茫了。不知道应该怎么继续下去,求指点迷津~~怎样规划才能让这条路走下去,且走得更远呢?





  你的提问我从两个方面回答:
  1、“自学了loadrunner,已经基本熟悉了所有过程,但是我工作中几乎用不到性能测试”
  自然,如果工作中用的不多,那么实战的机会少。就会觉得学了也用处不大或者没有成就感。无论是谁,遇到这种情况都会有点迷茫的。这是正常的。但如果自身希望今后做性能测试,那学了就比没学强。虽说目前用不上,但学习这方面的知识会促进你做其他类型测试。因为眼界宽了,考虑问题的角度就多了,测试的深度自然也上去了。但鉴于实战经验少,你可以多观察自己测试的项目,在没有性能需求的情况下可以自己对其做性能测试,也能达到联系的目的。同时,这些积累也会帮助你换工作时候增加成功率。且在新岗位下,性能测试就有可能用得上了。知识不会没有用的,只是等待机会而已,而当机会到了,确没有这方面的技能,那才真正的懊悔。所以,继续坚持学习,自己创造机会或寻找机会,总会有用的上的一天的。
  2、“熟悉了LR后老觉得自己已经靠近性能测试了,但是看了一本性能测试的书,才体会到工具只是里一个小小辅助部分,所以现在也就更迷茫了。”
  这是你说的第二个瓶颈。对于你来说,先突破实战少的瓶颈。然后你就会发现会遇到你说的第二个瓶颈。要解决这个瓶颈单单有性能测试的知识是解决不了的。计算工具玩的非常熟练,也可能是不会分析的。因为这需要大量计算机各方面的知识。网络、数据库、操作系统、中间件。这么多看起来是很一个超人做的。但其实只要掌握分析问题的原理,且通过积累,都是可以解决的。问题是学习的路径和方法。
  我的经验是,在可以完成一般项目的基础上,首先加强操作系统和网络方面的学习。这是理解整个计算机体系的关键。当然这需要慢慢积累,不可能一蹴而就


09


   前辈: 能分享一些学习性能的资料和经验?





  学习资料你可以说的具体一些。学习的经验是先工具,能做一般项目。然后在这个情况下,有一定理解和实战基础上,先学习操作系统和网络。操作系统对于理解和学习整个计算机体系都非常重要。而性能测试的分析和脚本的开发玩的就是协议,所以网络协议的理解,特别是tcp,http协议的理解,至关重要。对于tcp、http强烈建议加深理解。


10
  
求教大神: 如何测试系统支持8000并发,允许100万用户同时在线的测试?





  8000并发确实不少了。首先你要确认是否需求真的需要8000的并发。因为有些性能需求是由于需求人员或者会开发人员不清楚而随手拍脑袋写上去的。而且就拿支持8000并发来说,到底是什么操作?有思考时间?是否有一定的数据基础量。这些都是需要具体细化的。从这个需求也可以看出,很多性能测试需求并不准确,需要我们测试人员和相关人员进一步确认。而100万用户同时在线也需要进一步喜欢,这100万都是登陆后什么都不做?还是有部分登陆后不做,有部分做一些操作。这些都说明一个问题,很多性能测试需求是需要进一步确认和细化的。



11


   以你多年的经验分析一下,是不是只有大公司才养得起性能测试工程师?





  目前来看确实如此。因为小公司希望招一个全才,希望你什么活都能干。而大公司相对来说分工细致一些。但最终我觉得不管在哪里,我们掌握相关的技能是最关键的,俗话说的好,家有金山银山,不如一技防身。虽然可能很多人不认同,但对于大部分无背景的普通人来说,这是最现实的。


12


   如果要入手学性能,操作系统应当从哪些方面入手学? 以及对操作系统的掌握在实际中哪里哪些地方会应用到,能否举个例子? 还有网络协议,很多协议,从哪些开始学比较好?





  对于协议来说,最优先学的是HTTP 协议,然后是TCP协议。这点在前面已经说的。
  而对于操作系统,我个人希望大家可以看一些相关的书籍。如果大家有需要,我也可以共享一些。
  例子就是 例如你在学习mysql时候,在学习myisam存储引擎时一般会遇到这么一句话,说myisam是借助于操作系统的文件缓存来实现索引和去读加速操作的,而innodb存储引擎是有专门的缓存内存的。这个时如果你清楚操作系统文件缓存的原理,在理解mysql相关技术时候就更容易和清晰。如果不懂操作系统,甚至不知他在说的是什么。
  几乎绝大部分软件都在操作系统基础上运行,不了解它,没法真正了解软件的运行情况。


13


   我们公司有个项目现在要求做如下的性能测试,我现在不知道怎么入手,因为也是刚做性能测试不久,麻烦您帮我分析下:





  需求如下:
  系统应确保在运行5~10年(每年1000万只表计数据处理能力,1000万只表每只表数据量大约2M)后对录入、文件导入、文件导出等操作时不得出现明显卡滞或数据溢出、丢失情况。
  系统长期多角色运行时其文件导入或导出速度不得低于100k/s。
  系统应具备自动备份功能,在系统发生异常事故后能够从备份服务器中调取/恢复相关的数据信息,确保相关数据信息的安全性。
  这几个条件涉及到:容量测试、可靠性测试 、负载测试 对不对?那这几种测试要怎么入手去设计场景针对这份需求?
  你说的没错,几种测试类型也都是需要测试的。因为这些是你系统的特点和要求。这就需要针对这情况来设计相应的性能测试用例。举一个例子,系统要求5--10年的未来性能储备。那就在执行时候设计一个按照目前标准来计算五年后的数据量情况来设计一个用例。如果5后的测试用例通过,那再设计一个10年的测试用例。这是执行和设计过程中的小技巧。
  导入导出不得低于100K,这里你要进一步确认是在什么网络下,不同网络对下载影响大的。同时也要进一步确认是否在多人同时并发导入导出。因为有些系统导入导出是指定人来做的,存在并发的情况很少。而有些是多人同时操作的。需根据具体操作业务确认。
  同时,别忘记模拟异常的场景。


14


   想咨询一下,在监控unix/linux系统的时候您是怎么来判断及识别内存的使用情况及是否到瓶颈的?





  所有的监控都不是最关键的。关键的是如何准确的解析监控得到的数据。这就需要对原理进行更深入的理解。就拿内存来说,是整个计算机体系中最复杂的了。百分之九十以上的人对内存的了解仅仅停留在看一些监控指标上。这也是我为何在我的课程中专门拿出将近3个小时从硬件到软件解析内存的原因。内存非常复杂,物理内存 虚拟内存 虚拟地址空间  内存映射……一大堆东西。系统了解操作系统和内存的关系,CPU和内存的联系,才能更能清晰理解内存。所以希望大家可以有时间深入了解下内存管理。这是非常必要的。
  对于你说的nmon工具,确实是非常好的一款工具。我也经常使用。一般也会使用系统提供的命令进行。对于大部分系统来说,关注一下是否内存泄漏,也关注下是否使用了交换分区。是否与磁盘交互太多。而更深入一步来受,可以查看操作系统内存的cache,看cache也不是死记硬背的,需根据实际情况。


15


   现在有一年多的功能测试经验,将近两年的测试经验,但是都是功能测试相关的经验,但是新找到的工作还是做功能测试,总觉得功能测试发展路子不是很好,但是在公司上班也学不到什么东西,还是一直浪费时间做功能测试的内容,想去找性能测试的工作,但是因为没有相关的工作经验,也面试不上什么,要是打算自学性能测试,应该是怎么样的过程?





  机会少,提升慢,没有实战经验是很多同学感受迷惑和无奈的地方。这里一方面你可以参照一下我回复前面同学的话。同时在这里还想强调的是,就目前这种情况,不要在潜意识里面抵制功能测试工作。很多同学希望转到性能测试方面的工作,一有这个思想后,就抵制其他工作。这是不应该的。毕竟我们不可能专门辞职来学习性能测试方面的知识,因为要生存。我们只能在具体工作中慢慢提升自己。在做功能测试的同时,进行深入思考,是否可以功能测试测试完了自己私下做一些性能测试的东西,也当作一种实践。
  对于你说的面试中提的没发体现出来性能测试知识对你的帮助,我的建议是一方面你需要引导面试官。或者是由于本来自身对性能测试也不太自信。都是有可能的。但无论哪种,归根结底我们都需要提升自己的相关知识,这样才能更有自信。



想从功能测试进阶到性能测试?你至少得思考这几个问题!
END
想从功能测试进阶到性能测试?你至少得思考这几个问题!


想从功能测试进阶到性能测试?你至少得思考这几个问题!

推荐阅读

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

点击阅读☞

想从功能测试进阶到性能测试?你至少得思考这几个问题!
“阅读原文”一起来充电吧!
想从功能测试进阶到性能测试?你至少得思考这几个问题!
爱我请给我“在看”!