软件测试工具之服务器性能测试工具原理
凌雪 2018-08-27 来源 :网络 阅读 642 评论 0

摘要:本文将带你了解软件测试工具之服务器性能测试工具原理,希望本文对大家学测试工具有所帮助。

本文将带你了解软件测试工具之服务器性能测试工具原理,希望本文对大家学测试工具有所帮助。


服务器性能测试工具原理
   
      对于目前流行的性能测试工具,他们的基本工作原理都是一致的。在客户端通过多线程或多进程模拟虚拟用户访问,对服务器端施加压力,然后在过程中监控和收集性能数据。
   
    组成部分:
    部件
    描述
    用户行为生成器
    脚本编写或脚本录制
    压力产生器
   
    模拟虚拟用户向服务器发请求
   
    分布式代理--模拟更多的虚拟用户向服务器发请求
   
    用户代理
   
    用户代理是运行在负载机上的进程,该进程与产生负载压力的进程或线程协作,接收调度系统的命令
    ,调度产生负载压力的进程或线程,从这个意义上看,用户代理也是压力产生器的一部分。
   
    调度
    根据不同的虚拟用户数,不同事务的用户比例,运行时间等设置产生压力调度
    监控
    压力测试过程中对各种软硬件进行监控,如对数据库、应用服务器,服务器的主要性能表现情况进行监控
    结果分析工具
    将监控系统获取的性能技术数器值生成曲线图,折线图等各种图表
     
     
     
     
   
   
    性能测试工具应该具备什么的特质呢?
   
    1、工具本身占用系统资源少,可扩展性好,可用性强。    
   
    2、能模拟真实业务事务操作,在并发时能真正产生业务压力。(这一点是核心)
   
    3、对压力测试结果能很好地进行性能分析,快速找出被测试系统的瓶颈。
    4、测试脚本的重复性强。
   
    性能测试工具
   
    性能测试工具,如Jmeter,LoadRunner,webstress,grider,较轻量的如siege,ab,http_load等等。
    siege
    · Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
    安装:
    $:wget //www.joedog.org/pub/siege/siege-2.72.tar.gz 
    $:tar zxvf siege-2.72.tar.gz 
    $:cd siege-2.72
     $:sudo ./configure 
    $: sudo make; sudo make install 
    安装成功验证:siege –help,如果安装没问题会出现以下类似信息:
    SIEGE 2.70
    Usage: siege [options]
    siege [options] URL
    siege -g URL
    Options: 
      -V, –version           VERSION, prints the version number.
    -h, –help              HELP, prints this section.
      -C, –config            CONFIGURATION, show the current config.
    -v, –verbose           VERBOSE, prints notification to screen.
      -g, –get               GET, pull down HTTP headers and display the
    transaction. Great for application debugging.
      -c, –concurrent=NUM    CONCURRENT users, default is 10
      -i, –internet          INTERNET user simulation, hits URLs randomly.
      -b, –benchmark         BENCHMARK: no delays between requests.
      -t, –time=NUMm         TIMED testing where “m” is modifier S, M, or H
    ex: –time=1H, one hour test.
      -r, –reps=NUM          REPS, number of times to run the test.
    -f, –file=FILE         FILE, select a specific URLS FILE.
      -R, –rc=FILE           RC, specify an siegerc file
    -l, –log[=FILE]        LOG to FILE. If FILE is not specified, the
    default is used: PREFIX/var/siege.log
    -m, –mark=”text”       MARK, mark the log file with a string.
      -d, –delay=NUM         Time DELAY, random delay before each requst
    between 1 and NUM. (NOT COUNTED IN STATS)
      -H, –header=”text”     Add a header to request (can be many)
    -A, –user-agent=”text” Sets User-Agent in request
      Copyright (C) 2010 by Jeffrey Fulmer, et al.
      This is free software; see the source for copying conditions.
    There is NO warranty; not even for MERCHANTABILITY or FITNESS
    FOR A PARTICULAR PURPOSE.
    使用简介:
      命令: siege -c 50 -t60 -u //www.baidu.com
    起五十个并发,测60个分钟,连续访问baidu首页。
    对多个url并发:
    (1)新建一个文件urls.txt,里面的内容为(只是例子,任何url都可以)
      (2)siege  -c  200 -t  5 -f urls.txt
    注:每行都是一个url,它会从里面随机访问的
    结果说明:
    ** SIEGE 2.72** Preparing 300 concurrent users for battle.The server is now under siege.. done.
      Transactions: 30000 hits //完成30000次处理Availability: 100.00 % //100.00 % 成功率Elapsed time: 68.59 secs //总共使用时间Data transferred: 817.76 MB //共数据传输 817.76 MBResponse time: 0.04 secs //响应时间,显示网络连接的速度Transaction rate: 437.38 trans/sec //平均每秒完成 437.38 次处理Throughput: 11.92 MB/sec //平均每秒传送数据Concurrency: 17.53 //实际最高并发连接数Successful transactions: 30000 //成功处理次数Failed transactions: 0 //失败处理次数Longest transaction: 3.12 //每次传输所花最长时间Shortest transaction: 0.00 //每次传输所花最短时间
    //www.ha97.com/4663.html
   
    使用Siege进行压力测试标准:
   
    Transactions
   
   
    总共测试次数 
   
   
    Availability 
   
   
    成功次数百分比 
   
   
    Elapsed time 
   
   
    总共耗时多少秒 
   
   
    Data transferred 
   
   
    总共数据传输 
   
   
    Response time 
   
   
    等待响应耗时 
   
   
    Transaction rate 
   
   
    平均每秒处理请求数 
   
   
    Throughput 
   
   
    吞吐率 
   
   
    Concurrency 
   
   
    最高并发 
   
   
    Successful transactions 
   
   
    成功的请求数 
   
   
    Failed transactions 
   
   
    失败的请求数 
   
   
    并发量:20 访问量:200
    例如,Xxx接口测试:
    测试结果:
   
    Transactions
   
   
    3967 hits 
   
   
    Availability 
   
   
    99.17 % 
   
   
    Elapsed time 
   
   
    66.21 secs 
   
   
    Data transferred 
   
   
    1.00 MB 
   
   
    Response time 
   
   
    0.09 secs 
   
   
    Transaction rate 
   
   
    59.92 trans/sec 
   
   
    Throughput 
   
   
    0.02 MB/sec 
   
   
    Concurrency 
   
   
    5.32 
   
   
    Successful transactions 
   
   
    3967 
   
   
    Failed transactions 
   
   
    33 
   
   
    Longest transactions 
   
   
    15.05 
   
   
    Shortest transactions 
   
   
    0.00 
   
    出现的问题
    siege进行压力测试 模拟10000用户,设置10秒,出现这个错误是什么意思?为什么会提示打开的文件太多?
      [error] descriptor table full sock.c:108: Too many open files
    原因:fd是有上限的,ulimit -n看看
    注:查看打开文件数:
      方法一: 查询当前终端的文件句柄数: ulimit -n 回车,一般的系统默认的1024 
    方法二: ulimit -a 
   
    解决:(1)修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535;
    (2)将ulimit 值添加到/etc/profile文件中(适用于有root权限登录的系统)
      为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit 加入到/etc/profile 文件底部。 
      echo ulimit -n 65535 >>/etc/profile         
    source /etc/profile    #加载修改后的profile 
       ulimit -n     #显示65535,修改完毕! 
    Webbench
    安装
    wget //blog.zyan.cc/soft/linux/webbench/webbench-1.5.tar.gz
    tar zxvf webbench-1.5.tar.gz
    cd webbench-1.5
    make && make install
    ( 检测安装成功cd webbench-1.5 获得:webbench)
    使用
    webbench -c 500 -t 30 //127.0.0.1/test.jpg
    参数说明:-c表示并发数,-t表示时间(秒)
    webbench -c 100 //localhost:12345/test
    常用参数说明,-c 表示客户端数,-t 表示时间
    使用:帮助文档
    Cd ~/software/webbench-1.5
    webbench --help
    webbench [option]... URL  
        -f|--force               Don't wait for reply from server.  
      -r|--reload              Send reload request - Pragma: no-cache.  
      -t|--time           Run benchmark for  seconds. Default 30.  
        -p|--proxy  Use proxy server for request.  
      -c|--clients          Run  HTTP clients at once. Default one.  
      -9|--http09              Use HTTP/0.9 style requests.  
        -1|--http10              Use HTTP/1.0 protocol.  
        -2|--http11              Use HTTP/1.1 protocol.  
      --get                    Use GET request method.  
        --head                   Use HEAD request method.  
        --options                Use OPTIONS request method.  
      --trace                  Use TRACE request method.  
      -?|-h|--help             This information.  
        -V|--version             Display program version.    
    特点:
    机器A 运行一个服务,机器B 上运行 webbench, 第二天发现 机器A 一切正常,机器B 奇慢无比,ps一看,偶地神呐,webbench 是开进程去跑啊……这个太……
      webbench -C 10000 -t 60 //192.168.116.7/挂了,把自己给搞挂了
    貌似webbench不支持cookie,而且输出的测试结果太简单,功能过于简单了点,apache的ab功能比较多,可惜每次只能测试一个url,siege又只适合静态页面,如果能有一个把siege和ab的优点综合起来的东东完美了,继续寻找
    http_load
    安装
    #cd /usr/local/
    #wget //icn.me/http_load_tar_gz
    #sudo tar zxvf http_load-12mar2006.tar.gz
    #进入到http_load 目录:#cd http_load-12mar2006
    #sudo make
    #sudo make install
    也有widows版本
    使用
    练习1:多个url并发
    Step1: vim urls.txt  
    输入//flight.qunar.com/
    Step2:http_load -parallel 5 -fetches 100 urls.txt
    命令行说明: 使用5个进程, 随机访问urls.txt的URL 100次
   
      上面的测试中运行了100个请求,最大的并发进程数是5,总计传输的数据是1.25946e+07 bytes,运行的时间是0.521175秒
    每一个连接平均传输的数据量125946;
    每秒的响应请求为191.874,每秒传递的数据2.41658e+07;
    每连接的平均响应时间,最大的响应时间,最小的响应时间;
    100个请求全部返回200OK
      练习2:sudo http_load -parallel 1 -fetches 100 -rate 100 urls.txt
    rate参数表示每秒访问的频率
    Jemeter
    原理
    以多线程的方式模拟用户,将图形化界面上的参数等转换成java语言实现模拟指定的用户行为,向服务器发送各种请求,并将服务器返回的结果进行分析再以适当的形式显示。常用的设置保存在bin/XX.properties下,测试用例参数化,保存为XX.jmx文件,JMeter会自动读取这些配置、用例文件。
   
   
   
      运行命令在%JMETER_HOME%/bin 下,对于 Windows 用户来说,命令是 jmeter.bat
   
    JMeter 的主要测试组件总结如下:
   
      1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
   
    2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。
   
    3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。
   
    4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
   
      5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。
   
    6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
   
    7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
   
    8. 定时器负责定义请求之间的延迟间隔。    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试工具频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程