If you don't know what future outcome you are looking for, you don't know what you're aiming for. And if you don't know what you're aiming for you're going to miss.
Now that you have established user stories, and have a better idea of what the user is looking to experience. You can set up test cases, to ensure that your solution works. There are many ways to do this, we will go over a few different methods
The first method is manual testing. This is where, you the engineer, or a test engineer will manually use the app to determine if it works in the intended way. The cons of manual testing are that it is less accurate, and for large projects quickly becomes too time-consuming to be cost-effective.
With automated testing, you write code or set up systems that will test your application for you. No human required. This is the preferred method of testing as it is far more reliable and cost-effective. Additionally, it's harder to have a false positive. Meaning it's harder for the engineer to pretend the application works when it doesn't. Since humans are wishful thinkers, by no fault of their own, automated testing helps prevent you from assuming you've solved the problem when you actually haven't.
Many frameworks exist that will help take your user stories from the last lesson and create a robot that will try to use your system in that way.
Some good frameworks for automated testing are:
- https://www.cypress.io/ (great for integration tests where you are testing the entire system, you will use this framework to codify your user stories)
- https://mochajs.org/ (great for unit tests where you are testing an intricate piece of the system)
- https://www.chaijs.com/ (an assertion library that helps you assert that the data your system is returning is what you expect)