性能:七大测试场景如何选择高质量的测试工具

测试工具

测试工具的分类

首先你必须认识到,性能测试工具是繁多的。之所以繁多,是因为每种工具适合的场合不同,所以它们各有特点。比如如下几个方面:

  • 测试场景:是针对 Web 环境、移动 App、系统、数据库,还是模块测试?
  • 测试类型:是基准测试还是峰值测试?
  • 免费还是收费:开源工具一般都是免费的;但是很多收费工具也的确物有所值。
  • 支持的协议:比如是否支持HTTP协议,FTP协议等
  • 支持的功能:比如并发性支持度,能否分析测试结果,能否录制性能测试脚本等

测试工具的好坏

要评测一个测试工具的好坏,我们就需要知道测试工具的模块和测试的一般过程。

大规模性能测试的一般过程是:通过录制、回放定制的脚本,模拟多用户同时访问被测试系统(SUT)来产生负载压力,同时监控并记录各种性能指标,最后生成性能分析结果和报告,从而完成性能测试的基本任务。

比较这个过程,一个测试工具一般会包括如下的模块:

  • 负载生成模块:负责产生足够的流量负载。
  • 测试数据收集模块:负责获取测试的数据,包括具体的各种性能数据。这个收集可以是实时的,就是在测试进行之中收集;也可以是后期,等测试完成之后收集的。
  • 结果分析和展示:有了大量的测试数据,就需要进行分析并展示。同样的,这个过程可以是实时的,也可以是等全部测试完成后进行。
  • 资源监控模块:测试过程中离不开对SUT和流量生成模块的实时资源监控,目的是确保这两个模块运行正常。具体来说,流量生成模块必须不能负载过量,否则很可能产生的流量不够大。SUT也要确保运行还是正常的,否则整个测试就失去意义了。
  • 控制中心:测试者需要用这个模块和整个测试系统来交互,比如开始或者停止测试,改变测试的各种参数等。

在这里插入图片描述

七大测试场景

Web测试

  • JMeter 是一款优秀而小巧精致的开源测试工具,是用 Java 写的。
    • JMeter 安装简单,使用方便,所以很流行,建议每个性能测试者都掌握它。
    • 熟练使用它,在绝大多数场合都能大大提高测试效率。
    • JMeter 的测试是基于 HTTP 协议的,所以最好对 HTTP 协议熟悉一些才能快速上手和理解里面的概念。
  • LoadRunner 是 HP 公司的一款测试工具,功能和资料都比较全,也好用,但不是开源的。
    • 它的组成模块都很强大,比如分析模块中的 AutoCorrelation 向导。
    • 这个向导会自动整理所有的监控和诊断数据,并找出导致性能降低的最主要的几个原因。
    • 这样就将性能测试结果转化为可处理的精确数据,从而使开发团队大大减少了解决问题的时间。
  • Locust 是基于 Python 的开源测试工具,支持 http、https 等协议。它的一个突出优点是可扩展性很好。

系统测试

  • UnixBench是一个Unix系统下的性能测试工具,是开源的,而且被普遍用于测试Linux系统主机的性能。
    • 这个工具可以测试很多模块和场景,比如系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等,它的测试结果可以作为基准测试数据
    • 比如,你可以用它测试从一个文件向另一个文件传输数据的效率,要求每次测试使用不同大小的缓冲区
    • 再比如,测试两个进程通过一个管道交换一个不断增大的整数的速度
    • 它也可以测试进入和离开操作系统内核的开销,即一次系统调用(System Call)的开销代价。
  • Perf 是 Linux 下最普遍使用的性能分析工具,功能强大全面,俗称性能测试的“瑞士军刀”。建议每个关心性能的人都了解和学习一下 Perf 的使用。
    • 比如,Perf可以对程序进行函数级别的采样,从而了解程序的性能瓶颈究竟在哪里
    • Perf的原理是使用特殊的计数器在进行性能统计。它可以分析指定应用程序的性能问题,也可以用来分析内核的性能问题,所以可以全面理解应用程序中的性能瓶颈。

数据库测试

  • sysbench是一个开源多线程测试工具
    • 主要用于测试数据库性能,比如MySQL、 Oracle 和 PostgreSQL,但也可以测试 CPU,内存,文件系统等性能。
    • 它的强项包括数据分析和展示模块,多线程并发性比较好,并且开销低
    • 另外我们可以很容易地定制脚本,来创建新的测试。
  • mysqlslap是MySQL自带的压力测试工具,它可以轻松模拟出大量客户端同时操作数据库的情况

文件IO测试和存储测试

  • ioZone
    • 可以测试不同操作系统中的文件系统的读写性能。
    • 可以测试不同 IO 读写方式下硬盘的性能。
  • Bonnie++:是一个用来测试Unix文件系统和磁盘性能的测试工具
    • 它可以通过一系列的简单测试来生成硬件和文件系统的性能参数
    • 这个工具很容易使用,输出结果显示方面很不错。
  • dd:‘
    • 如果你希望在Linux中很快的测试硬盘读写性能,dd这个命令经常就够用了
    • 这个工具就是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换

网络测试

  • Netperf是一个网络性能测试工具,主要针对基于TCP或者UDP的传输
    • 它有两种基本的模式,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式,我们可以根据应用的不同来选择不同模式。
    • 测试结果所反映的,是两个系统之间发送和接收数据的速率和效率,即一个系统能够以多块的速度向另一个系统发送数据,以及后者能够以多块的速度接收数据
  • lperf可以测量最大TCP和UDP带宽性能,具有很多参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。

移动 App 测试场景

移动 App 测试的性能指标主要是内存、CPU、电量使用、启动时长、显示帧率、网络流量等。 针对 App 的性能测试工具和平台可以按照两种方式分类。

  • 第一种分类是根据线下还是线上。线下 App 性能测试主要依靠传统测试手段和方法,比如不同的版本,框架等等都需要进行 App 性能测试。 线上测试算是场景化测试,主要针对大规模或者动态环境,让 App 在特定场合和特别条件下,更精准地衡量 App 的核心性能。
  • 另外一种分类方式是平台生态系统,现在主要有安卓 Android 和 iOS。有的测试工具可以兼容多个平台,比如 Appium,就是一个可以同时支持安卓和 iOS 的测试框架的工具,功能强大。

对 Android 的测试工具常用的有 adb(Android Debug Bridge)和 Monkey。Monkey是 Android SDK 自带的测试工具。Monkey 的意思是猴子, 顾名思义,就是在电脑面前乱敲键盘在测试。 在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等,对 App 进行压力测试,也有日志输出。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值