Enterprise Web applications are constituted by thousands of moving parts, that not only need to work well by themselves, but also need to work integrated together. The management of all the testing perspectives becomes a process in of itself and spawn multiple mechanisms for verification and validation of the application.
At the most basic level each piece of the application that has well defined inputs and outputs can be tested. These kinds of tests assume that no side effects will influence the test, or that they are invariant during the test. While useful to establish a robust verification baseline, unit tests by their nature are limited to artifact like functions, components or automated procedures.
Unit tests for c# classes are provided by NUnit. Unit tests for javascript components are provided by Jest.
Ultimately all parts of the software must work in harmony to produce the desired result. This is more often a process constituted by a series of steps than a single input/output cycle. E2E tests simulate user action over a real deployed application in order to verify it contains the expect displays, those displays allow for expected actions, and those actions provoke the expected effects.
E2E tests are provided by WebDriver and Nunit tests that are supported by a Page Object Model that isolates the page implementation details from the test description.
While all of the functionality may be working correctly according to specification, this may say little about the quality of the source code. Lack of quality may lead to future issues like a high cost maintenance of the code, hidden edge conditions and exceptions, use of deprecated libraries, performance issues, and many more categories.
These tests are provided using SonarQube for production code and during development lint tools can also be used for early detection of low quality code.
Accessibility issues creates unique challenges for users with disabilities. While applications progress to ever increasing levels of functionality, its interfaces also increases in complexity and assumptions about its users. Automated accessibility testing is a helpful tool to keep in perspective small adjustments in style, behavior and interaction that can make all the difference for disabled users.
These tests are provided by Pa11y.
Security issues are often overlooked when the focus is on functionality and interface. However, information confidentiality, data integrity, and system isolation are all at risk from malicious action or even just reckless action. Security tests scan the application though computer-aided interactions in an attempt to circumvent the intended interface for users. During these attempts the tests record undue access to information or processes.
These tests are provided by Owasp ZAP.
All information systems have limits for their operation. While a system may handle 10 users without barely putting the hardware to work, 100 users may or may not prove too much. This is often unpredictable without real system operation because user intensity may vary along time, user profile, and even as business grows. Load testing often makes uses of workflows designed for E2E testing and running them in parallel at scale, in order to simulate user load. This can used to find bottlenecks in the infrastructure or software algorithms that may not scale well.
These tests are provided by the automation of specialized E2E tests within a continuous integration framework and Visual Studio Load testing.
To ensure all the testing mechanisms are continuously applied, they are automated into the build process. This not only provides the developers early notice of software faults, but it also optimized developer time by only running a test set when it needs to.
Continuous integrations is provided by Jenkins.