VOOZH about

URL: https://www.coursera.org/learn/software-testing-for-engineers-part-2

⇱ Software Testing for Engineers Part 2 | Coursera


Software Testing for Engineers Part 2

Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.

Software Testing for Engineers Part 2

Included with

Ask Coursera

Gain insight into a topic and learn the fundamentals.
2 weeks to complete
at 10 hours a week
Flexible schedule
Learn at your own pace

Gain insight into a topic and learn the fundamentals.
2 weeks to complete
at 10 hours a week
Flexible schedule
Learn at your own pace

There are 7 modules in this course

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.

This course will offer you an opportunity to learn fundamental testing concepts required to understand and apply comprehensive software testing strategies. The concepts in this course will prepare you to work with modern coverage criteria, apply graph-based and logic-based testing techniques, and implement automated test generation methods. Throughout this course experience, you will learn about the conceptual and practical applications of input space partitioning, syntax-based testing, mutation analysis, and test adequacy measurement. Throughout your time in this course, you will be given opportunities to check your understanding of course material, as well as engage in quizzes to reflect on all the testing concepts you have explored within each module. By the end of this software testing course, you will have a foundational understanding of how to design, implement, and evaluate comprehensive test suites for complex software systems.

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 videoTotal 1 minute
  • Course Overview1 minute
17 readingsTotal 149 minutes
  • Course Introduction2 minutes
  • Meet Your Faculty2 minutes
  • Syllabus - Software Testing for Engineers Part 210 minutes
  • Academic Integrity1 minute
  • Introduction3 minutes
  • Category-Partition Method2 minutes
  • Demonstration Example1 minute
  • Step 1: Identify Testable Features2 minutes
  • Step 2: Identify Categories8 minutes
  • Step 3: Partition Categories into Choices8 minutes
  • Step 4: Identify Constraints Among Choices10 minutes
  • Step 5: Produce Test Case Specification6 minutes
  • Step 6: Generate Test Cases from Specifications5 minutes
  • Test Cases Generation (AC, EC, BC criteria)6 minutes
  • Exercise 1 - Positive Integer Search Problem30 minutes
  • Exercise 2 - Find Command Specification45 minutes
  • Reflections on the Category Partitioning Method8 minutes
1 assignmentTotal 30 minutes
  • Module 8 Quiz30 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 videoTotal 7 minutes
  • BNF7 minutes
14 readingsTotal 302 minutes
  • Fundamentals15 minutes
  • Fundamentals Continued5 minutes
  • Introduction to BNF Grammars30 minutes
  • Using Grammars to Generate Strings8 minutes
  • Mutated and Unmutated Strings10 minutes
  • Mutated and Unmutated Derivations10 minutes
  • Grammar-based Testing & Coverage Criteria6 minutes
  • Questions About Mutation4 minutes
  • Grammars6 minutes
  • BNF Grammars and Finite Automata4 minutes
  • Grammar Mutation Coverage Criteria10 minutes
  • Syntax-Based Testing for Structured Text12 minutes
  • Input Space Grammars Summary2 minutes
  • Exercise: Syntax-based Testing180 minutes
1 assignmentTotal 30 minutes
  • Module 9 Quiz30 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 videoTotal 11 minutes
  • Integration Testing11 minutes
15 readingsTotal 84 minutes
  • Overview2 minutes
  • Introduction to Integration Testing10 minutes
  • Integration Testing Stubs and Drivers6 minutes
  • Concrete Stub Example8 minutes
  • Big Bang Integration6 minutes
  • Top-Down Integration10 minutes
  • Evaluation of Top-Down Strategy5 minutes
  • Bottom-Up Integration10 minutes
  • Sandwich Integration8 minutes
  • Regression Testing5 minutes
  • Risk-Driven Integration1 minute
  • Object-Oriented Integration using Mock Objects3 minutes
  • Two-Tier Systems3 minutes
  • Three-tier Systems4 minutes
  • Other Systems3 minutes
1 assignmentTotal 30 minutes
  • Module 10 Quiz30 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 readingsTotal 167 minutes
  • Introduction to State Space Exploration5 minutes
  • Motivating Example4 minutes
  • Reachable States Table4 minutes
  • Potential Queue States4 minutes
  • Calculating Potential Systems States6 minutes
  • Goals of State Space Exploration2 minutes
  • Deadlock4 minutes
  • Unspecified Reception3 minutes
  • Queue Overflow3 minutes
  • Exploration Algorithms4 minutes
  • Exercise: Tic Tac Toe90 minutes
  • Exercise: Tic Tac Toe Answer15 minutes
  • State Explosion Problem3 minutes
  • Example One to Demonstrate State Explosion4 minutes
  • Example Two to Demonstrate State Explosion5 minutes
  • Code Analysis Using State Space Exploration5 minutes
  • Reachable States of the System6 minutes
1 assignmentTotal 30 minutes
  • Module 11 Quiz30 minutes
1 app itemTotal 20 minutes
  • State Space Exploration20 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 readingsTotal 56 minutes
  • Performance Testing2 minutes
  • Types of Performance Testing4 minutes
  • Web Performance Testing8 minutes
  • Web Performance Testing Phases6 minutes
  • Tools for Performance Testing of Web Applications4 minutes
  • JMeter6 minutes
  • Security Testing2 minutes
  • Types of Security Testing10 minutes
  • Types of Security Testing Tools6 minutes
  • Principle of Security Testing8 minutes
1 assignmentTotal 30 minutes
  • Module 12 Quiz30 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 readingsTotal 125 minutes
  • Introduction to Usability Testing2 minutes
  • Types of User Interface Testing and Evaluation10 minutes
  • Passive Testing8 minutes
  • Active Testing6 minutes
  • Videotaped Observation Sessions6 minutes
  • Steps for Videotaped Evaluation10 minutes
  • Traditional Experiment6 minutes
  • Example Experiment: Text Selection Schemes6 minutes
  • Details of Usability Engineering3 minutes
  • Steps Involved In Usability Engineering Experiment4 minutes
  • Some Usability Metrics2 minutes
  • Predictive Evaluation4 minutes
  • Heuristic Evaluation8 minutes
  • Phases of Heuristic Evaluation3 minutes
  • How to Perform Evaluation3 minutes
  • Heuristics - Over of Steps2 minutes
  • H2-1 and H2-25 minutes
  • H2-3 and H2-44 minutes
  • H2-5 and H2-63 minutes
  • H2-7 and H2-84 minutes
  • H2-9 and H2-105 minutes
  • Examples of Usability Issues3 minutes
  • Severity Rating6 minutes
  • Debriefing Session3 minutes
  • Severity Ratings Example2 minutes
  • Cognitive Walkthroughs4 minutes
  • Cognitive Walkthrough Steps3 minutes
1 assignmentTotal 30 minutes
  • Module 13 Quiz30 minutes
1 app itemTotal 20 minutes
  • Types of UI Testing20 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 readingsTotal 84 minutes
  • The Increased Emphasis on Testing10 minutes
  • Limitations in Traditional Approaches6 minutes
  • Agile Manifesto4 minutes
  • Redefining Correctness8 minutes
  • Existential or Agile Correctness4 minutes
  • Continuous Integration5 minutes
  • Test-Driven Development3 minutes
  • System Tests in Agile Methods4 minutes
  • User Stories5 minutes
  • Acceptance Tests in Agile Methods6 minutes
  • Adding Tests to Existing Systems18 minutes
  • The Testing Shortfall3 minutes
  • What Should Testers Do?6 minutes
  • Congratulations! 2 minutes
1 assignmentTotal 30 minutes
  • Module 14 Quiz30 minutes

Instructor

Northeastern University
2 Courses98 learners

Explore more from Software Development

Why people choose Coursera for their career

👁 Image

Felipe M.

Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
👁 Image

Jennifer J.

Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
👁 Image

Larry W.

Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
👁 Image

Chaitanya A.

"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

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.

Financial aid available,