Software development is like a restaurant. The developers are the cooks, the application is the food, and the users are the customers, but the relevant part of this analogy is that the testers are the expeditor. In the kitchen, the expeditor is (in addition to many other responsibilities) the last line of quality control before the food goes to the customers. Since good food is vital to the business, the restaurant needs to have as many quality checks in place as possible. Bear with me on this analogy.
In the standard testing pyramid (pictured below), there are three types of testing: unit testing, integration testing, and end-to-end testing. The testing process starts at the bottom of the pyramid and moves toward the top. Let's take a look at each of these types of tests.
At the bottom of the testing pyramid, unit tests are executed by the development team, like each cook tasting the component they're responsible for. The foundation of the pyramid, unit tests focus on isolated pieces of code and individual variables without any external dependencies. These types of tests are typically very short, so they don't take much time to run. Unit testing is run every time a new feature is added to your application.
A big contributor to your Continuous Integration/Continuous Delivery cycle, integration testing handles how all the individual bits of code testing by unit tests work together, like the head chef making sure that all the ingredients of a dish taste good together. You don't want the kitchen to put out something like milk and orange juice in the same glass. They might taste good on their own, but definitely not together. As the second layer of the test automation pyramid, integration tests take a bit longer to run than unit tests. This testing tests how features communicate and work with external dependencies.
The top part of the pyramid is UI (User Interface) testing, and this is where the end-to-end and functional UI tests fit in. Exploratory testing also belongs to this category. QA testing teams run these tests, and they're the kitchen's expeditor. They ensure the entire application is running smoothly, or in a kitchen's case, all cooked correctly and tasting delicious. At the top of the pyramid, UI tests take the longest to run; end-to-end testing especially takes the most time, since each test starts at the beginning of the user's journey (such as starting by searching for a particular item) and continues all the way to the end (such as going through the checkout process). Journeys can be short and sweet or extraordinarily long and sometimes complicated.
Virtuoso's testing falls in the third and highest part of the testing pyramid structure: the UI tests, and more specifically, functional tests. It's generally thought that UI tests also take the longest due to manual testing, but with the growth in popularity of test automation, UI testing has gotten even faster. Manual tests have worked in the past, but as applications grow in size, testing must scale up as well, and manual tests haven't been able to keep pace. Our functional testing is all run with Natural Language Programming and is completely scalable, plus you can let Virtuoso take the reins and run some exploratory tests. Add in a dash of UI/API tests and our Continuous Testing, and Virtuoso will fit its functional UI testing seamlessly into your CI/CD. We run all kinds of tests (functional testing types, that is), so try out our free trial to see all our testing for yourself.