首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

5个软件性能测试常犯的错误

5个软件性能测试常犯的错误

5个性能测试常犯的错误



还有一些错误会导致性能测试时不太可靠的结果:
  • 测试时间不足
  • 不包括开发人员
  • 不使用与生产系统类似的QA系统
  • 优化软件不足
  • 没有故障排除的计划


性能测试错误理论


性能测试的错误理论可能导致错误或遵循性能测试最佳实践的失败。根据Sofia Palamarchuk的说法,这些理念在开发软件时可能会耗费大量金钱和资源:


性能测试是开发的最后一步
在前面性能测试最佳实践部分中提到过,预期和解决性能测试问题应该是软件开发的早期部分。尽早执行解决方案将比软件开发结束时的主要修复成本要低。

硬件越多就能解决性能问题
增加处理器、服务器或内存,简单的增加成本,不解决任何问题。更多有效的软件可以在硬件增加或改善时更好的运行和避免潜在的问题。

测试环境“非常接近”
在一个类似于生产环境的测试环境中进行性能测试,是一个性能测试的最佳实践。这些元素之间的差异可以显著地影响系统性能。在精确的生产环境中进行性能测试可能是不可能的,但是尝试匹配:
  • 硬件组件
  • 操作系统和设置
  • 系统上使用的其他应用程序
  • 数据库


现在什么有用,就全面的起作用
对于推算出的结果要小心。不要采用小的性能测试结果,并且假设当元素发生变化时,它们将是相同的。而且,它们是在对立面工作的。不要根据负载测试来推断最小的性能和需求。所有的假设都应该通过性能测试来验证。


一个性能测试方案就够了
不是每个性能问题都可以在一个性能测试方案中检测到。但是资源确实限制了可能发生的测试数量。在中间的是一系列性能测试,它们针对的是风险最高的情况,对性能会产生最大的影响。此外,问题可能出现在设计良好之外和设计良好的性能测试。监视生产环境也可以检测性能问题。

测试了每个部分等于测试了全部系统
虽然隔离功能用于性能测试是很重要的,但是单独的组件测试结果并不会添加到整个系统范围的评估中。但是,测试一个系统的所有功能可能是不可行的。一个完全可能的性能测试必须使用可用的资源来设计。但是要注意没有测试过的东西。

是什么对他们有用,对我们有用
如果一组用户确实遇到了复杂的问题或性能问题,那么不要认为这是对所有用户的性能测试。使用性能测试来确保平台和配置如预期的那样工作。

软件开发人员经验丰富,不需要性能测试
缺乏经验并不是造成性能问题的唯一原因。即使是过去开发过免费软件的开发人员也犯了错误。特别是当多个并发用户在系统中时,更多的变量开始发挥作用。

一个完整的加载测试说明了一切
在总负载中运行一个测试来发现所有性能问题是很吸引人的。除了这种测试,它往往会暴露出许多性能问题,以至于很难将注意力集中在单个解决方案上。从较低的负载开始,逐步向上扩展可能看起来是一个不必要的缓慢过程,但是它会产生更容易的结果,从而更有效地排除故障。

测试脚本是实际的用户
确保测试自动化正在以真实用户的方式使用该软件。当性能测试参数被更改时,这一点尤为重要。
性能测试是软件测试的一种形式,集中于系统如何在特定的负载下运行系统执行。这不是关于发现软件bug或者缺陷。性能测试是根据基准和标准来应对。性能测试需要给开发人员提供诊断信息,以便他们清除问题。


软件系统测试的各种类型

为了理解软件如何将在用户系统运行,有几种不同类型的性能测试在软件测试期间可以应用。这是非功能测试,目的在于确定系统的准备情况。(功能测试集中于软件的个别功能。)




负载测试
负载测试检测系统随着工作负载增加时的性能。工作负载可能意味着并发用户或事务。当工作负载增加,监控系统来检测它的响应时间和系统的持久能力。该工作负载在正常工作条件的参数范围内。


压力测试
不像负载测试,压力测试——也叫做疲劳测试——意味着检测系统在正常工作条件参数范围外的性能。可以给这个软件更多的用户或事务处理。压力测试的目标是检测软件的稳定性。软件会在何种程度故障,还有软件如何从失败中恢复。


尖峰冲击测试
尖峰冲击测试是压力测试的一种,它评估软件负载在快速和反复大幅度增长时的性能。在短时间内,工作负载超出了正常的预期。


耐力测试
耐力测试——也叫做浸泡测试——是评估软件性能如何在长时间执行正常工作的。耐力测试的目标是检查系统问题,例如内存泄露。(内存泄露发生在系统无法释放被丢弃的内存的时候。内存泄漏会损害系统性能,或者导致系统失败。)


可扩展性测试
可扩展性测试是用来确定软件是否有效的处理日渐增长的工作负载。这可以通过当监控系统性能时,增加的用户负载或数据量来确定。并且当CPU和内存等资源变更的时候,工作负载可能保持在相同的水平。


容量测试
容量测试确定软件在大量、预期数据量下的执行效率。它也被称为洪水测试,因为这个测试用数据淹没了系统。



在性能测试种最常见的问题

在软件性能测试期间,开发人员会寻找性能的症状和问题。速度问题——例如缓慢的响应和长时间的加载时间——经常会被观察和处理。但是还能看到有一些其他的性能问题:

  • 瓶颈效应——发生在当数据流被中断或者停止的时候,因为没有足够的能力处理工作负载。
  • 较差的可扩展性——如果软件无法处理所需数量的并发任务,结果可能导致延误,可能增加错误,或者发生其他无法预料的行为,这影响到:
    ○ 磁盘使用情况
    ○ CPU使用情况
    ○ 内存卸扣
    ○ 操作系统受限
    ○ 糟糕的网络配置
  • 软件配置问题——通常设置不是设置在一个足够的级别上来处理工作负载。
  • 硬件资源不足——性能测试可能暴露出物理内存限制或低效率的CPU。


性能测试7步




同样也被曾作测试台,测试环境是设置软件、硬件和网络来执行性能测试的地方。为了使用性能测试测试环境,开发人员可以用下面七步:

  • 确定测试环境
    确定硬件、软件、网络配置和可用的工具,让测试团队设计测试和尽早确定性能测试挑战。性能测试环境选择包括:

    ○ 有少量低规格服务器的生产系统子集。
    ○ 有少量相同规范服务器的生产系统的子集。
    ○ 生产系统的复制品。
    ○ 实际生产系统。

  • 确定性能标准
    除了确定性能参数,例如响应时间,吞吐量和限制之外,确定性能测试的成功标准是什么。

  • 计划和设计性能测试
    确定性能测试方案,考虑账户用户的可变性、测试数据和目标参数。这将创建一到两个模型。

  • 配置测试环境
    准备测试环境的元素和监控资源所需的设备。

  • 执行测试设计
    开发测试。

  • 执行测试
    除了运行性能测试之外,监控和抓取生产数据。

  • 分析,报告,再测试
    分析数据,分享所发现的。使用同样的参数和不同的参数再次运行性能测试。
返回列表