Performance testing is something that should be done throughout the entire development lifecycle. There is a lot of testing that can and should be done during the early stages of design, development, and system test to optimize performance, regardless of hardware configurations.
In the early stages of the project, requirements should be gathered around such things as expected response time, throughput and scalability. An architecture needs to be designed to take these things into account. This architecture should be reviewed keeping in mind ways to optimize those areas of performance that are most important to the users.
During the code development stage, performance unit tests should be created and executed. These could check for memory leaks or other areas that may make the code vulnerable to performance issues. Functional test efforts should include timings for functions that are time-sensitive. Even if the production hardware may speed up the overall time, testing for performance early will help uncover certain areas of the code which perform poorly compared to other functions and can further be investigated for optimization.
Similarly, load and stress tests can be run in performance test environments to help uncover scenarios in which the software is performing slowly. It's a mistake to think that these problems will all be solved by throwing more hardware at the problem. Many areas of the software can be optimized before deploying on the production hardware.
Your final tests should try to emulate your hardware environment as closely as possible. Though your test environment may not be as robust as your production environment, you can continue to find and correct potential bottlenecks during the test phases.
If you review and test for performance throughout the software development lifecycle, your team will have the opportunity to ensure each component of the application is operating at its optimum performance before deploying to your production deployment.
Dig Deeper on Topics Archive
Related Q&A from Yvette Francino
Agile mobile development can be made easier by using a little-known methodology, called Mobile-D. Expert Yvette Francino takes us inside this process. Continue Reading
It may be challenging to make sure everyone's voice is heard in collaborative meetings, but a good facilitator can ensure this happens. Continue Reading
Agile methodologies stress the benefits of collaboration, working with cross-functional teams to encourage communication between business owners and ... Continue Reading