13年测试老鸟经验,性能测试-性能调优各个方法详细,一篇通透...

news2024/11/19 21:16:31

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

WebServer服务优化

对于Web服务性能优化的方向,一般是:
页面静态化:比如访问的页面,先进行静态化后提供访问,减少DB负担;
减少页面的Size:
减少图片尺寸、CSS合并、JS精简等;
客户端缓冲图片、样式等;
去掉无用请求与数据;
对数据做异步处理(非常关键);
只能DNS及CDN加速,让响应数据离用户更近,规避缓解网络瓶颈。

程序优化

程序优化是治本的方法,也是我们大部分来解决性能问题的一个措施。

当前性能测试大部分都是在SIT(集成测试)测试完成后再进行的,如果出现严重性能问题、修改代码等代价太大,这不是熬几个通宵的事情,有可能看不到第二天的太阳。

所以为了规避这种问题,所以我们要提前做打算,这就体现了一个测试架构师的重要性。

顺序是:先架构后程序(即先整体后个体)。

系统架构的选择

例如:SSH(Struts、Spring、Hibernate)架构,应该是在当下最流行的MVC模型,SSH为我们提供了明晰的层次结构,各层协同完成业务实现,即简化了设计过程,也加快了程序交付进程。

凡事有好的一面,必定有短板:如大型的业务系统,如果我们把大量的数据从数据库取出来,然后利用程序进行分析计算。

不过,有没有想到会增加网络传输,而且在程序中进行处理有可能并不是最佳解决方案。想想,如果把这些大数据量放在数据库计算,是不是就非常的轻松+愉快呢~

所以,老话说得好,任何事情都要量力而行。选择相对来说最优的方案,就是最佳方案!

程序优化

低效代码优化,不包含系统架构,就是纯粹的业务逻辑及算法低效。
如:逻辑混乱、调用继承不合理、内存泄露等,有问题,咱就得有对策.

解决方法:
表单压缩
减少网络传输量。

局部刷新
页面中采取局部内容获取方式,减少向服务器请求次数。

仅取所需
只向服务器请求必要内容,只向客户端发送必要表单。

逻辑清晰
不做错误及多余调用,资源请求后能释放。

谨慎继承
对系统架构了解,特别是一些基础类,公共组件,合理利用。

程序算法优化
试着分析程序,是否需要用算法来提高程序效率(如果不会算法,那就别勉强了)。

批处理
对大量的数据处理,最好能做成批处理:好处那是大大的。

延迟加载
大对象的展示,可以做延迟加载的方式,层层递进显示明细。

防止内存泄露
内存泄露,是由于对象无法回收造成的,特别需要注意的是长生命周期的对象。

减少大对象使用
防止在程序中声明及实例化大对象,不能为了方便而设计出大对象。大对象太大,小体格的吃不消。

防止争用死锁
一般出现在线程同步的场景。

索引
编写合理的SQL,尽量利用索引。

存储过程
为了减少数据传输到应用层面,一般会在数据库层面利用存储过程来完成数据逻辑的运算,只需要回传少量的结果给应用层。

内存分配
合理分配数据库内存,如PGA与SGA设置;不对大数据提供orderby操作,避免PGA被占满。

并行
使用多线程或线程来处理任务。

异步
如用MQ(消息中间件)来解耦系统之间的依赖关系,减少阻塞。

使用设计好的模式来优化程序

选择合适的IO模式
如NIO、AIO等。

配置优化
这作为一个老码农,应该非常准确闪现出JVM、连接池、缓存机制、CDN等优化手段。

JVM配置优化
合理分配堆与非堆的内存,配置适合的内存回收算法,提高系统服务能力。

连接池
数据库连接池可以节省建立链接与关闭链接的资源消耗。

线程池
通过缓存线程的状态来减少新建线程与关闭线程的开销,一般都是中间件进行配置,如在Tomcat的server.xml文件中。

缓存机制
通过数据的缓存来减少磁盘读写的压力,缩小存储与CPU的效率差。

数据库连接池优化
数据库连接池存在的意义就是让链接复用。通过建立一个数据库连接池(缓冲区)以及一套链接使用、分配、管理策略,使得该连接池中的链接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。

以上没有唠到重点,我们无非关注这三点:
连接池的参数配置;
连接池配置多少合适:
按需分配,够用就行!小窍门:一般情况数据库连接池的数量<中间件线程池的链接数量;

监控连接池。
DB优化

DB的优化思路就是一少三减:
少做
减少请求次数
减少数据传输量
减少运算量(查询、排序、统计)
业务流程优化

架构的好坏直接影响到整个系统的运行,所以,一个好的架构师,是一个系统的基石。
这种架构优化留给架构师吧,不然他们干啥~

结构优化
结构优化就好比我们人类进化是一样一样的。由最开始的单机结构已经无法满足日渐增长的业务量,所以架构的演变就这样开始了:单机结构→集群结构→分布式结构。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有不放弃,才有翻身的一天;只有坚持不懈,才能迎来胜利的曙光;只要心中有梦想,就该义无反顾地追求;只愿勇往直前,不畏困难,终将收获辉煌的人生。

每天都是一个崭新的开始,不要轻易放弃。坚持自己的梦想,为了未来努力奋斗吧!只要付出努力,就会有收获。不要怕失败,学习并成长,成功的道路需要一步步去迈。相信自己,你可以成为更好的自己!

只有坚定的信念和不懈的努力,才能在逆境中迎难而上,创造属于自己的辉煌。所以,不要气馁,不要放弃,相信自己,你一定能够成为最好的自己!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/691555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模算法(基于matlab和python)之 变步长求积公式与龙贝格算法(3/10)

实验目的及要求: 深刻认识数值积分法的意义;明确数值积分精度与步长的关系;根据定积分的计算方法,可以考虑二重积分的计算问题。 实验内容: 1、利用quad函数作变步长方法计算定积分的近似值,计算精度为。 …

Axure制作一个滑动验证组件

一、案例效果 1、默认显示滑块、背景及提示文案; 2、滑块仅允许向右水平拖动,且不能超过背景区域; 3、滑块移动过程中,左侧区域样式跟随变化,右侧区域保持不变; 4、滑块为未拖动到最右侧时释放&#xff…

射频功率放大器——如何选择合适的射频功率放大器

射频功率放大器是一种用于增强射频信号的电子设备。在选择合适的射频功率放大器时,需要考虑多个因素,包括应用场景、频率范围、增益、带宽、噪声等。下面是一些关于如何选择合适的射频功率放大器的基本步骤: 1、确定应用场景和需求&#xff1…

CANoe使用记录(五):CANoe 如何调用诊断功能/ZCANPRO的诊断功能

目录 1、概述 2、Canoe调用诊断服务 2.1、查看是否存在license 2.2、新建工程步骤分解 3、ZCANPRO的诊断功能 1、概述 有那么一部分时候,需要通过Canoe来实现简单的诊断服务,当然大部分时候通过Canoe进行测试需要通过CAPL脚本实现复杂的UDS诊断服务。…

Unity WebAR插件记录

1.Imagine WebAR - World Tracker(Unity商店) 使用此插件为Web浏览器创建增强现实体验。借助出色的6DOF跟踪功能,将游戏对象固定在地板或任何表面上。支持所有主流的手机浏览器。 2.Imagine WebAR - Image Tracker(Unity商店&…

JavaScript ES8新特性

文章目录 导文异步函数(Async/Await):Object.getOwnPropertyDescriptors()方法:字符串填充方法(String padding):共享内存与原子操作(Shared Memory and Atomics)&#x…

基于原生 js 实现今日新闻网站

完整资料进入【数字空间】查看——baidu搜索"writebug" 一、今日新闻网站设计报告 1.1 1 设计思路 该网站设计大部分都是基于原生 js 实现。基本思想为首先将基本的页面架构包括 header,导航条写好。之后根据后台 PHP 请求接口请求返回 JSON 格式数据后…

【Java核心技术】Java基本语法

Java基本语法 1、关键字与保留字关键字的定义和特点保留字的定义 2、标识符标识符的定义定义合法标识符规则Java中的名称命名规范 3、变量变量的概念变量的作用使用变量注意变量的分类整数变量:byte、short、int、long浮点类型:float、double字符类型&am…

Vue组件间通信的几种方式

Vue组件间通信的几种方式 0、前言1、props/$emit(父子)2、ref / $refs(父子)3、provide / inject(深度父子)4、EventBus 事件总线 (任意两个组件通讯)5、$attrs / $listener&#xf…

逻辑回归(Logistics Regression)的原理及实现

1.逻辑回归(Logistics Regression)的原理及实现 笔记来源于《白话机器学习的数学》 逻辑回归用于解决二分类问题 1.1 逻辑回归的原理 1.1.1 Sigmoid函数 sigmoid函数在神经网络中如何起作用?详见本人笔记:机器学习和AI底层逻辑 …

Spreadjs 16.1.3 + GcExcel 6.1.2 操作EXCEL好轻松-Crack

全球销量第一的 JavaScript 电子表格,包含 500 多个 Excel 函数 快速提供真正类似 Excel 的电子表格体验 - 对 Excel 零依赖。创建金融应用程序,仪表板,图表,数据透视表,性能基准,科学实验室笔记本,以及其他类似的 JavaScript 电子表格应用程…

Spring拦截器实现鉴权

什么是拦截器? 拦截器(Interceptor)类似于Servlet中的过滤器,主要用于拦截用户请求并做出相应的处理,例如拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。拦截器允许自定义预处理(Pre-Processing)…

Axure教程——滑屏效果

本文介绍用Axure来做一个移动端引导页的滑屏效果。 效果预览 预览地址:https://dsn3d3.axshare.com 制作元件 1、所需元件 矩形 动态面板 2、制作过程 拖入一个动态面板元件,命名为“”切换,大小设置为375667,如图: …

租房小程序源码推荐,让你的租房平台更有竞争力

为租房平台的从业者,你是否也曾为如何提高平台的竞争力而苦恼?租房小程序源码或许是一个不错的选择。 租房小程序源码是一种可以让你快速搭建一个专属的租房平台的工具,可以帮助你快速上线一个符合市场需求的租房平台。相较于从头开始开发一…

关于项目初期,数据量小的内容推荐的实现方法

前言 当下,只要是一个初具规模的内容应用都具备个性化推荐系统。比如购物类的会有推荐商品模块,搜索条下有个性化的搜索关键词或词条补全词,社交类的有博主推荐,视频或文章推荐等等。这些功能除了要有庞大的数据量,还要…

如何使用《水经注地图服务》快速发布TIF数据

《水经注地图服务》的快速发布功能是一个能够帮助用户实现快速发布地图服务的功能,并且提供常规情况下大多数用户所需的默认配置,让用户在发布地图时更加便捷。 今天为大家分享如何使用《水经注地图服务》快速发布TIF地图数据。 准备工作 离线示例数据…

navicat导入sql数据流程Database Navigator插件操作数据库

导入数据库流程: 选中localhost_3306,新建数据库 ->输入数据库名community ->选中community,新建查询 ->输入(粘贴)数据信息即可 Database Navigator插件操作数据库 IDEA插件系列(6&#xff…

小研究 - Java 指针分析综述(一)

近年来静态程序分析已成为保障软件可靠性、安全性和高效性的关键技术之一. 指针分析作为基 础程序分析技术为静态程序分析提供关于程序的一系列基础信息,例如程序任意变量的指向关系、变量 间的别名关系、程序调用图、堆对象的可达性等. 介绍了 Java 指针分析的重要…

手撕code(3)

文章目录 迷宫最短路径和输出深度优先广度优先 48 旋转矩阵图像大数加减法146 LRU 缓存算法460 LFU 缓存算法 迷宫最短路径和输出 给定一个 n m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1 ,其中 0 表示可以走的路,1…

MIT 6.S081 教材第六章内容 -- 锁 --上

MIT 6.S081 教材第六章内容 -- 锁 -- 上 引言锁竞态条件代码:使用锁死锁和锁排序锁和中断处理函数指令和内存访问排序睡眠锁真实世界思考 引言 MIT 6.S081 2020 操作系统 本文为MIT 6.S081课程第六章教材内容翻译加整理。 本课程前置知识主要涉及: C语言(建议阅读…