Course Description

This 2-day Automated Software Testing training course provides an opportunity to come to grips with test automation by combining a discussion of automation concepts with practical demonstrations of test automation tools.

The demonstrations in this course are all based on fully featured, open source, and “freeware” tools. Participants are able to easily acquire and experiment with the tools after the course. This ensures that when the time comes to evaluate and select a proprietary tool, participants will be well prepared with an in-depth understanding of the role of automation tools, as well as their inherent strengths and weaknesses.

Many organisations would like to automate some or all of their software testing tasks. However, uncertainty about where to start and the high cost of proprietary testing tools can often hold them back. This course will begin to provide some of the answers.

Course outcomes include:

  • an understanding of the strengths and weaknesses of test automation
  • encouragement to develop a strategy prior to acquiring a test
  • automation tool
  • preparation for the evaluation and selection of test automation tools
  • a basis for ongoing experimentation and learning following the course.

 

Pre-requisites

Some knowledge and experience with traditional testing techniques for information systems software.

 

Who is this course for?

This course is ideal for Process Engineers, Software Engineering Process Group (SEPG) Staff, Methodologists, Process Improvement Staff, Software Development Managers, Software Engineers, Developers, Requirements Engineers, Requirements Analysts, Test Managers, Test Engineers, Testers, Quality Assurance Staff.

 

Course content

Testing Concepts & Definitions

Cause of Software Failures
Verification and Validation
Test Objectives
Expected Test Outcome
Test Levels
Test Activities
Project vs. Product Life Cycle

Introduction to Automated Software Testing

What is Automated Software Testing?
Why Automate Testing?
Automated vs. Manual Testing
Automation Drivers
Reduction of Testing Effort and Cost
Better Use of Resources
Improved Development Life Cycle
Achieves What Manual Testing Can’t
Improves Accuracy of Tests
Two Compelling Drivers For Test Automation
Business Case For Automated Testing
Benefits of Automated Testing
Cost of Automated Testing
Test Automation as an Investment Decision
Automation Risk Factors
Test Automation Myths
Test Automation Tools
Categories of Test Automation Tool
Selecting a Tool
Identifying Tool Requirements

Automation Strategies

Capture/Replay
The Capture/Replay Approach
Problems With Capture/Replay
Data-Driven Automation
Data-Driven Testing
Control and Logging
Problems With Data-Driven Automation
Keyword-Driven Automation
Keyword-Driven Testing
Parsing the test Cases
The Role of Fixtures
Connecting Test Scripts to the System Under Test
Via the User Interface
Using a Dedicated Test API
Test Oracles
The Test Oracle Problem
Automating Test Oracles
Model-Based Testing
Specification-Based vs. Model-Based Testing
Role of Model-Based Testing in Automation
Hybrid Automation Strategies
Developing an Automation Strategy
Common Errors
Planning the Development of Test Scripts

Test Harnesses

Test Harness Concepts
Test Harness Demonstration

Static Tools

Test Case Generators
Test Data Generators
Data Comparators
Static Code Analysis
Static Tools Demonstration

Code-Driven Testing

Unit and Integration Test Strategies
Top-Down Unit/Integration Testing
Bottom-Up Unit/Integration Testing
Why Use Drivers and Stubs?
Isolation Unit Testing
xUnit Test Frameworks
Test Doubles
Dummy and “Fake” Objects
Stubs
Mock Objects
xUnit Demonstration

Testing GUI Systems

User Interface-Based Testing
API-Based Testing
GUI Testing Tools Demonstration

Testing Web-based Systems

Capture/Replay
Capture
– Browser Plug-in
– Proxy
Replay
– Browser Plug-in
– Driver
Testing Via the Browser User Interface
Browser Automation
API-Based Testing
Scripting Web Tests
Testing JavaScript and AJAX
Web Testing Tools Demonstration

Testing Non-Functional Requirements

Large Number of Tests or Testers
Concurrency Testing
Performance Testing
Reliability Testing
Repetitive Tests
Compatibility Testing
Recovery Testing
Installation Testing
Localisation Testing
Usability Testing (verification aspects)
Security Testing
Non-Functional Testing Tools Demonstration

Testing Not Suitable for Automation

Usability Testing (validation aspects)
Exploratory Testing
Maintainability
Portability