• 0
  • 0
分享
  • 性能调优怎么做,看过这一篇就都会了!——软件测试圈
  • 曼倩诙谐 2023-05-08 14:26:45 字数 2375 阅读 1082 收藏 0

  在展开今天的内容之前,我们先来看一下,是不是任何一个测试都可以学习性能测试。

  如果说需求、开发、DB、运维、测试是单一一门学科,那么性能就是综合学科,它包含了需求分析、DB、开发、测试、运维的所有学科。

  所以说,学习性能测试,你前期需要懂的是需求分析、DB设计、程序开发、自动化测试、运维。

  所以今天的内容是性能分析的一大重点,也是一大难点!

  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的优化思路就是一少三减:

  少做

  减少请求次数

  减少数据传输量

  减少运算量(查询、排序、统计)

  业务流程优化

  架构的好坏直接影响到整个系统的运行,所以,一个好的架构师,是一个系统的基石。

  这种架构优化留给架构师吧,不然他们干啥~

  结构优化

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

  下面我们就来瞅瞅,这些结构的构成图。

  单机结构:

1-1.png

  集群结构:

1-2.png

  分布式结构:

1-3.png

  调优,是一个复杂学科,没有学霸的智商,得有学渣不要脸的劲,才能成为一个性能专家。

  切记,团队的支持,是最重要的,切勿单打独斗,因为你是斗不过的……

  归根结底,我们分析调优为了啥,就是在客户发送请求的时候,我们以最快的速度响应给客户。



作者:Carl_奕然    

来源:http://www.51testing.com/html/41/n-7792941.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 购物车对于电商系统,还是比较重要的一个功能模块,看上去比较简单,但是关于这个功能的测试分析还是不是那么轻松的,因为它真的不仅仅需要功能测试,还需要其他技术的支持才能做好。功能上:购物车是否需要登陆才能进入;账号退出后,购物车添加的内容是否还在;购物车页面是否能够显示添加的商品的详细信息(商品名称、链接、数量、单价、总价);一条商品的单价、数量、总价的计算是否正确;多条商品是否能够以列表显示;多条商品同时显示,能否在相同的位置显示相同的数据;购物车能够返回商品首页继续浏览;能够移除购物车中的商品;购物车能够调整商品的数量;限购商品数量调整时能不能超过限购数量;没有限购要求的商品,添加数量能不能超...
            0 0 2053
            分享
          • 作为测试人员,日常最频繁的活动便是对修改进行验证,不管是新功能增加还是bug修改都会动代码,有的代码修改不单单只影响当前功能,为了确保验证全面,不会出现遗留问题,在测试之前,需要对修改进行评估,确认修改范围。修改范围可通过如下两种方式判断:1、产品的需求原型文档其实产品需求文档属于明面上的一些可圈可点的,可以获得依据的地方,他可以明确告诉你修改哪些页面和哪些功能,只需要按照需求原型把测试点细化即可。2、转测文件中,开发给出的测试建议在版本转测的时候,开发也应该在转测文件中指出修改影响的范围和测试建议,测试人员需要把这些涉及点纳入测试设计中,如果还有不明白的地方需要及时找对应的开发人员进行沟通,...
            1 1 12009
            分享
          • 自动化测试自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。特别是在敏捷模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个变化过程(迭代快,加班多)。测试人员如何快速响应并保证产品在上线后的质量能够满足市场要求(如何在上线一个新功能的同时快速对旧功能快速进行回归,保证旧功能不被新功能影响而出现严重的Bug?)。针对以上问题,采用自动化测试无疑是一个不错的选择,能够做到在保证产品质量的同时提升测试效率。随着行业内卷越来越严重,对于测试岗位的要求也是水涨船高,岗位招聘要求都会出现自动化测试的字眼,因此也是我们跳槽面试、升职...
            0 0 1329
            分享
          •   本次上线的项目属于OA系统中的一个子模块。OA系统,百度百科上解释,Office Automation(简称OA),即办公自动化,是将计算机、通信等现代化技术运用到传统办公方式,进而形成的一种新型办公方式。办公自动化利用现代化设备和信息化技术,代替办公人员传统的部分手动或重复性业务活动,优质而高效地处理办公事务和业务信息,实现对信息资源的高效利用,进而达到提高生产率、辅助决策的目的,最大限度地提高工作效率和质量、改善工作环境。笔者所在公司的OA项目提供已授权的同事浏览各家公司首页、申请单据、审批单据等功能。本次谈及的项目模块即包含给公司首页浏览、公司专题配置以及模块编码功能。  产品提出的...
            0 0 476
            分享
          •   摘要:  在测试性能时,我们可以尝试编写一个“性能等式”,以便检查影响性能的每个因素。但是,就算逐一检查方程式里的每一项也并不总是能看清整体情况。有些影响性能的因素很容易被忽略。测试更多的是发现系统的行为,而不是对一些期望行为的样本进行验证。  许多团队为了查看系统是否能够满足业务需求,会搭建一套基于服务器和网络基础设施的“测试平台”,开发一些模拟用户请求的脚本,并运行这些脚本来测试应用程序。为了确保系统有额外的容量,他们会将事务数增加一倍。  但这种方法似乎只是有时起作用,这意味着它在其他时候失败了。而解释它为什么成功或失败也同样是件困难的事。  让我们先仔细看看构成“性能等式”的部分:...
            0 0 1385
            分享
      • 51testing软件测试圈微信