Something I am particularly fussy about is test environments…
As an engineer, whenever I start working with a new customer I like to build a new SharePoint 20XX farm that I will use for testing any code or scripts that they have, or want me to test.
Having a new environment that matches the build number of my customer means that I am in a much stronger position to measure the impact of a script (for example).
Something else that I am particularly fussy about is my test environment being a representation of the environment that the script or code will run in.
Now, some of the customers that I work with have tens/ hundreds of thousands of users; and usually TB of data, which I cannot replicate on my laptop, however I know that I can test against hundreds of site collections, maybe 100 – 200 GB databases, large lists (containing 50,000 items), etc.
I know this, because I wrote a bunch of PowerShell scripts that can be used to scale out an environment.
It doesn't provide you with any guarantees, but it does provide you with some confidence when you've tested your scripts against a list with 100,000 items (for example).
So, please feel free to use them:
Hopefully they are helpful to you.
Just to run through what you get:
New-TestSPContentDatabase: this Cmdlet will create 'x' number of content databases; dead useful when you are working with multiple content databases in your customer environment.
New-TestSPDocument: this one (be careful with it :)) will create 'x' number of documents; each being 'x' number in size; so if you know your customer has an average file size of 'x' MB, then go ahead and create a bunch of them.
Upload-TestSPDocumentBatch: used in conjunction with New-TestSPDocument… This will take a local folder filled with documents, and upload them to a SharePoint document library.
New-TestSPLargeList: if you want a custom list created with 'x' hundred/ thousand list items; then, that's what it does 🙂
New-TestSPSiteCollection: useful if you need a few hundred site collections to iterate through.
No doubt, I will add to it in future, but as with all scripts/ advice that we hand out here; please use with caution!
And, please bear in mind also that this is hosted in GitHub, so if you want to add to it, or contribute then feel free! 🙂