零成本实现Web性能测试——基于Apache JMeter和Gatling
  • 推荐0
  • 收藏2
  • 浏览988

零成本实现Web性能测试——基于Apache JMeter和Gatling

温素剑 (作者) 

  • 书  号:978-7-121-28287-4
  • 出版日期:2016-04-12
  • 页  数:492
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张月萍
《零成本实现Web性能测试——基于Apache JMeter和Gatling》从目前主流的开源性能测试工具入手,由浅入深、全面、细致地阐述了如何使用开源测试工具Apache JMeter和Gatling来完成Web性能测试,便于读者轻松掌握WEB性能测试的原理、方法和实际操作。本书不是一本深奥的测试理论书籍,而是一本测试实战类的书籍。作者试图在书中向读者演示,如何在实际工作中轻松完成各种类型的性能测试。
基于PHP+MariaDB以较低成本构建灵活、高效的Web站点



前言



我曾经有幸为国内最大的电信设备供应商工作过一段时间,期间听一些资深老员工讲过一个故事。这个故事大概可以被当作笑话来听,不过笑笑之后却总也忘不掉。话说20世纪90年代初的某一天,国内第一台自主研发的大型固话交换机,终于千呼万唤地“闪亮”登场了。于是乎,这家公司马上向用户大力推销这款设备,但是用户提出了一个很实际的问题彻底难住了这家公司。问题很简单,那就是需要一份性能测试报告来证明这台设备真能支持宣称的话务容量。那时候还没有成熟的电信领域性能测试工具,该怎么办呢?活人岂能让尿憋死,幸好有聪明的领导想出了一个中国式的解决办法。
某天下午,全公司的员工都放下了手头的工作,每人怀抱一部老式电话机(还要靠转盘来拨号),等领导倒数“三、二、一”后集体打电话。据说当时人数不够,达不到用户要求的通话量,甚至出现了一个人操作两部电话机的情况。我没能一睹当时的盛况,一直深感遗憾。
幸好科学技术发展到今天,已经有了多款成熟的性能测试工具,否则测试人员一定会发疯。试想当前的电信交换机话务容量早已翻了不知多少倍,如果还要靠人海战术去测试,即使全公司的员工双手双脚去操作电话机,也肯定是忙不过来的。测试人员应该为测试技术的飞速发展而感到欢心鼓舞。那么现在是否就可以高枕无忧了?答案是否定的。当前测试人员面临的问题,不再是有没有性能测试工具,而是有没有合适的性能测试工具。
怎么界定“合适”一词?我想至少可以包含如下几个方面:
? 技术先进,功能强大。
? 支持多种测试类型(协议)。
? 易学易用。
? 拥有良好的可扩展性。
? 拥有良好的可移植性(跨平台)。
? 合理的价格。
当前性能测试工具很多,但要同时满足以上数个条件的却很少。在Web性能测试领域,目前有两种工具被广泛使用,一种是LoadRunner,另一种就是JMeter。不过LoadRunner并不是一款“合适”的工具,在此并不是否认LoadRunner是一款优秀的性能测试工具,它唯一的缺点就是过于昂贵(至于LoadRunner Licence及其支持服务的具体价格,感兴趣的朋友可以向HP公司了解,相信其价格会将中国90%以上的软件公司挡在门外)。JMeter具备了LoadRunner 95%以上的功能,但其价格无限接近于零,可谓性价比极高。当然相对于商业工具LoadRunner,JMeter也有其自身的缺点。它最大的缺点就是没有专业的售后支持队伍,不过想想商业工具贵得令人咋舌的维护支持费用,也就能够释怀了。
写作背景
我目前在一家大型保险公司IT测试部门工作,带领一个测试团队负责测试公司的电话销售系统。这个系统非常庞大,由多个子系统构成,同时它又与很多公司内部/外部系统(例如银联、银行的交易系统)发生交互,目前公司有数万员工依赖它来完成每日的销售任务。如此复杂的一个系统,偏偏又拥有数量众多的用户,读者朋友可以试想一下,只要此系统稍有异常,业务部门的投诉绝对会让IT部门“吃不了兜着走”。
面对频繁的版本发布,严格的系统性能测试是不可或缺的。测试部门也花大价钱购买了商业工具LoadRunner,但是实际工作中发现测试人员还是受到颇多限制。其一,测试资源存在瓶颈,公司购买的Licence是有限的,无法完全满足测试人员的需求,经常出现人等机器的情况,甚至影响到了软件版本的及时发布;其二,公司购买的并发数许可也是有限的,如果需要模拟更大的系统压力,那么对不起,公司还得再掏钱;其三,公司购买的协议类型是有限的,如果需要使用其他未购置的协议类型,对不起,公司依然需要再掏钱(测试人员很难用临时的测试需求,去说服领导拨上一大笔经费)。
在尝试说服领导增加预算失败后,只能转而寻求其他解决办法,那就是开源性能测试工具JMeter。经过大规模的试用后,发现JMeter完全能够满足测试人员的需求。
“云计算”绝对是当前最热的IT词汇之一。“云”听起来很虚幻,其实就是瘦客户端加网格计算。今后客户端不再会有大量的计算任务,计算和存储都被放在云上。在作者看来,今后的客户端应该就是一个浏览器,用户的所有操作都是通过浏览器来实现的。Google发布的操作系统Chrome OS,就是基于这一理念设计的。B/S和C/S架构的软件系统,应该会慢慢演进到Browser/Cloud模式。如此看来,在云计算时代,Web性能测试依然很重要,而且会越来越重要。因此,本人萌生了写作一本关于Web性能测试的书籍的想法。
本书内容
本书着重介绍如何使用JMeter和Gatling开源性能测试工具,来构建Web性能测试体系。
本书不是一本讲述深奥测试理论的教科书,而是一本实战类的书籍。作者想要达到的目标就是——读者朋友们在认真读完本书后,马上就能在生产实践中用上所学内容。本书首先介绍基础的性能测试理论,接着详细介绍如何使用JMeter来完成各种类型的性能测试,最重要的则是性能测试实战章节。实战章节中作者以测试某大型保险公司电话销售系统为例,手把手教会读者如何用JMeter来完成一个实际的性能测试任务。本书第1章介绍性能测试理论,第2~12章详细介绍JMeter工具在各种场景下的使用方法,以及如何分析性能测试结果,第13章是性能测试实战。从第14章开始,将会介绍一种新颖的性能测试工具Gatling,作为JMeter的一种有益补充。
目标读者
本书的目标读者是初级和资深软件测试工程师,以及有意降低性能测试成本的测试经理。本书也适合应届毕业生,要想熟练掌握性能测试的方法和技巧,本书也是一块不错的敲门砖。
感谢
首先要感谢我的家人,正是由于他们默默的支持,我才能静下心来写作。其次还要感谢参与本书编写的部门同事刘兴翚、何邱、邓智、谷明、李喆、李坤、袁春梅、唐明娟、李颖、陈建红、徐雅、曾泗维。

温素剑
2015年12月3日




目录




第1章 性能测试基础 1
1.1 初识性能测试 1
1.1.1 性能测试是什么 1
1.1.2 性能测试的目的 2
1.1.3 性能测试的常见分类 2
1.1.4 性能测试的常见观察指标 3
1.1.5 性能测试的基本流程 3
1.2 开源Web性能测试 8
1.2.1 Web性能测试的重要性 8
1.2.2 开源性能测试 8
1.2.3 开源性能测试的优势 9
1.3 本章小结 9
第2章 JMeter基础知识 10
2.1 JMeter简介 10
2.1.1 JMeter主要特点 11
2.1.2 JMeter常用术语 12
2.1.3 JMeter测试结果字段的意义 12
2.2 JMeter工作原理 13
2.3 JMeter的安装 13
2.3.1 JMeter安装配置要求 13
2.3.2 JMeter安装 13
2.4 如何运行JMeter 14
2.5 配置JMeter 20
2.6 JMeter与LoadRunner优缺点对比 21
2.7 本章小结 21
第3章 Web性能测试脚本录制与开发 22
3.1 JMeter GUI基本操作 22
3.2 JMeter常用测试元件 25
3.3 JMeter脚本开发基础 32
3.3.1 JMeter执行顺序规则 32
3.3.2 作用域规则 33
3.3.3 JMeter属性和变量 34
3.3.4 使用变量参数化测试 35
3.3.4 创建Web测试计划 35
3.5 录制Web测试脚本 41
3.5.1 使用代理录制Web性能测试脚本 41
3.5.2 使用Badboy录制Web性能测试脚本 46
3.6 创建高级Web测试计划 51
3.7 本章小结 52
第4章 数据库性能测试脚本开发 53
4.1 创建数据库测试计划 53
4.2 九步轻松搞定Oracle数据库性能测试 58
4.3 本章小结 63
第5章 FTP性能测试脚本开发 64
5.1 FTP是什么 64
5.2 创建FTP测试计划 68
5.3 本章小结 72
第6章 LDAP性能测试脚本开发 73
6.1 LDAP是什么 73
6.2 创建LDAP测试计划 84
6.3 LDAP常见操作指南 89
6.4 创建扩展LDAP测试计划 91
6.5 本章小结 100
第7章 Web Service性能测试脚本开发 101
7.1 Web Service是什么 101
7.1.1 技术和规则 102
7.1.2 目标 102
7.2 创建Web Service测试计划 105
7.3 本章小结 108
第8章 JMS性能测试脚本开发 109
8.1 JMS是什么 109
8.1.1 定义 109
8.1.2 简介 109
8.1.3 历史 110
8.1.4 体系架构 110
8.1.5 JMS模型 110
8.1.6 传递消息方式 111
8.1.7 JMS应用程序接口 112
8.1.8 JMS提供者实现 113
8.2 创建JMS点对点测试计划 113
8.3 创建JMS Topic测试计划 116
8.4 本章小结 120
第9章 服务器监控测试脚本开发 121
9.1 创建监控测试计划 121
9.2 本章小结 125
第10章 详解JMeter测试元件 126
10.1 详解JMeter监听器(Listeners) 126
10.2 详解JMeter逻辑控制器 135
10.3 详解JMeter配置元件 151
10.4 详解JMeter断言 175
10.5 详解JMeter定时器 188
10.6 详解JMeter前置处理器 195
10.7 详解JMeter后置处理器 205
10.8 详解JMeter采样器 217
10.9 详解JMeter其他测试元件 268
10.10 本章小结 286
第11章 JMeter进阶知识 287
11.1 详解JMeter函数和变量 287
11.2 详解JMeter正则表达式 310
11.3 详解JMeter远程测试 314
11.4 详解JMeter最佳实践经验 319
11.5 一些小技巧 324
11.6 本章小结 326
第12章 性能测试结果分析 327
12.1 如何分析性能测试结果 327
12.2 如何借助监听器发现性能缺陷 330
12.2.1 监听器——性能测试分析的基石 330
12.2.2 巧用监听器——识别性能缺陷 354
12.3 借助Ant实现批量测试和报表生成 361
12.4 本章小结 363
第13章 JMeter性能测试实战——电话销售系统 364
13.1 测试背景和测试目标 364
13.2 分析确定性能测试指标 364
13.4 录制创建性能测试脚本 366
13.5 运行性能测试脚本 369
13.6 分析性能测试结果 371
13.7 上报性能测试缺陷 374
13.8 本章小结 375
第14章 Gatling基础知识 376
14.1 Gatling与JMeter优缺点对比 378
14.2 Gatling快速上手 379
14.3 Gatling进阶指南 386
14.4 本章小结 392
第15章 Gatling详解 393
15.1 Gatling概念 393
15.2 Gatling目录结构 395
15.3 Gatling安装细节与如何适配操作系统 396
15.4 Gatling配置 397
15.5 模拟器结构 399
15.6 模拟器初始化 401
15.7 场景 403
15.8 断言 409
15.9 报告 411
15.10 本章小结 416
第16章 Gatling会话 417
16.1 Session API 417
16.2 EL 和表达式 419
16.3 填充器 420
16.4 验证 424
16.5 本章小结 426
第17章 Gatling HTTP协议 427
17.1 HTTP协议 427
17.2 HTTP请求 433
17.3 HTTP头 435
17.4 HTTP 检查点 442
17.5 SSL 447
17.6 HTTP助手 448
17.7 HTTP录制器 449
17.8 WebSocket 454
17.9 本章小结 458


第18章 Gatling JMS 459
18.1 JMS 协议 459
18.2 本章小结 461
第19章 Gatling扩展 462
19.1 Graphite 462
19.2 SBT插件 465
19.3 Maven插件 465
19.4 Jenkins插件 466
19.5 VTD XML 466
19.6 第三方插件 466
19.7 性能扩展 467
19.8 参数传递 467
19.9 处理JSF 467
19.10 本章小结 469
第20章 Gatling性能测试实战——搜索引擎 470
20.1 测试目标 470
20.2 构建Gatling场景 471
20.3 运行Gatling场景,分析结果 477
20.4 本章小结 479

目录

目录 阅读
第1章 性能测试基础
第2章 JMeter基础知识
第3章 Web性能测试脚本录制与开发
第4章 数据库性能测试脚本开发
第5章 FTP性能测试脚本开发
第6章 LDAP性能测试脚本开发
第7章 Web Service性能测试脚本开发
第8章 JMS性能测试脚本开发
第9章 服务器监控测试脚本开发
第10章 详解JMeter测试元件
第11章 JMeter进阶知识
第12章 性能测试结果分析
第13章 JMeter性能测试实战——电话销售系统
第14章 Gatling基础知识
第15章 Gatling详解
第16章 Gatling会话
第17章 Gatling HTTP协议
第18章 Gatling JMS
第19章 Gatling扩展
第20章 Gatling性能测试实战——搜索引擎

读者评论

电子书版本

  • Epub
  • Mobi

相关图书

亿级流量系统架构设计与实战

李琛轩 (作者)

本书涵盖了亿级用户应用后台通用的技术和系统架构设计思路,在内容结构上分为三大篇:架构知识篇(第1~3章),作为全书的基础知识篇,首先介绍后台的关键组件构成以及机...

 

软件架构设计:大型网站技术架构与业务架构融合之道

余春龙 (作者)

本书系统化地阐述了技术架构与业务架构的方法论与实践。本书内容分为5大部分,第1部分从行业背景出发定义架构的概念与范畴;第2部分细致讨论架构所需的计算机功底,包括...

¥49.00

MySQL 8 Cookbook(中文版)

(美) 卡西克·阿皮加 特拉 (Karthik Appigatla) (作者) 周彦伟 孟治华 王学芳 (译者)

MySQL 8.0 的发布是MySQL 发展历史上的一个重要里程碑,也是开源数据库领域内的一个大事件。针对这个版本,MySQL 官方团队做了太多的工作,从查询优...

 

iOS和macOS性能优化:Cocoa、Cocoa Touch、Objective-C和Swift

[德] Marcel Weiher (作者) 李俊阳 马超 程伟 孙莹 译 (译者)

随着应用功能的日益增加,性能问题也逐渐浮出水面,进入我们的视野之中。本书作者Marcel Weiher在性能调优领域有着丰富的经验,在他的带领下,你将会了解如何...

¥99.00

Scala编程(第3版)

Martin Odersky;Lex Spoon;Bill Venners (作者) 高宇翔 (译者)

本书由直接参与Scala开发的一线人员编写,因而对原理的解读和应用的把握更加值得信赖。本书面向具有一定编程经验的开发者,目标是让读者能够全面了解和掌握Scala...

¥144.00

质量全面管控——从项目管理到容灾测试

葛长芝 (作者)

本书专门为有志于软件测试的工程师打开软件测试的大门,笔者结合案例讲解测试实践技术,主要内容有:项目管理、项目需求管理、代码质量控制、自动化部署、软件测试、安全测...

¥49.00