This course is best suited for software engineering students and professionals who wish to develop expertise in systematic testing methodologies and quality assurance practices to ensure reliable software systems.

Software Testing for Engineers Part 2

Details to know

Add to your LinkedIn profile
April 2026
7 assignments
See how employees at top companies are mastering in-demand skills

There are 7 modules in this course
In this module, you will learn about the Category-Partition Method, a systematic approach to automatically generating comprehensive test cases and test data for functional testing. You'll learn to tackle one of testing's fundamental challenges: selecting an appropriate subset from the practically infinite input space that most programs accept, including both valid and invalid inputs. Through a structured six-step process, you'll learn to identify independently testable features (typically individual methods or functions), decompose parameters into meaningful categories that capture different aspects worth testing, partition those categories into interesting choices, including boundary values and edge cases, and identify constraints that eliminate impossible or meaningless combinations. You'll discover how to produce language-independent test case specifications (test frames) that can later be instantiated into concrete test cases for multiple programming languages and platforms—enabling you to begin testing activities even before development starts. By the end of this module, you will learn an important method to automatically generate both test data and test cases.
What's included
1 video17 readings1 assignment
1 video•Total 1 minute
- Course Overview•1 minute
17 readings•Total 149 minutes
- Course Introduction•2 minutes
- Meet Your Faculty•2 minutes
- Syllabus - Software Testing for Engineers Part 2•10 minutes
- Academic Integrity•1 minute
- Introduction•3 minutes
- Category-Partition Method•2 minutes
- Demonstration Example•1 minute
- Step 1: Identify Testable Features•2 minutes
- Step 2: Identify Categories•8 minutes
- Step 3: Partition Categories into Choices•8 minutes
- Step 4: Identify Constraints Among Choices•10 minutes
- Step 5: Produce Test Case Specification•6 minutes
- Step 6: Generate Test Cases from Specifications•5 minutes
- Test Cases Generation (AC, EC, BC criteria)•6 minutes
- Exercise 1 - Positive Integer Search Problem•30 minutes
- Exercise 2 - Find Command Specification•45 minutes
- Reflections on the Category Partitioning Method•8 minutes
1 assignment•Total 30 minutes
- Module 8 Quiz•30 minutes
In this module, you will learn about Syntax-Based Testing, a powerful approach to systematically generating comprehensive test cases by formally defining input specifications using grammars. You'll learn to tackle one of testing's most sophisticated challenges: creating both valid and strategically invalid test inputs from complex, structured data spaces that traditional testing methods struggle to cover systematically. Through Backus-Naur Form (BNF) grammars and mutation operators, you'll learn to formalize any program input as a set of production rules, generate ground strings that represent valid test cases directly from these grammatical specifications, apply mutation operators to create both valid variants and intentionally invalid test cases. You'll discover how to extend these techniques beyond simple inputs to structured documents like XML and HTML, database queries, and API specifications. By the end of this module, you will master what is widely considered as the "gold standard" of testing effectiveness: mutation testing, which provides unparalleled rigor in evaluating both your test suite quality and your software's robustness against edge cases and malformed inputs.
What's included
1 video14 readings1 assignment
1 video•Total 7 minutes
- BNF•7 minutes
14 readings•Total 302 minutes
- Fundamentals•15 minutes
- Fundamentals Continued•5 minutes
- Introduction to BNF Grammars•30 minutes
- Using Grammars to Generate Strings•8 minutes
- Mutated and Unmutated Strings•10 minutes
- Mutated and Unmutated Derivations•10 minutes
- Grammar-based Testing & Coverage Criteria•6 minutes
- Questions About Mutation•4 minutes
- Grammars•6 minutes
- BNF Grammars and Finite Automata•4 minutes
- Grammar Mutation Coverage Criteria•10 minutes
- Syntax-Based Testing for Structured Text•12 minutes
- Input Space Grammars Summary•2 minutes
- Exercise: Syntax-based Testing•180 minutes
1 assignment•Total 30 minutes
- Module 9 Quiz•30 minutes
In this module, you will learn about Integration Testing, a critical phase that bridges the gap between unit testing and full system validation by systematically verifying that individually tested components work together as intended. You'll learn to tackle one of software engineering's most complex challenges: integrating modules that may be developed by different teams, on different timelines, and with varying levels of documentation—circumstances that make testing particularly difficult for large, distributed software systems. Through test scaffolding techniques including stubs and drivers, you'll learn to facilitate testing even when dependent components are unavailable, apply strategic integration approaches including Big Bang, Top-Down, Bottom-Up, and Sandwich strategies to methodically combine software modules based on your system's architecture and development constraints, implement regression testing to ensure new changes don't break existing functionality, and leverage mock objects to isolate components and control test conditions with precision. You'll discover how to adapt these integration strategies to diverse architectural patterns including two-tier client-server systems, three-tier architectures, and complex multi-layered applications—enabling you to design integration test plans that catch interface discrepancies, data exchange faults, and system-level defects before they reach production. By the end of this module, you will understand how to balance the trade-offs between different integration approaches, recognize when to prioritize critical components through risk-driven testing, and apply modern mocking frameworks like Mockito to create maintainable, automated integration tests that support continuous development and deployment practices.
What's included
1 video15 readings1 assignment
1 video•Total 11 minutes
- Integration Testing•11 minutes
15 readings•Total 84 minutes
- Overview•2 minutes
- Introduction to Integration Testing•10 minutes
- Integration Testing Stubs and Drivers•6 minutes
- Concrete Stub Example•8 minutes
- Big Bang Integration•6 minutes
- Top-Down Integration•10 minutes
- Evaluation of Top-Down Strategy•5 minutes
- Bottom-Up Integration•10 minutes
- Sandwich Integration•8 minutes
- Regression Testing•5 minutes
- Risk-Driven Integration•1 minute
- Object-Oriented Integration using Mock Objects•3 minutes
- Two-Tier Systems•3 minutes
- Three-tier Systems•4 minutes
- Other Systems•3 minutes
1 assignment•Total 30 minutes
- Module 10 Quiz•30 minutes
In this module, you will learn about State Space Exploration, a rigorous testing methodology that systematically examines all possible states and transitions a system can take during execution to verify correctness and uncover critical structural flaws. You'll learn to tackle one of the most challenging aspects of testing concurrent and reactive systems: understanding and validating behavior across potentially infinite combinations of states, process interactions, and timing scenarios that traditional testing approaches cannot comprehensively address. Through reachability graphs and exploration algorithms, you'll learn to model systems as state machines where each node represents a unique configuration of processes, variables, and message queues. You'll also learn to identify and analyze reachable versus theoretically possible states to understand the true behavior space of your system. We'll discuss how to detect fundamental structural problems including deadlocks (where all processes halt waiting for each other), unspecified receptions (where processes receive unexpected messages), and queue overflows (where communication buffers exceed capacity). Lastly, you'll learn how to apply depth-first and breadth-first exploration strategies to navigate complex state spaces efficiently. You'll discover how these techniques extend to real-world scenarios including mutual exclusion protocols, concurrent process synchronization, and safety-critical systems where proving that certain dangerous states are unreachable is essential. This will enable you to provide mathematical guarantees about system behavior that testing alone cannot achieve. By the end of this module, you will understand the state explosion problem (where adding variables or processes causes exponential growth in possible states), and recognize when state space exploration is feasible versus when approximation techniques are necessary.
What's included
17 readings1 assignment1 app item
17 readings•Total 167 minutes
- Introduction to State Space Exploration•5 minutes
- Motivating Example•4 minutes
- Reachable States Table•4 minutes
- Potential Queue States•4 minutes
- Calculating Potential Systems States•6 minutes
- Goals of State Space Exploration•2 minutes
- Deadlock•4 minutes
- Unspecified Reception•3 minutes
- Queue Overflow•3 minutes
- Exploration Algorithms•4 minutes
- Exercise: Tic Tac Toe•90 minutes
- Exercise: Tic Tac Toe Answer•15 minutes
- State Explosion Problem•3 minutes
- Example One to Demonstrate State Explosion•4 minutes
- Example Two to Demonstrate State Explosion•5 minutes
- Code Analysis Using State Space Exploration•5 minutes
- Reachable States of the System•6 minutes
1 assignment•Total 30 minutes
- Module 11 Quiz•30 minutes
1 app item•Total 20 minutes
- State Space Exploration•20 minutes
As software systems grow more complex and internet-facing, two dimensions of quality that can no longer be treated as afterthoughts are performance and security. In this module, you will explore testing practices that address both. On the performance side, you will examine how engineers define and measure runtime metrics—throughput, response time, memory utilization—and how structured testing phases (planning, execution, and analysis) help identify whether a system meets its performance requirements under realistic and peak-load conditions. You will also work with Apache JMeter, an industry-standard open-source tool for simulating concurrent user loads on web applications. Shifting to security, the module introduces the foundational principles of security testing—confidentiality, integrity, authentication, authorization, availability, non-repudiation, and resilience—and surveys the major categories of security testing tools, from static and dynamic analysis (SAST/DAST) to runtime protection (RASP). Together, these topics equip you to evaluate software not just for functional correctness, but for the systemic qualities that determine whether it can be trusted in production environments.
What's included
10 readings1 assignment
10 readings•Total 56 minutes
- Performance Testing•2 minutes
- Types of Performance Testing•4 minutes
- Web Performance Testing•8 minutes
- Web Performance Testing Phases•6 minutes
- Tools for Performance Testing of Web Applications•4 minutes
- JMeter•6 minutes
- Security Testing•2 minutes
- Types of Security Testing•10 minutes
- Types of Security Testing Tools•6 minutes
- Principle of Security Testing•8 minutes
1 assignment•Total 30 minutes
- Module 12 Quiz•30 minutes
In this module, you will learn about Usability Testing, a critical discipline that evaluates how effectively users can interact with software interfaces to accomplish their goals while identifying design deficiencies that could frustrate users or impede task completion. You'll learn to address one of software engineering's most human-centered challenges: ensuring that technically sound systems are also intuitive, learnable, and satisfying to use—recognizing that even perfectly functional software fails if users cannot navigate it successfully. Through three distinct evaluation approaches, you'll learn to conduct passive testing methods that unobtrusively gather real-world usage data through system logs, user-reported problems, and surveys to understand how systems perform under actual conditions. You'll learn how to apply active testing techniques, including videotaped observation sessions and controlled experiments where you directly engage with representative users to uncover interaction problems and measure usability metrics. You'll leverage predictive evaluation methods like heuristic evaluation and cognitive walkthroughs that allow expert reviewers to identify potential problems early in the design process before expensive user testing begins. You'll discover how to apply Nielsen's ten usability heuristics to systematically identify interface violations. You'll learn how to design and conduct traditional scientific experiments with proper control of independent and dependent variables, walk through interfaces from users' cognitive perspectives to evaluate learnability, and use structured evaluation protocols to generate actionable recommendations for interface improvements. By the end of this module, you will understand how to select appropriate evaluation methods based on development stage and available resources. You'll also learn how to balance the trade-offs between time-intensive but insight-rich active methods versus efficient predictive techniques. Lastly, you'll learn to recognize that usability testing is not a one-time activity but a continuous process that spans from early prototypes through post-release refinement—ultimately ensuring that your software serves users effectively rather than creating barriers to their success.
What's included
27 readings1 assignment1 app item
27 readings•Total 125 minutes
- Introduction to Usability Testing•2 minutes
- Types of User Interface Testing and Evaluation•10 minutes
- Passive Testing•8 minutes
- Active Testing•6 minutes
- Videotaped Observation Sessions•6 minutes
- Steps for Videotaped Evaluation•10 minutes
- Traditional Experiment•6 minutes
- Example Experiment: Text Selection Schemes•6 minutes
- Details of Usability Engineering•3 minutes
- Steps Involved In Usability Engineering Experiment•4 minutes
- Some Usability Metrics•2 minutes
- Predictive Evaluation•4 minutes
- Heuristic Evaluation•8 minutes
- Phases of Heuristic Evaluation•3 minutes
- How to Perform Evaluation•3 minutes
- Heuristics - Over of Steps•2 minutes
- H2-1 and H2-2•5 minutes
- H2-3 and H2-4•4 minutes
- H2-5 and H2-6•3 minutes
- H2-7 and H2-8•4 minutes
- H2-9 and H2-10•5 minutes
- Examples of Usability Issues•3 minutes
- Severity Rating•6 minutes
- Debriefing Session•3 minutes
- Severity Ratings Example•2 minutes
- Cognitive Walkthroughs•4 minutes
- Cognitive Walkthrough Steps•3 minutes
1 assignment•Total 30 minutes
- Module 13 Quiz•30 minutes
1 app item•Total 20 minutes
- Types of UI Testing•20 minutes
Throughout this course, you have built a strong foundation in testing methods, coverage criteria, and quality assurance strategies. In this final module, you will bring it all together by exploring what it means to truly put testing first. You will examine how traditional and agile approaches define correctness differently, and why that distinction matters for the way teams plan and execute testing across a project lifecycle. From test-driven development and continuous integration to the challenges of testing legacy and untestable systems, this module challenges you to think critically about not just how to test, but when, why, and at what cost. You will also apply your knowledge to real-world case studies—including the Boeing 737 MAX failures—to evaluate how gaps in testing strategy can have serious, even catastrophic, consequences. By the end of this module, you will be equipped to advocate for a culture of quality in your own engineering practice.
What's included
14 readings1 assignment
14 readings•Total 84 minutes
- The Increased Emphasis on Testing•10 minutes
- Limitations in Traditional Approaches•6 minutes
- Agile Manifesto•4 minutes
- Redefining Correctness•8 minutes
- Existential or Agile Correctness•4 minutes
- Continuous Integration•5 minutes
- Test-Driven Development•3 minutes
- System Tests in Agile Methods•4 minutes
- User Stories•5 minutes
- Acceptance Tests in Agile Methods•6 minutes
- Adding Tests to Existing Systems•18 minutes
- The Testing Shortfall•3 minutes
- What Should Testers Do?•6 minutes
- Congratulations! •2 minutes
1 assignment•Total 30 minutes
- Module 14 Quiz•30 minutes
Instructor

Offered by

Offered by

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.
Why people choose Coursera for their career

Felipe M.

Jennifer J.

Larry W.

Chaitanya A.

Open new doors with Coursera Plus
Unlimited access to 10,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Join over 3,400 global companies that choose Coursera for Business
Upskill your employees to excel in the digital economy
Frequently asked questions
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.
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.
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.
More questions
Financial aid available,