量体裁衣性能测试在企业中的应用

简介:
一个估计有百万用户的门户网站代码编写完成了。进行功能测试,运行效果良好,项目组为此欢呼雀跃。在产品的演示会上,风险投资商提出了一个问题-“咱们这个网站能支持多少用户同时在线啊?”。整个会场寂静,一会儿,项目经理说:“我们还没有进行这方面的测试。”会场哗然……

性能测试介绍

只进行功能测试,而不进行性能测试,对一个拥有百万用户的门户网站来说,无疑是一个天大的笑话。一个好的网站(软件)应该是性能稳定的,经的起考验的。那么什么是性能测试呢?
u       性能测试的概念及种类
性能测试是为描述测试对象与性能相关的特征并对其进行评价,而实施和执行的一类测试。它主要通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。通常大家把性能测试、负载测试、压力测试统称为性能测试。
负载测试-通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标情况下,系统所能够承受的最大负载量的测试。
压力测试-通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并来获得系统能提供的最大服务级别的测试。
u        性能测试的工具介绍
 
n          开源工具
开源工具以其源代码开放、针对性强、小巧灵活多变、免费的特性吸引着越来越多的企业和个人投入到开源项目研发当中。IBM投资1000万的Eclipse无疑是最为吸引大家眼球的开源项目。伴随着开源项目的蓬勃发展,很多非常优秀的开源性能测试工具也纷纷出炉,如:JmeterOpenSTADBMonsterTpTest等。
工具名称
功能简介
Jmeter
Jmeter 可以完成针对静态资源和动态资源(Servlets, Perl脚本, Java对象数据查询, FTP服务等)的性能测试、可以模拟大量的服务器负载、网络负载、软件对象负载,通过不同的加载类型全面测试软件的性能、提供图形化的性能分析。
OpenSTA
OpenSTA 可以模拟大量的虚拟用户、结果分析包括虚拟用户响应时间、web服务器的资源使用情况、数据库服务器的使用情况,可以精确的度量负载测试的结果。
DbMonster
DBMonster 是一个生成随机数据,用来测试SQL数据库的压力测试工具。
TpTest
TPTest 的提供测试Internet连接速度的简单方法。
……
……
13-1:开源性能测试工具介绍
 
n          商业工具
商业工具以其界面美观、功能强大、操作方便、插件种类多、统计分析项丰富、直观,同时提供产品的定期或者不定期的升级以及技术支持服务等优势也广泛的应用于各个企业。目前比较流行的商业性能测试工具也非常多,如Mercury LoadRunnerIBM Rational Performance Tester(RPT)等工具。
工具名称
功能简介
Mercury LoadRunner
Mercury LoadRunner  是一种预测系统行为和性能的工业级标准性能测试负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。支持Web(HTTP/HTML)Windows SocketsFile Transfer Protocol(FTP) Media Player(MMS) ODBCMS SQL Server等协议。
IBM Rational Performance Tester
适用于团队验证 Web 应用程序的可伸缩性的负载和性能测试工具,引入了新的技术进行负载测试的创建、修改、执行和结果分析。
……
……
13-2:商业性能测试工具介绍
n          免费工具
免费工具以其界面美观、免费使用、统计分析项较多、操作较方便等优点也吸引了很多
的企业应用这类软件,比较出名的免费性能测试工具有Microsoft Application Center TestMicrosoft Web Application Stress Tool
工具名称
功能简介
Microsoft Application Center Test
它可以对 Web 服务器进行强度测试,分析Web 应用程序(包括 ASPX 页及其使用的组件)的性能和可伸缩性问题。通过打开多个服务器连接并迅速发送 HTTP 请求,Application Center Test 可以模拟大量用户。
Microsoft Web Application Stress Tool
由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。可以数种不同的方式建立测试指令:包含以手动、录制浏览器操作步骤、或直接录入IIS的记录文件、录入网站的内容及录入其它测试程序的指令等方式。
……
……
13-3:免费性能测试工具介绍

性能测试在软件企业的应用

随着软件行业的不断发展,越来越多的企业更加重视产品的质量。性能测试已经成为软件质量保障的一个重要因素。一个软件性能的优劣很有可能直接决定一个软件的成败,甚至一个企业的兴衰。每个软件企业都有各自不同的应用领域,有着不同的实际情况,这样必然要求每个企业量体裁衣,选择适合自己的应用策略。
大型企业、大型项目的应用策略
大型企业应用的软件系统,业务比较复杂、用户数很多、存在并发情况、业务的响应时间、操作的实时性、稳定性、安全性、可恢复性等都要求很高。
象银行、电信、铁路等大型企业一般通过CMMIISO等认证,企业拥有先进的管理模式、人员储备丰富、实力雄厚,在涉足的领域基本处于不可撼动的地位。这些行业对性能的要求很高。在此仅举一个铁路售票系统的例子:每逢春节、五一、十一,相信坐火车回家探亲或度假的朋友一定身有体会。在火车站、车票零售点,人海茫茫,一望无际,此时火车售票系统正在经受着巨大的性能考验。全市几百个售票网点同时紧张忙碌工作。售票过程一般分为两步,首先根据购票者提供的要出行的日期、车次和目的地进行相关查询,然后在有票的情况下,收取现金,打印出相应的车票交付给购票者。一个看起来简单的两个步骤,但当成百上千的终端同时执行时,情况就复杂了。如此众多的交易同时发生,对应用程序本身、操作系统、中心数据库服务器、中间件服务器、网络设备的承受力都是一个严峻的考验。由这些行业的性质决定了决策者不可能在发生问题后才考虑系统的承受力预见并发承受力是这些行业应该考虑的一个很重要的问题。
鉴于大型企业资金雄厚、管理规范、人员分工明确,笔者认为主要可以有两种方式解决大型企业的性能测试问题。
解决方案一:构建自己的性能测试团队
组建由性能测试专家、数据库专家、网络专家和系统软件管理员以及资深的程序员(有的公司还有业务专家)构成的性能测试团队。性能测试团队是一个独立的部门,在进行性能测试时,需要制定详细的性能测试计划、测试设计、测试用例,而后依据测试用例执行性能测试、分析性能测试结果,提出性能调整建议、书写性能测试总结报告。在工具的选用方面,建议选择商业性能测试工具,强大的功能、丰富的统计分析项、而且象Mercury LoadRunnerIBM Rational Performance Tester等工具还提供了专门的插件可以集成到IDE中,做粒度很细的工作,如看某个算法的执行时间、某个存储过程的执行时间、甚至某个语句的执行时间等。这些优势无疑为专家们定位系统问题提供了很好的依据。
解决方案二:专业性能测试机构为系统测试
   如果企业没有自己的性能测试部门,请专业的性能测试机构为系统做测试也不失为一个好办法。专业软件测试机构具有成熟的测试流程和测试方法,由有丰富的工作经验的性能测试工程师进行测试并提交专业的性能分析报告,可极大地提高测试有效性,同时企业不需为维护性能测试而保留的由各方面专家组成的部门人员的高额费用(这种情况在很少进行性能测试的企业尤为重要)。还可保证测试的独立性、公正性,避免了部门之间产生矛盾或磨擦。
中型企业、中型项目的应用策略
中型应用的软件系统,业务比较复杂、用户数较多、存在并发情况,对业务的响应时间、稳定性等都有一定的要求。
中型企业一般通过ISO认证,企业拥有比较先进的管理模式、有一定的人员储备、较强实力,在涉足的领域有比较有名气,对性能的要求比较高。在此仅举一个汽车配件查询系统的例子:该系统提供近千家的汽车配件信息,通常有50120人在线。用户操作的最多的就是查询厂家及其配件信息的操作。这是一个典型的中型项目。用户并发数量不是很大,涉及到频繁的查询操作,对系统的响应时间和系统的稳定性要求比较高。
鉴于中型企业有较强实力、管理较规范、有一定的人员储备,笔者认为主要可以有三种方式解决中型企业的性能测试问题。
解决方案一:临时组建性能测试团队
在测试部门和开发部门临时组建由资深的程序员、资深的测试员、数据库专家、网络专家和系统软件管理员构成的性能测试团队。性能测试团队不是一个独立的部门,分别由隶属于开发、测试等部门的专家构成。在进行性能测试时,需要制定详细的性能测试计划、测试用例,而后依据测试用例执行性能测试、分析性能测试结果,提出性能调整建议、书写性能测试总结报告。在工具的选用方面,建议选择商业性能测试工具,购买单协议的Mercury LoadRunnerIBM Rational Performance Tester等工具。也可以选择开源的性能测试工具,如:Jmeter  OpenSTA等。还可以选择免费的性能测试工具,如:Microsoft Web Application Stress Tool  Microsoft Application Center Test 。但是无论是开源工具还是免费的测试工具,因为这些工具为非商业工具,它们使用的熟悉过程时间长、统计分析项不是十分丰富以及产品的后期升级和技术支持没有保证都应该成为企业考虑的内容。
解决方案二:自行编写测试程序
对于特定的模块或者插件也可以进行针对性进行代码编写,进行相关性能测试。在此我仅举一个例子,记得在开发一个汽车定损行业管理软件时,系统需要以FTP方式传送汽车损坏情况照片,决定采用第三方提供的FTP服务器组件。需要对该FTP服务组件进行系统稳定性和并发性测试。经过项目组协商决定采用自行编写多线程程序模拟多个客户端进行不间断的持续FTP上传和下载操作。自行编写测试程序也不失为另一种性能测试的方法,但是在您进行程序编写的时候一定要注意您所应用的组件是否是线程安全的,如果线程不安全将会出现问题。
解决方案三:专业性能测试机构为系统测试
   如果在时间紧、任务重以及在企业条件允许的情况下,请专业的性能测试机构为系统做测试也不失为一个办法,其优势不再赘述。
小型企业、小型项目的应用策略
小型应用的软件系统,业务比较简单、用户数也不是很多、存在并发情况,对业务的响应时间、稳定性等都有一定的要求。
小型企业一般管理不是很规范、人员储备不太充足、有一定的经济实力,在涉足的领域有些名气,对性能有一定的要求。在此仅举一个进销存管理系统的例子:该系统为一个大型商场对日常进销存业务的管理,通常有1030人应用此系统。用户操作的最多的就是查询与销售商品的操作。这是一个典型的中、小型项目。用户并发数量不大,涉及到频繁的查询和出库操作,对系统的响应时间和系统的稳定性有一定要求。
鉴于小型企业有一定的经济实力、管理不是很规范、人员储备也不是很充足,笔者认为主要可以有两种方式解决小型企业的性能测试问题。
解决方案一:临时组建性能测试团队
临时组建由资深的程序员、数据库专家、网络专家和系统软件管理员构成的性能测试团队,有的公司可能存在上述提及人员不完整的情况,那么可以针对项目的重要程度,适当增加相应的专家人员,必要时应该外聘一些专职或者兼职的专家。性能测试团队不是一个独立的部门,分别由隶属于开发等部门的专家构成。在进行性能测试时,需要制定详细的性能测试计划、测试用例,而后依据测试用例执行性能测试、分析性能测试结果,提出性能调整建议、书写性能测试总结报告。在工具的选用方面,可以考虑选择商业性能测试工具,购买单协议的Mercury LoadRunnerIBM Rational Performance Tester等工具、或者购买具有一个月或者几个月许可协议的商业性能测试工具。也可以选择适合项目的开源、免费性能测试工具。
解决方案二:专业性能测试机构为系统测试
   如果在时间紧、任务重或者软件性能测试要求较高以及在企业条件允许的情况下,请专业的性能测试机构为系统做测试也不失为一个办法,其优势不再赘述。

总结

       以上策略是一个普遍的应用于大、中、小企业以及大、中、小项目进行性能测试的应用策略,并不见得大公司就不做小项目,而小公司就不可以承揽大型项目,每个企业应该根据企业的实际情况和项目的规模,选择行之有效的性能测试团队组建形式和具体的解决方案来成功完成性能测试工作。




本文转自 fish_yy 51CTO博客,原文链接:http://blog.51cto.com/tester2test/156343,如需转载请自行联系原作者

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
29天前
|
SQL 安全 测试技术
【软件设计师备考 专题 】测试要求说明书的编写和应用
【软件设计师备考 专题 】测试要求说明书的编写和应用
58 0
|
1月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
|
1月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索AI在软件测试中的应用与挑战
【2月更文挑战第25天】 随着人工智能(AI)技术的迅猛发展,其在软件测试领域的应用逐渐深入。AI不仅改变了传统测试流程,提高了测试效率和质量,也引入了新的挑战。本文将详细探讨AI在软件测试中的具体应用,包括智能化测试用例生成、缺陷预测、自动化测试执行等,并分析当前面临的主要挑战,如数据质量、模型泛化能力和工具集成等问题。通过实例分析和研究展望,本文旨在为软件测试专业人士提供一个关于AI技术融合的全面视角。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索AI在软件测试中的应用和优势
【2月更文挑战第22天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。本文主要探讨了AI在软件测试领域的应用及其带来的优势。文章首先介绍了AI技术的基本概念,然后详细分析了AI在软件测试中的具体应用,包括自动化测试、智能缺陷检测和预测等方面。最后,文章总结了AI在软件测试领域的优势,如提高测试效率、降低人力成本、提高测试质量等,并展望了AI在软件测试领域的未来发展趋势。
|
1月前
|
机器学习/深度学习 人工智能 算法
探索AI在软件测试中的应用与挑战
【2月更文挑战第15天】 随着人工智能技术的飞速发展,其在软件测试领域的应用日益广泛。本文将深入探讨AI技术如何革新传统软件测试流程,以及在实施过程中可能遇到的挑战。我们将从自动化测试用例生成、智能化缺陷识别、测试数据优化等方面入手,分析AI如何提升测试效率和质量。同时,也将讨论集成AI所面临的问题,如数据隐私保护、算法透明度、以及对测试人员技能的新要求。
|
24天前
|
Web App开发 Java 测试技术
深入理解与应用软件自动化测试工具Selenium
随着软件开发的快速发展,软件测试在保证产品质量方面发挥着越来越重要的作用。其中,自动化测试以其效率高、成本低的特点受到了广大开发者的欢迎。本文主要介绍了自动化测试工具Selenium的基本概念、原理以及在实际开发中的应用,旨在帮助读者更好地理解和使用Selenium进行高效的自动化测试。
22 4
|
30天前
|
设计模式 敏捷开发 监控
深入理解与应用软件自动化测试框架
在快速迭代的软件开发过程中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将详细探讨自动化测试框架的核心原理、设计模式及其在实际项目中的应用。我们将分析几种流行的自动化测试工具,如Selenium、Appium和JUnit,并讨论它们如何集成以形成强大的测试解决方案。文章还将展示通过自定义框架来满足特定测试需求的实例,以及如何通过持续集成和持续部署(CI/CD)流程优化测试实践。
|
1月前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
敏捷开发 供应链 测试技术
深入理解与应用软件测试中的Mock技术
【2月更文挑战第30天】 在现代软件开发过程中,单元测试是保证代码质量的重要手段。然而,对于高度依赖外部系统或服务的应用来说,传统的单元测试方法往往难以实施。Mock技术应运而生,它通过模拟外部依赖的响应,使开发者可以在隔离的环境中测试目标代码。本文将探讨Mock技术的概念、应用场景以及如何在软件测试中有效地使用Mock对象,以增强测试的灵活性和可靠性。