zoukankan      html  css  js  c++  java
  • 性能测试概念及参数介绍

    一  性能测试是什么?

    网上有很多,要说概念就得先说分类,性能测试,压力测试,负载测试,容量测试...在我看来,只是根据不同的测试目的(即想要达成的结果)而取的不同名字,手段都是一样的,不外乎模拟并发用户来访问系统,通过分析得到的参数评估系统性能

    我觉得对于性能测试比较简单的概括是:性能测试分为前端性能和后端性能。

    我狭义的认为前端性能主要表现在页面加载上:一般会通过优化加载方式,减少数据传输量等方式进行优化。

    后端性能就是通俗意义上我所做的性能测试,跟代码和机器性能有关,所以报告中通常需要标注测试环境。

    二 性能测试的目的是什么?

    1 验收是否满足性能指标

    如果有给定的性能指标,则对代码进行测试,是否满足给定性能参数。即只是一个验证的过程

    在进行验收时发现当下代码不满足需求性能时,需要进一步测试帮助开发定位问题。此时需要知道受压点是什么。

    a 内部逻辑占用cpu资源,导致性能问题

    b 数据源使用不合理:通常适当的改变读写方式,或者mydis与redis/memcache的变更,及增加节点

    c 页面的加载方式有逻辑漏洞

    2 找出服务的性能极限,作为优化和扩展的评估资料

     性能验收通过,满足当下的性能需求。但是该服务之后可能会做很多扩展,需要进一步测试,找出性能极限和其限制因素,为扩展做出评估。

    三 性能参数需要注意哪些参数?

    而我们在测试中所关注的参数主要分为两类:服务端和机器两类参数。

    首先服务端,我们说一个好的系统应该是"高并发,低延时",并发和响应时间就是两个最重要的参数

    1 并发量:即系统同时处理事务的能力,通常我们用QPS(query per second)来表示,也有地方用RPS(request per second),TPS(吞吐量,准确来说应该是吞吐率)来表示.

    但其实我们拿到的qps/tps/rps等大多都是1s内的处理能力,并不等同于同一时刻处理的请求。jmeter中定时器里有元器件可以进行控制,等待请求n个时,一同向服务器发请求。

    2 响应时间:客户端发出请求,到接收到返回的时间。比如我访问baidu.com,按下enter之后等了1s打开了百度首页,那响应时间就是1s。这个过程的时间包括=网络传输时间+服务处理请求时间;尤其对于一个非web的请求,如果我本身的网络环境不好,就会导致传输时间过长,所以也有人仅用服务处理请求时间来表示响应时间。我认为两者均可,只要在报告里写清楚测试环境和字段含义即可。

    3 错误率:前面两个是效率,这个是质量。未成功返回的,返回内容缺少不正确的,都算在这里。测试时可以根据返回的状态码或者返回内容做alert。

    其次机器环境,主要是从保护硬件的方面来说,两个需要关注的参数是cpu和load,如下。

    1 cpu:计算机的逻辑处理能力。CPU利用率反映的是CPU被使用的情况,当CPU长期处于被使用而没有得到足够的时间休息间歇,那么对于CPU硬件来说是一种超负荷的运作,需要调整使用频度。

    2 Load Average:是 CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。从另一个角度来展现对于CPU使用状态的描述,Load Average越高说明对于CPU资源的竞争越激烈,CPU资源比较短缺。对于资源的申请和维护其实也是需要很大的成本,所以在这种高Average Load的情况下CPU资源的长期“热竞争”也是对于硬件的一种损害。

    好吧,上面都是从别人家拿来的概念,如果你的机器是双核,那么你的进程占用cpu 100%即占用了机器一半的cpu资源,load 为4,则表示当前队列有4个需要处理,而你的cpu限制了同时只能处理2个,所以就会有队列累积。所以做性能测试需要关注下cpu和load,来保证你的程序在一个良好的环境下运行吧。

    3 网络I/O:磁盘通常是计算机最慢的子系统,也是最容易出现性能瓶颈的地方,因为磁盘离 CPU 距离最远而且 CPU 访问磁盘要涉及到机械操作。

    尤其在有大量读写操作时更需要重点关注。

    [mobdev@ip-192-168-1-15:52.77.116.218 trunk]$iostat -x
    Linux 3.14.27-25.47.amzn1.x86_64 (ip-192-168-1-15)     06/15/2016     _x86_64_    (4 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               2.25    0.00    0.12    1.45    0.01   96.17
    
    Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
    xvda              0.01     4.10    1.85   32.75   239.05   890.75    32.65     0.52   15.05   0.62   2.14

    4 网卡:这个是我在测试中注意到的,有一些资源很占用网卡。一个Outgoing一个InComing。当时一个模块是不停的被请求,它并不占用以上几项资源,限制其性能的因素就是网卡的Outgoing。当时只是为了找出这个性能限制因素。我并没有了解太多

    常用的大概就这几个了,如果以后发现了特别的参数,再补充~

  • 相关阅读:
    Java 包装类
    CTF 入门笔记
    Java 实践
    Java Object类
    Java 接口
    Java 抽象类
    Java 关键字final
    Java 多态性
    C#类,对象,类成员简介
    C#初始类和命名空间
  • 原文地址:https://www.cnblogs.com/zhaoxd07/p/4767548.html
Copyright © 2011-2022 走看看