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

Highlights

  • 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

Reviews

Stars 4.41644 Ratings

"Very good and interesting material on coverage; a lot to think about. Very interested in Binder and material there. Very good in having the quantitative numbers and examples. The references and guidance are invaluable. There have been a number of 'eye openers'. Really has been enjoyable." -- Jim Roberts, ARUP Laboratories

"I've been to a lot of professional/technical training. This was far and away the best. Filled with valuable learnings from start to finish, well paced, and just the right balance of presentation, lab, and discussion. Thank you!" -- Lane Galloway, POP

"Considering the requirements of my group to do unit testing during this release cycle, the course gave me a solid understanding of how to approach unit testing. Glad I took the course." -- Clifton Epps, ViaSat

"Learning the best practices for software testing where everything I've been doing in the past has been largely self-taught. Melvin was very helpful when answering my questions." -- Aaron Deming, Teledyne CETAC Technologies

"Very good and interesting material on coverage; a lot to think about. Very interested in Binder and material there. Very good in having the quantitative numbers and examples. The references and guidance are invaluable. There have been a number of 'eye openers'. Really has been enjoyable." -- Jim Roberts, ARUP Laboratories

"Clear and engaging examples that complemented the course material. TDD exercises were really fun to do and learn from!" -- Mikhair Atavine, Demonware

"Most Valuable: Formalizing the testing knowledge that I've acquired by experience. Now I see why I thought those were good tests. I can add more good tests and avoid redundant/useless ones." -- Khouri Giordano, Nikon

"Excellent explanation. You are the best instructor I’ve ever met!" -- Joshua Kim, Senior Software Engineer, LoopNet

"Great course; Melvin was a solid instructor." -- Jeffrey Harker, Microsoft

"I like how the class is organized--it makes the principles presented very convincing. I am going to apply them in my design to have testability in mind." -- Catherine Li, CareFusion

"I really appreciated the review of all techniques, and the importance the trainer gives to applying the knowledge to our company's case... Overall, this is the most useful training I had in years!" -- Guillaume Billet, Tom Tom

"Instructor was very good, thorough, communicated well." -- Robert Hope, Technical Manager, LoopNet

"Hands-on exercises were great--broke up the lecture, helped maintain attention. " -- Allen Snook, Philips

"The class really provided me with information that will allow us to be more systematic in our unit testing. Thanks again." -- Cindy Johnson, Medtronic

"I would recommend for every developer." -- Quan Nguyen, DRS Technologies

"Very well presented, both content and pace. " -- Greg Hightower, Tideworks

"Excellent material, using studies to reinforce importance and value of the discussed ideas." -- Travis Milum, McKesson Medical Imaging

Benefits

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