软件测试方法进行调优,软件测试中性能调优的过程解析

性能调优无疑是个庞大的话题,也是很多项目中非常重要的一环,性能调优的难做是众所周知的,毕竟性能调优涵盖的面实在是太多了,在这篇文章中我们蜻蜓点水般的来看看性能调优这项庞大的工程都有些什么过程,同时也看看这些过程中常见的一些做法。

确定性能调优的目标

性能调优,首先是要确定性能调优的目标是什么,如果现在应用已经满足了需求,就没必要去做性能调优了,毕竟不经过一个系统的过程,其实是无法确定你所做的性能调整是否真的调优了性能,是否没有造成应用中其他的问题,所以确定性能目标是非常重要的,在定义性能目标的时候通常这么定义的呢:

1、最大并发数

2、Quality of Service

服务的质量,在软件系统方面我们认为主要表现在请求的出错率,系统的load等。

3、最长响应时间

对于任何请求所能承受的最大响应时间。

4、TPS

每秒需要支持的最大事务数,最典型的指标是:“某页面最高需要支撑每秒7000次的访问次数”。

例如一个web系统,需要定义出来的目标是:

并发目标:最高支撑200并发;

QoS:出错率须控制在万分之一,系统的load最高只能到达10;

TPS:每秒完成7000次请求的处理;

最大响应时间:最长允许的响应时间为5秒。

至于请求的平均响应时间这些就不在性能调优目标中定义,因为要达到TPS的要求,响应时间是必须要达到一个级别的,而且响应时间随着高并发是会出现劣化的。

当然,还可以把性能指标定到更为细节,例如某个方法的TPS在100并发时需要达到多少。

在确定好了性能目标后,重要的就是如何来测量系统的性能了。

测量系统性能

对于新系统而言,需要评估出其正式运行时的数据量的增长情况;而对于已运行的系统,则需要根据监控获取到系统的运行数据(例如高峰并发数、系统的响应速度情况、系统的load、网络流量、每类请求在总的请求中所占的百分比等)。

对于新系统而言,要评估出具体的性能相对来说稍微好做一点,因为此时系统通常较为单纯,数据量的增长也不可能是一夜之间增长的,因此基本可以按照一种正常的方法在测试环境评估出其正式运行的性能。

而对于已运行的系统而言,则较为麻烦,因为通常来讲要在测试环境中模拟正式运行环境基本是不太可能的,因此这个时候通常要采取一些模拟的方法或更高压力的方法来尽量更为准确的评估出系统的性能。

在测试系统性能时,通常可采用的方法有:

1、单元测试;

可借助单元测试来测试某个请求的性能;

2、压力测试;

压力测试无疑是测量系统性能中最常采用的方式,根据定义的性能目标对系统进行压力测试,以确定系统是否满足性能要求,同时也可以根据压力测试的结果来分析系统的瓶颈,进而进行对应的调优,可用于做压力测试的工具还是不少的,像loadrunner、jmeter等等,不过压力测试这个话题实在太大了,不在这里展开去讲了,不过我也不怎么懂就是,呵呵。

分析系统性能瓶颈

根据测量系统性能的结果,多数是可以分析出系统性能的瓶颈,同时还可以结合像jvm堆栈、jprofiler、系统日志等来进行进一步的确定,另外也可以根据性能调优人员的经验,例如可以去了解开发人员是否采用了不适合的数据结构等。

简单说一个线程分析的例子:

借助kill -3 pid来获取到目前jvm的线程堆栈信息,特别需要关注的是里面wait for monitor这样的线程,这种线程是指在等待锁的线程,等待一两分钟后再次kill

-3 pid,看看这些wait for monitor的线程的变化情况,这对于分析线程中是否存在不合理的竞争过高的锁的分析是非常重要的。

这一步无疑也是性能调优过程中最难的一步了,分析系统性能瓶颈这种基本只能结合实际例子来讲了,正确在后续抽取一两个例子来进行讲解。

性能调优

在分析出系统性能的瓶颈后,其实这一步相对来说还好做些,当然,需要建立在对软硬件知识都有很好的深入了解的基础上,在这里列举一些比较常见的性能调优的手段,多数是抄来或google来的,自己在这方面的经验还不多,希望大家多加指点。

Redhat Linux内核

Redhat linux内核版本升级到2.6,2.6和2.4的差别还是很多的,例如对epoll的支持、NPTL的采用;epoll的支持对于java而言也是很重要的,在高并发的情况下nio是否采用epoll还是有挺大的差别的;而NPTL的采用对于多线程程序而言更是极为重要。

另外需要关注像linux的File Handles是多少、network buffer是多少、MTU是多少、Memory

Page size是多少等等。

JVM

JVM调优的文章相对来说比较多,大家需要了解的主要是-Xms/-Xmx、并行GC、-XX:MaxPermSize/-XX:MaxNewSize、-XX:ThreadStackSize、NIO采用epoll等等。

简单的列这两个,其实性能调优的手段还有非常的多,例如简单的增加CPU、买更快速度的硬盘、增加内存、提升网络带宽等这些从硬件角度下手的方式,还有像数据库调优、应用服务器调优等等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
游戏测试性能测试是指通过一系列测试来评估游戏在不同硬件和软件环境下的性能表现,包括帧率、加载时间、响应时间等指标。而性能调优是指对游戏进行优化,以提升其性能表现和用户体验。 在进行游戏测试性能测试时,可以采用以下步骤: 1. 确定测试目标:明确测试的重点和目标,例如帧率、加载时间、内存占用等。 2. 设计测试场景:创建不同的游戏场景,包括复杂场景和高强度操作,以模拟真实游戏使用情况。 3. 选择测试工具:根据需求选择合适的性能测试工具,例如Unity Profiler、Unreal Engine Profiler等。 4. 运行测试并记录数据:执行测试场景,并记录关键指标的数据,如帧率、CPU和GPU使用率等。 5. 分析和优化:根据测试结果分析性能瓶颈,并针对性地进行优化,例如减少渲染负荷、优化算法、减少资源消耗等。 6. 重复测试和优化:反复执行测试和优化步骤,直到达到预期的性能目标。 在性能调优方面,可以采取以下方法: 1. 图形渲染优化:使用合适的渲染技术和优化算法,减少渲染负荷,提高帧率。 2. 内存管理优化:合理管理游戏资源的加载和卸载,避免内存泄漏和过度占用。 3. 算法优化:对游戏的关键算法进行优化,提高计算效率。 4. IO优化:合理使用IO操作,减少磁盘读写次数和延迟。 5. 数据压缩和网络优化:使用压缩算法减小数据传输量,优化网络连接,减少延迟。 总之,游戏测试性能测试性能调优是提高游戏性能和用户体验的重要环节,通过科学的测试和针对性的优化,可以使游戏在各种硬件和软件环境下都能够流畅运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值