• 负载测试 & 压力测试


    背景

    在没有性能测试实践的情况下,压力测试和负载测试从字面上来看意思差不多,笔者也经常记不住这两个的区别是什么,因此写一篇文章来让自己加深印象。
    然后由于找到的文章都是把性能测试相提并论(其实我一直觉得性能测试包含压力测试和负载测试),因此这里也提上一笔。

    概念

    性能测试

    收集所有和测试有关的所有性能,测试软件在系统中的运行性能,度量系统与预定义目标的差距。
    关注: how much and how fast

    压力测试

    通过 逐步增加系统负载,确定在什么条件下系统失效,以此获得系统能提供的最大服务级别;

    负载测试

    指数据在超负荷环境中运行,程序是否能够承担。通过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。
    关注:how much

    举例:一个人背X斤
    负载测试:200斤情况下,是否能坚持5分钟。
    压力测试:200,300,400...斤情况下,他的表现,什么时候失败,失败之后什么表现,重新扛200是否正常。

    这里提一下其他的性能测试: 强度测试(spike testing,extreme testing ,hammer testing,容量测试,压力测试);

    • 强度测试: 在系统资源特别低的情况下软件系统运行情况,找到系统在那里失效以及如何失效的地方;
    • spike testing: 短时间的极端负载测试
    • extreme testing: 在过量用户下的负载测试
    • hammer testing: 连续执行所有能做的操作
    • 容量测试: 确定系统可处理同时在线的最大用户数,使系统承受超额的数据容量来发现它是否能够处理。通常和数据库有关,关注大容量。

    测试目的

    压力测试

    可以知道在什么极限情况下系统会崩溃,是否具有自我恢复性,更多是为了确定系统稳定性

    负载测试

    获得系统正常工作时所能承受的最大负载,也称为容量测试;

    压力测试

    可分为稳定性测试和破坏性测试。

    稳定性测试

    在选定的压力值下,持续运行24小时以上的测试。考察各项性能指标是否在指定范围内,有无内存泄漏,有无功能性故障等。
    观察log日志等,查看监视系统,服务器等性能的日志文件,找出问题出现的关键时间或检查运行参数。

    破坏性测试

    在稳定性测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出真实的原因。通过破坏性不断加压,往往能快速造成系统的崩溃或让问题明显暴露。

    如何测试?

    工具

    • 应用层 ,profilers 发现低效代码
    • 数据库层,数据库profilers 和 时间探查器(query optimizers)
    • 操作系统层,Unix(top,vmstat,iostat );windows(PerfMon监控CPU,内在,swap,磁盘I/O等硬件资源)
    • 网络层,报文探测器,网络协议分析器,netstat,MRTG,ntop,mii-tool
    • 负载测试开源工具: apache bench,siege,httperf,openSTA,the grinder

    提高WEB应用系统性能的例子

    • 使用web缓存装置,如squid提供的装置
    • 将高访问量的网页静态化避免高访问量对数据库的大量调用
    • 通过负载平衡的方法来水平缩放web服务器的结构
    • 水平缩放数据库群及分为读写服务器和只读服务器,对只读服务器群负载平衡
    • 增加硬件资源
    • 增加网络带宽

    压力测试方法

    • 并发用户/HTTP连接的基线数翻倍
    • 随机关闭重启集线器/路由器端口
    • 数据库断线然后重启
    • 系统运行中,重建RAID阵列
    • 运行消耗资源(CPU,内存,磁盘, 网络)的进程

    参考:
    负载测试、压力测试和性能测试的区别
    性能测试、压力测试和负载测试
    性能测试 vs 负载测试 vs 压力测试
    性能测试VS负载测试VS压力测试 中文翻译

  • 相关阅读:
    简单使用GDB
    【老人孟岩经验谈】如何学习一本新的编程语言
    【做存档】如何争取到真正有用的人脉?
    回头来看C语言里的static
    Spring MVC 教程,快速入门,深入分析[1220]
    eclipse ibabis代码生成插件abator功能扩展
    在MyEclipse中配置Tomcat服务器
    将远程调试的控制台信息输出至Eclipse
    LOG4J.PROPERTIES配置详解
    java Map 怎么遍历
  • 原文地址:https://www.cnblogs.com/Tester_Dolores/p/13958050.html
Copyright © 2020-2023  润新知