什么是软件测试中的耐久性测试?
耐力测试
耐久性测试是一种非功能类型的软件测试,其中软件程序在长时间内承受高负载,以评估其在持续使用下的行为。耐久性测试的主要目标是确保应用程序可以管理大量数据而不会失去响应能力。
在性能运行周期结束时,将执行此类测试。耐力测试是一个漫长的过程,可能需要长达一年的时间。可能会应用外部负载,例如Internet流量或用户操作。这将耐久性测试与负载测试区分开来,负载测试通常持续几个小时。
耐力表示容量,因此耐力测试也可以称为容量测试。
耐力测试的目的是什么?
此测试的主要目标是发现任何潜在的内存泄漏。因此,在此测试期间会严格监控内存使用情况。我希望你熟悉内存泄漏的概念。不过,对于那些不熟悉这个词的人,让我解释一下什么是内存泄漏。
当软件应用程序无法释放未使用的内存,导致性能不佳或失败时,就会发生内存泄漏。
内存泄漏可能不会立即产生影响,但随着时间的推移,它会减慢系统速度,不留下可用内存并最终导致应用程序或系统崩溃。内存泄漏是一个只有在经过特定时间后才会变得明显的问题。
因此,需要进行耐久性测试来检测此类故障。
但是,您的应用程序可以在短时间内(例如一小时)在高负载下良好运行是可行的。但是,如果您的应用程序在更长的时间内(例如3-4小时)持续承受相同的压力,则会由于资源问题和磁盘空间不足而崩溃。
耐久性软件测试试图揭示的另一个关键问题是其性能下降。必须确保吞吐量或反应时间等于或优于长期使用后的测试开始时。
Endurance测试还检测数据库连接困难。如果数据库连接没有正确关闭,系统可能会崩溃。
耐久性测试还会检查系统各层之间的连接是否适当,否则会导致某些模块挂起。
简而言之,耐久性测试的目标是确定系统在长时间连续运行中的表现。内存泄漏、速度下降、数据库连接困难和其他严重问题都被检测为耐力测试的一部分。
耐力测试-寻找什么
在耐久性测试期间检查以下项目-
测试内存泄漏-执行检查以查看应用程序中是否存在任何内存泄漏,这可能导致系统或操作系统崩溃。
测试系统层之间的连接关闭-如果系统层之间的链接没有有效关闭,则系统的部分或全部模块可能会停止。
关闭数据库连接成功-如果数据库连接没有正确结束,系统可能会崩溃。
测试响应时间-由于长时间使用导致应用程序效率降低,检查系统的响应时间。
耐力测试持续时间
如果项目需要每周7天、每天24小时不间断运行,并且耐力测试应持续至少72小时。这样做的理由是该程序应该能够在周末无人值守的情况下运行(因为周末支持对组织来说成本很高)。
因此,我们需要在比周末稍长的时间内在重负载下测试系统。但是,因为进行72小时的测试可能过于费力,所以我们通常只进行12小时。
此外,浸泡测试应该持续多长时间没有硬性规定。它主要由客户参与、实际生产使用等方面决定。耐力测试有时可能会持续一年!
如何进行此测试
进行此测试的程序如下-
创建测试环境-这需要确定运行耐力测试所需的硬件、软件、数据库(以及随着测试进行的大小)和操作系统。它还需要组建一个团队来进行耐力测试并在团队内分配角色和职责。在运行测试之前,测试环境应该准备好,并且应该与实时系统充分分离。
设计、审查和完成测试用例-应该设计、评估和完成测试用例。这也是制定测试执行策略的时候。应确定应用程序的断点,并最终确定在耐久性测试期间将应用于应用程序的负载量。
测试周期估计-这需要确定每个测试阶段的长度和所需的测试周期数。
风险分析-这是测试过程中的关键步骤。风险因素用于确定测试用例的优先级。以下是测试人员在耐力测试期间可能遇到的一些风险和问题-
性能测试的一致性是否会随着时间的推移而保持?
是否还有其他尚未解决的小问题?
是否有任何尚未解决的外部干扰?
测试时间表-建立预算、可交付成果和截止日期。
测试执行-这是最终开始耐力测试的时间。
测试周期关闭-根据在测试计划阶段建立的退出标准,关闭测试周期。它可以通过发现的缺陷数量、测试时间等来确定。
耐力测试的优势
以下是此测试的一些优点
它确保应用程序适合使用。
它可以识别其他性能测试可能无法检测到的问题。例如,在容量测试或压力测试期间,您可能不会注意到内存泄漏。
增强应用程序的坚固性:它检测在高持续需求下可能出现的性能下降问题,然后修复它们,使应用程序更具弹性。
它描述了系统在应变下的长期行为。换句话说,它监控系统的长期生存能力。
客户可以使用来自耐久性测试的数据来验证或改进他们的基础设施要求。
耐力测试的缺点
可能很难确定多少压力是合适的。
如果测试环境不是隔离的,耐力测试可能会导致应用程序和/或网络故障,从而导致大量中断。
系统压力过大可能导致永久性数据丢失或损坏。
压力解除后,资源利用率仍然很高。
应用程序的某些组件没有响应。
最终用户知道未处理的异常。
耐久性测试示例
压力测试将被测系统推向其崩溃点,而耐久性测试则随着时间的推移将应用程序推向其崩溃点。
例如,当软件长时间运行时,会出现最困难的问题——内存泄漏、数据库服务器使用和系统无响应。如果您跳过耐力测试,您将很难在部署前发现此类缺陷。
耐力测试工具-
网络加载
加载完成
ApacheJMeter
负载运行器
应用程序
加载界面
开放式STA
Rational性能测试器
结论
什么是耐力测试?我们在本文中了解了它。必须采取哪些步骤?它的优点和缺点,以及许多可用的仪器。
以下是一些主要的要点-
耐久性测试(也称为浸泡测试、寿命测试或容量测试)是一种非功能性测试,用于确定软件系统是否可以长时间承受较大的预期负载。
负载测试是其中的一个子集。
作为此测试的一部分,检测到内存泄漏、速度下降、数据库连接困难和其他严重问题。
耐久性测试的长度取决于业务、项目和客户的需求。它可以持续5到10个小时、几天、一个月甚至一年。
它加强了应用程序并使其准备好无限期地承受巨大的重量。
不应手动完成耐力测试,因为它非常耗时。它在很大程度上是自动化的。
它应该从创建一个孤立的测试环境开始,然后是测试计划的创建、测试周期时间的估计、风险分析、测试时间表的准备、耐力测试的执行,最后是结束的测试周期。
ApacheJmeter、LoadStorm、LoadRunner、LoadUI、Appvance、OpenSTA、WebLoad和IBMRationalPerformanceTester是耐力测试的一些最佳工具。
评论列表