目录:导读
- 前言
- 一、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性能测试
九、总结(尾部小惊喜)
只有不放弃,才有翻身的一天;只有坚持不懈,才能迎来胜利的曙光;只要心中有梦想,就该义无反顾地追求;只愿勇往直前,不畏困难,终将收获辉煌的人生。
每天都是一个崭新的开始,不要轻易放弃。坚持自己的梦想,为了未来努力奋斗吧!只要付出努力,就会有收获。不要怕失败,学习并成长,成功的道路需要一步步去迈。相信自己,你可以成为更好的自己!
只有坚定的信念和不懈的努力,才能在逆境中迎难而上,创造属于自己的辉煌。所以,不要气馁,不要放弃,相信自己,你一定能够成为最好的自己!