解析:
希赛顾问——软件测试专刊(2006年第4期,总第4期)
主办:希赛网(csai) 承办:希赛网软件测试频道(testingcsai)
性能测试兵法
作者:陈绍英 来源:希赛网软件测试频道
在大多数的性能测试工作中,我们可以看出很多内容都是互相关联的。这就给我们提供了一思路:性能测试的很多内容可以经过一定的组织统一来进行。统一开展性能测试的巨大好处是可以由浅入深按照层次对系统进行测试,进而减少不必要的工作量,以实现节约测试成本的目的。为此,本文提出了“全面性能测试模型”的概念。 “全面性能测试模型”提出的主要依据就是一种类型的性能测试可以在某些条件下转化成为另外一种类型的性能测试,而这些类型的测试实施也是很类似的。例如:针对一个网站进行测试,模拟10到50个用户
就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询 *** 作,就包含了强度测试。
1.全面性能测试模型在“全面性能测试模型”中,把Web性能测试分为八个类别。
下面首先介绍八个性能测试类别的主要内容。
(1)预期指标的性能测试 系统在需求分析和设计阶段都会提出一些性能指标,这些指标是性能测试要完成的首要工作之一,本模型把预先确定的一些性能指标的测试称为预期指标的性能测试。 这些指标主要是指诸如“系统可以支持并发用户1000”、“系统响应时间不得高于10秒”等在产品说明书等文档中中十分明确的内容,对这种预先承诺的性能要求,测试小组应该“首当其冲”完成这类测试。
(2)独立业务性能测试 独立业务主要是指一些核心业务模块,这些模块通常具有功能比较复杂、使用比较频繁、属于核心业务等特点。这类特殊的、功能比较独立的业务模块始终都是性能测试重点。我们通常不但要测试这类模块的一些和性能相关的算法,还要测试这类模块对并发用户的响应情况。 核心业务模块在需求阶段就可以确定,在系统测试阶段开始单独测试其性能。如果是系统类软件或者特殊应用的软件,通常从单元测试阶段就开始进行测试,在后继的集成测试、系统测试、验收测试中进一步进行测试,以保证核心业务模块的性能稳定。 用户并发测试是核心业务模块的重“并发”的主要内容是模拟一定数量的用户同时使用某一核心模块的“相同”或者“不同”的功能,并且持续一段时间。对“相同”的功
能进行并发测试分为两种类型,一类是在同一时刻进行完全一样的 *** 作,例如打开同一条数据记录进行查看;另外一类是在同一时刻使用完全一样的功能,例如同时提交数据进行保存。可以看出后者是包含前前者的,后者是前者的特例,这种并发测试都要持续一定的时间。
从微观角度讲,同时使用某一核心模块“不同”的功能,也是一种组合业务性能测试,只不过这种组合的相关业务大分类是一致的。
(3)组合业务性能测试 通常不会所有的用户只使用一个或者几个核心业务模块,每个功能模块都可能被使用到,所以Web性能测试既要模拟多用户的“相同” *** 作(这里的“相同”
指很多用户使用同一功能),又要模拟多用户的“不同” *** 作(这里的“不同”指很多用户同时对一个或者多个模块的不同功能进行 *** 作)对多个业务进行组合性能测试。组合业务测试是最接近用户实际使用情况的测试,因而是性能测试的核心内容。我们通常按照用户的实际使用情况来模拟使用各个模板的人数比例。 由于组合业务测试是最反映用户使用系统情况
的测试,因而组合测试往往和服务器( *** 作系统、Web服务器、数据库服务器)性能测试
结合起来,在通过工具模拟用户行为的同时,还通过测试工具的监控功能采集服务器的计数器信息,进而全面分析系统的瓶颈,为改进系统提供有利的依据。用户并发测试是组合业
务测试的核心内容。“组合”并发的突出特点是分成不同的用户组进行并发,每组的用户比例要根据实际情况来进行匹配。组合业务测试可以理解为包含了“核心业务模块并发”和“非核心业务模块并发”同时进行的并发用户测试。
(4)疲劳强度性能测试 疲劳强度测试是在系统稳定运行下模拟较大的用户数量、并长时间运行系统的测试,通过综合分析执行指标和资源监控来确定系统处理最大业务量时的性能,
主要目的是为了测试系统的稳定性。
(5)大数据量性能测试 大数据量测试分为两种:一种是针对某些系统存储、传输、统计查询等业务进行大数据量的测试,主要是测试数据增多时的性能情况,这类一般都是针对某些特殊的核心业务或者一些日常比较常用的组合业务的测试。 第二种是极限状态下的数据测试,主要是指系统数据量达到一定程度时,通过性能测试来评估系统的响应情况,测试的对象也是某些核心业务或者日常常用的组合业务。例如系统的数据每年只备份转移一次,可分别选择一个季度、半年、一年作为参考,模拟输入各个时间段的预计数据量,然后测试系统的性能,进而预估系统的性能走向。 由于大数据量仍然是为了测试系统的业务处理能力,
因此大数据量性能测试可以独立进行,也可以和前面的独立、组合业务测试结合起来进行,主要由性能测试策略来决定。由于大数据量测试一般在投产环境进行,因此本书把它单独独立出来,和疲劳强度测试放在一起,在整个性能测试的后期进行。大数据量测试可以理解为特定条件下的核心业务或者组合业务测试。
(6)网络性能测试 网络性能测试主要是为了准确展示带宽、延迟、负载和端口的变化是如何影响用户的响应时间的。在实际的软件项目中,主要是测试用户数目与网络带宽的关系。
网络性能测试一般有专门的工具,因此本书不研究网络测试,网络测试的任务通常由系统集成人员来完成。
(7)服务器性能测试 服务器性能测试( *** 作系统、Web服务器、数据库服务器)分为初级和高级两种形式。“初级服务器性能测试”主要是指在业务系统工作或者进行前面其它
种类性能测试的时候,监控服务器的一些计数器信息,通过这些数据对服务器进行综合性能分析,找出系统瓶颈,为调优或者提高性能提供依据。“高级服务器性能测试”一般不由测试人员进行,由专门的系统管理员来进行,例如数据库服务器由专门的DBA来进行测试和调优。本书主要讨论在测试中常用到的“初级服务器性能测试”,既通过工具对服务器资源进行监控的性能测试。
(8)一些特殊测试 主要是指配置测试、内存泄漏测试一些特殊的Web性能测试。这类性能测试或者和前面的测试结合起来进行,或者在一些特殊情况下会独立进行,本书重点来讨论前一种情况,因为后一种情况往往通过特有的工具、较大投入的进行,可以不作为性能测试的范畴来研究。
主办:希赛网(csai) 承办:希赛网软件测试频道(testingcsai)
软件测试专业调查,请各位朋友大力支持:
testingcsai/edu/vote/VoteStepFirst
单组件式测试工具
有一些有用的工具可以测试MySQL 和基于MySQL 的系统的性能 节将演示如何利用这些工具进行测试
mysqlslap
mysqlslap(//dev mysql /doc/refman/ /en/mysqlslap )可以模拟服务器的负载 并输出计时信息 它包含在MySQL 的发行包中 应该在MySQL 或者更新的版本中都可以使用 测试时可以执行并发连接数 并指定SQL 语句(可以在命令行上执行 也可以把SQL 语句写入到参数文件中) 如果没有指定SQL 语句 mysqlslap 会自动生成查询schema 的SELECT 语句
MySQL Benchmark Suite (sql bench)
在MySQL 的发行包中也提供了一款自己的基准测试套件 可以用于在不同数据库服务器上进行比较测试 它是单线程的 主要用于测试服务器执行查询的速度 结果会显示哪种类型的 *** 作在服务器上执行得更快
这个测试套件的主要好处是包含了大量预定义的测试 容易使用 所以可以很轻松地用于比较不同存储引擎或者不同配置的性能测试 其也可以用于高层次测试 比较两个服务器的总体性能 当然也可以只执行预定义测试的子集(例如只测试UPDATE 的性能) 这些测试大部分是CPU 密集型的 但也有些短时间的测试需要大量的磁盘I/O *** 作
这个套件的最大缺点主要有 它是单用户模式的 测试的数据集很小且用户无法使用指定的数据 并且同一个测试多次运行的结果可能会相差很大 因为是单线程且串行执行的 所以无法测试多CPU 的能力 只能用于比较单CPU 服务器的性能差别 使用这个套件测试数据库服务器还需要Perl 和BDB 的支持 相关文档请参考//dev mysql /doc/en/mysql benchmarks /
Super Smack
Super Smack(//vegan net/tony/super ack/)是一款用于MySQL 和PostgreSQL的基准测试工具 可以提供压力测试和负载生成 这是一个复杂而强大的工具 可以模拟多用户访问 可以加载测试数据到数据库 并支持使用随机数据填充测试表 测试定义在 ack 文件中 ack 文件使用一种简单的语法定义测试的客户端 表 查询等测试要素
Database Test Suite
Database Test Suite 是由开源软件开发实验室(OSDL Open Source DevelopmentLabs)设计的 发布在SourceFe 网站(//sourcefe net/projects/osdldbt/)上 这是一款类似某些工业标准测试的测试工具集 例如由事务处理性能委员会(TPC Transaction Processing Performance Council)制定的各种标准 特别值得一提的是 其中的dbt 就是一款免费的TPC C OLTP 测试工具(未认证) 之前本书作者经常使用该工具 不过现在已经使用自己研发的专用于MySQL 的测试工具替代了
Percona s TPCC MySQL Tool
我们开发了一个类似TPC C 的基准测试工具集 其中有部分是专门为MySQL 测试开发的 在评估大压力下MySQL 的一些行为时 我们经常会利用这个工具进行测试(简单的测试 一般会采用sy ench 替代) 该工具的源代码可以在//launchpad net/perconatools 下载 在源码库中有一个简单的文档说明
sy ench
sy ench(//launchpad net/sy ench)是一款多线程系统压测工具 它可以根据影响数据库服务器性能的各种因素来评估系统的性能 例如 可以用来测试文件I/O *** 作系统调度器 内存分配和传输速度 POSIX 线程 以及数据库服务器等 sy ench 支持Lua 脚本语言(// lua ) Lua 对于各种测试场景的设置可以非常灵活 sy ench 是我们非常喜欢的一种全能测试工具 支持MySQL *** 作系统和硬件的硬件测试
返回目录 高性能MySQL
编辑推荐
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程
lishixinzhi/Article/program/MySQL/201311/29732一 表现层(web服务器)二 业务逻辑层(应用服务器)三 数据层(数据库服务器)
性能测试环境包含内容:
硬件:服务器、客户端、交换机等。
软件:数据库、中间件、被测系统、 *** 作系统等。
网络:有线/无线/宽带、网络协议等。
1、硬件环境,包括服务器环境、与网络环境
2、软件环境:版本一致性 包括包括 *** 作系统、数据库、中间件的版本,被测系统的版本;
配置一致性 系统( *** 作系统/数据库/中间件/被测试系统)参数的配置一致,这些系统参数的配置有可能对系统造成巨大的影响。
3、使用场景的一致性 基础数据的一致性;使用模式的一致性。
sql
server
profiler功能
此工具比柯南还柯南,因为他能检测到数据库中的一举一动,即便你不动他,他也在监视你,他很贱的。他不但监视,还监视的很详细,有多详细一会再说,还把监视的内容记录到数据库或者是文件中,给你媳妇告状说你把数据库哪里的性能搞的多么不好,不过他也会把好的给你记录下来,好与不好这当然需要你来分析,其实他也是个很2的柯南。
数据库引擎优化顾问功能
此武功,乃上乘武功。像张无忌的乾坤大挪移,先是接受sql
server
profiler检测出来的sql,视图,存储过程,数据结构等等,然后他再自己分析,然后再在怀中转两圈,感觉自己转的差不多啦,就给抛出来个威力更炫,更好的索引,统计,分区等等建议信息。让你承受不住,happly致死
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)