`
kong_bai
  • 浏览: 138651 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多

第13回 负载、性能测试和容量测试的关系和区别 <script type="text/javascript"></script><script class="blogstory"></script>

 

于软件应用系统,仅仅从功能上满足用户的需求是不够的,还需要从性能、可用性等方面更好地满足客户的需要。


尤其对于实时软件系统、嵌入式系统和在线服务系统,这方面要求更高些。这就要求我们要做好系统的压力测试、性能测试、容量测试,以保证系统能提供良好的高性能、高可用性,让客户满意。

 

1.强度测试或压力测试

强度或压力测试是在一种需要异常数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈。异常情况,主要指那些峰值、极限值、大量数据的长时间处理等,包括:


  • 连接或模拟了最大(实际或实际允许)数量的客户机;
  • 所有客户机在长时间内执行相同的、性能可能最不稳定的重要业务功能;
  • 已达到最大的数据库大小,而且同时执行多个查询或报表事务
  • 当中断的正常频率为每秒一至两个时,运行每秒产生十个中断的测试用例;
  • 运行可能导致虚存操作系统崩溃或大量数据对磁盘进行存取操作的测试用例等。

压力测试可以分为稳定性测试和破坏性测试

  • 稳定性压力测试。在选定的压力值下,持续运行24小时以上的测试。通过压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等。
  • 破坏性压力测试。在压力稳定性测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来。

在压力测试中,会给程序加上一些跟踪机制(如log、日志等),然后查看监视系统、服务器等性能的日志文件是必要的,找出问题出现的关键时间或检查测试运行参数,通过分析问题或参数从而有目的地调整测试策略或测试环境,使压力测试结果真实地反映出软件的性能。

 

2.性能测试

系统的性能指标,一般赢在产品需求文档中有明确定义,有三种形式描述软件系统的性能指标:


  • 给出产品性能的主要指标,如在100000记录中查询一个特定数据的时间为0.5秒。
  • 以某个已发布的版本为基线,如比上一个版本的性能提高30-50%。
  • 和竞争对手的同类产品比较。

性能测试,根据其目的分为:


  • 产品性能质量测试,通过测试,决定产品是否达到产品规格书所要求的性能指标(非功能性需求)
  • 基准值测试,通过对当前产品的性能测试,确定产品具体的性能指标,建立性能指标基准。基准值,作为后继产品发布的性能参考(在新版本中,性能指标要求只升不降)或和竞争对手产品比较的参考。
  • 性能规划测试,通过不断的测试,确定所需要的硬件配置(内存、CPU、网络等)、软件配置,以满足实现定义的性能指标要求。这种测试,对于软件系统的部署是非常有意义的。同时,也可以进一步了解硬件参数、软件参数对系统性能的影响程度,从而保证系统具有很好的扩充性或事先制定较好的系统增容的计划。


性能测试的方法,主要有:


  • 稳定压力加载,一次性将负载加到某个水平,持续一段时间,也称为flat测试。
  • 逐渐加载或交替加载到某个负载水平,也称为“ramp-up”测试。
  • 峰谷测试,确定从系统高峰时间的负载转为几乎空闲、再攀升到高负载这样峰值交替情况下的系统性能状态/指标。这种测试兼有容量测试的特点或属于容量测试的一部分。

性能测试,一般都通过测试工具来模拟人为的操作而进行。性能测试的重点在于测试环境的建立、前期数据的设计与后期数据的分析。因为性能测试需要获得一定特定条件下(1002005001000个实时的连接)的系统占用资源(CPU、内存等)数据或系统行为表现,而且还要依靠测试工具或软件系统记录下这些指标变化的数据结果。例如,如果对一个Browser/Server结构的网络实时在线的培训系统软件进行测试,系统性能焦点是在不同数量的并发连接下,服务器的CPU、内存的占用率、客户端的响应时间等,如表1所示。

第16回 不容忽视的安装或部署测试

<script type="text/javascript"></script><script class="blogstory"></script>
      装测试是指按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用环境中,进行一步一步的操作完成安装的过程所进行的测试。

     安装测试可以分为
  • 全新安装,待安装的软件包是完整的,包含了所有的文件。
  • 升级版本安装,部分文件构成的软件包。
  • 补丁式安装,很小的改动或很少文件的更新,软件版本不变
  • 系统运行环境改变,性能调优,只改参数,没有软件文件的变化。
即使对升级安装,实际也是有差别的,一种是完全替换原来版本,另外一种就是保持多种版本共存,后者的难度会更大些。不管是哪一种情况,用户数据得到保护,包括完整性、一致性的验证,是非常重要的。系统迁移,也可以并入安装测试。安装测试也可以根据软件所属特征来划分:
  • 客户端软件安装
  • 服务器安装
  • 整个网络系统安装
       安装测试主要进行以下三个方面的测试:
  • 环境的不同设置或配置:强调用户的使用环境,考虑各种环境的因素的影响,如一个完全崭新的、非常干净的操作系统或应用系统之上去进行某个产品的安装,或者是考虑各种硬件借口的要求。
  • 安装文档的准确性。进行安装测试时,必须一步一步地完全按照文档去做(如拷贝文档指令,粘贴到系统安装相应地方),不能下意识地使用已有的经验去纠正安装不对的地方。
  • 安装的媒体制作是否有问题,包括最后制做时可能会丢了一个文件,或感染上计算机病毒等。

      安装测试有时容易被忽略,如果没做好,其损失依然很大,如必须换回全部安装盘、或重印安装手册、或加重技术支持负担,所以安装测试也是重要的一个测试阶段。

        软件部署逻辑、物理设计完成后,必须通过验证才能进入实施阶段。部署设计的验证首先是在实验室环境中进行,也就是和软件的系统测试结合起来做,包括性能测试、安装测试等,这被称为软件部署的试验性系统验证。实验室环境还不是真正产品运行的环境,部署设计的进一步验证需要在实际的运行环境中进行,这就是原型系统的验证。Beta测试,将系统(试用版)有限地部署给选定的一组用户,以确定其能否满足业务要求,所以可以被看作原型系统验证的一部分。

        软件部署的试验性系统和原型系统验证完成之后,实际也宣告了软件部署的实施结束。软件部署的验证和实施的过程一般包括以下步骤:

  • 开发试验性系统 (构建网络和硬件基础结构、安装和配置相关的软件)
  • 根据测试计划/设计执行安装测试、功能测试、性能测试和负载测试
  • 测试通过,开始规划原型系统
  • 完成原型系统的网络构建、软硬件的安装和配置
  • 数据备份或做好可以恢复(Roll-back)的准备
  • 将数据从现有应用程序迁移到当前解决方案
  • 根据培训规划,培训部署的管理员和用户
  • 完成所有的部署
在这些过程中,保证系统和用户数据的不丢失是非常重要的,大家都知道,数据比系统更为重要。


部署测试的进一步说明

       试验性部署测试和原型部署测试的目的是,在测试条件下尽可能确定部署是否既能满足系统要求,又可实现业务目标。理想情况下,功能性测试可以模拟各种部署方案以完成所需要执行的测试用例,并且定义相应的质量标准来衡量其符合性。负载测试衡量在峰值负载下的测量性能,通常使用一系列模拟环境和负载发生器来衡量数据吞吐量和性能。对于没有明确定义、缺乏原始数据积累的全新系统,功能性测试和负载测试尤其重要。

      通过测试能够发现部署设计规范存在的问题,可能需要返回先前的部署设计阶段,重新设计或修正设计,再进行试验性部署测试,直至没有问题,才向原型系统展开部署。测试原型部署时,也可能会发现部署设计中存在问题,同样需要返回先前的部署设计阶段。如果发生这种情况,其代价相当大,并严重影响产品发布的时间表。所以,软件部署设计的评审是非常重要的,应避免任何严重设计的问题被忽视。这样,试验性部署测试和原型部署测试所发现的问题,就可以通过软硬件的配置调整就可以解决,如增加内存、参数修改等。

       实际运行系统的部署,通常分阶段进行,有助于隔离、确定和解决服务可能在实际运行环境中遇到的问题,特别是对会影响大量用户的大型部署具有尤其重要的意义。分阶段部署可以先向一小部分用户部署,然后逐步扩大用户范围,直至将其部署给所有用户。分阶段部署也可这样进行:先部署一定类型的服务,然后逐步引入其余类型的服务。所以,软件实际运行系统的部署过程被分为两个重要阶段LA ( Limited Available)和GA ( General Available)。由于测试永远不可能完全模拟生产环境,并且已部署解决方案的性质会发生演进和改变,因此应继续监视部署的系统,以确定是否有需要调整、维护或修补的部分。
分享到:
评论

相关推荐

    黑客攻防技术宝典:Web实战篇(第2版)1

    《黑客攻防技术宝典:Web实战篇(第2版)》是一本专注于Web应用程序安全的实战指南,由Dafydd Stuttard和Marcus Pinto撰写,由石华耀和傅志红翻译。该书深入浅出地探讨了Web应用程序的安全风险和攻防策略,适合网络...

    Windows黑客技术揭秘与攻防 C语言篇

    2. 黑客技术的基本概念:包括黑客攻击的类型、黑客攻击的步骤、黑客攻击的防御等。 3. C 语言在黑客技术中的应用:包括 C 语言的基本语法、C 语言在黑客技术中的应用场景、C 语言在黑客攻击和防御中的角色等。 4. ...

    《阿里技术参考图册(算法篇)(研发篇)》

    ( 《阿里技术参考图册(算法篇)(研发篇)》)内部资料 由阿里资深专家编写。翻开此书,你可以清晰看到阿里繁荣的业务生态:文化娱乐核心电商业务、本地生活、支付&金融服务、智慧物流、市场营销、云计算等全貌。...

    java技术教程基础篇

    java技术教程基础篇java技术教程基础篇

    阿里技术研发篇+阿里技术算法篇

    阿里技术研发篇与阿里技术算法篇是两个非常重要的学习资源,涵盖了阿里巴巴集团在技术研发和算法应用方面的核心知识。本文将深入探讨这两个主题,帮助读者更好地理解阿里巴巴的技术架构与算法策略。 首先,我们关注...

    尚硅谷SpringBoot视频教程(上)核心技术篇,(下)整合篇

    尚硅谷SpringBoot视频教程(上)核心技术篇,(下)整合篇 尚硅谷SpringBoot视频教程(上)核心技术篇,(下)整合篇 不容错过

    《阿里技术参考图册》算法篇与研发篇

    《阿里技术参考图册》是阿里巴巴集团为技术爱好者和从业人员提供的宝贵资料,涵盖了算法篇与研发篇两个重要领域。这份图册旨在帮助读者深入理解并掌握在IT行业中至关重要的技术知识,尤其对于软件开发和算法设计有着...

    阿里技术参考图册--算法篇

    《阿里技术详解图册》,分为研发篇、算法篇两册,将为你清晰呈现阿里业务生 态的全貌:文化娱乐(优酷、土豆等)、核心电商业务(天猫、淘宝、村淘等)、 本地生活(高德地图、盒马等)、支付 & 金融服务(蚂蚁金服...

    信息化管理技术篇.zip

    信息化管理技术篇.zip

    第2课 电脑安全技术防护篇

    第2课 电脑安全技术防护篇电脑安全技术防护篇电脑安全技术防护篇电脑安全技术防护篇电脑安全技术防护篇电脑安全技术防护篇电脑安全技术防护篇电脑安全技术防护篇

    (超级给力)《阿里技术参考图册-算法篇》

    此套图册将呈现阿里技术全景,希望你会喜欢。...内容分为研发篇、算法篇两册,全面展示了在超大规模的企业级应用需求下,阿里全新升级的大中台、小前台的技术组织架构,以及各个技术领域的突破及创新。

    《阿里技术参考图册》(研发篇)

    《阿里技术参考图册》(研发篇)!!!!

    Windows黑客技术揭秘与攻防2-Visual.Basic篇

    Windows黑客技术揭秘与攻防2:Visual Basic篇》由浅入深地讲解黑客攻击和防范的具体方法和技巧,通过具体、形象的案例向读者展示多种攻防方法和攻防工具的使用。《Windows黑客技术揭秘与攻防2:Visual Basic篇》分为II...

    WINDOWS黑客技术揭秘与攻防 1 C语言篇.pdf

    根据提供的文件内容,这是一本关于Windows平台下黑客技术的书籍,其标题为《WINDOWS黑客技术揭秘与攻防 1 C语言篇》,并且重点在于C语言在Windows平台下的黑客编程应用。书籍内容详尽地介绍了多种黑客技术的编程方法...

    阿里技术参考图册(算法篇 + 研发篇)

    该压缩包包含了两部分:算法篇和技术研发篇,分别深入探讨了这两个领域的核心概念和实践应用。 **算法篇**,重在帮助读者理解和掌握计算机科学中的基础算法和数据结构。这通常包括排序算法(如快速排序、归并排序、...

    Visual C++ 6.0高级编程技术-OpenGL篇.part2

    Visual C++ 6.0高级编程技术-OpenGL篇.part2

    计算机技术的读书笔记10篇

    计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇计算机技术的读书笔记10篇

    OpenGL三维图形系统开发与实用技术.实用技术篇

    实用技术篇”这本书中,作者深入浅出地介绍了如何利用OpenGL进行三维图形的编程。随书光盘包含的代码和资源文件,如`cddz.ico`、`AUTORUN.INF`、`Readme.txt`等,都是为了辅助读者更好地理解和实践书中的实例。 `...

Global site tag (gtag.js) - Google Analytics