Java & Java EE Open Source Testing
Tools
Course Description
Over the last few years, open source testing tools have become more important to both developers and testers alike:
For developers ... Unit testing has become central to the way many developers write software, thanks largely to a lightweight programming methodology called eXtreme Programming (XP). This methodology requires that developers write unit tests for every function they add, and subsequently maintain those tests. A maintained suite of unit tests captures the system design in a practical form, provides the best form of documentation for the system classes, determines when each part of the system is complete, gives developers confidence in their code and provides a basis for refactoring without introducing errors.
For testers ... Budgets for expensive testing packages have been shrinking due to the business driver for IT to provide more value for money. In addition, tools which are foreign to developers sometimes hinder testing team acceptance
by developers. Also, given the rapid change of technology, proprietary tools do not or are slow to support testing of the latest emerging technologies. Proprietary tools also don't always focus on testing the open source technologies being used by more and more developers.
This course outlines the available open source tools for testing traditional, web-oriented and component-oriented Java and Java EE applications. The topics related to testing Web Applications are applicable to .Net, PHP and other
systems as well as Java-based web application servers and Java EE systems.
For developers ... Unit testing has become central to the way many developers write software, thanks largely to a lightweight programming methodology called eXtreme Programming (XP). This methodology requires that developers write unit tests for every function they add, and subsequently maintain those tests. A maintained suite of unit tests captures the system design in a practical form, provides the best form of documentation for the system classes, determines when each part of the system is complete, gives developers confidence in their code and provides a basis for refactoring without introducing errors.
For testers ... Budgets for expensive testing packages have been shrinking due to the business driver for IT to provide more value for money. In addition, tools which are foreign to developers sometimes hinder testing team acceptance
by developers. Also, given the rapid change of technology, proprietary tools do not or are slow to support testing of the latest emerging technologies. Proprietary tools also don't always focus on testing the open source technologies being used by more and more developers.
This course outlines the available open source tools for testing traditional, web-oriented and component-oriented Java and Java EE applications. The topics related to testing Web Applications are applicable to .Net, PHP and other
systems as well as Java-based web application servers and Java EE systems.
Course Duration
3 days
Course Objectives
After completing this course, participants will be able to:
• Write test suites which unit test or test the functionality of their applications
• Understand how testing fits into development paradigms such as eXtreme Programming (XP)
• Use open source testing tools such as JUnit, HTTPUnit, WebTest and more ...
• Write test suites which unit test or test the functionality of their applications
• Understand how testing fits into development paradigms such as eXtreme Programming (XP)
• Use open source testing tools such as JUnit, HTTPUnit, WebTest and more ...
Course Content
Common Topics
Testing Concepts: Brief Review (if required); Testing Infrastructure: Helpful tools including Ant (if required)
Single-Tier Topics
Unit Testing with JUnit: TestCase blueprint; Test runners and test lifecycle; Test organization; Handling
Exceptions; Test reporting; Comparison with NUnit, TestNG, SuiteRunner, Jetif; Performance testing with JUnitPerf; Mock Objects: EasyMock, JMock, DynaMock, MockCreator, Mockrunner, Mocquer; Code Hygiene (Style and Metrics): CheckStyle, PMD, FindBugs, JCSC, Simian, JDepend, JavaNCSS; Specialist Unit Testing: NoUnit, Jester, XmlUnit, JUnitScenario, PropertyTable, jTestCase; Coverage: JCoverage, Emma, Cobertura, Clover
Multi-Tier Non-Web Topics
Distributed Unit Testing: JUnitEE, Cactus
Database Testing: SqlUnit, DbUnit, P6Spy, Sql Profiler; Mock
Objects Revisited: Mocking EJBs, JMS, etc; Style and Metrics Revisited: Java EE specifics; Coverage Revisited: coverage for Java EE applications; Client
Functional Testing: Abbot, Jemmy; Performance Testing: JMeter, HPjmeter
Multi-Tier Web Topics
Programmatic Testing of Web
Applications with HTTPUnit: Installation; Verifying page content; Following links; Tables; Forms; DOM testing; Cookies; Headers; SSL Declarative Testing of Web Applications with WebTest: Configuration; Buttons; Forms; Links; Structuring and grouping test; Steps; XPath; Testing JavaScript; Scripting Tests; HTTP Cookies; HTTP Headers; PDFs; XML; SSL; Custom Steps; Click-O-Mat recorder; Data-driven tests
Other Web Testing Tools: jWebUnit, HtmlUnit, ITP, MaxQ, Jameleon, xhtmlunit
Database-driven Website Testing: SqlUnit (if required)
Testing Web Components: TagUnit, StrutsTestCase
Mock Objects Revisited: Mocking Web Components
Style and Metrics Revisited: web specifics
Coverage Revisited: coverage for Web Applications
Performance Testing Revisited: Grinder, WAS
Testing Concepts: Brief Review (if required); Testing Infrastructure: Helpful tools including Ant (if required)
Single-Tier Topics
Unit Testing with JUnit: TestCase blueprint; Test runners and test lifecycle; Test organization; Handling
Exceptions; Test reporting; Comparison with NUnit, TestNG, SuiteRunner, Jetif; Performance testing with JUnitPerf; Mock Objects: EasyMock, JMock, DynaMock, MockCreator, Mockrunner, Mocquer; Code Hygiene (Style and Metrics): CheckStyle, PMD, FindBugs, JCSC, Simian, JDepend, JavaNCSS; Specialist Unit Testing: NoUnit, Jester, XmlUnit, JUnitScenario, PropertyTable, jTestCase; Coverage: JCoverage, Emma, Cobertura, Clover
Multi-Tier Non-Web Topics
Distributed Unit Testing: JUnitEE, Cactus
Database Testing: SqlUnit, DbUnit, P6Spy, Sql Profiler; Mock
Objects Revisited: Mocking EJBs, JMS, etc; Style and Metrics Revisited: Java EE specifics; Coverage Revisited: coverage for Java EE applications; Client
Functional Testing: Abbot, Jemmy; Performance Testing: JMeter, HPjmeter
Multi-Tier Web Topics
Programmatic Testing of Web
Applications with HTTPUnit: Installation; Verifying page content; Following links; Tables; Forms; DOM testing; Cookies; Headers; SSL Declarative Testing of Web Applications with WebTest: Configuration; Buttons; Forms; Links; Structuring and grouping test; Steps; XPath; Testing JavaScript; Scripting Tests; HTTP Cookies; HTTP Headers; PDFs; XML; SSL; Custom Steps; Click-O-Mat recorder; Data-driven tests
Other Web Testing Tools: jWebUnit, HtmlUnit, ITP, MaxQ, Jameleon, xhtmlunit
Database-driven Website Testing: SqlUnit (if required)
Testing Web Components: TagUnit, StrutsTestCase
Mock Objects Revisited: Mocking Web Components
Style and Metrics Revisited: web specifics
Coverage Revisited: coverage for Web Applications
Performance Testing Revisited: Grinder, WAS
Who should attend?
Software Developers, Testers, Designers, Technical Managers and Architects interested in testing Java & Java EE applications and web applications using any underlying technology.
Pre-requisites
Students should have previous programming experience (Java preferred) to understand the programming examples. A working knowledge of Servlets, JSPs and Tab Libraries is required for complete understanding of the Multi-Tier Web
examples. A basic knowledge of distributed computing (RMI, CORBA and/or Java EE) and a working knowledge of EJBs is required for complete understanding of the Multi-Tier Non-Web examples and labs.
examples. A basic knowledge of distributed computing (RMI, CORBA and/or Java EE) and a working knowledge of EJBs is required for complete understanding of the Multi-Tier Non-Web examples and labs.