EdX

Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability (edX)

Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability (edX)

Learn the software testing techniques, tools, and best practices required to deliver high-quality software. Software testinggets a bad rap for being difficult, time-consuming, redundant, and above all - boring. But in fact, it is a proven way to ensure that your software will work flawlessly andcan meet release schedules.

Class Deals by MOOC List - Click here and see EdX's Active Discounts, Deals, and Promo Codes.

In a two-course series, we will teach you automated software testing in an inspiring way. We will show you that testing is not as daunting a task as you might think, and how automated testing will make you a better developer who programs excellent software.
This first course will teach you specification-based testing, boundary testing, test adequacy and code coverage, unit vs system testing, mock objects, design for testability, and test code quality.
This is a highly practical course. Throughout the lessons, you will test various programs by means of different techniques. By the end, you will be able to choose the best testing strategies for different projects.
If you are or want to become a five-star software developer, QA engineer, or software tester, join this course. Testing will never be the same again!
This course is part of the Automated Software Testing Professional Certificate.

What you'll learn

  • How to test any software system using current state-of-the-art techniques
  • How to derive test cases that deal with exceptional, corner, and bad-weather cases by means of several different techniques
  • The limitations of current testing techniques and how to decide on the best testing strategies for a given context
  • How to develop testable architectures and to write maintainable test code

Syllabus

Topic 1: Automated software testing
Understand some basic principles of testing and why it requires creativity.
Get familiar with some testing vocabulary, which improves our communication.
Devise our first set of tests for a Java program and automate these tests using JUnit.
Understand the differences between unit, integration, and system testing, as well as the testing pyramid.

Topic 2: Functional testing
Learn how to read a requirement and derive the partitions, which are the actual concrete tests we will perform to make sure our system works (we call it "partitioning" and "equivalent partitioning").
Learn how to think about and test possible corner cases, as developersoften forget to deal with such cases (we call itboundary testing).
Get a few tips, based on experience, on common corner cases.

Topic 3: Structural testing and code coverage
Learn how to analyze the structure of your source code and derive meaningful tests.
Be able to use the most popular structural testing adequacy criteria, such as line coverage, branch coverage, and path coverage as well as to understand their differences.
Derive a minimal set of tests when your branches (e.g., ifs) are too complex.
Use a standard industry code coverage tool and interpret its results.

Topic 4: Testability and mock objects
Understand the differences between different test levels (e.g., unit, integration, and system tests)
Understand what makes a system more or less testable.
Propose refactoring opportunities for increasing testability.
Be able to apply mock objects in order to unit test a class.
Understand when not to apply mock objects and go for integration tests.

Topic 5 : Test code smells
Judge the internal code quality of your test suite and advice possible improvements.
Understand and avoid flaky tests.
Refactor and clean smelly test code.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Circuits and Electronics 2: Amplification, Speed, and Delay (edX) EdX
MIT,MITx

Circuits and Electronics 2: Amplification, Speed, and Delay (edX)

Learn how to speed up digital circuits and build amplifiers in the design of microchips used in smartphones, computers, and the Internet. Want to learn how to construct an amplifier for mobile phones? Wondering how energy storage elements like capacitors and inductors work, or how to make microchips run faster? This free circuit course taught by edX CEO and MIT Professor Anant Agarwal and colleagues is for you.

Self Paced
Self-Paced
Black-box and White-box Testing (Coursera) Coursera
University of Minnesota

Black-box and White-box Testing (Coursera)

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.

Jul 27th 2026
4 Weeks
Essentials of Genomics and Biomedical Informatics (edX) EdX
IsraelX

Essentials of Genomics and Biomedical Informatics (edX)

This course presents clinicians and digital health enthusiasts with an overview of the data revolution in medicine and how to exploit it for research and in the clinic. The course will not make you a bioinformatician but will introduce the main concepts, tools, algorithms, and databases in this field.

Self Paced
5-12 Weeks
Engineering Maintainable Android Apps (Coursera) Coursera
Vanderbilt University

Engineering Maintainable Android Apps (Coursera)

Engineering Maintainable Android Apps, which is a 4 week MOOC that shows by example various methods for engineering maintainable Android apps, including test-driven development methods and how to develop/run unit tests using JUnit and Robotium (or equivalent automated testing frameworks for Android), as well as how to successfully apply common Java/Android software patterns to improve the extensibility and clarity of Android apps.

Jul 20th 2026
4 Weeks
Introducción a la Ingeniería del Software (edX) EdX
Universidad Autonoma de Madrid,UAMx

Introducción a la Ingeniería del Software (edX)

Conoce las distintas fases de desarrollo por las que pasa un proyecto informático, así como las actividades de gestión necesarias para lograr finalizar el proyecto con éxito. ¿Alguna vez te has preguntado qué es y para qué sirve la Ingeniería de Software? ¿Quieres saber por qué es tan necesaria esta disciplina y por qué se utiliza tanto en entornos tecnológicos? ¿O cuál es el motivo de que muchos proyectos informáticos no finalizan en tiempo y coste o con la calidad deseada?

Self Paced
Self-Paced
IoT System Design: Software and Hardware Integration (edX) EdX
Waseda University,WasedaX

IoT System Design: Software and Hardware Integration (edX)

Start developing your own Internet of Things (IoT) system with this exploration of the interaction between software and hardware. This course is designed to teach you how systems are developed using IoT technology. Many engineers and developers tend to focus on a single discipline - either software or hardware. However, in today’s connected age it's critical to have a comprehensive understanding of both disciplines and how they are intertwined.

Self Paced
Self-Paced
Big Data Capstone Project (edX) EdX
University of Adelaide,AdelaideX

Big Data Capstone Project (edX)

Further develop your knowledge of big data by applying the skills you have learned to a real-world data science project. This project will give you the opportunity to deepen your learning by giving you valuable experience in evaluating, selecting and applying relevant data science techniques, principles and theory to a data science problem. This project will see you plan and execute a reasonably substantial project and demonstrate autonomy, initiative and accountability.

Self Paced
Self-Paced
Automated Software Testing: Model and State-based Testing (edX) EdX
Delft University of Technology,DelftX

Automated Software Testing: Model and State-based Testing (edX)

Learn the advanced software testing techniques, tools, and best practices required to deliver high-quality software. Software testing gets a bad rap for being difficult, time-consuming, redundant, and above all - boring. But in fact, it is a proven way to ensure that your software will work flawlessly and can meet release schedules.

Self Paced
Self-Paced