In this section, we’ll try to break the application through various front-end and back-end techniques. By the end of this section, we’ll have gained confidence that the system works as expected. We will use the techniques covered in this section to add more complex features in later chapters.
Debugging real-time systems
Real-time systems can be challenging to write correctly due to challenges caused by persistent connections and long-running applications. Many software engineers take pride in their work, and they may be optimistic about bugs not existing in their code—many programmers have been guilty of this. However, it’s an ever-present possibility that the code we write has bugs. . We should always test our application to ensure that it works in ordinary and out-of-the-ordinary situations. It is also essential to test that library code works in many cases, even if tests cover the library’s code.
In this section, we’ll cover the following points:
- Why should we use acceptance tests?
- Tests that use the entire application stack are helpful for real-time applications.
We’ll try to break the last section’s application through manual acceptance tests. We’ll use different techniques to crash parts of the app that are hidden from the user, such as Elixir processes or the database. Finally, we’ll look at using Hound to automate acceptance tests.
Let’s explore some challenges of real-time application development and why it’s essential to test them thoroughly.