Other Types of Testing
While every application should have the testing above performed at a minimum, especially for small to medium-sized applications without too much complexity, testing can be taken a lot further to try to get that last 20%.
Automated vs. Manual Testing – All of the testing that has been discussed so far is from a manual perspective, but if you have the time and tools to automate them, then by all means do. Building automated tests can be expensive and aren’t necessary for all applications, but after getting past the upfront costs to build and maintain them, they offer great savings down the road by executing much quicker and more accurately than manual testing. You can automate a variety of tests such as smoke tests, positive and negative tests, and, of course, system/regression tests.
Unit Tests – Unit tests are low-level tests that are built by developers to exercise each piece of code in the system. They test individual modules, classes, methods, and functions in the code and are automated, so they can be re-run very quickly. When unit tests are created as part of an application they provide a great safety net for developers to ensure their coding changes are not adversely affecting existing functionality or paths through the code.
User Acceptance Tests – Any time you have an opportunity to leverage an actual user or future user of your application to perform testing on it before it is released to the masses, you should take advantage. As much as business analysts, developers or testers think they may know how a user will use an application, they will still be surprised by the ways an actual user will think and work within an application. Get users to be part of the testing process early and often so that adjustments can be made to the requirements, if needed, and testers can incorporate more “real world” scenarios into their test suite.
Performance/Load Tests – While it is often one of the last considerations when building a new system, how that system performs with a lot of users on the it at one time should be incorporated into larger scale applications. There are a variety of tools and methods to perform performance testing from simply coordinating a time for the entire team to pound away on the system to automated tools that can simulate a variety of performance factors and load stress on a system.