深度剖析性能测试(部分摘抄)

性能测试究竟是什么

这个简单的问题不少朋友都没法完整的回答。可能知道的朋友会说性能测试就是用LoadRunner或者Jmeter工具来压测系统,也有人会说性能测试就是同时让不少人访问系统看系统可否扛得住。这些回答只能说对,但不够全面也不够深入,只是把表象描述了一下而已。其实真正的性能测试没法用一两句话来简单归纳,由于它涉及的东西太多。前端

大部分人一说到性能测试理解的就是压测服务器,看服务器能不能扛得住,但这只是其中一方面而已,其实性能测试能够分为多个层级,每一个层级的关注点以及测试方法等都不太同样,咱们一般认为的是服务器端的性能测试。算法

那性能测试到底应该怎么去理解呢?咱们不妨换个角度来看看,不管是你们理解的经过工具来压测系统仍是号召100我的同时去访问系统,都不过是实现的手段或者方法而已,咱们更应该关注性能测试的目的是什么,由于目的不同那么实现的手段或者方法就有可能不同。因此咱们倒着来看看性能测试,不外乎就是这么几个目的:后端

  • 压测系统,看系统的前端以及后端性能是否知足预期(基准测试);
  • 压测系统,看系统能够承受的最佳压力和最大压力,来判断系统的承受极限(压力测试)
  • 压测系统,看系统在长时间运行下是否能够正常处理请求(稳定性测试)
  • 容量规划,当系统愈来愈稳定的时候,咱们要提早考虑它的远景规划,或者更通俗的解释就是“人无远虑,必有近忧”,这里的“远虑”就是容量规划。

这样看来咱们应该就能明白性能测试其实更多的是一个过程的统称,并非一个具体的定义。服务器

 

性能测试分层模型

性能测试分层模型是为了让你们更容易理解和学习性能测试而总结的,即便对于有一些经验的朋友,这个分层模型也会对你在认知上有所帮助。该分层模型并不高大上,也有可能不够完善,只是对杂乱的知识作了总结提炼,但对于小白朋友来讲是很是好的良药,能够帮助你们快速、全面地理解性能测试。网络

 

性能测试分层模型中含义

前端层

前端层主要是指用户看到的页面。好比,电商网站的首页、移动APP的各个页面,这些才是用户最关心的。对于用户而言,一个系统的快慢只会经过页面的呈现速度来判断,并不会在乎你后端处理的速度,因此我常常说即便你后端优化得很牛逼,但前端页面性能却很是差,那也是无用功。
另外,APP的测试也是你们常常问到的问题,APP的性能测试至少包括两个方面:APP的前端,也是如今业界里常说的APP专项测试;APP的后端,本质上和Web端性能测试同样。因此,在提问以前必定要明白这些概念,别人才能有针对地回答你。框架

网络层

任何系统均可以粗略地分红客户端、网络端和服务端,其中网络端是链接先后端的命脉,网络质量的好坏也有很大的影响。在性能测试中可能遇到的状况大体分为两种,一种是测试不一样网络情况下的大流量的表现(通常接触的比较少),另外一种则是压力机和服务器最好在同一网段,否则压力没法完整的到达后端,会在网络层拖垮,这样就无法较为准确地评测服务器端的性能状况了。若是你测试的是移动端APP,那么你可能还要考虑在不一样网络状态下的测试。函数

后端层

这里分三种状况,也是绝大多数企业中应用的方向,不管是Web端仍是移动APP端,在后端层性能测试的方法都是相似的。工具

业务级性能

通俗点解释就是从页面录制你的场景脚本。好比,如今有一个电商网站,要经过页面录制脚本完成登陆、浏览单品页、下单的流程。这个层级我想你们是最熟悉的,由于jmeter这个工具就是用来完成这样的流程的,也是大部分小白同窗必学的。单元测试

这种性能测试方式有个致命的缺点就是依赖于页面,若是页面没有开发完毕测试就没法提早进行,而现实中测试时间每每被一味压缩,所以咱们有时候也很无奈,因此如何把测试的切入点尽量的提早就显得比较重要了。而接口级偏偏就解决了这个问题。

接口级

这个层级是大部分公司作性能测试的首选,也是最有效率的方式之一。好比,如今有一个登陆接口,你只须要知道入参、出参以及规则等便可编写测试接口的代码,不须要等待页面的开发,大大提早了测试的切入点,但它要求测试工程师有必定的编码能力。除此以外,接口级测试的扩展性强,能够经过完成接口的性能测试和功能自动化测试框架来提高效率,性价比较高。

单元级

这个层级偏偏和接口级相反,不少公司想作,但有心无力。单元级你们理解为相似“单元测试”便可,好比,有一个PHP代码块,咱们可能须要测试一下核心算法函数的性能,能够经过插桩或引入单元测试框架来完成,从而得到它的执行时间、CPU消耗以及内存占用率等信息来优化代码性能。

那为何不少公司作不起来单元级的测试?可能有如下几个缘由

  • 业务变化太快,涉及的代码逻辑修改也比较大,这样作单元级测试就得不偿失了。
  • 开发朋友们确实没有太多的时间写单元测试代码,毕竟业务逻辑代码写起来也很费时,没有太多时间搞其余了。
  • 测试工程师编码能力相对来讲较弱,能独当一面完成单元测试的人少之又少,在加上时间紧迫就更没法作单元级的测试。
相关文章
相关标签/搜索