About this courseSkip About this course
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!
What you'll learnSkip 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
- 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.
- 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 developers often forget to deal with such cases (we call it boundary testing).
- Get a few tips, based on experience, on common corner cases.
- 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.
- 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.
Meet your instructors
Pursue a Verified Certificate to highlight the knowledge and skills you gain $99.00
Official and Verified
Receive an instructor-signed certificate with the institution's logo to verify your achievement and increase your job prospects
Add the certificate to your CV or resume, or post it directly on LinkedIn
Give yourself an additional incentive to complete the course
Support our Mission
EdX, a non-profit, relies on verified certificates to help fund free education for everyone globally
The course materials of this course are Copyright Delft University of Technology and are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) 4.0 International License.
Who can take this course?
Unfortunately, learners from one or more of the following countries or regions will not be able to register for this course: Iran, Cuba and the Crimea region of Ukraine. While edX has sought licenses from the U.S. Office of Foreign Assets Control (OFAC) to offer our courses to learners in these countries and regions, the licenses we have received are not broad enough to allow us to offer this course in all locations. EdX truly regrets that U.S. sanctions prevent us from offering all of our courses to everyone, no matter where they live.