ASERT LOGO Advanced Software Engineering, Research and Training
Leading-Edge Courseware, Highly-Skilled Experienced Instructors
    TOPICS

JV260: Java and J2EE Open Source Testing Tools (3 days)

 
Common
Single-Tier
Multi-Tier Non-Web
Multi-Tier Web
 

JV261: Unit Testing with Java (1 day)

 
Common
Single-Tier
   
 

JV262: Testing J2EE Systems (2 days)

 
Common
 
Multi-Tier Non-Web
Multi-Tier Web
 

JV263: Testing Web Applications (1 day)

 
Common
   
Multi-Tier Web

Course Overview

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. Properietary tools also don't always focus on testing the open source technologies being used by more and more developers.

These courses outline the available open source tools for testing traditional, web-oriented and component-oriented Java and J2EE 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 J2EE systems.

Audience

Software Developers, Testers, Designers, Technical Managers and Architects interested in testing Java & J2EE 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 J2EE) and a working knowledge of EJBs is required for complete understanding of the Multi-Tier Non-Web examples and labs.

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 ...

Course Content - Common Topics

  • Testing Concepts: Brief Review (if required)
  • Testing Infrastructure: Helpful tools including Ant (if required)

Course Content - Single-Tier Topics (JV260, JV261)

  • Unit Testing with JUnit:
    • TestCase blueprint
    • Test runners and test lifecycle
    • Test organisation
    • 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

Course Content - Multi-Tier Non-Web Topics (JV260, JV262)

  • Distributed Unit Testing: JUnitEE, Cactus
  • Database Testing: SqlUnit, DbUnit, P6Spy, Sql Profiler
  • Mock Objects Revisited: Mocking EJBs, JMS, etc.
  • Style and Metrics Revisited: J2EE specifics
  • Coverage Revisited: coverage for J2EE applications
  • Client Functional Testing: Abbot, Jemmy
  • Performance Testing: JMeter, HPjmeter

Course Content - Multi-Tier Web Topics (JV260, JV262, JV263)*

  • 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

* Applicable to .Net, PHP and J2EE systems (and other dynamic web content systems such as content management systems)