You can't test every feature of an application. Before you begin testing, define the aspects of the application that you want to test, focusing on the features that are most likely to affect the product's installation and performance in your environment.

Begin the planning process by defining which questions you want your tests to answer. Do you want to find out how much network throughput you need to prevent excessive network delays? Do you want to know whether your server is causing most of a delay? Do you need to know how many users an application can run concurrently? Do you wonder how the software will work with your other applications? Do you want to find out how many packets the network transmits and how large the average packet is?

After you have specified the questions you want to answer, determine which type of application test will best meet your needs. You have a choice of five types of tests: throughput, reliability, functionality, regression, and acceptance.

Throughput testing detects bottlenecks in a system and pinpoints where the bottlenecks occur. These tests determine an application's throughput as it performs various functions, which lets you figure out how much throughput your network needs to avoid long delays in the application's performance.

Reliability testing ensures that the application functions properly for an acceptable percentage of the time. To perform reliability testing, load an application onto a test network and run it continuously for 3 days, monitoring it for errors the entire time. If you don't detect any errors, you can increase the load. Sooner or later, components will begin to fail.

Functionality testing verifies that all of an application's features perform appropriately. Application designers usually perform functionality tests while designing and debugging the application. However, when you place the application on your network and increase the load, you might find problems the application designers didn't find. Use loads similar to your production network's load to test applications' functionality.

Regression testing evaluates the performance and functionality of software or hardware upgrades. Regression testing differs from functionality testing because it tests features that the hardware or software carries over from its previous version, rather than testing new features. Regression testing demonstrates how a new version of software fixes bugs from the previous version and finds bugs that the new version introduces.

Acceptance testing tells you whether your application and network will perform as you expect them to. Many contractors and consultants who offer acceptance testing provide a Service Level Agreement (SLA) that guarantees the application generates a certain level of throughput.