Large software organizations have the luxury to invest in labs, or test labs to help their test engineer better test a software. These labs could range from a setup having racks and racks of machines of various configs or could be just a big room with 10-20 machines. Having worked in a company (Legato Systems, now EMC) which creates Enterprise Backup Solutions (Legato Networker) I have been fortunate to see a lab which really had these large cupboard sized machines, fiber-optic powered SAN (Storage Area Network), really cool racks which support multiple machines with same keyboard, a display which would slide out and then go vertical. Probably it was done since it was needed. At the same time, out here at Adobe, we usually have a set up where a bunch of standard desktop machines are present running all kinds of operating systems, various locales and so on. Probably the reason we do not have racks is that our users do not have racks. Though I am sure that having racks might be more space efficient but thats for another day.
Some of these labs are powered by Image servers, the ones which can spit a OS image and do a raw-copy on local disk by booting the machine through network, while others may rely on OS installation through shiny disks. At some places, you have a check-in/check-out register for each of the machine, so as you get in you can work on a machine which is available and then as you go, you let go of the machine. I am sure that during your work experience you might have seen a different kind of lab as well. Also, some of you must have spent long nights in one of these labs trying to isolate a bug or just getting done with your part of test coverage. Sometimes these are also fertile grounds of new associations, more so since these are not too crowded, fall in a neutral zone (its neither harry’s office nor sally’s cubicle) and there are always many reasons to ask for help, there would always be something which is not working. Before your mind takes off and before you get nostalgic , let me come back to my intention of writing this post.
My intention here is to try to capture some of the best practices, best methods and general good housekeeping tips to harness most from a test lab. A happy test lab is key to success of test-case-execution and here are some things which you can employ to make your lab happy. These are not in any order but feel free to ask back incase it appears fragmented.
Five Things towards a Happy Test Lab
1. Make it warm
The cooling is always couple of notches below, the loneliness killing and there is never too much of light. There are dingy corners, strange alleys and non-living equipment. Yeah, this is your test lab, so before it stats to smell like a cold art gallery, do something and make it warm. Work with your faclities people to have some bright wall color, put some posters, have some check-lists so that its interactive and make some noise. The idea is to make the lab a warm place so that its fun to go and work in lab rather then make it look like as some kind of punishment.
2. Make it Large (Rich)
The whole purpose of setting up a lab is to have those special configs available to all who want to exercise it. Whether it is those special machines with huge RAM or a different processor then what we typically find in our desktops or some fancy equipment. Create a list of all those things which a tester needs and then stock the ones which you can’t give him for dedicated use. This also includes racks having all the OSes, Software, Serial Keys or Licenses, different kind of monitors etc
3. S/W system to manage bookings
Get hold or write a small software which helps you to reserve a lab resource viz. machine, equipments etc. Make this software easily accessible from any where, a small web app should do. This will help people to plan their time and make life easier to search the most desired machine. This s/w can also act as the inventory manager for all the equipment. Once thats done, go a step further and build reports which helps you to track usage. That way you can eliminate those machines which no one ever uses and buy more of those which are everyone’s favorite.
4. Good support of Imaging solution
Even though this could be part of a s/w, I wanted to emphasize this separately. This is more true for product based companies. Most of our products needs to be testing on a plethora of Operating Systems, Languages, different flavors of popular browsers and so on. Installing/Uninstalling these are not only time intensive tasks but also a great pain-inducers. No one wants to spend half of their day, trying to install a Japanese XP and then figuring out all the drivers of various cards and so on. Instead invest in a scalable and rich ‘OS Image’ management solution. You can also use VMWare or MS Virtual PC. There are some 3rd party solution built around them which helps you to manually schedule a OS-Image restore. They do not cost a bomb and are great value for money.
5. In-House Lab Admins
And finally have someone in your team or the ones which are using the labs as a lab admin. This person has to be someone who is also a user of the lab and should ideally belong to the community which uses the lab most. I am personally not in favor of having a dedicated 3rd person for this job since that looks like a outside person, instead if you have someone who is himself a user then he can empathize better. If its taking too much of time and energy then make it rotating among various people.
Thats about it. These are mostly from my own experience so feel free to comment back on what you have seen in your testing life. On to a happier test lab.