`
sunxboy
  • 浏览: 2868811 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

软件性能问题的几点分析

阅读更多

【IT168技术分析】
  2008年已经过去了,忙忙碌碌的一年,依旧有点迷茫的一年,静下心来,泡壶茶,点支烟,整理一下自己的心情和思路,也整理一下这些年在性能测试中发现的问题,总结了一些原因,也算是自己的一个笔记,也为自己的测试路留下一些痕迹。

  第一、结构设计不合理造成的性能问题

  我发现这类问题是造成性能问题最多的,也是性能调优的重点,通过对结构的调整,性能变化也最明显。结构设计包括程序结构设计和数据结构设计,这两部分一定要综合考虑,但我发现大多数的软件 对程序结构设计偏重的多,对数据结构设计考虑的不是太充分,在下面的例子中我会说明。

  例子一:GIS在线编辑图形

  在ARCGIS SERVER 9中提供了通过WEB程序来编辑图形的功能,但它的工作机制是,只要客户端启动了编辑功能,后台ARCGIS SERVER就要启动一个进程(类似与启动了一个ARCMAP),所以对后台的性能压力是非常大的,特别是CPU 。如果程序在结构设计的时候没有考虑这些问题,当较多的用户进行图形编辑的时候,系统就会崩溃。事实也确实是这样,当进行性能压力测试的时候,在5个用户压力下,WEB服务器 、数据库服务器 的压力都非常小,而ARCGIS SERVER已经几乎不能运行了。这部分的设计应该借鉴中间件的思路,简历一个一直运行的进程,设立一个最大数,当用户有图形编辑的要求时,就把请求发到进程池中,如果有空闲的进程就直接利用空闲的进程,否则就等待。

  例子二:大文件的上传

  在一个《企业信息门户》中,允许用户上传一些资料,在数据库设计中,这些资料是保存在一个表中的BLOB字段中,并且有一个编号ID做主键,这样在用户量比较小的时候是没有问题的,当用户数比较大时,并且并发比较大时,对ORACLE的内存 占用很大,并且因为有索引,插入时还要更新索引,开销更大,如果把文件保存到硬盘 上而不是保存到数据库中,随说磁盘的IO速度较慢,但因为是网络 的文件传输,网速有限制,这样比存到数据库中的性能要提高很大。

  例子三:大数据表问题

  在一个关于“测井曲线”成图的系统中,因为是把各个点生成曲线,数据量非常大,这样造成一个表非常大,在进行数据结构设计时,对该表的容量没有充分考虑,造成程序运行一段时间后非常慢,把大数据表进行分区后,效果非常明显。

  第二、程序编写过程中非优化语句

   编写高性能代码有很多要注意的东西,因为我关注的是数据库方面的,所以会从SQL语句方面的优化来说一下,程序员在编写代码的时候因为水平不同,并且没 有考虑数据库中数据量的问题,编写的代码在功能测试时是没问题,但当进行稳定性测试的时候,数据库中有很多测试数据的情况下,系统的性能下降就很明显了。 比如一个新闻表中,有ID,NEWS,DATE,CLASSE,AUTHOR这样几个字段,ID是主键,每天大概有2000条的增量,每年有72万条的增 量,这样一条语句 select * from table where class ='1',可以看到就是

  建立了索引,该表还是进行全表扫描,当运行一年后,系统的速度大家就可以相象了。

  还有一些需要用存储 过程的,也是在程序中编辑SQL语句,该使用绑定变量的也没有使用绑定变量,等等问题。

  题后话,写程序易,写好的程序不易。性能测试易,做好性能测试不容易。小布老师就说过,虽然现在搞性能测试的人很多,但水平高的做性能测试的,他没碰见几个,他认为先搞清原理,认真做好有效高效的测试设计才是做好性能测试的基础。

 

 

 

分享到:
评论

相关推荐

    软件系统性能测试报告

    测试通过的标准通常包括但不限于以下几点:系统在预期的最大负载下能正常运行,响应时间保持在可接受范围内,无明显性能瓶颈,且资源利用率合理。此外,系统在异常情况下应具备良好的恢复能力和稳定性。 【测试前置...

    软件性能测试与调优指南

    性能测试与调优指南是一份重要的参考资料,其内容涵盖了软件性能测试的整体流程、方法论、结果分析以及性能调优的基本技术。该指南详细阐述了性能测试的目标、类型、阶段、过程,强调了测试者在分析性能需求、制定...

    c++ 性能分析工具

    在使用VerySleepy进行性能分析时,还需要注意以下几点: 1. **基准测试**:为了获得准确的性能数据,需要在稳定的环境中进行基准测试。 2. **复现性**:确保性能问题能够在多次运行中复现,以验证优化的有效性。 3. ...

    软件系统性能检测与瓶颈分析

    瓶颈分析则是在性能检测基础上进行深入研究,主要关注以下几点: 1. **硬件瓶颈**:检查硬件设备(如处理器、内存、硬盘等)是否成为性能的限制因素,可能需要升级或优化硬件配置。 2. **软件优化**:分析代码执行...

    软件性能测试作业模板

    ### 软件性能测试作业模板知识点解析 #### 一、理解软件性能测试与作业模板概念 在深入了解本次作业模板之前,我们先来了解一下软件性能测试的基本概念以及作业模板的作用。 **软件性能测试**是一种软件测试类型...

    性能测试结果分析

    在进行性能测试时,有几个关键点需要注意。使用JMeter时,避免使用BeanShell脚本获取随机参数,可能导致请求时间延长,影响TPS(每秒事务数)。建议改用CSV数据源读取参数。同时,为了减轻JMeter负担,可以减少并发...

    测试杀毒软件的性能代码

    根据给定文件的信息,我们可以提炼出以下几个相关的IT知识点: ### 1. 杀毒软件的定义及作用 杀毒软件是一种专门用于预防、检测并清除计算机病毒和其他恶意软件(如间谍软件、广告软件等)的安全软件。它通过扫描...

    软件工程软件测试分析报告标准

    分析摘要部分提供了对软件整体能力的评估,对比测试结果与性能要求,讨论了测试环境与实际运行环境差异对测试结果的影响。同时,报告列举了软件的缺陷和限制,以及它们对性能的潜在影响,提出了针对这些问题的改进...

    大型软件项目的性能测试流程

    软件性能测试旨在识别并解决软件在性能方面的问题,确保软件在预期的负载下能够满足性能要求,提高用户体验,避免服务中断。 ### 需求与设计阶段流程 #### 性能测试需求分析 此阶段需收集关于生产环境的信息,包括...

    性能测试报告、性能测试结果分析

    根据给定的【部分内容】,我们可以总结出以下几点: 1. **测试环境**:采用生产环境进行性能测试,选择非高峰时段进行压测。 2. **测试对象**:准备了2400+个马甲用户,并设置了统一密码,业务数据超过10000条。 3....

    软件性能测试类型、术语

    在IT行业中,软件性能测试是确保应用程序在各种工作负载下高效稳定运行的关键环节。它主要关注系统的响应时间、吞吐量、并发用户数以及资源利用率等指标。本篇将详细探讨“软件性能测试类型”及相关的“测试术语”。...

    软件性能测试

    ### 软件性能测试详解 #### 一、性能测试概述 ...通过以上详细的分析和规划,可以有效地进行软件性能测试,并准确评估软件在实际应用场景下的性能表现。这对于确保软件的质量和用户体验至关重要。

    软件测试问题与分析

    在软件测试过程中,有几类常见的问题需要注意: #### 形象类问题 这类问题虽然技术难度不高,但却直接影响用户对软件专业性和正规性的感知。包括不符合用户操作习惯的快捷键设置、界面风格和操作风格不统一、界面...

    Java 性能分析

    在IT行业中,Java性能分析是优化应用程序的关键环节,它涉及到如何有效地使用系统资源,提高程序运行效率,并确保软件系统的稳定性。本主题将深入探讨Java性能分析的相关知识点,结合标签"源码"和"工具",我们将关注...

    水泵性能微机自动闭环检测几点问题的处理.rar

    本文将深入探讨在微机自动闭环检测过程中可能遇到的几点问题及其处理方法。 首先,理解微机自动闭环检测的基本原理。该系统通常包括数据采集、信号处理、控制决策和执行机构四个部分。通过传感器实时监测水泵的各项...

    性能测试软件测试

    1. 压力测试:检查系统在超出正常工作负荷时的行为,以确定系统崩溃或性能严重下降的临界点。 2. 负载测试:模拟实际或预期的工作负载,观察系统在正常和峰值条件下的性能表现。 3. 稳定性测试(耐久性测试):长...

    kingst逻辑分析仪软件/kvdat文件查看工具

    在使用kvdat文件查看工具时,有几点需要注意。首先,正确设置触发条件是关键,这将决定何时开始记录波形数据。其次,利用软件提供的标尺和时间轴,可以精确测量信号的周期、脉宽等参数。再者,通过滤波功能可以去除...

    使用GPU渲染分析apk性能

    在GPU渲染分析过程中,关注以下几个关键点: 1. **帧率(FPS)**:理想的帧率应该是60FPS,这意味着每秒有60个完整的图像帧被呈现。如果帧率低于这个值,用户可能会感觉到卡顿。分析FPS可以帮助识别应用是否流畅。 ...

    关于Java软件的性能测试分析.zip

    Java软件的性能测试是评估应用程序在特定环境下的运行效率、响应时间和资源消耗的过程。...通过深入分析这份文档,我们可以获得对Java软件性能测试的全面理解,从而优化我们的Java应用程序,提升其性能和用户满意度。

Global site tag (gtag.js) - Google Analytics