Software Testing Center  - About Us, Contacting Us

Software Testing Center logo

Testing Client/Server Applications Course Outline

Software Testing Center - Classes

Course Outline

The Client/Server Edition of Software Testing In The Real World
gives you all the testing techniques in the standard class, plus the special techniques necessary for dealing with client/server systems, including Web systems.

Software Testing In The Real World

What works - and why

What doesn't work - and why

What can go wrong

Testing Client/Server Applications Is Different Because:

Both the data and the processing are distributed

It's hard to simulate the complex interactions that occur

New problems arise from timing - e.g. race conditions

We need to predict performance and scalability by doing load testing on a small model

The Basics and the Terminology

Black Box vs. Glass Box Testing

Why you can't test for everything

How you can still test well anyway

The difference between getting Code Coverage, Path Coverage, and other measures of completeness

Risk Driven Testing

How Risk Prioritization keeps testing on track

Using Impact and Likelihood to determine Risk

How to get the Risk numbers for your project and how to use them to prioritize testing

How Bugs Get Missed

Example: Lots of tests, but a major bug is still missed

Test cases that would have found this bug, and why

Getting traction on the problem:
Systematic test case design techniques

The Key: Designing the Right Test Cases

What a good test case looks like

Selecting outputs for testing, based on Risk

What to use as inputs for the test case

All Inputs Are Not Alike

Do you have to test all combinations of inputs?

The three types of inputs

Which two types are trivial to test - and how to handle the type that counts

Reducing the Number of Test Cases - New Techniques

Making each test case count

Reduction by using Equivalence Classes in an new way

How to reduce the cases by exploiting dependencies

How to spot redundant tests even though they look completely different

Finding the Tough Bugs

Using 'State of The World' variables to prevent surprises

How to limit side effects by using Hidden Outputs

Controlling unexpected 'Emergent Behavior' created by feedback loops

What To Do When The Output is an Action

The 'SEND msg TO userid' example

How to tell whether the test worked right

How many tests you need, and what they are

How To Handle Complex Sets of Conditions

Introduction to using Decision Tables in testing

A better way to design Decision Tables

How to subdivide Decision Tables to limit complexity

What To Do When the System's Output is its Behavior

Easier testing by using a States & Events model

What the test cases are, with examples

A new technique that keeps the number of States small and manageable

How To Handle Interactions in Client/Server Systems

How to interpret lack of response to a request

Multiple processors: Who's in charge?

How to test for partial updates and timing problems

What causes 'emergent behavior' and how to coax it to appear during testing (the RASHR technique).

What To Do When You Don't Have All The Pieces

Using simple Stubs and Drivers to fill in for missing parts

How to simulate network loading

How to easily create other effects: locked records, timeouts, unavailability of servers, etc.

Scalability - The Critical Issues

What will happen with more users?

How systems bog down - and why they crash from load

The three levels of system loading, and meaning of each

How to tell what kind of fix you need:
      (1) more of the same (good, it scales up)
      (2) architectural redesign (bad, it doesn't)

How To Do Performance Testing

Why performance prediction is so hard

Ways to simulate system loadingwhich ones work

The keygetting totally realistic simulation test data

What tools and services are available

Five pitfalls to avoid, with examples

Mapping Tests to Requirements

Breaking the requirements down for testing

Requirements coverage based on Risk

What to do if you don't have any (decent) requirements

The Testing Process

The realities: time pressure, getting along with developers

We know it won't be perfect - but it can be very good

Fatal Error: The Caboose

How To Do Each Type of Testing

Unit Testing

Integration Testing - an innovative new approach

System Testing

A New Approach: CATS

Beating the combination problem

How constrained arrays minimize tests of many factors

Results at Bell Labs on real systems

How to do CATS testing yourself

Testing Tools

What's available

How each type of tool works

What each tool can - and can't - do for you

(Includes coverage analyzers, automated capture / playback and script-driven regression testing tools, test management tools, and load / performance testing tools)

Walkthroughs and Inspections

What's the difference?

How to perform them effectively

The five pitfalls to avoid

Metrics

How much testing is enough?

Metrics to tell how we're doing

The one best metric for measuring testing effectiveness

What To Put In The Client/Server Test Plan

What is a Test Plan?

The critical sections that must be in the Plan

A complete client/server sample test plan with all the important sections filled out, and a template you can use for your own client/server test plan

The Politics of Testing

There's never enough time - how to get more

Avoiding getting stuck with Mission Impossible

How to handle technical people well and get their cooperation as part of the solution

Resources

Glossary

Recommended Books

Web resources

Who Should Attend:

This course is valuable for quality assurance and testing staff, programmers, systems analysts, and project managers.

 

How It Works

How To Enroll

Contacting Us

Home

Copyright © 1998 - 2005 by The Testing Center. All rights reserved.
Images digitally watermarked.