We may earn an affiliate commission when you visit our partners.
Course image
John Rofrano

Successful developers need to not only build the right software but build it right. To know your software works correctly, you need to test each unit of code. One of the best methods for this unit-level testing is test driven development.

Read more

Successful developers need to not only build the right software but build it right. To know your software works correctly, you need to test each unit of code. One of the best methods for this unit-level testing is test driven development.

This course provides a detailed overview of test driven development (TDD). First, you’ll learn what automated testing is and why it is essential for building robust applications resilient to failure. You’ll explore the basics of testing, including test cases, testing levels, and the traditional release cycle.

You’ll learn about TDD and its complement, behavior driven development (BDD): TDD tests individual units of code while BDD tests how these units work together.

Then you’ll examine TDD in detail. You’ll explore TDD’s benefits, concepts, and popular tools, and you’ll hone your new testing skills through hands-on labs. You’ll create TDD test cases by writing test assertions and building test fixtures, and you’ll run these test cases by using the Nose testing package. You’ll then practice more advanced TDD methods such as increasing code coverage, generating and using fake data, and testing mock objects.

Enroll now

What's inside

Syllabus

Introduction to Testing
This module provides an overview of software testing. You will learn about the importance of testing through an example: the development of the Apollo 11 Lunar Module’s guidance system. You will discover the numerous problems that occur when developers do not test their code. Then you will explore the four levels of testing and find out when each appears in the traditional release cycle. You will learn what test driven and behavior driven development are and why both are essential for effective testing. You will discover the purpose of test cases and witness their value through a demonstration.
Read more
Test Driven Development
This module provides an overview of Test-Driven Development (TDD). You will learn what TDD is and discover the three basic steps in the TDD and Red/Green/Refactor workflow. You will see why TDD is essential for DevOps and all automated testing. You will also discover popular testing tools for TDD and closely examine the features of several tools for Python. This module also covers essential methods for performing TDD. You will explore ways to run TDD tests such as, Python’s built-in test runner, Unittest, and the more feature-rich module, Nose. You will learn about assertions and how to use them to test code. You will discover why you must include happy and sad paths in your test module. You will also discover the test fixtures and how to use them to establish an appropriate initial state for each test.
Advanced Methods for Test Driven Development
This module covers advanced methods for TDD. You will learn about test coverage: why it’s important, how to increase it by using test coverage reports, and why you should keep testing even at full test coverage. You will discover the value of testing against fake data and how to use factories to generate this data. You will also explore mocking, a process for mimicking the behavior of real objects, and you will find out the testing situations for which mocking is useful. You will learn how to use two common methods for mocking: patching a function call and mocking entire objects.
Behavior Driven Development
This module provides an overview of behavior driven development (BDD). You will explore BDD, including its benefits for higher-level automated testing and its typical workflow. You will discover the basics of Gherkin syntax, a standard syntax for writing BDD specifications. You will learn about popular BDD tools and how to select the best one for your project. This module also covers essential methods for performing BDD with Behave. You will examine how Behave uses the code in feature and steps files to test an application’s behavior from a user’s perspective. You will discover how to build a Behave environment and control test execution at various levels. Then you will explore in detail how to write feature and steps files. In addition, you will learn how to load test data from tables, automate web page interactions with Selenium, and write Python functions for testing application behaviors.
Running Behave for Behavior Driven Development 
This module provides an overview of how to use Behave to generate Python steps. Once you know how to generate the steps, you will learn the workflow for implementing them. The next lesson will explain the context variable and how to pass information between Python steps. In addition, you will discuss the benefits of variable substitution for working with Behave and its application in Python steps. Finally, you will practice behavior driven development.
Final Project and Final Exam
In this final module, you will work on a Final project. You will apply many of the technologies and concepts you've learned in the course and will create a microservice for a product catalog backend to an eCommerce application. The UI of the eCommerce application will be used by administrators to maintain the product catalog. This Final Project is divided into two parts. In the first part of this project, you will use good Test Driven Development practices to create a REST API that allows users to Create, Read, Update, Delete, and List products by various attributes. In the second part of this project, you will write Behavior Driven Development scenarios to test that the administrative user interface that has been provided for you behaves as expected. Finally, you will also attempt a final exam to test the concepts learned.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches test-driven development, which is an essential testing method for building robust and resilient software applications
Taught by John Rofrano, who is recognized for his work in software testing
Covers all aspects of test-driven development, from automated testing to advanced methods like test coverage and mocking
Provides hands-on labs and interactive materials, allowing learners to practice their skills
Teaches both test-driven development and behavior-driven development, providing a comprehensive view of automated testing
May require learners to have some prior experience in software testing

Save this course

Save Introduction to Test and Behavior Driven Development 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 Introduction to Test and Behavior Driven Development with these activities:
Review testing concepts
Refreshing testing concepts will help you understand the basics of automated testing and prepare you for the course.
Browse courses on Software Testing
Show steps
  • Review the types of testing: unit, integration, system, acceptance testing
  • Review the importance of testing for building robust applications
  • Review the different testing levels: unit, integration, system, acceptance testing
Explore the basics of TDD using Python
Following guided tutorials on TDD using Python will help you build a foundation in TDD and prepare you for the hands-on labs in the course.
Browse courses on Python
Show steps
  • Find a tutorial on TDD using Python
  • Follow the steps in the tutorial to write test cases and build test fixtures
  • Run the test cases and identify any errors
Practice writing test cases
Practicing writing test cases will improve your ability to identify and test different scenarios.
Show steps
  • Identify a function or module to test
  • Write test cases for different scenarios: happy path, sad path, edge cases
  • Run the test cases and identify any errors
  • Refactor the test cases and code to improve readability and maintainability
Four other activities
Expand to see all activities and additional details
Show all seven activities
Participate in a TDD study group
Participating in a TDD study group will provide you with opportunities to discuss and troubleshoot TDD concepts with peers.
Browse courses on TDD
Show steps
  • Find a TDD study group or create your own
  • Meet regularly to discuss TDD concepts and best practices
  • Share code and ideas with each other
Review 'The Art of Unit Testing'
Reading 'The Art of Unit Testing' will provide you with a deeper understanding of the principles and best practices of unit testing.
Show steps
  • Read the book and take notes on key concepts
  • Identify areas where you can apply the concepts to your own codebase
  • Discuss the book with other developers
Create a blog post or tutorial on TDD
Creating a blog post or tutorial on TDD will help you solidify your understanding of the topic and share your knowledge with others.
Browse courses on TDD
Show steps
  • Choose a specific aspect of TDD to focus on
  • Write a draft of your blog post or tutorial
  • Get feedback from other developers
  • Publish your blog post or tutorial
Mentor other developers on TDD
Mentoring other developers on TDD will help you solidify your understanding of the topic and contribute to the community.
Browse courses on TDD
Show steps
  • Identify opportunities to mentor other developers
  • Share your knowledge and experience with other developers
  • Provide guidance and support to other developers

Career center

Learners who complete Introduction to Test and Behavior Driven Development will develop knowledge and skills that may be useful to these careers:
Software Test Engineer
A Software Test Engineer is responsible for testing software systems to ensure that they meet the requirements and specifications. This role involves developing and executing test plans, analyzing test results, and reporting defects. To be successful in this role, professionals must have a strong understanding of software testing principles and practices. This course will help build a foundation for success in this role by providing an overview of TDD and BDD. TDD and BDD are essential methods for testing software effectively and efficiently.
Test Automation Engineer
A Test Automation Engineer is responsible for automating software testing processes. This role involves developing and maintaining automated test scripts. To be successful in this role, professionals must have a strong understanding of software testing principles and practices. This course will help build a foundation for success in this role by providing an overview of TDD and BDD. TDD and BDD are essential methods for automating software testing effectively and efficiently.
DevOps Engineer
A DevOps Engineer is responsible for bridging the gap between development and operations teams. This role involves automating and streamlining the software development process. To be successful in this role, professionals must have a strong understanding of software development and operations principles and practices. This course may be useful for DevOps Engineers who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that software is reliable and meets the needs of users.
Quality Assurance Analyst
A Quality Assurance Analyst is responsible for ensuring that software systems meet the required quality standards. This role involves developing and executing test plans, analyzing test results, and reporting defects. To be successful in this role, professionals must have a strong understanding of software quality assurance principles and practices. This course will help build a foundation for success in this role by providing an overview of TDD and BDD. TDD and BDD are essential methods for ensuring that software is of high quality.
Software Architect
A Software Architect is responsible for designing and developing software systems. This role involves working with stakeholders to define the requirements and specifications for software systems. To be successful in this role, professionals must have a strong understanding of software development principles and practices. This course may be useful for Software Architects who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that software systems are reliable and meet the needs of users.
Software Developer
A Software Developer designs, develops, and maintains software applications. This role is responsible for ensuring that software applications are reliable, efficient, and meet the needs of users. To be successful in this role, professionals must have a strong understanding of software development principles and practices. This course may be useful for Software Developers who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that software is reliable and meets the needs of users.
Software Engineer
A Software Engineer designs, develops, tests, and maintains software systems. The Software Engineer role is responsible for ensuring that software systems are reliable, efficient, and meet the needs of users. To be successful in this role, professionals must have a strong understanding of software development principles and practices. This course may be useful for Software Engineers who want to learn more about test driven development (TDD) and behavior driven development (BDD). TDD and BDD are essential methods for ensuring that software is reliable and meets the needs of users.
Product Manager
A Product Manager is responsible for managing the development and launch of software products. This role involves working with stakeholders to define the requirements and specifications for software products. To be successful in this role, professionals must have a strong understanding of software development principles and practices. This course may be useful for Product Managers who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that software products are reliable and meet the needs of users.
Project Manager
A Project Manager is responsible for planning and executing software development projects. This role involves working with stakeholders to define the scope, schedule, and budget for software development projects. To be successful in this role, professionals must have a strong understanding of software development principles and practices. This course will help build a foundation for success in this role by providing an overview of TDD and BDD. TDD and BDD are essential methods for ensuring that software development projects are successful.
Computer Vision Engineer
A Computer Vision Engineer is responsible for designing, developing, and deploying computer vision models. This role involves working with data scientists and machine learning engineers to develop and implement computer vision models. To be successful in this role, professionals must have a strong understanding of computer vision principles and practices. This course may be useful for Computer Vision Engineers who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that computer vision models are reliable and accurate.
Business Analyst
A Business Analyst is responsible for gathering and analyzing business requirements for software systems. This role involves working with stakeholders to define the requirements and specifications for software systems. To be successful in this role, professionals must have a strong understanding of business analysis principles and practices. This course may be useful for Business Analysts who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that software systems meet the needs of users.
Artificial Intelligence Engineer
An Artificial Intelligence Engineer is responsible for designing, developing, and deploying artificial intelligence models. This role involves working with data scientists and machine learning engineers to develop and implement artificial intelligence models. To be successful in this role, professionals must have a strong understanding of artificial intelligence principles and practices. This course may be useful for Artificial Intelligence Engineers who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that artificial intelligence models are reliable and accurate.
Natural Language Processing Engineer
A Natural Language Processing Engineer is responsible for designing, developing, and deploying natural language processing models. This role involves working with data scientists and machine learning engineers to develop and implement natural language processing models. To be successful in this role, professionals must have a strong understanding of natural language processing principles and practices. This course may be useful for Natural Language Processing Engineers who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that natural language processing models are reliable and accurate.
Machine Learning Engineer
A Machine Learning Engineer is responsible for designing, developing, and deploying machine learning models. This role involves working with data scientists to develop and implement data analysis models. To be successful in this role, professionals must have a strong understanding of machine learning principles and practices. This course may be useful for Machine Learning Engineers who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that machine learning models are reliable and accurate.
Data Scientist
A Data Scientist is responsible for collecting, analyzing, and interpreting data. This role involves developing and implementing data analysis models. To be successful in this role, professionals must have a strong understanding of data science principles and practices. This course may be useful for Data Scientists who want to learn more about TDD and BDD. TDD and BDD are essential methods for ensuring that data analysis models are reliable and accurate.

Reading list

We've selected 13 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 Introduction to Test and Behavior Driven Development.
Provides a comprehensive overview of concurrency in Java. It great resource for anyone who wants to learn more about how to write concurrent Java code.
Provides a comprehensive overview of best practices for software development. It great resource for anyone who wants to improve their software development skills.
Provides a practical guide to behavior-driven development (BDD), using the Cucumber framework. It great resource for anyone who wants to learn more about how to use BDD to improve the quality of their software.
Classic introduction to test-driven development (TDD). It provides a step-by-step guide to writing tests that will help you catch bugs early and prevent them from happening in the first place. This book great resource for anyone who wants to learn more about TDD.
Provides a practical guide to object-oriented design and development, with a focus on test-driven development. It great resource for anyone who wants to learn more about how to design and develop software that is easy to test and maintain.
Provides a comprehensive overview of behavior-driven development (BDD), using the Cucumber framework. It great resource for anyone who wants to learn more about how to use BDD to improve the quality of their software.
Provides a comprehensive overview of best practices for Java development. It great resource for anyone who wants to improve their Java skills.
Provides a comprehensive overview of software engineering. It great resource for anyone who wants to learn more about the process of software development.
Provides a comprehensive overview of unit testing, including best practices, patterns, and tools. It great resource for anyone who wants to improve their unit testing skills.
Provides a practical guide to behavior-driven development (BDD). It great resource for anyone who wants to learn more about how to use BDD to improve the quality of their software.
Provides a practical guide to test-driven development (TDD) for JavaScript. It great resource for anyone who wants to learn more about how to write tests for their JavaScript code.
Provides a collection of essays on software engineering. It great resource for anyone who wants to learn more about the history and challenges of software development.

Share

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

Similar courses

Here are nine courses similar to Introduction to Test and Behavior Driven Development.
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