How to Break Software: Robustness Testing Unleashed

This three-day course enables new and experienced testers to tune their existing software breaking skills into more powerful resources for the project team, while examining the software targets more efficiently.

Upcoming Classes

Dates
Mode
Location
Event
Venue
Call to Schedule
Anytime
Virtual Classroom
Your Location
Anywhere
Select a learning mode button (Public, On-Site, etc.) for specific class details and fact sheet.
Description
  • Learn new ways to analyze software and systems to find critical bugs faster
  • Add a variety of methods for evaluating software stability and resilience to your toolbox
  • Experiment with turning random guessing into targeted “attacks” to increase efficiency
  • Practice using techniques on real software to explore how and when to apply them
  • Build a strategy in class and find real bugs to take back to your project team

Do you test features or look for bugs? Learn the difference.
This course addresses one of the most important questions in software testing: How will the system behave in production? Will it be stable under normal usage? Where are the weaknesses? When is it likely to fail? How might it fail? Most often test teams incorporate random negative testing to find robustness bugs, but a lot of those tests yield information only when they find a problem. Transforming negative tests into targeted attacks tells you something very valuable whether they “pass” or “fail”—allowing you to evaluate software’s strengths and weaknesses with the same tests.

How to Break Software: Robustness Testing Unleashed enables new and experienced testers to tune their existing software breaking skills into more powerful resources for the project team, while examining the software targets more efficiently.

Incorporating Robustness Testing Efficiently and Effectively
It’s not enough to learn about new techniques if you aren't able to apply them successfully on projects. Negative testing has a role to play on every project, but to what degree and for achieving what goals? During this course, various class activities and hands-on sessions will be used to explore and experiment with these techniques from all vantage points including requirements and software analysis, test planning, test design, test execution, results reporting, and bug advocacy.

How to Break Software: Robustness Testing Unleashed helps testers find new ways to engage the stakeholder and development teams about building, testing, and deploying resilient and robust software. And when test teams can operate in this “trusted advisor” role, they are able to tune testing activities more effectively.

Who Should Attend
While primarily framed for testers and test leads of any experience level, anyone involved in software development who wants to understand more about delivering stable and robust software will benefit from this course. Basic knowledge of software operations is assumed, and some exposure to a programming or scripting language is helpful, but not required.

Please note: A laptop is required for this course. Some applications should be installed or accessible via Internet for hands-on sessions.

Questions? 888.268.8770 [email protected]
Course Outline

Introduction
Context factors: determining goals and objectives for testing*
Defining robustness and measurement criteria*
Breaking software: outcomes*

Analyzing Software Failures
Failures and root causes: software’s capabilities and dependencies*
- Inputs, outputs, stored data, computation, file system, operating system, dependent software
Overview of fault models*
Hunting for failures: sources for research*
- Quick, cheap and easy ideas: scanning for problems

Breaking Software Methods
Negative testing vs. Breaking software
Random strikes*
Exploratory testing for software breaking and robustness evaluation*
Bug safari: using generic attacks*
- Walkthrough of James Whittaker’s 17 user interface attacks (book: How to Break Software)
- Overview of file system, operating system, and dependent software attacks
Error guessing for robustness: designing attacks*
Fault injection: concept and usage

Implementing Robustness Testing on Projects
Identifying barriers and challenges*
- Objection handling and explaining value
Opportunities during requirements and design reviews*
Targeting robustness in test planning and design: tuning for risk*
Robustness for unit, integration, and system-level testing: something for everyone!*
Test execution: aiming for robustness*
- Ideas for scripted testing, regression testing, automated testing
Test results reporting: telling the story of robustness*
Bug reporting: selling a robustness bug*

Reviewing the Results: Next Steps
Reviewing your plan: feedback session*
What are your takeaways?*
- Strategies, test ideas, bug reports, insights, etc.
What else do you need to be successful?
What are the next steps?

* interactive discussion, individual/group work, or hands-on exercise

Dates
Mode
Location
Event
Venue
Call to Schedule
Anytime
Virtual Classroom
Your Location
Anywhere
Course Duration: 3 Days
Description
  • Learn new ways to analyze software and systems to find critical bugs faster
  • Add a variety of methods for evaluating software stability and resilience to your toolbox
  • Experiment with turning random guessing into targeted “attacks” to increase efficiency
  • Practice using techniques on real software to explore how and when to apply them
  • Build a strategy in class and find real bugs to take back to your project team

Do you test features or look for bugs? Learn the difference.
This course addresses one of the most important questions in software testing: How will the system behave in production? Will it be stable under normal usage? Where are the weaknesses? When is it likely to fail? How might it fail? Most often test teams incorporate random negative testing to find robustness bugs, but a lot of those tests yield information only when they find a problem. Transforming negative tests into targeted attacks tells you something very valuable whether they “pass” or “fail”—allowing you to evaluate software’s strengths and weaknesses with the same tests.

How to Break Software: Robustness Testing Unleashed enables new and experienced testers to tune their existing software breaking skills into more powerful resources for the project team, while examining the software targets more efficiently.

Incorporating Robustness Testing Efficiently and Effectively
It’s not enough to learn about new techniques if you aren't able to apply them successfully on projects. Negative testing has a role to play on every project, but to what degree and for achieving what goals? During this course, various class activities and hands-on sessions will be used to explore and experiment with these techniques from all vantage points including requirements and software analysis, test planning, test design, test execution, results reporting, and bug advocacy.

How to Break Software: Robustness Testing Unleashed helps testers find new ways to engage the stakeholder and development teams about building, testing, and deploying resilient and robust software. And when test teams can operate in this “trusted advisor” role, they are able to tune testing activities more effectively.

Who Should Attend
While primarily framed for testers and test leads of any experience level, anyone involved in software development who wants to understand more about delivering stable and robust software will benefit from this course. Basic knowledge of software operations is assumed, and some exposure to a programming or scripting language is helpful, but not required.

Laptop RequiredPlease note: A laptop is required for this course. Some applications should be installed or accessible via Internet for hands-on sessions.

Questions? 888.268.8770 [email protected]
Course Outline

Introduction
Context factors: determining goals and objectives for testing*
Defining robustness and measurement criteria*
Breaking software: outcomes*

Analyzing Software Failures
Failures and root causes: software’s capabilities and dependencies*
- Inputs, outputs, stored data, computation, file system, operating system, dependent software
Overview of fault models*
Hunting for failures: sources for research*
- Quick, cheap and easy ideas: scanning for problems

Breaking Software Methods
Negative testing vs. Breaking software
Random strikes*
Exploratory testing for software breaking and robustness evaluation*
Bug safari: using generic attacks*
- Walkthrough of James Whittaker’s 17 user interface attacks (book: How to Break Software)
- Overview of file system, operating system, and dependent software attacks
Error guessing for robustness: designing attacks*
Fault injection: concept and usage

Implementing Robustness Testing on Projects
Identifying barriers and challenges*
- Objection handling and explaining value
Opportunities during requirements and design reviews*
Targeting robustness in test planning and design: tuning for risk*
Robustness for unit, integration, and system-level testing: something for everyone!*
Test execution: aiming for robustness*
- Ideas for scripted testing, regression testing, automated testing
Test results reporting: telling the story of robustness*
Bug reporting: selling a robustness bug*

Reviewing the Results: Next Steps
Reviewing your plan: feedback session*
What are your takeaways?*
- Strategies, test ideas, bug reports, insights, etc.
What else do you need to be successful?
What are the next steps?

* interactive discussion, individual/group work, or hands-on exercise

Class Schedule
Sign-In/Registration 7:30 - 8:30 a.m.
Morning Session 8:30 a.m. - 12:00 p.m.
Lunch 12:00 - 1:00 p.m.
Afternoon Session 1:00 - 5:00 p.m.
Times represent the typical daily schedule. Please confirm your schedule at registration.
Class Fee Includes
• Tuition
• Course notebook
• Letter of completion
Instructors
Dawn Haynes
PerfTestPlus, Inc.

Questions?

On-Site Training

Let us bring the training directly to you! Choose from over 60 courses.

Combine World-Class Training and

Certification with a Conference

Maximize Your Learning Potential

Agile Dev Conference logo

Better Software Conference logo

Devops Conference logo

STAR Conference logo