Monica is Gabriel’s engineering manager. Gabriel has checked their code into the version control system and wants users to access the new feature as soon as possible. Monica knows better. Changes need to be tested before being released to users.

Testing is an essential component of the deployment process. Testing ensures new features integrate with existing features, work smoothly within the existing infrastructure, and satisfy the product and design requirements.

Different types of tests exist that are used in the various stages of deployment. Four types of tests that are often used are:

  • Unit test — evaluates the smallest possible unit of testable code, such as a single function.
  • Integration test — evaluates how the units of a particular program work with one another.
  • Acceptance test — evaluates whether the user experience aligns with the business requirements of the software.
  • End-to-end test — evaluates the application’s behavior using production-like infrastructure that includes networking, databases, and calls to external APIs.

Failures during testing help developers know that they need to update their code or increase their infrastructure resources. Success during testing gives a developer confidence that their project is in a releasable state.

For example, a developer’s workflow might incorporate testing like so:

  1. Develop a new feature locally
  2. Add new code to the version control system
  3. The code change has tests run against it (unit, integration, sometimes acceptance or end-to-end)
  4. If there are any failures, the developer will work on fixes
  5. Repeat steps 1-4 until all tests pass.
  6. The change is allowed to be merged.



​​In this exercise, you have access to a terminal and browser. You can start, stop, and test a web application from here.

First, click in the terminal (the black box in the middle of the screen) and type in the command npm start. Then hit Enter. Reload the provided browser page on the right side of the screen.

As a manual test engineer for this app, you have been provided some features to test. For each behavior listed below, manually test the web app and note which behaviors were faulty:

  • Behavior 1: Scroll down and expect the webpage to start with a blank order.
  • Behavior 2: Type a name and click “Place Order”. Scroll down and expect “Deliver to:” to display the submitted name.
  • Behavior 3: A blank name will not overwrite the existing name.
  • Behavior 4: Select a cake type and place the order. Expect “Cake” to display the selected cake type.
  • Behavior 5: Check some fillings. Expect “Fillings” to display your selected fillings.
  • Behavior 6: Choose a stack size. Expect “Pancake Count:” to display the number equivalent to the stack size, e.g. “Double” is “2”.

How many behaviors were working properly?


Developers can create automated tests that are faster and more reliable than manual tests. This web app is set up with automated tests.

First, stop the application by clicking on the terminal and pressing Ctrl + C on your keyboard.

Then, run the tests them by typing npm test in the terminal and hitting Enter.

Wait for the test output to appear. Many of them will be failing so don’t worry if you see error message. That’s what we want!

The tests align with the expected behaviors in the previous checkpoint. Which method caught more bugs? Which was faster? Are these changes ready to be merged?

Testing is executed throughout the various stages of the deployment process — but what exactly are those stages? In the next exercise, we’ll dive into the various environments that code moves through on its way to users.

Take this course for free

Mini Info Outline Icon
By signing up for Codecademy, you agree to Codecademy's Terms of Service & Privacy Policy.

Or sign up using:

Already have an account?