With more organizations adopting SharePoint, the importance of the service it offers has increased to the point where organizations are concerned about quality of service – fast and no outages. Specifically, how do IT shops support multiple farms – test (functional and performance) code and patches? Another question you might ask is how do I create a test environment that mirrors production and keep it that way?
Sounds like a lot of work? Well….there isn’t a simple answer and turnkey solution but I hope to offer some ideas to help you fast track to the results you want.
So what does a test environment look like from a cursory view? Here are some key areas to address in your plan:
- Requirements gathering and Design – Utilize standard documentation for the requirements and design tasks and create a risk analysis to help determine whether the ‘change’ if low (Simple administration) or high risk (Application change). For example, simple administration changes usually don’t required as much rigor as application changes/adds – treating everything as high risk will cripple the development team.
- Development Environment – Laptops with VMware workstation running Windows, SharePoint, SQL Server and Visual Studio. Usually a code management system is running on the development and test network as well. The system would contain source code for the applications, Web Parts, Features etc…The Laptop would also have eBooks for .Net and SharePoint development and links to the same sort of topics (Will post some links). Using VS Team System will help with creating an integrated environment for the developers. Automating installation is key to reducing management overhead and maintaining quality. Using WSP and or MSI will help. For provisioning VMs you might want to VMware Lab Manager of something equivalent.
- Test Environment – Many clients run VMware ESX Server to run multiple VMs that mimic production environments. What I find key here is separation of key systems so that production is mimicked as closely as possible. Building the VMs can be done manually or by creating images using VMware. For provisioning VMs you might want to VMware Lab Manager of something equivalent. You will also require a LAN/WAN simulation device where you can set speed and latency between devices to simulate a network. For load testing a you might want to consider something like Loadrunner or use Visual Studio. Dont forget a test plan that lists test cases, what to monitor and to expect as outcomes.
- Performance and functional testing – when testing your farm and or customizations always remember, test both performance and functionality. Performance tests will test for page load performance while looking at key counters for memory leaks, excessive calls to SQL etc…Functionality testing focuses on click throughs to make sure thinks work as expected. Having test plans for performance and functional is key to success. Though functional tests are specific to your customization, you can base your performance testing on PAL (http://pal.codeplex.com/).
- Change Management – Key to synchronizing production, development and test, process and policy area required – tools alone are not enough. Adopt a methodology such as SDLC and make sure that document and sign offs occur at each stage to make sure quality is maintained. Additionally, ongoing training, reviews and enforcement will be required and I suggest IT staff have performance reviews that include their compliance with the TQA process and policy.
- TQA Team Site – Create a TQA team site in SharePoint that contains all documentation (process, policy), reference materials (Books, videos etc…), contacts (SMEs), training videos and any other valuable information for on boarding and succession planning.
The following are reference materials for SharePoint development:
- SharePoint best Practices site
- Microsoft Office SharePoint Server 2007 SDK
- Windows SharePoint Services 3.0 SDK
- Development Tools and Techniques for Working with Code in Windows SharePoint Services 3.0 (http://go.microsoft.com/fwlink/?LinkId=123413)
- Working with ASP.Net 2.0 Web parts and WSS 3.0
- Best Practices: Common Coding Issues When Using the SharePoint Object Model (http://go.microsoft.com/fwlink/?LinkId=123414)
- Windows SharePoint Services Developer Center
- Code Acceptance Checklist
- MSDN Webcast: Essentials of Application Security (Part 1 of 3): Secure Communications (Level 200) (http://go.microsoft.com/fwlink/?LinkId=123430)
- SharePoint Server 2007 Developer Portal
- Microsoft Anti-Cross Site Scripting Library V1.5
- Web Part Checklist
- Improving Web Application Security: Threats and Countermeasures (http://go.microsoft.com/fwlink/?LinkId=123432)
- Exception Management Architecture Guide
- SharePoint Products and Technologies White Paper: Implementing Microsoft Office SharePoint Server 2007 and Windows SharePoint Services 3.0 Solutions
- How to programmatically test for canonicalization issues with ASP.NET (http://go.microsoft.com/fwlink/?LinkId=123434)
- Validating ASP.NET server controls
- MSDN Webcast: Digging into Server-Side State Management (http://go.microsoft.com/fwlink/?LinkId=123436)
- SharePoint Products and Technologies customization policy (http://go.microsoft.com/fwlink/?linkid=92311)
- Planning for Design Limits
Have some ideas for improvement? Let me know.