连载:(九)软件测试技术——数据库性能检查和压力测试

发表于:2009-04-30来源:作者:点击数: 标签:软件测试数据库性能压力技术
上面介绍的都是代码层的 性能测试 ,而目前很多软件系统都需要应用到数据库,通常 数据库 也会成为性能瓶颈之一。如图所示的是一个简单C/S结构系统可能出现性能瓶颈的地方。 简单C/S结构系统可能出现性能瓶颈的地方 那么测试人员应该如何发现数据库相关的性能
上面介绍的都是代码层的性能测试,而目前很多软件系统都需要应用到数据库,通常数据库也会成为性能瓶颈之一。如图所示的是一个简单C/S结构系统可能出现性能瓶颈的地方。

 简单C/S结构系统可能出现性能瓶颈的地方


那么测试人员应该如何发现数据库相关的性能问题呢?
        首先要分析什么会引起数据库的性能问题,一般来说有两个主要原因:数据库的设计和SQL语句。
        数据库的设计又分为数据库的参数配置和逻辑结构设计,前一种比较好解决,后一种则是测试人员需要关注的,糟糕的表结构设计会导致很差的性能表现。例如,没有合理地设置主键和索引则可能导致查询速度大大降低。没有合理地选择数据类型也可能导致排序性能降低。
        低效率的SQL语句是引起数据库性能问题的主要原因之一,其中又包括程序请求的SQL语句和存储过程、函数等SQL语句。对这些语句进行优化能大幅度地提高数据库性能,因此是测试人员需要重点关注的对象。
        技巧:可以借助一些工具来帮助找出有性能问题的语句,例如SQL Best Practices Analyzer、SQLServer数据库自带的事件探查器和查询分析器、LECCO SQLExpert等。

软件的“极限考验”——压力测试
        是否想知道软件系统在某方面的能力可以达到一个怎样的极限呢?软件项目的管理者以及市场人员会尤其关心压力测试的结果,想知道软件系统究竟能达到一个怎样的极限。压力测试(stress testing)就是一种验证软件系统极限能力的性能测试。
      压力测试负载测试(load testing)的区别在于,负载测试需要进行多次的测试和记录,例如随着并发的虚拟用户数的增加,系统的响应时间、内存使用、CPU使用情况等方面的变化如何。压力测试的目的很明确,就是要找到系统的极限点。在系统崩溃或与指定的性能指标不符时的点,就是软件系统的极限点。

        说明:实际上,在做性能测试的过程中不会严格区分这些概念,它们的界限有些模糊。对于测试人员来说,更关心的是如何满足性能需求,如何进行性能测试。

        经常碰到性能需求不明确的情况。用户通常不会明确地提出性能需求,在进行需求分析和设计时也通常把性能考虑在后面。即使提出了性能上的要求,也是很模糊的,例如:“不能感觉到明显的延迟”。
        对于不明确的性能需求,通常需要进行的不是极限测试,而是负载测试,需要逐级验证系统在每一个数据量和并发量的情况下的性能响应,然后综合分析系统的性能表现形式。

原文转自:http://www.ltesting.net