VIPER is an architectural pattern like MVC or MVVM, but it separates the code further by single responsibility. One feature, one module. For each module, VIPER has five different classes with distinct roles. No class goes beyond its sole purpose. Each of the letters in VIPER stand for a component of the architecture: View, Interactor, Presenter, Entity and Router.
Unit Tests are the most simplistic tests one can write and, as the name suggests, test a single unit of code in isolation. They are fast and stable, and we get to write lots of them — they serve as the foundation for the other tests. One common misconception is that unit tests are only to be written for models i.e. entities that deal with data.
At the other end, UI Tests are the ones that test everything as a whole — they check the system from the user perspective and are highly susceptible to breakage. UI tests are expensive and slow, and are the ones that require the most ongoing maintenance to keep up with the evolving system.
Finally, a piece of music for you to listen to when examining the project.