• 0
  • 0
分享

性能测试的目的不仅是为了评估系统当前的性能状况,同时还希望通过故障定位找到系统存在的性能瓶颈,从而进一步优化性能,直接提升系统的处理能力,或者对系统的扩展能力提供优化策略。性能测试工程师的能力可分为三个层次,从初级的性能检测,到中级的故障定位,再到高级的性能调优,是一个循序渐进,逐步提高的过程,下面就这三个层次的能力进行简述。能力层次如下图:

1.png

(一)初级——性能检测能力

初级性能测试工程师需要掌握性能的基础理论,能够编制测试方案,使用自动化测试工具,进行初步的数据结果分析。

在性能基础理论方面,需要知道并发用户数、响应时间、吞吐量等常用的性能测试指标,知道负载测试、压力测试、疲劳强度测试、基准测试等主要的性能测试类型,知道测试流程的几个重要节点,如测试需求分析、测试方案制定、测试环境配置、测试数据准备、测试执行及测试结果分析。测试流程如下图:

2.png

在性能测试方案方面,根据性能测试需求,编制性能测试方案,方案中应包括测试目的、测试依据、测试计划、测试内容、测试方法、测试环境要求等。其中关键的是测试用例及测试数据的准备,测试数据包括铺底数据、参数化数据及测试数据,数据量的多少及合理性会影响到测试结果的真实性。

在测试工具使用方面,至少会使用一到两种自动化的性能测试工具,如主流的商业化测试工具LoadRunner、开源的测试工具JMeter等。能够识别应用协议录制脚本、简单调试脚本、配置测试策略、装载测试数据、收集测试数据。

在测试结果分析方面,重点关心时间特性、资源利用率及容量,包括交易的响应时间、支持的并发用户数、交易的吞吐量、网络的吞吐量、CPU的使用情况、磁盘读写情况等常用指标,通过数据分析可以反映系统当前的性能状况。

(二)中级——故障定位能力

中级性能测试工程师需要通过透视性能脚本执行过程来找到影响系统性能提升的故障点,为后续的性能调优提供数据支持。所以需要具备故障诊断分析能力,熟练使用各类的故障分析工具等。

在故障诊断分析方面,当在做性能测试的时候发现系统响应时间过长,没有达到预期的目标,那么就需要分析是什么因素导致了响应慢,是数据库服务器响应慢,还是应用服务器响应慢,如果是数据库服务器响应慢,是因为SQL语句执行时间长引起,还是数据库参数配置不当造成的,这些都是要找出的故障点。故障诊断可以从技术架构、硬件、网络、软件、应用、安全这几个方面展开,如下图:

3.png

在故障分析工具方面,掌握一些专有的故障分析工具可以提高故障定位效率,可以通过性能监控工具、日志分析工具、抓包工具、安全监控软件等来辅助定位故障,为接下来的系统调优做准备。如Youkit是一款专业的java性能分析工具,可以提供强有力的数据分析功能。Fiddler是一个抓包工具,可对数据包进行截获、重发、编辑、转存等操作,也可以用来检测网络情况。日志分析工具可以监控服务器、数据库、中间件等系统日志,发现问题及时定位,如Facebook日志系统Scribe、Apache日志系统Chukwa日志系统等。

(三)高级——性能调优能力

高级性能测试工程师因需要参与解决性能问题,对测试工程师的要求非常高,需要有比较全面强大的技术基础及实践经验,要熟悉系统架构,熟悉基础支撑软件等,还要具备性能优化分析能力,通常性能问题的修复成本相对较高,如何使用最低的成本换取最高的性能,是性能调优的重点。

在性能调优知识面,要实现性能调优,需要掌握系统架构、中间件、数据库、操作系统、网络协议等综合知识,如下图:

4.png

在性能优化分析方面,在进行性能测试的时候,通过过程数据分析,可在这几个方面入手性能调优。应用服务器调优包括JVM调优、Server调优、JDBC调优、WEB、JMS、EJB调优;数据库调优包括核心参数调优、数据库连接池调优、SQL与索引调优、表及视图的调优;应用程序调优包括通用代码调优、JDBC代码调优、WEB代码调优、JMS代码调优、EJB代码调优;操作系统调优包括硬件的配置(CPU、内存、硬盘等)、核心参数、TCP/IP参数、补丁等。系统架构调优是系统层次上的优化,如采用Redis设置系统缓存数据库机制,减少数据库的访问代价。

也可考虑系统部署方式、网络和硬件层面的调优,包括对系统部署负载均衡策略、网络带宽/流量、安全访问控制策略等情况优化系统。根据实际性能结果计算资源瓶颈,对系统硬件资源(内存、存储资源等)进行扩容处理优化。通常建议性能优化可从程序优化、业务处理方式优化、系统层次优化、系统架构优化、网络架构优化、硬件优化这个顺序展开。

       

版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • “好多QA转PM,因为QA(的地位)始终是要低一些”“我现在做的事情跟几年前没有区别”“资深QA在项目上做的事情新来的毕业生也能做”上面的话你是不是也有同感?我相信大部分人会这么认为,因为这些表面上看起来的确是这样的!那么,软件测试人员或者说QA真的有这么惨淡吗?对于开篇引用的几句话,我们一一来分析一下。测试工作的价值不容怀疑“好多QA转PM,因为QA(的地位)始终是要低一些”说这话是没有看到QA所做工作带来的价值。相反的,我认为QA之所以可以转PM是QA工作过程中获得的锻炼挺多的,不仅可以转PM,可以转PO,技术型的QA还可以转Dev。其实,QA和PM并没有地位高低之分,只是分工和职责不一样...
            0 0 2301
            分享
          • 首先,崩溃有几种情况:闪退提示停止运行无响应1、接口返回值[直接原因]:app无法解析接口返回值/获取不到要获取的参数/参数类型不对导致客户端代码报错 [引起原因]:脏数据/网络问题导致接口超时或漏了数组元素/前后台没有统一参数类型标准/参数名错误/实体消失 [解决办法]:在网络顺畅/不顺畅情况下抓包,对着api文档一个一个的参数对比,返回值有数组可以横向对比 可能是其中某个元素内的某个参数和其他元素内的这个参数有内容不同/类型不同/为空/不存在/规范不同。 [测试方法]:首先要从2个角度考虑。 1:后台不要返回这种脏数据,或者有脏数据要进行处理再返回给app。 2:app要有一定的容错性,不...
            0 0 1222
            分享
          • postman一个入门比较简单的接口测试工具。本人在之前没有接触过接口测试工具,也没有做过接口测试。在今年3月份开始,由于项目中需要进行接口测试,所以postman接口测试是在项目实践中学习和研究的。本次记录主要对学过的知识和工具进行一个记录和总结,加强接口测试方面的知识,相当于一个阶段性的总结。postman是接口测试入门比较简单的接口测试工具。使用postman可以进行功能上的接口测试。下载安装比较简单,其中有两种安装方式,一种是直接从官网下载安装,一种是在chrome上下载安装插件。本次建议从官网上下载安装。接口测试是测试系统组件间接口的一种测试,主要测试内容包括检查数据的交换、传递和控...
            0 0 1468
            分享
          •   摘要:在系统开发的过程中,单元测试是其中的一个重要环节。在Java微服务项目中,Spring框架本身就为我们提供了一套单元测试的框架SpringBootTest。如果我们在学校完成课堂作业或出于兴趣爱好自学,是可以使用Spring自带的单元测试框架进行单测的。  工作中,这种通过SpringBootTest进行单元测试的方式则不推荐使用。其缺点在于,每次执行测试方法都必须启动Spring容器。当项目规模较大、配置较为复杂时,即使只对一个方法进行测试,也需要消耗大量时间启动Spring容器。当我们期望对DAO层方法进行测试时,该方法还有其他缺点:① 如果忘记加进行事务控制的注解,将可能导致数...
            0 0 1314
            分享
          • 在过去的这个周末。接到了一个线上问题,描述如下:手动添加一个员工,然后进入线索管理编辑某个线索归属人,在下拉展示的员工列表当中,看不到我新添加的员工。立马自己复现了一下,此时看一下接口返回情况,发现拉起员工列表的页面这个操作,并没有调用接口实时请求数据,也就是说这个地方使用的是缓存。开发给的解释是:出于性能考虑,系统登陆后就缓存了员工这些基本配套信息,不是实时请求。进入设置——应用管理——找到该应用——清除数据,重新登录就看到新员工了。客服欣然接受了这个处理方法。按照这个方法也解决了问题。实际上,这个地方就不能从代码层面上优化了吗?方案肯定是有的:思路一:查询员工列表的地方,接口改成实时调用,...
            1 1 5629
            分享
      • 51testing软件测试圈微信