Java Test Driven Development with Testng

Total Page:16

File Type:pdf, Size:1020Kb

Java Test Driven Development with Testng "Charting the Course ... ... to Your Success!" Java Test Driven Development with TestNG Course Summary Description Test Driven Development (TDD) has become a standard best practice for developers, especially those working in an Agile development environment. TDD is more than just automated unit testing, it is a team and individual development discipline that, when followed correctly, increases productivity of both individual developers and entire teams. From the programmer’s perspective, TDD has another benefit – it allows programmers to eliminate the tedious tasks of debugging and reworking code so that programmers can focus on the creative work of designing and writing code. It makes programming fun again. The course integrates two primary learning streams. The first is the how to effectively implement TDD in a production or development environment and integrating TDD practices with other practices like software craftsmanship, agile design practices, continuous integration and best practices in object oriented programming and Java development. The second learning stream is an in depth and hands on deep dive into Java TDD tools such as mocking libraries, matching libraries and the TestNG framework itself. TestNG (Test Next Generation) is a test framework inspired by JUnit and NUnit but with additional features and functionality The class is designed to be about 50% hands on labs and exercises, about 25% theory and 25% instructor led hands on learning where students code along with the instructor. Topics The TDD process - “red, green, refactor” Assertion libraries (hamcrest, etc.) Eliminating technical debt with TDD Using Mocks effectively Why TDD works Mocking libraries (Mockito, JMockit, Integrating the TDD discipline into a EasyMock, etc.) development process How to developing good tests and test suites Using TDD to support programming and Best practices when using TDD and JUnit to design best practices improve development Developing a TDD project using TestNG Code smells and refactoring TestNG concepts, architecture and features Using TDD to refactor code Organizing and managing tests using Migrating to TDD as a programming testng.xml discipline Audience This course is designed for Java programmers. Prerequisites Before taking this course, students should have a good knowledge of Java and have at least an intermediate programming skill level. Duration Three days Due to the nature of this material, this document refers to numerous hardware and software products by their trade names. References to other companies and their products are for informational purposes only, and all trademarks are the properties of their respective companies. It is not the intent of ProTech Professional Technical Services, Inc. to use any of these names generically "Charting the Course ... ... to Your Success!" Java Test Driven Development with TestNG Course Outline I. Java Test Driven Development IV. More JUnit Introduction A. Design by contract A. The TDD process as a discipline B. Writing tests for preconditions, post- B. How TDD improves efficiency and conditions and invariants effectiveness of programming C. Testing exceptions with TestNG C. Eliminating technical debt, debugging D. Using testNH test fixtures effectively and rework E. Selective execution of tests and D. Integrating TDD with best practices in grouping of tests program design and coding F. Ordering the addition of of tests into E. TDD as a a core Agile practice TestNG F. The Agile testing quadrants G. Differences between test errors and G. The importance of test automation test failures H. Refactoring: what it is and why we do it V. Testing Concepts A. Criteria for good testing: validity, II. An Introduction to TestNG accuracy and reliability A. TestNG architecture and functionality B. Why our tests have to be correct B. The TDD process implemented with C. Common sources of test case errors TestNG D. Systematic and algorithmic test case C. Runners, fixtures and test execution development D. Using the testing.xml file to run tests E. Deriving test cases from acceptance E. TestNG assertions – how tests pass tests and fail F. Functional coverage measures F. TestNG annotations G. Determining optimal numbers of tests G. Writing and validating a TestNG test H. Using test cases to identify H. Introduction to matchers and mocks requirements and specification problems III. TDD Best Practices I I. Dealing with valid, invalid and outlier A. Testing through interfaces test cases B. Command / Query segregation J. Combinatorial versus stateful testing C. Functional testing concepts D. Relationship between good class VI. Assertions and Predicates design and ease of testing A. Four generations of assertions: Java, E. Understanding Unit testing – JUnit, Hamcrest and AssertJ component isolation B. Using hamcrest to develop complex F. Planning the development to minimize assertion predicates work C. Using hamcrest to examine structures, G. How to decide what test to add next lists, etc H. Errors, faults, failures and exceptions D. Writing complex predicates in AssertJ I. TDD best practices E. Overview of hamcrest and AssertJ J. Common errors when implementing features TDD Due to the nature of this material, this document refers to numerous hardware and software products by their trade names. References to other companies and their products are for informational purposes only, and all trademarks are the properties of their respective companies. It is not the intent of ProTech Professional Technical Services, Inc. to use any of these names generically "Charting the Course ... ... to Your Success!" Java Test Driven Development with TestNG Course Outline (cont’d) VII. Mocking and Mock Libraries IX. Refactoring A. Mocks, stubs, drivers and component A. Refactoring as controlled code unit testing changes B. Implementing interfaces with a mock B. Using TDD to implement a refactoring object C. Code smells – driver for refactoring C. Overview of mocking libraries: D. Code refactoring versus design EasyMock, Mockido, JMockit ec. refactoring D. How mocking libraries work E. Refactoring to a design pattern E. Implementing and using mocks from a F. Using refactoring to reduce technical mocking library debt F. Designing and implementing a G. Refactoring best practices mocking strategy X. Implementing TDD VIII. TDD Best Practices II A. Review of TDD best practices A. Organizing and maintaining the test B. Review of JUnit best practices environment C. Planning a TDD project B. Testing the test code D. Integrating TDD into a development C. Developing tests and code design process together E. Integrating TDD with coding D. Deciding intensive and excellence comprehensive should be F. The importance of metrics E. TDD implementation patterns G. Developing an implementation plan F. Metrics for TDD H. Pitfalls, snares and traps to avoid Due to the nature of this material, this document refers to numerous hardware and software products by their trade names. References to other companies and their products are for informational purposes only, and all trademarks are the properties of their respective companies. It is not the intent of ProTech Professional Technical Services, Inc. to use any of these names generically .
Recommended publications
  • Top 19 Testng Interview Questions & Answers
    https://career.guru99.com/ Guru99 Provides FREE ONLINE TUTORIAL on Various courses like Java | MIS | MongoDB | BigData | Cassandra | Web Services ------------------------------------------------------------------------------------------------------------------------------- SQLite | JSP | Informatica | Accounting | SAP Training | Python ------------------------------------------------------------------------------------------------------------------------------- Excel | ASP Net | HBase | Testing | Selenium | CCNA | NodeJS ------------------------------------------------------------------------------------------------------------------------------- TensorFlow | Data Warehouse | R Programming | Live Projects | DevOps ------------------------------------------------------------------------------------------------------------------------------- Top 19 TestNG Interview Questions & Answers Following are frequently asked questions in interviews for freshers as well as experienced TestNG professionals. 1) What is TestNG? TestNG is an automated open source testing framework. It is based on JUnit framework but is not a JUnit extension. 2) What are the TestNG features? TestNG features include TestNG uses more OO (object-oriented) and Java features It supports testing integrated classes Different Annotations are supported Separate compile time test code from data info /run time configuration Run-time configuration is flexible Flexible plug-in API For further flexibility embeds BeanShell Multi-threaded selenium testing support Supports parallel testing,
    [Show full text]
  • Proof of Concept (Poc) Selenium Web Driver Based Automation Framework
    e-ISSN (O): 2348-4470 Scientific Journal of Impact Factor (SJIF): 4.72 p-ISSN (P): 2348-6406 International Journal of Advance Engineering and Research Development Volume 4, Issue 7, July -2017 Proof of concept (Poc) selenium web driver based Automation framework B AJITH KUMAR Master of science ( Information Technology ) Department of Mathematics COLLEGE OF ENGINNERING GUINDY (CEG) Anna university ABSTRACT: To control test execution time. Software testing is a process of executing a program or application with the intent of finding the software bugs. It can also be stated as the process of validating and verifyingthat a software program or application or product: Meets the business and technical requirements that guided it’s design and development. Works as expected. KEY WORDS: SOFTWARE TESTING .AUTOMATION TESTING ,SELENIUM, SELENIUM WEBDRIVER ,AGILE TESTING , TESTNG Test automation : In software testing, test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place, or add additional testing that would be difficult to perform manually. AGILE TESTING : A software testing practice that follows the principles of agile software development is called Agile Testing. Agile is an iterative development methodology, where requirements evolve through collaboration between the customer and self- organizing teams and agile aligns development with customer needs. Selenium automation tool Selenium has the support of some of the largest browser vendors who have taken (or are taking) steps to make Selenium a native part of their browser.
    [Show full text]
  • Taming Functional Web Testing with Spock and Geb
    Taming Functional Web Testing with Spock and Geb Peter Niederwieser, Gradleware Creator, Spock Contributor, Geb The Actors Spock, Geb, Page Objects Spock “Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers. Spock is inspired from JUnit, RSpec, jMock, Mockito, Groovy, Scala, Vulcans, and other fascinating life forms. Spock (ctd.) http://spockframework.org ASL2 licence Serving mankind since 2008 Latest releases: 0.7, 1.0-SNAPSHOT Java + Groovy JUnit compatible Loves Geb Geb “Geb is a browser automation solution. It brings together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language. It can be used for scripting, scraping and general automation — or equally as a functional/web/acceptance testing solution via integration with testing frameworks such as Spock, JUnit & TestNG. Geb (ctd.) http://gebish.org ASL2 license Serving mankind since 2009 Latest releases: 0.7.2, 1.0-SNAPSHOT Java + Groovy Use with any test framework Loves Spock First-class page objects Page Objects “The Page Object pattern represents the screens of your web app as a series of objects. Within your web app's UI, there are areas that your tests interact with. A Page Object simply models these as objects within the test code. This reduces the amount of duplicated code and means that if the UI changes, the fix need only be applied in one place.
    [Show full text]
  • Comparative Analysis of Junit and Testng Framework
    International Research Journal of Engineering and Technology (IRJET) e-ISSN: 2395-0056 Volume: 05 Issue: 05 | May-2018 www.irjet.net p-ISSN: 2395-0072 Comparative Analysis of JUnit and TestNG framework Manasi Patil1, Mona Deshmukh2 Student, Dept. of MCA, VES Institute of Technology, Maharashtra, India1 Professor, Dept. of MCA, VES Institute of Technology, Maharashtra, India2 ---------------------------------------------------------------------***--------------------------------------------------------------------- Abstract - Testing is an important phase in SDLC, Testing It is flexible than Junit and supports parametrization, parallel can be manual or automated. Nowadays Automation testing is execution and data driven testing. widely used to find defects and to ensure the correctness and The Table – 1 compares different functionalities of TestNG completeness of the software. Open source framework can be and JUnit framework. used for automation testing such as Robotframework, Junit, Spock, NUnit, TestNG, Jasmin, Mocha etc. This paper compares Table -1: Functionality TestNG vs JUnit JUnit and TestNG based on their features and functionalities. Key Words: JUnit, TestNG, Automation Framework, Functionality TestNG JUnit Automation Testing, Selenium TestNG, Selenium JUnit Yes 1. INTRODUCTION Support Annotations Yes Yes Support Test Suit Initialization Yes Testing a software manually is tedious work, and takes lot of No time and efforts. Automation saves lot of time and money, Support for Tests groups Yes also it increases the test coverage
    [Show full text]
  • Programming-In-Scala.Pdf
    Cover · Overview · Contents · Discuss · Suggest · Glossary · Index Programming in Scala Cover · Overview · Contents · Discuss · Suggest · Glossary · Index Programming in Scala Martin Odersky, Lex Spoon, Bill Venners artima ARTIMA PRESS MOUNTAIN VIEW,CALIFORNIA Cover · Overview · Contents · Discuss · Suggest · Glossary · Index iv Programming in Scala First Edition, Version 6 Martin Odersky is the creator of the Scala language and a professor at EPFL in Lausanne, Switzerland. Lex Spoon worked on Scala for two years as a post-doc with Martin Odersky. Bill Venners is president of Artima, Inc. Artima Press is an imprint of Artima, Inc. P.O. Box 390122, Mountain View, California 94039 Copyright © 2007, 2008 Martin Odersky, Lex Spoon, and Bill Venners. All rights reserved. First edition published as PrePrint™ eBook 2007 First edition published 2008 Produced in the United States of America 12 11 10 09 08 5 6 7 8 9 ISBN-10: 0-9815316-1-X ISBN-13: 978-0-9815316-1-8 No part of this publication may be reproduced, modified, distributed, stored in a retrieval system, republished, displayed, or performed, for commercial or noncommercial purposes or for compensation of any kind without prior written permission from Artima, Inc. All information and materials in this book are provided "as is" and without warranty of any kind. The term “Artima” and the Artima logo are trademarks or registered trademarks of Artima, Inc. All other company and/or product names may be trademarks or registered trademarks of their owners. Cover · Overview · Contents · Discuss · Suggest · Glossary · Index to Nastaran - M.O. to Fay - L.S. to Siew - B.V.
    [Show full text]
  • Testng Quick Guide
    TTEESSTTNNGG -- QQUUIICCKK GGUUIIDDEE http://www.tutorialspoint.com/testng/testng_quick_guide.htm Copyright © tutorialspoint.com Testing is the process of checking the functionality of the application whether it is working as per requirements and to ensure that at developer level, unit testing comes into picture. Unit testing is the testing of single entity classormethod. Unit testing is very essential to every software company to give a quality product to their customers. JUnit has driven developers to understand the usefulness of tests, especially of unit tests when compared to any other testing framework. Leveraging a rather simple, pragmatic, and strict architecture, JUnit has been able to "infect" great number of developers. Features of JUnit can be seen in Junit Features. Some of the short comings of JUnit are: Initially designed to enable unit testing only, now used for all kinds of testing. Cannot do dependency testing. Poor configuration control setUp/tearDown. Intrusive forcesyoutoextendclassesandnameyourmethodsacertainway. Static programming model forcesyoutorecompileunnecessarily. The management of different suites of tests in complex projects can be very tricky.. What is TestNG? Definition of TestNG as per its documentation is: TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use. TestNG is an open source automated testing framework; where NG of TestNG means Next Generation. TestNG is similar to JUnit especiallyJUnit4, but its not a JUnit extension. Its inspired by JUnit. It is designed to be better than JUnit, especially when testing integrated classes. The creator of TestNG is Cedric Beust. TestNG eliminates most of the limitations of the older framework and gives the developer the ability to write more flexible and powerful tests.
    [Show full text]
  • Key Intellij IDEA Facts
    The most intelligent Java IDE around Key IntelliJ IDEA Facts IntelliJ IDEA, the award-winning Java IDE, is designed to improve developer productivity. Its intelligent editor, code analyzer, and powerful set of refactorings support a wide range of programming languages, frameworks and technologies, and are ready to use right out of the box. Key IntelliJ IDEA Benefits • Allows developers focus on development and takes care of all routine tasks. • Lets write, debug, refactor, test and learn your code without a hitch. • Seamlessly handles mixed code base of Java, Ruby, Groovy, Python, and Scala. • Automatically maintains the code quality. • Tracks and fixes errors on all levels – from statements to the overall architecture. • Produces clean, fast performing code in least time. • Designed to work on projects of all scale – from individual to enterprise-grade. • Supports all major languages, technologies and frameworks. • Works with popular version control systems and TeamCity, the continuous integration server. Awards 2008, 2005, 2007, 2006, 2004 2004, 2003 2005 2005 2004, 2006 2004, 2003, 2003, 2002 2003 2002 2002 www.jetbrains.com © 2003 - 2011 JetBrains, Inc. All rights reserved. Headquarters and Key IntelliJ IDEA Features International Sales Intelligent Coding Assistance JetBrains s.r.o. Na hrebenech II 1718/10 • Smart Code Completion Prague 4, 147 00 • 600+ Code Inspections with On-the-fly Code Analysis Czech Republic Tel: +420 2 4172 2501 • Intelligent Quick-Fixes Fax: +420 2 6171 1724 • Automatic Code Generation and Styling [email protected]
    [Show full text]
  • Apache Maven Current Version User Guide
    ...................................................................................................................................... Apache Maven Current version User Guide ...................................................................................................................................... The Apache Software Foundation 2009-10-16 T a b l e o f C o n t e n t s i Table of Contents ....................................................................................................................................... 1 Table of Contents . i 2 What is Maven? . 1 3 Features . 3 4 FAQ . 4 5 Community Overview . 11 5.1 How to Contribute . 13 5.2 Getting Help . 15 5.3 Issue Tracking . 17 5.4 Source Repository . 18 5.5 Continuous Integration . 20 6 Running Maven . 21 7 Maven Plugins . 23 8 User Centre . 30 8.1 Maven in 5 Minutes . 31 8.2 Getting Started Guide . 35 8.3 POM Reference . 57 8.4 Settings Reference . 91 8.5 Guides . 100 8.5.1 The Build Lifecycle . 103 8.5.2 The POM . 111 8.5.3 Profiles . 123 8.5.4 Repositories . 133 8.5.5 Standard Directory Layout . 136 8.5.6 The Dependency Mechanism . 137 8.5.7 Plugin Development . 153 8.5.8 Configuring Plug-ins . 156 8.5.9 The Plugin Registry . 169 8.5.10 Plugin Prefix Resolution . 172 8.5.11 Developing Ant Plugins . 174 8.5.12 Developing Java Plugins . 188 8.5.13 Creating a Site . 198 8.5.14 Snippet Macro . 203 8.5.15 What is an Archetype . 205 8.5.16 Creating Archetypes . 207 8.5.17 From Maven 1.x to Maven 2.x . 210 8.5.18 Using Maven 1.x repositories with Maven 2.x . 213 8.5.19 Relocation of Artifacts . 214 8.5.20 Installing 3rd party JARs to Local Repository .
    [Show full text]
  • Test Automation Integration with Test Management Qacomplete
    Test Automation Integration with Test Management QAComplete This User's Guide walks you through configuring and using your automated tests with QAComplete's Test Management module SmartBear Software Release 11 October 2015 ALMComplete | QAComplete User's Guide About Automated Tests Test Management's Automation feature allows you to run tests with little to no human interaction. You can perform testing from remote computers as often as needed - for example, after a build or on a daily schedule. By using the QAComplete integration with various testing tools, you can fully track tests and test res- ults across Test Management's manual and automated tests. You can run automated tests from the desired computers and post results for full tracking of your testing coverage and progress. Supported Automated Testing Tools l SmartBear's TestComplete. For more information about TestComplete, please see TestComplete by SmartBear. l SmartBear's Ready! API. For more information about Ready! API, please see Ready! API by SmartBear. l SmartBear's SoapUI. For more information on SoapUI, please see SoapUI by SmartBear. l Selenium WebDriver for the following unit testing frameworks: l JUnit l TestNG l NUnit For more information about Selenium, please see Selenium - Web Browser Automation. You can also automate the running of ordinary JUnit and NUnit unit tests (that do not use Selenium modules). Note: Starting with version 10.50, TestComplete supports integration with Selenium tests. In TestCom- plete, you can run Selenium tests created by using JUnit, TestNG, NUnit, PyUnit, Ruby Test::Unit and PHPUnit unit testing frameworks. You can add your Selenium tests to your TestComplete project, and then integrate the project with Test Management.
    [Show full text]
  • Instructions for Preparation
    Instructions for preparation Hi all! Thank you so much for registering for my workshop ‘API testing with REST Assured’ as part of the 2017 Romanian Testing Conference! I am really looking forward to meeting you all and sharing with you some tips and tricks about REST Assured and WireMock. In order to lose as little time as possible at the start of the workshop day, I’d like you to prepare your laptop for the exercises you’ll be working on by following these instructions. If you have any questions about or problems with completing these instructions, please let me know as soon as possible by email: [email protected], and I’ll try and help you as best as I can. See you on May 11th in Cluj! -- Bas Installing and configuring Java Development Kit (JDK) 1.8 Writing tests using REST Assured, as well as writing stubs using WireMock is software development! Java software development, to be more precise. This means we’ll need a Java Development Kit installed to be able to write, compile and run our tests and stubs. I highly recommended to install and use a recent version of Java 8, which implies a JDK version 1.8. If you don’t have a JDK on your laptop yet, here’s a link to the download and installation instructions: http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html Be sure to set your PATH and JAVA_HOME variables after installation, as described in the installation instructions. Installing and configuring an IDE To be able to efficiently write our tests and stubs, we also need an Integrated Development Environment (IDE).
    [Show full text]
  • Spock Vs Junit 5 - Clash of the Titans
    Spock vs JUnit 5 - Clash of the Titans Marcin Zajączkowski Stockholm, 6 February 2019 @SolidSoftBlog About me Areas of expertise Automatic Testing / TDD Software Craftsmanship / Code Quality Deployment Automation / Continuous Delivery Concurrency / Parallel Computing / Reactive Systems . FOSS projects author and contributor blogger trainer Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Comprehensive Kubernetes & Openshift services with Continuous Delivery with Jenkins https://mindboxgroup.com/ [email protected] Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Presentation goal Help you decide what is the best testing framework for Java code Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Presentation plan historical outline selected JUnit 5 & Spock features comparison summary Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Version statement This comparison is valid for JUnit 5.4.0-RC2 and Spock 1.3-RC1 Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Historical outline Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Unit testing in Java - historical outline JUnit - first xUnit for Java - 2000 Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Unit testing in Java - historical outline JUnit - first xUnit for Java - 2000 TestNG - Java 5 leveraged in tests - 2004 with some unique (at the time) features Marcin Zajączkowski @SolidSoftBlog https://blog.solidsoft.info/ Unit
    [Show full text]
  • Copyright © 2012, Oracle And/Or Its Affiliates. All Rights Reserved. 1
    1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. NetBeans Community Day WITH John Ceccarelli Engineering Director Ashwin Rao Group Product Manager 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. The NetBeans Community AROUND 1.2 MILLION ACTIVE USERS AND GROWING! 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Engaging With The Community User Highlights Surveys § Over 3000 cumulative respondents for NetBeans IDE 7.0 and NetBeans IDE 7.1 User Satisfaction Surveys § Nearly 7000 bugs filed by members Forums NetCAT of the NetCAT community acceptance program across multiple releases § Over 35,000 number of forum posts in the last year and a half Bug Reports 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. NetBeans IDE 7.0 User Satisfaction Survey Highlights Would you recommend NetBeans IDE 7.0? § 854 responses § Survey focused on 7.0 key 11% features – JDK 7 support Yes – Maven support No – Java EE support – PHP support 89% 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. NetBeans IDE 7.0 User Satisfaction Survey Satisfaction compared to previous versions 23% More Satisfied Less Satisfied 12% Ample room for 65% No Difference improvement in overall satisfaction, especially “Warm up time” compared Editor performance compared with performance! to previous versions to previous versions Better Better 35% 40% 50% Not better 47% Not better No Difference No Difference 15% 13% 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. NetBeans IDE 7.1 User Satisfaction Survey Highlights Would you recommend NetBeans IDE 7.1? § 2196 responses § Survey focused on 7.1 key 9% features – JavaFX support Yes – Java Editor support – Java EE support No – Maven support – PHP support 91% 7 Copyright © 2012, Oracle and/or its affiliates.
    [Show full text]