Black-box and White-box Testing

About this Course

After completing this course, learners will have an understanding of a variety of black-box and white-box testing techniques. The learner will have put this understanding into practice, creating effective sets of test cases (called a test suite) to properly exercise software for defect finding. The learner will have examined requirements for testability, created an oracle for automated testing, assessed fault-finding effectiveness of test suites, and generated inputs using a variety of techniques.

After completing this course, you will be able to: – evaluate testability of requirements – define testable units within a program specification – apply black-box test input selection methods – specifically boundary-value analysis, fuzzing, and random selection – and select the method most-suited to achieve the given testing objective – assess the fault-finding effectiveness of a functional test suite using mutation testing – use category partitioning to develop automated functional tests (with Cucumber) based on a given software specification – create an expected-value oracle from a program description to use within the generated tests In order to do well in this course, you should have experience with an OOP language (like Java), have an IDE installed (e.g., Eclipse), and be familiar with testing terminology (see Intro to Software Testing course within this specialization). we also expect a familiarity with the Software Development Lifecycle and the context in which the testing stage sits. This course is primarily aimed at those learners interested in any of the following roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast.

WHAT YOU WILL LEARN

  • You will evaluate testability of requirements
  • You will define testable units within a program specification
  • You will select and apply black-box test input selection methods, including boundary-value analysis, fuzzing, and random selection
  • You will develop automated tests and test oracles for automated software verification.

SKILLS YOU WILL GAIN

  • Executing Tests
  • Software Testing
  • Writing Tests
  • Cucumber
  • Junit

Syllabus – What you will learn from this course

WEEK1

4 hours to complete

Module 1: Introduction

In this module, we will learn about the basics of testing adequacy, as well as the factors that influence testing effectiveness and how we quantify these metrics.

  • Introduction to Test Selection and Test Adequacy6m
  • What are Test Obligations?11m
  • Factors Influencing Test Effectiveness9m
  • Program Structure: Reachability and Observability8m
  • Mutation Testing Revisited5m
  • Program Structure and Fault Finding6m
  • Test Oracles9mOracles and Fault Finding8m

1 reading

Welcome to the course!5m

7 practice exercises

Introduction to Test Adequacy30mFactors Influencing Test Effectiveness30mProgram Structure: Reachability and Observability30mMutation Testing Revisited30mProgram Structure and Fault Finding30mTest Oracles14mOracles and Fault Finding30m

WEEK2

5 hours to complete

Module 2: Black and White-box Techniques

In this module, we will learn a variety of testing techniques that can be used in both white-box and black-box testing strategies.


5 hours to complete

Module 2: Black and White-box Techniques

In this module, we will learn a variety of testing techniques that can be used in both white-box and black-box testing strategies.

  • Partition Testing10m
  • Combinatorial Testing12m
  • Requirements Coverage7m
  • Introduction to White-Box Testing Techniques11m
  • Code Coverage Metrics: Terminology5m
  • Code Coverage Metrics: Statement Coverage4m
  • Code Coverage Metrics: Branch Coverage4m
  • Code Coverage Metrics: Decision Coverage3m
  • Code Coverage Metrics: MC/DC10m
  • MC/DC Example6m
  • Code Coverage Metrics: OMC/DC12m
  • Code Coverage Metrics: Boundary Value6m
  • Mutation Testing Strategies6m
  • Test Metrics and Test Suite Effectiveness9m

7 practice exercises

Partition Testing30mCombinatorial Testing30mRequirements Coverage30mCode Coverage Metrics: Statement Coverage30mCode Coverage Metrics: Branch Coverage30mCode Coverage Metrics: Decision Coverage30mCode Coverage Metrics: MC/DC30m

WEEK3

9 hours to complete

Module 3: Requirements-Based Testing

In this module, we focus on requirements-based testing. We review a set of requirements from a testing perspective and then move on to a more sophisticated way of writing requirements: structured requirements using the tool Cucumber.


9 hours to complete

Module 3: Requirements-Based Testing

In this module, we focus on requirements-based testing. We review a set of requirements from a testing perspective and then move on to a more sophisticated way of writing requirements: structured requirements using the tool Cucumber.

  • Writing Requirements for Testability3m
  • Bad Requirements for Testability2m
  • Writing Test Cases for Requirements3m
  • “Fixed” Requirements for Testability1m
  • Introduction to User Stories and Behavior-Driven Development8m
  • Cucumber and Gherkin: An Overview5m
  • Cucumber Demo5m
  • Cucumber and Gherkin: How Does It Work?9m
  • Regular Expressions 10112m
  • Regular Expressions and Testing with Cucumber3m

7 practice exercises

Writing Requirements for Testability30mBad Requirements for Testability30mWriting Test Cases for Requirements30mFixing Requirements for Testability30mAre These Requirements Testable?30mIntroduction to User Stories and Behavior-Driven Development30mRegular Expressions 10130m

WEEK4

7 hours to complete

Performing Black and White Box Testing with Cucumber

In this module, we go further in using the Cucumber toolset in order to implement a variety of testing strategies against two example projects.

  • Mapping User Stories: the Microwave Example7m
  • Installing Cucumber and Configuring Eclipse Project10m
  • Creating Gherkin Scenarios and Step Definitions11m
  • Using Lists10mUsing Data Tables19m
  • Working with Scenario Outlines and Examples6m
  • Cucumber and Code Coverage12m