We may earn an affiliate commission when you visit our partners.
Course image
Arie van Deursen and Maurício Aniche

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.

Read more

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.

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!

Three deals to help you save

What's inside

Learning objectives

  • How to test any software system using current state-of-the-arttechniques
  • 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 whyit requires creativity.
Get familiar withsome testing vocabulary, which improves our communication.
Read more
Devise our first set of tests for a Java program and automatethese testsusing 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.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Designed for five-star software developers, QA engineers, and software testers
Taught by experts Arie van Deursen and Maurício Aniche, both academics and active in the software industry
Emphasizes the importance of software testing and provides strategies for successful testing
Covers current state-of-the-art software testing techniques
Provides hands-on experience through various testing techniques
Helps learners develop testable architectures and maintainable test code

Save this course

Save Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability with these activities:
Review the Concept of Unit Testing
Recall and reinforce the core principles of unit testing to establish a foundation for effective testing practices.
Browse courses on Unit Testing
Show steps
  • Read an article on unit testing basics and principles.
  • Watch a video tutorial on the fundamentals of unit testing.
  • Create a small example project and write unit tests for it.
Review testing principles and vocabulary
Refresh your understanding of the fundamental principles and vocabulary of software testing.
Show steps
  • Review the course materials on testing principles and vocabulary.
  • Take practice quizzes or exercises to test your understanding.
Simulate Black-Box Testing Scenarios
Develop hands-on experience in designing and executing black-box testing scenarios to verify software functionality.
Browse courses on Black-Box Testing
Show steps
  • Identify a piece of software or a specific feature to test.
  • Create a set of test cases that cover different scenarios.
  • Execute the test cases and document the results.
14 other activities
Expand to see all activities and additional details
Show all 17 activities
Review 'Thinking in Java'
Review key concepts in object-oriented programming and Java programming to strengthen understanding of testing concepts.
View Atomic Kotlin on Amazon
Show steps
  • Read Chapter 10 on Unit Testing.
  • Summarize the main concepts presented in the chapter.
  • Apply the concepts in a practice project.
Learn about different testing techniques
Deepen your understanding of different testing techniques by exploring tutorials and articles online.
Browse courses on Testing Techniques
Show steps
  • Identify different testing techniques.
  • Find tutorials and articles on these techniques.
  • Review the materials and take notes.
  • Apply the techniques to your own testing projects.
Write additional test cases
Write additional test cases to ensure that your software is thoroughly tested and meets all requirements.
Browse courses on Test Cases
Show steps
  • Identify additional use cases and scenarios.
  • Develop test cases for each use case and scenario.
  • Execute the test cases.
  • Review the test results and identify any defects.
Write a Test Plan
Develop a comprehensive test plan to outline the testing strategy and ensure thorough testing of a system.
Show steps
  • Identify the scope and objectives of the testing project.
  • Define the testing approach and methodologies to be used.
  • Create a test schedule and resource plan.
  • Obtain approval on the test plan.
Discuss testing strategies with peers
Engage in discussions with peers to exchange knowledge and perspectives on testing strategies.
Show steps
  • Join a study group or online forum.
  • Participate in discussions on testing strategies.
  • Share your own experiences and insights.
Devise Unit Tests
Create unit tests for various programs to apply testing vocabulary and concepts.
Browse courses on JUnit
Show steps
  • Devise at least 5 test cases for a given Java method.
  • Write JUnit tests to test the method.
  • Explain the purpose of each test case and how it tests a different aspect of the method.
Code Review with Peers
Participate in peer code review sessions to exchange feedback and improve test code quality.
Show steps
  • Find a study partner or group.
  • Share test code for review.
  • Provide feedback on the code and suggest improvements.
  • Implement the suggested improvements.
Follow Mockito Tutorials
Follow tutorials to gain practical experience in using Mockito for unit testing.
Browse courses on Mockito
Show steps
  • Choose a Mockito tutorial.
  • Follow the tutorial and complete the exercises.
  • Apply Mockito to test a simple Java program.
Test Code Coverage and Adequacy
Practice applying techniques to measure test coverage and assess the effectiveness of test suites.
Browse courses on Test Coverage
Show steps
  • Use a code coverage tool to analyze the coverage of your test suite.
  • Use different coverage criteria, such as statement coverage and branch coverage.
  • Identify areas of your code that are not covered by your tests.
  • Write additional tests to improve the coverage of your code.
Build a personal testing project
Solidify your understanding of testing by building a personal project that involves writing and executing test cases.
Browse courses on Software Testing
Show steps
  • Identify a project idea.
  • Design and implement the project.
  • Write and execute test cases.
  • Review the test results and identify any defects.
  • Refactor the project based on the test results.
Design a Testable Architecture
Develop a testable architecture for a system to improve its maintainability and testability.
Show steps
  • Identify the key components of a system and their interactions.
  • Apply architectural design patterns to enhance testability.
  • Create a testability plan that outlines how to test the system.
  • Implement the testable architecture and test the system.
Contribute to open-source testing frameworks
Gain hands-on experience with testing frameworks by contributing to open-source projects.
Browse courses on Software Testing
Show steps
  • Identify an open-source testing framework.
  • Find a bug or feature request that you can work on.
  • Submit a pull request to the project.
Write a blog post on a testing topic
Share your knowledge and insights by writing a blog post on a testing topic of your choice.
Browse courses on Software Testing
Show steps
  • Choose a testing topic that you are passionate about.
  • Research the topic and gather information.
  • Write a well-structured blog post.
  • Publish the blog post on a relevant platform.
Enhance Test Code Quality
Learn and apply best practices to maintain high-quality test code for reliability and maintainability.
Show steps
  • Follow a tutorial on best practices for writing clean and maintainable test code.
  • Learn about common pitfalls and anti-patterns in test code.
  • Refactor your test code to improve its quality.

Career center

Learners who complete Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability will develop knowledge and skills that may be useful to these careers:
Quality Assurance Manager
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' is a valuable resource for Quality Assurance Managers, as it provides a deep understanding of the principles and practices of software testing. The course covers the different types of testing, as well as the tools and techniques used to test software.
Software Tester
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' provides a comprehensive overview of software testing techniques, which are essential for a career as a Software Tester. The course covers the different types of testing, as well as the tools and techniques used to test software.
Software Development Engineer in Test
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' is a valuable resource for Software Development Engineers in Test, as it provides a deep understanding of the principles and practices of software testing. The course covers the different types of testing, as well as the tools and techniques used to test software.
Test Analyst
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' is a valuable resource for Test Analysts, as it provides a deep understanding of the principles and practices of software testing. The course covers the different types of testing, as well as the tools and techniques used to test software.
Software Test Lead
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' is a valuable resource for Software Test Leads, as it provides a deep understanding of the principles and practices of software testing. The course covers the different types of testing, as well as the tools and techniques used to test software.
Test Automation Engineer
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' is highly relevant to a career as a Test Automation Engineer. The course covers the principles and practices of software testing, as well as the tools and techniques used to automate testing.
QA Engineer
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' is highly relevant to a career as a QA Engineer. The course covers the principles and practices of software testing, which are essential for ensuring the quality of software products.
Software Quality Assurance Engineer
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' is highly relevant to a career as a Software Quality Assurance Engineer. The course covers the principles and practices of software testing, which are essential for ensuring the quality of software products.
Software Test Engineer
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' provides a solid foundation for a career as a Software Test Engineer. The course covers the fundamentals of software testing, including unit testing, coverage criteria, and design for testability.
Software Developer
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' provides a solid foundation for a career as a Software Developer. The course covers the fundamentals of software testing, including unit testing, coverage criteria, and design for testability.
Software Project Manager
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' may be helpful for Software Project Managers, as it provides a deep understanding of the principles and practices of software testing. This knowledge can be useful for planning and managing software projects that deliver high-quality software.
Product Manager
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' may be helpful for Product Managers, as it provides a deep understanding of the principles and practices of software testing. This knowledge can be useful for defining and managing product requirements, and for ensuring that software products meet the needs of users.
Technical Writer
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' may be helpful for Technical Writers, as it provides a deep understanding of the principles and practices of software testing. This knowledge can be useful for writing clear and concise documentation that explains how to use software products.
Software Architect
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' may be helpful for Software Architects, as it provides a deep understanding of the principles and practices of software testing. This knowledge can be useful for designing software systems that are testable and maintainable.
Business Analyst
The course 'Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability' may be helpful for Business Analysts, as it provides a deep understanding of the principles and practices of software testing. This knowledge can be useful for eliciting and documenting user requirements, and for ensuring that software products meet the needs of the business.

Reading list

We've selected 15 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability.
Classic guide to software testing, covering a wide range of topics including test planning, test execution, and test reporting.
Provides a comprehensive guide to JUnit, the most popular Java testing framework.
Provides a practical guide to agile testing, including techniques for planning, executing, and reporting on tests in an agile environment.
Provides a practical guide to writing use cases, which are essential for defining the requirements of a software system.
Provides a comprehensive overview of software testing, including techniques for functional, structural, and non-functional testing.
Provides a practical guide to test-driven development, a technique for developing software that emphasizes writing tests before writing code.
Provides a guide to continuous delivery, a set of practices that enable software teams to deliver software more frequently and reliably.
Provides a guide to clean coding, a set of principles and practices for writing code that is easy to read, understand, and maintain.
Provides a guide to domain-driven design, a software development approach that emphasizes understanding the domain of the software being developed.
Provides a guide to refactoring, a technique for improving the design of existing code without changing its behavior.
Classic guide to software development, covering a wide range of topics including design, coding, and testing.
Provides a practical guide to design patterns, a set of reusable solutions to common software design problems.
Provides a guide to professional software development, covering a wide range of topics including ethics, teamwork, and code quality.
Provides a comprehensive overview of software engineering, covering a wide range of topics including requirements engineering, design, implementation, and testing.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Automated Software Testing: Unit Testing, Coverage Criteria and Design for Testability.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser