Pro Apache JMeter Web Application Performance Testing — Sai Matam Jagdeep Jain Pro Apache JMeter Web Application Performance Testing Sai Matam Jagdeep Jain Pro Apache JMeter: Web Application Performance Testing Sai Matam Jagdeep Jain Pleasonton, California, USA Dewas, Madhya Pradesh, India ISBN-13 (pbk): 978-1-4842-2960-6 ISBN-13 (electronic): 978-1-4842-2961-3 DOI 10.1007/978-1-4842-2961-3 Library of Congress Control Number: 2017951240 Copyright © 2017 by Sai Matam and Jagdeep Jain This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Cover image by Freepik (www.freepik.com) Managing Director: Welmoed Spahr Editorial Director: Todd Green Acquisitions Editor: Celesting Suresh John Development Editor: Laura Berendson Technical Reviewer: Nitesh Kumar Jain Coordinating Editor: Sanchita Mandal Copy Editor: Kezia Endsley Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/978-1-4842-2960-6. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper I dedicate this book to my wife, Jyothi, for inspiration, support, and for single-handedly running around kids and various chores while I tapped at the keyboard. —Sai Matam I dedicate this book to my parents, who always motivated me to do things differently, and to my sisters and my wife; without their support, I would not be able to manage a tight schedule on and off work. —Jagdeep Jain Contents at a Glance About the Authors ��������������������������������������������������������������������������������������������������xvii About the Technical Reviewer ��������������������������������������������������������������������������������xix Acknowledgments ��������������������������������������������������������������������������������������������������xxi Introduction ����������������������������������������������������������������������������������������������������������xxiii ■ Chapter 1: Foundation �������������������������������������������������������������������������������������������1 ■ Chapter 2: Performance Testing Primer ����������������������������������������������������������������3 ■ Chapter 3: Your First JMeter Test ������������������������������������������������������������������������13 ■ Chapter 4: JMeter Test Script Recorder ��������������������������������������������������������������25 ■ Chapter 5: JMeter Test Plan Components �����������������������������������������������������������35 ■ Chapter 6: Distributed Testing ���������������������������������������������������������������������������167 ■ Chapter 7: JMeter Best Practices ����������������������������������������������������������������������179 ■ Chapter 8: Troubleshooting JMeter �������������������������������������������������������������������197 ■ Chapter 9: JMeter Plugins ���������������������������������������������������������������������������������211 ■ Chapter 10: JMeter Recipes ������������������������������������������������������������������������������221 ■ Chapter 11: Case Study: Digital Toys Inc� ����������������������������������������������������������243 ■ Chapter 12: Performance Dashboard ����������������������������������������������������������������303 ■ Chapter 13: Appendix A: Setting Up JMeter ������������������������������������������������������315 ■ Chapter 14: Appendix B: Setting Up Digital Toys Inc� ����������������������������������������327 Index ���������������������������������������������������������������������������������������������������������������������333 v Contents About the Authors ��������������������������������������������������������������������������������������������������xvii About the Technical Reviewer ��������������������������������������������������������������������������������xix Acknowledgments ��������������������������������������������������������������������������������������������������xxi Introduction ����������������������������������������������������������������������������������������������������������xxiii ■ Chapter 1: Foundation �������������������������������������������������������������������������������������������1 Why Performance Testing? �����������������������������������������������������������������������������������������������1 Why JMeter? ��������������������������������������������������������������������������������������������������������������������2 ■ Chapter 2: Performance Testing Primer ����������������������������������������������������������������3 Performance Testing ��������������������������������������������������������������������������������������������������������3 Response Time ���������������������������������������������������������������������������������������������������������������������������������������3 Throughput ���������������������������������������������������������������������������������������������������������������������������������������������4 Utilization ������������������������������������������������������������������������������������������������������������������������������������������������5 Robustness ���������������������������������������������������������������������������������������������������������������������������������������������5 Scalability �����������������������������������������������������������������������������������������������������������������������������������������������5 User Perception ��������������������������������������������������������������������������������������������������������������������������������������5 Cost���������������������������������������������������������������������������������������������������������������������������������������������������������5 Types of Performance Tests ���������������������������������������������������������������������������������������������5 Stress Tests ��������������������������������������������������������������������������������������������������������������������������������������������5 Load Tests �����������������������������������������������������������������������������������������������������������������������������������������������6 Peak Load Tests ��������������������������������������������������������������������������������������������������������������������������������������6 Soak Tests or Endurance Tests ���������������������������������������������������������������������������������������������������������������6 Scalability Tests ��������������������������������������������������������������������������������������������������������������������������������������6 Capacity Tests �����������������������������������������������������������������������������������������������������������������������������������������6 vii ■ Contents Spike Tests and Burst Capacity ��������������������������������������������������������������������������������������������������������������7 Performance Smoke Tests ����������������������������������������������������������������������������������������������������������������������7 High Availability Test/Fail-Over Tests ������������������������������������������������������������������������������������������������������7 The Performance Test Environment ���������������������������������������������������������������������������������9 The Need for Separate Performance Environment ���������������������������������������������������������������������������������9 The Performance Environment Should Be Like the Production Environment �����������������������������������������9 The Performance Environment Should Be Isolated ��������������������������������������������������������������������������������9 Performance Testing Tools ��������������������������������������������������������������������������������������������������������������������10 The Performance Testing Strategy Document ����������������������������������������������������������������10 Performance Requirements ������������������������������������������������������������������������������������������������������������������10 Performance Goals �������������������������������������������������������������������������������������������������������������������������������10 Performance Test Suite ������������������������������������������������������������������������������������������������������������������������10 Performance Reporting and Analysis ���������������������������������������������������������������������������������������������������11 Performance Tuning ������������������������������������������������������������������������������������������������������������������������������11 Conclusion ����������������������������������������������������������������������������������������������������������������������12 ■ Chapter 3: Your First JMeter Test ������������������������������������������������������������������������13 Components of a JMeter Test �����������������������������������������������������������������������������������������13 Test Plan �����������������������������������������������������������������������������������������������������������������������������������������������13 Thread Group ����������������������������������������������������������������������������������������������������������������������������������������13 Controller ����������������������������������������������������������������������������������������������������������������������������������������������14 Sampler ������������������������������������������������������������������������������������������������������������������������������������������������14 Listener �������������������������������������������������������������������������������������������������������������������������������������������������14 Timer ����������������������������������������������������������������������������������������������������������������������������������������������������14 Assertions ���������������������������������������������������������������������������������������������������������������������������������������������14 Config Element �������������������������������������������������������������������������������������������������������������������������������������14 Pre-Processors �������������������������������������������������������������������������������������������������������������������������������������15 Post-Processors �����������������������������������������������������������������������������������������������������������������������������������15 Order of Component Execution���������������������������������������������������������������������������������������15 Simple JMeter Test ���������������������������������������������������������������������������������������������������������17 GUI Mode ������������������������������������������������������������������������������������������������������������������������21 viii ■ Contents Non-GUI Mode ����������������������������������������������������������������������������������������������������������������22 Executing a Single Test �������������������������������������������������������������������������������������������������������������������������23 Proxy Server Setting �����������������������������������������������������������������������������������������������������������������������������24 Start JMeter in Server Mode ����������������������������������������������������������������������������������������������������������������24 Stop/Shutdown JMeter �������������������������������������������������������������������������������������������������������������������������24 Conclusion ����������������������������������������������������������������������������������������������������������������������24 ■ Chapter 4: JMeter Test Script Recorder ��������������������������������������������������������������25 JMeter WorkBench ���������������������������������������������������������������������������������������������������������25 JMeter Recording Controller ������������������������������������������������������������������������������������������28 Browser Proxy Settings ��������������������������������������������������������������������������������������������������28 Recording Example ��������������������������������������������������������������������������������������������������������29 Conclusion ����������������������������������������������������������������������������������������������������������������������34 ■ Chapter 5: JMeter Test Plan Components �����������������������������������������������������������35 Test Plan �������������������������������������������������������������������������������������������������������������������������35 Configuration ����������������������������������������������������������������������������������������������������������������������������������������36 Serial Execution of Thread Groups �������������������������������������������������������������������������������������������������������37 Parallel Execution of Thread Groups �����������������������������������������������������������������������������������������������������39 User Defined Variables��������������������������������������������������������������������������������������������������������������������������41 Thread Group ������������������������������������������������������������������������������������������������������������������42 Thread Properties ���������������������������������������������������������������������������������������������������������������������������������43 Scheduler ���������������������������������������������������������������������������������������������������������������������������������������������49 Action After Sampler Error ��������������������������������������������������������������������������������������������������������������������53 Pre-Processors ���������������������������������������������������������������������������������������������������������������61 HTTP URL Re-Writing Modifier ��������������������������������������������������������������������������������������������������������������61 Controller ������������������������������������������������������������������������������������������������������������������������63 Simple Controller ����������������������������������������������������������������������������������������������������������������������������������64 Transaction Controller���������������������������������������������������������������������������������������������������������������������������65 Loop Controller �������������������������������������������������������������������������������������������������������������������������������������68 Runtime Controller ��������������������������������������������������������������������������������������������������������������������������������70 ix ■ Contents Throughput Controller ���������������������������������������������������������������������������������������������������������������������������72 Once Only Controller �����������������������������������������������������������������������������������������������������������������������������74 Interleave Controller �����������������������������������������������������������������������������������������������������������������������������76 Random Controller ��������������������������������������������������������������������������������������������������������������������������������81 Random Order Controller ����������������������������������������������������������������������������������������������������������������������81 Switch Controller ����������������������������������������������������������������������������������������������������������������������������������82 ForEach Controller ��������������������������������������������������������������������������������������������������������������������������������85 If Controller �������������������������������������������������������������������������������������������������������������������������������������������87 Timers ����������������������������������������������������������������������������������������������������������������������������92 Constant Timer �������������������������������������������������������������������������������������������������������������������������������������93 Gaussian Random Timer �����������������������������������������������������������������������������������������������������������������������97 Uniform Random Timer �������������������������������������������������������������������������������������������������������������������������99 Constant Throughput Timer ����������������������������������������������������������������������������������������������������������������101 Synchronizing Timer ���������������������������������������������������������������������������������������������������������������������������103 Sampler ������������������������������������������������������������������������������������������������������������������������105 HTTP Request �������������������������������������������������������������������������������������������������������������������������������������106 Assertions ��������������������������������������������������������������������������������������������������������������������128 Response Assertion ����������������������������������������������������������������������������������������������������������������������������128 Listener ������������������������������������������������������������������������������������������������������������������������138 View Results Tree �������������������������������������������������������������������������������������������������������������������������������141 View Results In Table ��������������������������������������������������������������������������������������������������������������������������147 Aggregate Report��������������������������������������������������������������������������������������������������������������������������������150 Post-Processors �����������������������������������������������������������������������������������������������������������152 Regular Expression Extractor �������������������������������������������������������������������������������������������������������������152 Properties and Variables ����������������������������������������������������������������������������������������������157 Comparison of Properties and Variables ���������������������������������������������������������������������������������������������157 User Defined Variables������������������������������������������������������������������������������������������������������������������������161 Using the Command Line to Initialize Properties ��������������������������������������������������������������������������������164 Conclusion ��������������������������������������������������������������������������������������������������������������������165 x ■ Contents ■ Chapter 6: Distributed Testing ���������������������������������������������������������������������������167 Distributed Testing Using JMeter ���������������������������������������������������������������������������������167 Prerequisites ����������������������������������������������������������������������������������������������������������������167 Configuration ����������������������������������������������������������������������������������������������������������������168 Running the Test �����������������������������������������������������������������������������������������������������������170 GUI Mode ����������������������������������������������������������������������������������������������������������������������171 Non-GUI Mode ��������������������������������������������������������������������������������������������������������������172 RMI Port ������������������������������������������������������������������������������������������������������������������������172 Sample Sender Mode ���������������������������������������������������������������������������������������������������173 Unreachable Remote Hosts ������������������������������������������������������������������������������������������176 Limitations ��������������������������������������������������������������������������������������������������������������������177 Conclusion ��������������������������������������������������������������������������������������������������������������������177 ■ Chapter 7: JMeter Best Practices ����������������������������������������������������������������������179 HTTP Request Defaults �������������������������������������������������������������������������������������������������179 Follow Redirects �����������������������������������������������������������������������������������������������������������180 Cookie Manager �����������������������������������������������������������������������������������������������������������182 Cache Manager ������������������������������������������������������������������������������������������������������������185 JMeter Using Maven ����������������������������������������������������������������������������������������������������185 Passing Variables Across Thread Groups ���������������������������������������������������������������������187 Running Parallel Thread Groups �����������������������������������������������������������������������������������191 Using External File for Parameterizing User Login �������������������������������������������������������192 Customizing Properties ������������������������������������������������������������������������������������������������194 Monitor JMeter Resource Usage ����������������������������������������������������������������������������������194 Standard Test Plan Templates ��������������������������������������������������������������������������������������195 Conclusion ��������������������������������������������������������������������������������������������������������������������196 xi