This course covers the principles and processes of validation, verification, and integration for software, and software-intensive systems, including cyber-physical systems. The topics include test automation, testing metrics, test coverage, integration testing, state space exploration for cyber-physical systems, software assurance, and software reliability. Students in this course will learn the principles, tools, applications, and processes that efficiently integrate software elements to meet customer requirements and needs.
In this module, you will explore the fundamental drivers behind modern software testing practices and understand why testing has evolved from a simple debugging activity into a critical discipline. You will examine how software's pervasiveness across critical infrastructure, financial systems, and safety-critical applications has transformed user expectations and market dynamics, making software failures both intolerable and potentially catastrophic. You will also learn the distinction between verification, validation and the different types of software failures.
What's included
2 videos23 readings1 assignment
Show info about module content
2 videos•Total 4 minutes
Course Overview•1 minute
3 Domains•2 minutes
23 readings•Total 121 minutes
Course Introduction•2 minutes
Meet Your Faculty•2 minutes
Syllabus - Software Testing for Engineers Part 1•10 minutes
Academic Integrity•1 minute
Introduction and Motivation•2 minutes
Software Prevalence•6 minutes
Evolving Landscape•3 minutes
Testing in the 21st Century•2 minutes
Changing Market, User, and Safety Necessities•4 minutes
Why Do We Test Software?•3 minutes
The Real Cost of Software Failures•4 minutes
Types of Software Bugs•10 minutes
Software Faults, Errors and Failures•5 minutes
Verification vs. Validation•10 minutes
What is Software Quality?•10 minutes
What is Good Software?•5 minutes
Types of Software Defects•5 minutes
Differing Expectations or Visions•10 minutes
Nine Causes of Software Errors•5 minutes
Specified vs Desired vs Implemented Input•4 minutes
Example 1: Personal Information Form•5 minutes
Example 2: Credit Card Numbers•5 minutes
Test Process Maturity Levels•8 minutes
1 assignment•Total 30 minutes
Module 1 Quiz•30 minutes
Testing Processes and Automation
Module 2•1 hour to complete
Module details
In this module, you will explore the organizational structure and processes that support effective software testing in modern development environments. You will examine the distinct roles various stakeholders play in testing—from developers conducting unit tests to QA professionals orchestrating comprehensive test strategies—and understand how these roles contribute to software quality. This module introduces other concepts, such as test-driven development and regression testing. This module also includes your first lab, where you gain experience with unit testing using Junit.
What's included
12 readings1 assignment
Show info about module content
12 readings•Total 44 minutes
Testing Software•2 minutes
Who Tests Software•4 minutes
Levels of Testing•5 minutes
Regression Testing•8 minutes
Introduction to Test Automation•2 minutes
Cost Benefits of Test Automation•2 minutes
Test Driven Development•2 minutes
Test-Driven Development in Agile Projects•10 minutes
When to Avoid Automated Testing•2 minutes
Test Case Verdicts•3 minutes
When is JUnit Appropriate•2 minutes
More Information•2 minutes
1 assignment•Total 30 minutes
Module 2 Quiz•30 minutes
Fundamentals of Test Coverage
Module 3•2 hours to complete
Module details
In this module, you will learn to measure and evaluate test coverage using both black box and white box testing techniques, examining software from the perspective of external behavior as well as internal code structure. Through equivalence testing and boundary value analysis, you will discover how to strategically partition infinite input spaces into manageable test cases that provide meaningful coverage. The module will guide you through the advantages and limitations of both black box and white box approaches, helping you understand when each method is most appropriate and how they complement each other in comprehensive testing strategies. By the end of this module, you will be able to identify equivalence classes, select boundary values, and evaluate test coverage using line-based, decision-based, and method-based metrics.
What's included
8 readings1 assignment1 discussion prompt
Show info about module content
8 readings•Total 53 minutes
Test Coverage•1 minute
Test Coverage Example•5 minutes
Black and White Box Testing•5 minutes
Black Box Testing: Equivalence Testing•8 minutes
Equivalence Testing Example•8 minutes
Black Box Testing: Boundary Testing•6 minutes
Advantages and Disadvantages of Black Box Testing•10 minutes
White Box Testing•10 minutes
1 assignment•Total 30 minutes
Module 3 Quiz•30 minutes
1 discussion prompt•Total 20 minutes
How to Test a Self-Driving Car•20 minutes
Control Flow Graphs
Module 4•4 hours to complete
Module details
In this module, you will explore Control Flow Graphs (CFGs), a powerful white box testing technique that allows you to analyze the internal structure of your code to design comprehensive test cases. While previous modules focused on black box strategies like equivalence partitioning and boundary testing, CFGs shift your attention inward—transforming source code into visual graph representations that reveal all possible execution paths through a program. You'll learn to construct CFGs by systematically labeling statements and decisions, then use these graphs to identify feasible test paths, analyze coverage, and evaluate the thoroughness of your testing strategy. This approach is particularly valuable when working with complex code structures where the number of potential paths can be infinite, requiring you to apply strategic path selection criteria to ensure effective test coverage. By the end of this module, you'll be equipped to bridge the gap between theoretical testing concepts and practical implementation through hands-on work with industry-standard coverage tools.
What's included
16 readings1 assignment1 app item
Show info about module content
16 readings•Total 180 minutes
Introduction to Control Flow Graphs•2 minutes
Program Statements•1 minute
CFG Steps•2 minutes
Concrete Example•15 minutes
Construct a Control Flow Graph•10 minutes
Create a Sub-Path Unit of Test Coverage•5 minutes
Extend Sub-Path to Complete Path•5 minutes
Solve Conditions•5 minutes
Program Path•2 minutes
Exercise: Construct a CFG•60 minutes
Exercise Answer for Comparison•30 minutes
CFG Path Analysis•2 minutes
Path Selection Criteria•6 minutes
Infeasible Paths•5 minutes
Examples of Possible Coverage Measures•10 minutes
Analyze Paths for the CFG•20 minutes
1 assignment•Total 30 minutes
Module 4 Quiz•30 minutes
1 app item•Total 6 minutes
Construct Control Flow Graph•6 minutes
State Machine Based Coverage
Module 5•4 hours to complete
Module details
In this module, you will explore state machine-based testing, a powerful approach that allows you to formally model and test the behavior of software systems. You'll begin by reviewing UML State Machine fundamentals, learning how to construct state machines using basic elements like states, transitions, events, and actions, then progress to advanced modeling features, including guard conditions, entry/exit actions, do activities, nested states, history states, and concurrency.
Once you've mastered state machine modeling, we shift to focus on leveraging these models as testing tools—learning how to apply state machine coverage metrics such as state coverage, transition coverage, and path coverage to measure the thoroughness of your test suites. Finally, you'll explore how to classify faults in state-based systems using eight distinct categories, helping you systematically identify whether discrepancies arise from implementation errors, specification problems, or test design issues. By the end of this module, you'll be equipped to create formal behavioral models that can drive comprehensive, measurable testing strategies.
What's included
19 readings1 assignment1 app item
Show info about module content
19 readings•Total 192 minutes
Outline•1 minute
Basic State Machine Modeling•5 minutes
Entry and Exit Actions•5 minutes
Guard Condition•5 minutes
Transition Actions•5 minutes
Do Activity•5 minutes
Advanced State Machine Modeling•1 minute
Nested States•5 minutes
History State•5 minutes
Concurrency•5 minutes
Flattening State Machines•5 minutes
Exercise: Develop a State Machine Model for Aliens in Computer Game•30 minutes
Exercise Solution: Develop a State Machine Model for Aliens in Computer Game•20 minutes
Exercise: Flatten the Alien State Machine Model•30 minutes
Exercise Solution: Flatten the Alien State Machine Model•20 minutes
Code Coverage: State-Based Testing•2 minutes
State Machine Test Coverage Metrics•5 minutes
Exercise: Apply State Machine Coverage Metrics•30 minutes
Potential Faults in State-Based Systems•8 minutes
1 assignment•Total 30 minutes
Module 5 Quiz•30 minutes
1 app item•Total 10 minutes
State Machine Fault Classification•10 minutes
Use Case and Scenario Based Coverage
Module 6•7 hours to complete
Module details
In this module, you will explore use case- and scenario-based testing, learning how to leverage requirements-level models to drive comprehensive test coverage strategies. You'll begin by mastering use case modeling fundamentals, understanding how to identify actors, define use cases, and construct use case diagrams that capture the functional requirements of a system from the end user's perspective. You'll learn to work with, include, and extend relationships, define system boundaries, and distinguish between what's inside and outside your system's scope. Moving beyond basic modeling, you'll dive into the elaboration phase where you'll transform high-level use cases into detailed scenarios that document preconditions, postconditions, main flows, and alternative flows—capturing all the ways users interact with your system, including error conditions and exceptions. You'll then learn to convert these detailed textual scenarios into activity diagrams, which provide visual, graph-based representations of complex workflows. Finally, you'll apply graph coverage criteria to these models, using node coverage, edge coverage, and scenario testing to ensure your test suite thoroughly exercises the system's behavior. By the end of this module, you'll understand how to bridge the gap between requirements and testing, using use case models and activity diagrams not just as documentation tools but as powerful frameworks for defining acceptance tests and measuring test completeness.
What's included
12 readings1 assignment
Show info about module content
12 readings•Total 390 minutes
Introduction to Use Case Modeling•20 minutes
Key Concepts•4 minutes
Relationship Types•5 minutes
Developing Effective Use Cases•8 minutes
Simple Use Case Example•8 minutes
Develop a Use Case Model•20 minutes
Elaboration Phase (Use Case Scenarios)•10 minutes
Construction of Activity Diagrams•10 minutes
Covering Activity Graphs•3 minutes
Summary of Use Case Testing•2 minutes
Part 1•120 minutes
Part 2•180 minutes
1 assignment•Total 30 minutes
Module 6 Quiz•30 minutes
Logic Based Coverage
Module 7•2 hours to complete
Module details
In this module, you will explore logic-based testing, a rigorous approach to analyzing and testing the logical expressions embedded throughout your software systems. You'll learn to dissect predicates (expressions that evaluate to boolean values) into their component clauses and understand how logical operators like AND, OR, and NOT combine these clauses into complex decision logic. Starting with basic coverage criteria, you'll master Predicate Coverage, which requires testing each predicate as both true and false, and Clause Coverage, which ensures each individual clause is exercised in both states. You'll discover the limitations of these approaches—notably that Clause Coverage doesn't guarantee Predicate Coverage—leading you to explore Combinatorial Coverage, which tests all possible combinations of clause values but comes with an exponential cost. To address this practical challenge, you'll learn about active (or major) clauses—clauses that actually determine a predicate's value—and advanced coverage criteria that focus testing efforts on these critical elements. By the end of this module, you'll be equipped with a sophisticated toolkit for ensuring thorough testing of the decision logic that drives software behavior, particularly essential in safety-critical systems where regulatory compliance may legally mandate logic coverage.
What's included
14 readings1 assignment1 app item
Show info about module content
14 readings•Total 83 minutes
Introduction•3 minutes
Logic Predicates and Clauses•10 minutes
Example and Facts•8 minutes
Formal vs Informal Expressions•8 minutes
Logic Coverage Criteria•6 minutes
Predicate Coverage•10 minutes
Clause Coverage•8 minutes
Limitations with Predicate Coverage and Clause Coverage•2 minutes
Founded in 1898, Northeastern is a global research university with a distinctive, experience-driven approach to education and discovery. The university is a leader in experiential learning, powered by the world’s most far-reaching cooperative education program. The spirit of collaboration guides a use-inspired research enterprise focused on solving global challenges in health, security, and sustainability.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I purchase the Certificate?
When you purchase a Certificate you get access to all course materials, including graded assignments. Upon completing the course, your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.