agile development and test environments
TRANSCRIPT
Agile Development and Test Environments
August 30, 2006
Today’s Topics
• Goals of the Test Environment
• Reality Check
• Technologies Available
• Applying These technologies to Testing Environments
The Goals of the Test Environment
• We test to ensure ourselves that it will work as desired in production
• Testing infrastructure needs to provide a mirror of the production infrastructure
• Testing infrastructure also needs to facilitate our testing methods– Regression Testing, Performance Testing– Stress Testing, Unit Testing, Compatibility Testing– Load Testing, Developer’s testing
The Real World
• It can be very costly to mirror production environments
• It can be very time consuming to prepare test environments
• Controlling and refreshing “Test” environments is difficult
• The Devil is often in all of the details
Infrastructure Technologies That Can Help
• Computer Virtualization– Server / Workstation
• Storage Virtualization– Software or Hardware based
• Pointer based
• Detailed Documentation – Configuration Management
Computer Virtualization – Server/ Workstation
• Virtualization is a software layer that decouples the physical hardware from the operating system
• Virtual machines are encapsulated into files
• Virtualization was first introduced in the 1960s
Computer Virtualization
Computer Virtualization – Advantages
• Partitioning– Multiple application and operating systems
can reside on one machine
• Isolation– Complete isolation from the host computer
• Encapsulation– The virtual machine is a file in the file
system
Storage Virtualization
• Pointer Based technologies– Present a view of the production database
– They just keep track of writes
– Can be done with either hardware or software
Storage Virtualization
Persistent pointer map
Track C
Production view
Track B
Track A
Production volume
Production volume
Save Area Test view
Application I/O
Access to snapshot
Only the writes to the database are saved
Storage Virtualization – Advantages
• Save on disk space
• Quick refresh
• Ease of use
Detailed Configuration Documentation Software
• Creates a blueprint of the configuration of hardware, operating systems and applications
• Creates a “fingerprint” or hash of each entity
• Change Isolation drill down– Allows for a detail compare between collection
points– Isolates any differences
• Entity• Or inside of the Entity
Detailed Configuration
Detailed Configuration
Applying These Technologies to Our Test Environments
• Compatibility testing– Develop a library of different virtual
machines, control sets– Use your software control library to check in
and check out the virtual machines– Run the testing against the Virtual database– All of this could be done on one machine– If you run into real world compatibility
issues compare your control machines to it
Applying These Technologies to Our Test Environments
• Developer’s testing– Use a virtual machine to continuously compile your code
– Use a message agent like “cruise control” to notify you of problems
Applying These Technologies to Our Test Environments
• Performance testing– Correlate the virtual environment’s
performance to production environment’s performance
– Run your testing using virtual machines as drones
– Translate your results to production
Applying These Technologies to Our Test Environments
• Stress testing– Change the configuration of the virtual machine’s resources
Supporting Production - Bugs in the Real World
• It happens what should work is not working
• You can not duplicate the bug internally, it has to be the local environment
• Suggestions– Use your detailed documentation tool and gather the
details about the local environment
– Isolate the differences by comparing the local environment to your controlled environment
– For future testing, convert the the local environment into your controlled virtual environment
Systems Compare – High Level
Systems Compare – File Level
Systems Compare – Detail Level
Fun Facts
• 90 % of the top 100 software companies use Virtual Machines for testing
• Reduction in deployment time to days VS weeks
• Increased test environments CPU utilization from 6-8% to 50-70%
• Capital expenditures for test environments can be reduced by 80%
• Space, cooling and power demands are also reduced
Contact Information
Nick CellentaniCranel, [email protected] work
Bill WarrenAdexis [email protected]