When testing software that is going to be installed by customers, installation testing is one of the most important testing activities. This is especially so since the installation is most probably the first interaction a user will have with your product.
Logically, it’s fundamental that you make sure that users do not have any trouble when installing your software. If your software’s installation is successful, your customer will be satisfied, but if the installation fails, not only will the software not work on that system, but it could have damaged the user’s system. Of course, this is not a desirable position to be in.
Installation testing has become more complex with time, this owing to the many different ways software can be distributed nowadays. Whereas in the past software was distributed in the physical format of disks, nowadays it is commonplace for software to be installed from the internet, a network location or pushed to the user’s machine.
The type of installation testing you will need to carry out is affected by a number of factors, including which platforms and operating systems the software supports and how it will be distributed.
The way most installers work is by asking a series of questions and altering the installation configuration based on the response of the user. It is a good idea to create a tree structure of all the possible options which are available to the user, thus covering all the unique paths of an installation.
Whoever is tasked with performing installation testing should have information as to what to expect after the installation is completed. Tools to compare file systems and registry DLLs etc come in handy to ensure that the installation encountered no issues and is complete.
In cases when the installation is dependent on other components such as a database or a server, test cases should be written specifically to address this.
Of course, one should never only test for optimal circumstances alone. Negative scenarios such as insufficient memory, insufficient space, and an aborted installation should also be covered within installation testing.
The test engineer should ensure that clear messages are given to the user in cases of failure and that the installation can be continued after increasing memory, space or anything else which forced the install to abort.
Other special test cases that should be written include those intended to test how software will be distributed. In cases where software is distributed using a physical CD format, test activities should include executing from ISO images, checking the sequence of CDs used as well as handling of corrupted CDs or image.
If test cases are distributed from the Internet, test cases should take into account cases of poor network speed and broken connection, firewalls and security related issues, size of download and approximate time needed and concurrent installations or downloads
In general, it is safe to say that installation testing should concern itself with the following eight points at the very minimum:
- The product should check for another version of the same product on the target machine.
- In the case of Windows, the installer should provide a default installation path saying “C:program files.” A similar standard exists for the Mac.
- The Installer should allow the user to install at a location other than the default installation path.
- Checks to see if the product can be installed over a network.
- Installer should provide Remove / Repair options.
- When uninstalling, all registry keys, files, DLLs, shortcuts, etc are removed from the system.
- Test an install of the software without administrative privileges, for example logging in as guest.
- Test an install on a non-compliant configuration such as one with less memory / RAM / HDD space.