性能测试入门:性能测试工具

frog4      2022-02-09     127

关键词:

这篇文章介绍下性能测试工具:

简单模拟工具

有很多场景下,我们只是想做一个简单的压测,对于监测结果要求并不高,压测的场景也比较简单,不想安装复杂的工具,这种情况下,推荐使用简单的模拟工具进行就可以了。

ab

ab即ApacheBench,是apache自带的一款功能强大的测试工具,安装了apache一般就自带了,即httpd(在bin目录下)。 ab主要是设计用来测试apache的性能,但是使用ab可以同时模拟多个并发请求,专门用于HTTP Server的压测,

优点是:

  1. 小巧、性能好
  2. post请求,传参等基本http功能齐全
  3. 支持windows(这点其实不容易)

缺点是:

  1. 得装个apache web服务器
  2. 一次测试只能支持单个链接

命令格式简单示例:

$ ab -n1000 -c100 https://www.baidu.com/

这句的意思是用100个并发线程完成1000次对网页的访问,返回结果如下:

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        BWS/1.1
Server Hostname:        www.baidu.com
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path:          /
Document Length:        227 bytes

Concurrency Level:      100
Time taken for tests:   3.581 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      872000 bytes
HTML transferred:       227000 bytes
Requests per second:    279.25 [#/sec] (mean)
Time per request:       358.107 [ms] (mean)
Time per request:       3.581 [ms] (mean, across all concurrent requests)
Transfer rate:          237.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       87  255  61.1    257    1217
Processing:    28   73  43.1     60     256
Waiting:       28   57  29.2     47     242
Total:        141  328  51.0    323    1371

Percentage of the requests served within a certain time (ms)
  50%    323
  66%    335
  75%    344
  80%    353
  90%    373
  95%    384
  98%    431
  99%    465
 100%   1371 (longest request)

最关键的指标是:

Requests per second:    279.25 [#/sec] (mean)
Time per request:       358.107 [ms] (mean)

标明的是QPS为279.25 ,请求处理的平均时间是358ms。

siege

siege是一个linux下的压测工具,基本功能和ab差不多,但是他是个独立的工具,可以独立安装。另支持传入文件列表,可以允许一次性压测多个链接(注意是随机访问,不是顺序访问)。

官方网站:https://www.joedog.org/siege-home/

下载地址:http://download.joedog.org/siege/siege-3.1.4.tar.gz

安装

# tar -xzvf siege-3.1.4.tar.gz 
# cd siege-3.1.4
# ./configure
# make 
# make install

使用方式及返回结果与ab类似,看官网或者看其他类型文章即可,不做赘述。

注意:http_load和webbenche都是linux下不错的Web压测工具,非常小巧,是用来也比较简单。但是都不支持post的请求,没有ab和siege均衡,返回结果也显得简单,因此不做推荐。

专业压测工具

Jmeter

官方:http://jmeter.apache.org/download_jmeter.cgi

Gatling出来之前,在免费领域的工具,其实基本上只有Jmeter一个选择。Jmeter使用java语言开发,拥有完善的一个UI界面、录制脚本、报表展示、支持思考时间、参数传递等复杂功能。学习一个压力测试工具网络上已经有太多的教程了,随便搜索即可。这里只谈两点:

  1. Jmeter的录制脚本的功能,可以使用另外一个工具badboy来代替。
  2. Jmeter是可以在linux下使用命令行执行的,不需要必须使用UI界面。这点很多同学都不知道。因为在一些环境下,Linux服务是不放开图形界面的,所以这一点也非常重要。

Jmeter的缺点主要是使用了Java编写,并采用一个并发一个线程的方式,本身性能并不很好,在需要很大压力的情况下,往往对于客户端要求配置比较高。另外报表丑了点。

Gatling

Gatling号称新一代的服务器性能测试工具,其实也是基于Java研发的,但是它采用了Akka Actors和Async IO,因此理论上性能上比Jmeter会更好一点,最近几年越来越流行。程序员的世界里喜新厌旧是永恒的主题,后浪总能把前浪排在沙滩上。

  • 在测试脚本撰写方面,Gatling选择了Scala代码,而JMeter选择的是XML代码。所以Scala更容易看出逻辑,相对更好维护。
  • 在报表上,Gatling的报表更轻量级,更好用一点。

但是新生事物其实也存在他的问题,比如中文文档相对较少,可能会存在某些未知的坑,目前中文环境下介绍Gatling的并没有那么多,建议多参考下官网:

https://gatling.io/

LoadRunner

收费软件,庞大无比,功能强大,特别是报表UI、脚本录入等功能,但是随着开源软件以及云压测工具的兴起,渐渐显露疲态,受到关注小多了。

云压测工具

进入到互联网软件领域,随着软件的规模原来越大,所需要压测量级越来越大,对于模拟数据的真实性也越来越高,性能测试不再是单机或者几台机器能完成的,随之而来的压测工具也变成了分布式的,逐步走向服务化。比如阿里云的PTS、APM的云压测工具,腾讯的WeTest都是解决特定Web领域的压测软件,目前都是近几年刚刚兴起,走在发展的道路上。但是这部分软件目前只解决了压力上不去的问题,让非IT专业人士也能操作,但是灵活度不足,使用方式上类似于第一类【简单模拟工具】,对于脚本编写支持一般,比较适合需要持久大规模压力的需求。

总结

本文主要介绍了性能测试工具的几种类型。简单模拟工具安装简单,使用简单,比较适合程序员自行压测解决软件问题。专业压测工具主要面向专门测试人员,有一定的入门门槛,需要使用人有撰写脚本或者至少修改脚本的能力,提供的功能也更多,数据也更准确。云压测工具主要适用于云端,对于压力要求较高,或者使用了该厂商的其他云组件服务,或者本身没有专业性能测试能力,可以考虑下云压测工具。

性能测试入门--工作流程

一、性能测试准备需求分析明确性能测试目标i了解软件功能、服务器架构制定测试计划、评估工作量制定测试模型(类似编写测试用例)2、搭建性能测试环境工具选项与准备工作搭建性能测试环境(性能测试环境资源配置和生... 查看详情

性能测试入门:性能测试中的各项指标告诉我们什么

性能测试性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。按照不同的目标,可以分为负载测试、压力测试、容量测试、稳定性测试。平时工作中如果不是专业的测试机... 查看详情

h5前端性能测试快速入门

...试的同学来说再熟悉不过了,它包括页H5功能测试,前端性能测试,浏览器兼容性能测试,以及服务端性能测试。那本文谈到的则是H5前端性能测试,并希望通过阅读本文后,能够知道:H5前端性能测试什么?如何发现问题以及相... 查看详情

jmeter性能测试入门篇,超详细

...runner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载 查看详情

一篇文章入门jmeter性能测试经典长文(代码片段)

...。1、性能测试定义百度&知乎性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种... 查看详情

性能测试——loadrunner——入门基础概念

查看详情

《性能测试新手入门系列》开讲啦

...于软件测试知识相关的群直播分享,包括功能、自动化、性能以及安全测试。18年7月份在朋友的腾讯课堂也开了《性能测试从入门到进阶系列》的分享,由于之前工作较忙,只分享了2期,就暂时下架了腾讯课堂的分享课程。最... 查看详情

loadrunner性能测试——入门

...载跑步者)是一种预测系统行为和性能的工业标准级负载测试工具,适用于各种体系架构的自动负载测试。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。通过使用LoadRunner,企业能最大限度地缩短... 查看详情

性能测试入门分析

评估+预测+调优。     评估当前系统的性能,预测系统以后的瓶颈,找到瓶颈点,并进行调优优化。性能测试的指标:    系统指标&资源指标。    系统指标:    &n... 查看详情

性能测试入门

目录一、性能测试的概念 1、性能测试的概念 2、性能测试的目的2.1、评估当前系统能力 2.2、常见的性能需求(性能需求文档) 2.3、寻找性能瓶颈,优化性能 2.4、评估软件是否能满足未来需求 3、什么是性能二、... 查看详情

性能测试入门-jmeter工具与监控全方位打造

...分层架构1-6性能测试指标定义1-7性能测试需求分析1-8性能测试工具比对第2章测试工具篇-JMeter整体介绍jmeter的组成及每一个模块的作用。掌握jmeter各种组件,丰富性能测试脚本,完善用户场景。使用jmeter进行逻辑分支控制。用Jmet... 查看详情

jmeter性能测试入门(转载的,很全啊)

....cnblogs.com/TankXiao/p/4045439.html#downloadJmeter是一款优秀的开源测试工具,是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。熟练使用Jmeter后,能用Jmeter搞定的事情,你就不会使用LoadRunner了。【小坦... 查看详情

jmeter性能测试入门

Jmeter是一款优秀的开源测试工具,是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。熟练使用Jmeter后,能用Jmeter搞定的事情,你就不会使用LoadRunner了。【小坦克Jmeter教程】,将会覆盖Jmeter的各... 查看详情

locust性能测试入门案例及分布式压测

前言大家好,我是洋子。性能测试已经成为作为测试工程师/测试开发工程师一项重要的专项能力,在抢红包,活动秒杀这种短时间内流量突增的场景,已或者是健康宝这种使用用户超级多的场景,我们均需要进行压力测试,确... 查看详情

loadrunner性能测试入门流程(代码片段)

...门课程1.Loadrunner的介绍1.是HP(Mercury)公司出品的一个性能测试工具,目前市场份额最大2.LoadRunner是一种适用于许多软件体系架构的自动负载 查看详情

jmeter性能测试入门

Jmeter是一款优秀的开源测试工具,是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。熟练使用Jmeter后,能用Jmeter搞定的事情,你就不会使用LoadRunner了。将会覆盖Jmeter的各个功能,并且会通过丰... 查看详情

常见性能测试岗位面试题

一、基础篇  1、较为完整的性能测试的流程  一个完整的性能测试流程   2、性能测试的基础理论、常见术语  性能测试常见术语浅析  3、性能测试模型、类型  常见的性能测试类型、性能测试模型  4、HTTP... 查看详情

locust性能-零基础入门系列(代码片段)

...功能点越来越多时,更需要考虑测试管理相关的内容。让性能测试更有条理和高效。以如下官方例子来讲解TaskSet的用法以及在测试运行中的一些细节。fromlocustimportUser,TaskSet,between,task,constantclassForumSection(TaskSet):wait_time=cons 查看详情