Home > Ask the Software Quality Experts > Software Testing and Quality Assurance Questions & Answers > How to match the test environment to the production environment
Ask The Software Quality Expert: Questions & Answers
EMAIL THIS

How to match the test environment to the production environment

John Overbaugh EXPERT RESPONSE FROM: John Overbaugh

Pose a Question
Other Software Quality Categories
Meet all Software Quality Experts
Become an Expert for this site


Software quality news and advice
Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


>
QUESTION POSED ON: 01 October 2008
In most occasions the test environment is not a replica of production environment. Is there a model that you use to determine your confidence level, say, if the test environment CPU is only 50% of the production environment? What if there is no load balancing in the test environment, but load balancing in the production environment?


Digg This!    StumbleUpon Toolbar StumbleUpon    Bookmark with Delicious Del.icio.us    Add to Google


RELATED CONTENT
Software Testing and Quality Assurance
What are the top free and not-free automated test tools?
Test case preparation for a Web-based application
The difference between functional testing and regression testing
Free load/performance testing tools for Java-based Web applications
Mapping results in test environment to production environment
What are some debugging shortcuts to reduce frequent debugging?
How to get a software testing job in a recession
How to write a test strategy document
What are the risks in using open source test automation tools?
What is system integration testing?

Software performance, load and stress testing
Budget-friendly Web app performance testing, monitoring tips
Testing functionality, performance of mobile Web applications
Free load/performance testing tools for Java-based Web applications
Software testing deliverables: Developing a software testing strategy
Is functional testing sufficient to determine code coverage?
Why the quality assurance department should be involved in testing
What are the different software testing methodologies?
Testers: Time to gear up for mobile software testing
Two-minute guide to determining software testing coverage
Best load and stress testing tools

Software testing and quality assurance (QA) fundamentals
Five roles test managers play in agile development: Tutorial, part one
Three software regression testing steps can perfect defect fixes
Software Testing: Assessing risk and scope
Software Testing: How to know you're ready to start testing
Quality assurance (QA) and testing's role in requirements
Test case preparation for a Web-based application
The difference between functional testing and regression testing
Mapping results in test environment to production environment
Agile software development tutorial: Agile testing
Creating strong QA and testing strategies in a changing world

RELATED GLOSSARY TERMS
Terms from Whatis.com − the technology online dictionary
integration testing  (SearchSoftwareQuality.com)
performance testing  (SearchSoftwareQuality.com)
shotgun debugging  (SearchSoftwareQuality.com)
stress testing  (SearchSoftwareQuality.com)

RELATED RESOURCES
2020software.com, trial software downloads for accounting software, ERP software, CRM software and business software systems
Search Bitpipe.com for the latest white papers and business webcasts
Whatis.com, the online computer dictionary


Environments:
In cartography and orienteering (the art of making maps, the horribly frustrating pastime of following maps), the rule of thumb is that the perfect map is a 1:1 ratio. However, a 1:1 scale map simply isn't realistic -- it's exactly as big as the area being covered! As maps increase in ratio, their accuracy drops.

In testing, especially performance testing, the closer your environments match your production environments, the more accurate your benchmarking will be. However, this can become infinitely expensive (many production systems can cost into hundreds of thousands of dollars). There are a few strategies available:

  1. Performance test on the production hardware at night: Roll out preproduction code during the lowest usage time, and run performance testing then. Not always practical, and it's a significant morale drain on the teams involved.


  2. Extrapolate: Some operations teams I have worked with have been extremely "formulaic" in their approach. They've assumed 50% of the resources will produce 50% of the load. Notice the huge error in thinking here -- this assumes everything scales in a linear manner, which I've almost never seen in my career as a tester. However, it's still better than doing nothing!


  3. Combining test data with empirical data: If you're deploying to a load-balanced environment, but have no load balancing hardware, you can combine your test data (the scalability experienced on one server) with real-world observation (the scalability across two load-balanced servers). This is sketchy because it assumes a perfect load balance and ignores a whole host of other factors.


  4. Discover trends: Start at low loads and increase your load (throughput, request rate, etc.) incrementally. Pay close attention to response time as well as resource demand. As you slowly ramp up the load, you'll see the general trend -- as you add users incrementally, does the response time increase in a linear manner proportional to the load increase? Does the response time increase faster than the load rate? Does the response time increase exponentially faster? You should be able to follow the curve and arrive at a best guess as to the response at high load. Note that this approach ignores the fact that, shortly before complete failure, a system begins to suffer exponential response-time increases. However you can detect trends with this and that's better than no data at all.

In my last organization, I found it kind of funny that our operations team 1) didn't know what MTTF testing was (mean time to failure) and didn't trust the extrapolation that, if we survived 500,000 transactions, and we averaged 100,000 transactions per day, we could assume five days of uptime but 2) would be perfectly happy predicting that a system which handles 500 concurrent users on one box will scale perfectly to 2000 concurrent users on four boxes. However in the end, many organizations take that approach. As a tester, your job is to 1) not believe it (or be very, very skeptical) and 2) do everything you can do to prove it wrong. The best approach, obviously, is to have a perfect replica of your production environment in which to perform your testing. Short of that, you have to be creative and yet scientific about your testing.

Software testing resources:
What to do when the test environment doesn't match production

Performance testing in the production environment

How to set up a test environment

The final point to be made here is that you need to learn over time. Make you best attempt at testing, then when you go to production, monitor the actual live data. Learn how your assumptions in testing bear out in production. Then you can change your assumptions and, over time in a heuristic manner, your results will become more accurate.




Search and Browse the Expert Answer Center
Search and browse more than 25,000 question and answer pairs from more than 250 TechTarget industry experts.
Browse our Expert Advice



Software Quality - Software Maintenance, Software Requirements, Software Standards
About Us  |  Contact Us  |  For Advertisers  |  For Business Partners  |  Site Index  |  RSS
SEARCH 
TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations' technology projects - with its network of technology-specific websites, events and online magazines.

TechTarget Corporate Web Site  |  Media Kits  |  Site Map




All Rights Reserved, Copyright 2006 - 2009, TechTarget | Read our Privacy Policy
  TechTarget - The IT Media ROI Experts