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

性能测试_理一理性能测试的一二三四

篇首语:本文由编程笔记#小编为大家整理,主要介绍了理一理性能测试的一二三四相关的知识,希望对你有一定的参考价值。     

篇首语:本文由编程笔记#小编为大家整理,主要介绍了理一理性能测试的一二三四相关的知识,希望对你有一定的参考价值。


        许多小伙伴都有那么一个想法,接到领导说要做性能测试的任务时候,就说,我拿个工具像jmeter、loadrunner之类的模拟个并发就好啦,这就做了性能测试了,关于这些听起来貌似是对的,性能不就是测试系统扛不扛得住我制造的各种压力场景嘛,但又觉得哪里不对,所以就开始整合一下相关的一二三四。


 一、为何要做性能测试?


关于这方面,很多人都能说出自己心中的一些理由,但或多或少不全,在我认为应该是如下:


二、性能测试分层


一个web系统最粗的结构应该是下面那样的:

理一理性能测试的一二三四

像文章开始讲的,最开始的很多直接接口压力测试,更多的是对后端的性能压力,在性能测试环节中,很多人往往会忽略前端和网络的影响,认为按理我所有的业务几乎都是后端在处理,前端和网络相关的问题我不需要关心。但是现实中,前端是直接面对用户的,最容易引起用户直观感受的恰恰是前端的一些性能。


分享一个案例,之前就有过一次在做长期稳定性运行的测试中,因为前端图片处理不完整导致内存泄露,导致软件越用越卡顿,到最后甚至没办法使用的情况。


网络也是影响性能测试的一大因素,特别是目前很多物联网相关的产品,引入4G网络、多级路由等等情况,需要进一步的考虑不通网络下的运行场景,比如说在做app测试中经常用到的弱网测试。


后端的压测就是我们常常需要做的主要内容了,相比熟练使用各种各样的压测工具,其实我认为更应该关心的是整个系统的布局架构。这就要求我们对被测系统的一个熟悉程度,系统上下行用的什么协议、使用了哪些中间件、在模拟各种场景的时候,哪个节点的压力可能最大,数据库那方面又是怎么样的,等等,这就需要我们要有很宽很宽的知识面,我一直认为,不会去做性能分析的工程师不是一个合格的性能测试工程师。


三、如何开展性能测试

按我自己理解整合如下:


可能不是很完整,有建议的小伙伴们可以在评论里补充。


四、性能测试的一些基本概念


        前两年开始负责了部门的一部分面试工作,其中很多应聘的面试者在被问到一些性能相关的术语的时候就会语塞,比如问内存泄露和内存溢出的区别,死锁是什么之类,就有很多人回答的磕磕绊绊。

        在这也做了部分的解释,权当复习。


内存泄露:

指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。


内存溢出:

是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于能提供的最大内存。


举例1:幼儿园班里有十个杯子给几十个小朋友装牛奶喝,小朋友用完杯子后要放回去清洗后给后面的小朋友用,但有个小朋友不听话,用完杯子后丢垃圾桶去了,这样小朋友轮流喝完牛奶的速度就变慢了(内存泄露),甚至如果刚好一共有十个小朋友都不听话把杯子扔了,那后面的小朋友就喝不到牛奶了,这个“系统“就崩溃掉了(内存溢出)。


死锁:

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。


举例:小明和小刚打架,两人互相掐着对方的脖子,都各自喊着你先放,但都不认输都不肯放,那就死锁了- -!

        房间里面只有一间浴室一个小音箱,小明在洗澡,小刚在用小音箱听歌,小明想一边洗澡一边听歌,小刚不给,小刚也想一边洗澡一边听歌,小明不让进,那就又死锁了- -!


吞吐量:

处理能力又叫吞吐量,指的是单位时间内处理的客户端请求数量。


举例:小明开了家快餐店,这家快餐店在16点-20点这个时间段一共接纳了2000个客户。


绝对并发:

多个用户同时做同一个操作。目的主要是考察系统运行过程中处理“死锁”、“资源争用”的能力。


举例:长城的宽度允许我和我的小伙伴五个人肩并肩一起走过去,但最佳第六人小明表示他也要并肩一起走,于是他被挤下去了- -!


相对并发:

多个用户同时做同一个操作。但这个同时不一定要在同一秒钟,可以理解为同一个时间段内做了同一个操作。

举例:在国庆期间,我和我的5个小伙伴在长城畅通无阻地溜达了一圈。


稳定性测试:

程序持续正确运行的周期长度。(时间范围内的运行稳定)

举例:买了个保温杯,天天使用它的情况下用了十年还没坏。


还有很多相关的概念,就不一一赘述了。


从一开始想整合一下东西不知不觉就码了快2000个字了,码字不容易,且看且珍惜- -




推荐阅读
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • 数据库锁的分类和应用
    本文介绍了数据库锁的分类和应用,包括并发控制中的读-读、写-写、读-写/写-读操作的问题,以及不同的锁类型和粒度分类。同时还介绍了死锁的产生和避免方法,并详细解释了MVCC的原理以及如何解决幻读的问题。最后,给出了一些使用数据库锁的实际场景和建议。 ... [详细]
author-avatar
人民总动员
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有