热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

websocket压测工具有哪些_性能测试总结(概念amp;流程amp;工具)

陆思远•百信银行测试负责人最近在项目中一直忙着做自动化平台后端的接口开发工作,本来想陆续总结篇SpringMVC及Mabyties框架方面的心得与遇到的坑。但是没想到

6bbfefe277f8f52836d9e35b7a4065a6.png

陆思远 • 百信银行测试负责人

d2d37a91e31324d2501c128a6c90da1a.png

        最近在项目中一直忙着做自动化平台后端的接口开发工作,本来想陆续总结篇SpringMVC 及 Mabyties 框架方面的心得与遇到的坑。但是没想到上篇随手写的Jmeter与Grafana的集成被认可度这么高,阅读量近4万并且增加了很多订阅读者。其实最开始写专栏的目的是为了我们接口自动化框架以及开源项目Teamcat的推广,没想到得到了很多同行的认可。并且写着写着发现在每个阶段学到不同知识后及时写篇总结后,于己是对知识进行一遍系统的梳理与凝练,于他人也能感受到分享的快乐。希望大家也可以多多尝试总结,知识千千万,真的只有不断复盘总结才能真正掌握。

        鉴于上篇工具使用类文章这么受欢迎,今天就继续性能测试这个话题,聊聊对性能测试的理解,包括概念、流程以及常用测试工具对比几个方面。说实话我对性能测试了解并不深,我最擅长的是自动化、持续集成、工程效率方向。说到这,简要说下我对测试人员的理解:相比开发,测试开发的知识广度要求更广,从前端到后端、从安全到运维、从产品到设计、从测试流程到项目管理等等,哪个点不涉及?广度就决定了我们肯定没办法做到在每个方向都专精,那怎么办呢?我觉得测试人员对自己的定位应该是一专多能,所谓一专就是一定要明确的清楚自己最擅长什么方向,这可能由自己内在兴趣决定,也可能由公司外部条件决定。但不管什么原因,当有人问到这个问题时,一定要能立马、准确、坚定的说出来。试问如果出去找工作时,如果自己都对自己的定位不清楚,那让别人怎么来评估你,难道说您看着办?哈哈,所以一专一定是你需要下苦工,下时间研究最多的地方。至于多能,就需要平时有时间时广泛的学习了解,在项目需要的时候能及时顶上。总不能当有个环境部署或者接口压测的任务交过来,我说我擅长自动化,干不了这个~那估计第二天就废了,哈哈。所以我们平时需要多积累,遇到事情不但能够做到及时顶上,还要顶的尽量专业~貌似写跑题了,就不过多延展了。。。另外最近好多人私信时称我大佬、大神,我想说我真的不是大佬,只是一个在测试路上摸索前进的小菜鸟,或许会很艰难,但绝不敢懈怠。

1、什么是性能&性能测试?

定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。由上面定义我们起码可以看出来,对于性能测试,我们关注的是软件的非功能特性。所以说性能测试介入的时机一定是在功能测试完成之后的,另外所谓及时性是一个比较宽泛的指标,这可能包括时间或其它很多子指标来综合衡量。通常我们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试。 当然这个性能在不同角色不同视角中是不同的,或者说关注点侧重方向完全不一样。用户眼中最直观的感觉可能是这还要我等多久(响应时间)、为什么总是失败(稳定性);开发眼中可能会关注架构是否合理(架构设计)、数据库设计是否合理(数据库设计)、运行时会不会存在内存、线程同步、资源竞争方面的问题(代码质量);运维眼中可能会关注服务资源、数据库资源等利用合理吗(资源利用率)、系统能支持多少用户,支持多大业务处理量(系统容量)、有哪些瓶颈、是否能够扩展(可扩展性);说了这么多,那在测试眼中的性能是什么样的?虽然不想说,但不得不说,测试人员需要考虑全面的性能,包括上述用户、开发、运维等各个视角的性能。前几篇文章一直在讲质量意识,在讲QA是做为软件质量控制的一个角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分,总不能光说不练吧。写到这,可能我一会测试一会QA会引起误解,但麻烦各位大大不要再提醒我QA和测试角色是不一样的,这个我知道也很清楚,如果你们公司既有测试又有QA作为分开的两个部门,那就当我说错啦~

2、性能测试能够解决什么问题?

       a)评估当前系统

系统未做过任何性能测试,对系统的当前性能情况不了解,就好像没有体检过就不知道自己的身体状况一样。而一系列性能引发的严重问题也正是由于缺少了必要的性能评估而导致。包括峰值的承载能力、稳定性、吞吐量等等。

       b)寻找瓶颈,优化性能

常见的现象为,某业务操作响应时间很长、某系统上线一段时间后运行越来越慢,这些都需要逐步分析定位并调优。

       c)预测未来性能

当用户数和业务量增加时能否及时应对?如何调整?是增加应用服务器,还是数据库服务器?还是要优化代码逻辑?这一系列问题都值得我们深思,这也是性能测试的目的所在。

3、性能测试等同于压力测试?

       首先明确性能测试肯定不是等同于压力测试这么简单,压力测试是性能测试的一种,主要的目的大概有4类:

       a)得到业务服务处理能力的指标,tps,响应时间。

       b)根据压测过程分析系统的瓶颈在什么地方(数据库连接限制,IO密集,业务逻辑)

       c)基于现状和线上的流量来决策线上扩容部署和优化点。(加机器,加几台,扩容那些业务)

       d)在压力测过程中,发现一些潜在的隐患(内存泄漏,高并发用户线业务逻辑问题,数据出错,日志太大导致的磁盘问题等等。)

       压测中的各种概念与指标诸如负载、并发、压力、事务、吞吐量、TPS、QPS、PV、RT、ART等等就不过多介绍了,随便百度都有很多介绍非常清晰的文章,这里只提一点,TPS到底是不是QPS?很多人认为QPS和TPS是一样的,其实还是有些不同点,QPS是查询,而TPS是事务,事务是查询的入口,也包含其他类型的业务场景,因此QPS算起来可以是TPS的子集。

4、性能测试流程?

        a)性能需求分析

       性能需求分析是整个性能测试工作开展的基础,如果连性能的需求都没弄清楚,后面的性能测试执行其实是没有任何意义的,而且性能需求分析做的好不好直接影响到性能测试的结果。

        b)性能测试准备

          测试环境准备:系统运行环境,这个通常就是我们的测试环境,有些时候需求比较多,做性能测试担心把环境搞跨了影响其它的功能测试,可能需要重新搭建一套专门用来做性能测试的环境。执行机环境 ,这个就是用来生成负载的执行机,通常需要在物理机上运行,而物理机又是稀缺资源,所以我们每次做性能测试都需要提前准备好执行机环境。

          测试场景设计:根据性能需求分析来设计符合用户使用习惯的场景,场景设计的好不好直接影响到性能测试的效果。

          测试工具准备:负载工具,根据需求分析和系统特点选择合适的负载工具,比如LR、Jmeter或galting等。监控工具,准备性能测试时的服务器资源、JVM、数据库监控工具,以便进行后续的性能测试分析与调优。

          测试脚本准备:如果性能测试工具不能满足被测系统的要求或只能满足部分要求时,需要我们自己开发脚本配合工具进行性能测试。

          测试数据准备:负载测试数据:并发测试时需要多少数据?比如登录场景?DB数据量大小:为了尽量符合生产场景,需要模拟线上大量数据情况,那么要往数据库里提前插入一定的数据量。这可能需要花费一些时间,特点是关联系统较多,逻辑复杂的业务可能同时涉及多张表。

          其它:如果需要其它其它关联系统或专业人士如DBA配合的,也需要提前进行沟通。

        c)性能测试执行

当用户数和业务量增加时能否及 时应对?如何调整?是增加应用服务器,还是数据库服务器?还是要优化代码逻辑?这一系列问题都值得我们深思,这也是性能测试的目的所在。

        d)结果分析调优

没办法简要概括,后面有机会深入学习后单独总结。

        e)   测试报告与总结

制式模版要好看,数据指标要全且准确,结论要简单明了、直切要点等等总之要显得专业就好啦。

5、常用测试工具对比?

       压测离不开测试业务场景和压测目标,没有一个工具可以适合所有的业务压测场景。并且我觉得性能测试不应该依赖某一工具,它应该是一个不依赖任何工具的独立的体系,而不是建立在某一工具上的体系,这样不免就本末倒置了。下面还是简要介绍一下目前常用的压测工具,只介绍下特点及适用场景,至于工具的具体使用都很简单,有需要时去找资料学习下就好了。轻量级web服务压测工具有Apache Bench,http_load等,使用环境在linux下,用简单的命令行操作的工具。稍微重一点的压测工具有jmeter,特点是功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。因为它的开源性,当然你也可以根据自己的需求扩展它的功能。还有就是loadrunner,安装包3G左右,负载机需要安装到linux机器。

常用软件应用场景安装包大小优点缺点其他
ab模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的依赖于apcache,安装完apache自带ab测试工具多进程压测,对施压机资源消耗少,操作简单,启动快,只能对接口进行简单测试,无法进行场景模拟。java开发
http_loadhttp接口测试100k,下载安装编译操作简单c操作简单,上手快,可与其他测试场景一起用,比如在一定压测情况下,做某些操作。简单的接口测试,不支持post形式,单进程操作。压力不会太大。可以二次开发,也有现成的库文件
jmeterm模拟复杂场景,支持参数序列化,支持断言,也可用作回归的测试只有几M,依赖java环境可界面化操作,输出的分析报告不如loadrunner丰富相比上面两个工具,可界面,但是分析报告简单。
loadrunner复杂和高并发,需要持续大压力的业务场景4G左右,软件安装比上面都复杂,一般需在agent代理机丰富的数据收集和测试报告产出,支持三成协议开发交互,支持录制。支持被压机服务的性能指标的收集展示。压测脚本需要自己开发,需要有一定的编程基础。商业不免费

附:

性能测试工具列表

b4a1968e5418b9f9d3378b19e2646561.png

来源:

https://maimai.cn/article/detail?fid=1094698875&efid=5Yee0veX4xaLsOgI_AvfZg



推荐阅读
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
  • 把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统
    原文转载自「刘悦的技术博客」https:v3u.cna_id_202“表达欲”是人类成长史上的强大“源动力”,恩格斯早就直截了当地指出,处在蒙昧时代即 ... [详细]
  • websocket深入,tomcat,jetty服务器使用对比
    转载整理自https:www.zhihu.comquestion20215561http:www.open-open.comlibviewopen1435905714122.ht ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
author-avatar
上善若水纯_310
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有