Developer testing is a critical component of software development--yet studies show that developer testing is typically inefficient and ineffective. Significant developer effort is spent without finding defects that should have been found. Learn how to be more efficient and effective by achieving higher test coverage and how to make the software itself more testable. See how to plan and carry out an efficient and effective developer testing strategy. Avoid common testing pitfalls, and learn to determine how much developer testing is enough.

2-day seminar


  • Core Concepts: Test cases, test coverage, types of testing, test tools and frameworks
  • Functional Testing
  • Structural Testing
  • Test Planning
  • Test Driven Development
  • Writing Testable Code
  • Testing the Tests
  • Useful Test Tools


You will be able to develop optimal test cases--both functional (black box) and structural (white box).

Who Should Attend

This seminar is intended primarily for software engineers. Software leads, QA leads, and test professionals who want to learn testing from the developer's perspective are also encouraged to attend.

Core Concepts

  • Test case, test set, test suite
  • Positive and negative test cases
  • Functional and structural testing
  • Unit, integration, system, acceptance, regression testing
  • Test coverage
  • Test tools and frameworks
  • Testing as risk mitigation

Functional Testing

  • Testing from requirements
  • Requirements coverage
  • Input domain analysis
  • Output domain analysis
  • Equivalence class partitioning
  • Equivalence class coverage
  • Boundary value analysis
  • Boundary value coverage
  • Combinatorial analysis
  • All pairs coverage

Structural Testing

  • Control flow analysis
  • Statement coverage
  • Decision (branch) coverage
  • Condition-decision coverage
  • Multiple condition coverage
  • Modified condition/decision coverage
  • Path coverage
  • Loop coverage
  • Static Analysis
  • Cyclomatic complexity
  • Fan in
  • Fan out

Test Planning

  • Determining the ROI of testing
  • Cost / benefit of automating tests
  • Cost / benefit of unit testing
  • Cost / benefit of integration testing
  • Cost / benefit of system testing
  • Cost / benefit of designing for testability
  • Introduction to risk-based testing

Unit testing tools and practices

  • Unit testing frameworks
  • Stubs and drivers
  • Test doubles and mock objects
  • Data driven tests

Test driven development

  • Process of test driven development
  • Benefits of test driven development
  • Costs of test driven development
  • Pitfalls of test driven development

Writing testable code

  • Design by contract
  • Minimize logical complexity
  • Functional decomposition
  • Robustness and correctness
  • Refactoring
  • Design patterns
  • Dependency injection
  • Alternatives to inheritance

Testing the tests

  • Peer Reviews
  • Defect seeding
  • Mutation testing

Helpful tools

  • Control-flow graph generators
  • Data-flow graph generators
  • Test input generators
  • Data driven test frameworks
  • Behavior driven test frameworks
  • Coverage analyzers
  • Static metrics analyzers
  • Mock object frameworks
  • Mutation tools
  • Dependency structure matrix
  • Cause effect graph

Steve Tockey

Steve Tockey is the Principal Consultant at Construx Software. During more than three and a half decades in the software industry, he has worked as a programmer, ...

Melvin Perez-Cedano

Melvin Perez-Cedano, MSIT-SE, CSDP, is a Senior Fellow at Construx Software where he focuses on software design, software construction, software process, and configuration ...