TestingGeek

Learn, Share and Keep Learning

Home Questions & Conversations Installation Testing Challenges
Installation Testing Challenges
This question was asked by John in Software-Testing yahoo group. Whole discussion was around, what are the different challenges associated with installation testing and how people have solved problems associated with the installation testing. Excerpts from the original question goes like this -

Currently, it is the test team's job to verify each installation in various ways. This includes running every new installer that is created and then using a tool called Beyond Compare to compare the files that are installed with the build folder to ensure all files are identical. Secondly, for each build, the testers must compare all files of a new installed build with an installed build of the last version and note that all changes are expected.

We often find problems when we do these checks, and it will come back that the install developer left something out or had the wrong version of a file and we will need to do the whole process over again.

Some of the interesting responses were as follows

TestingGeek

To reduce the pain associated with installation testing we banked upon some small checklist for installation engineer and a home grown tool to compare registry values and file systems with expected values.

Checklist was very small and comprises of basic questions like all the appropriate versions are included or not? Should we expect new registry values? If yes, what and where? Should we expect some changes in the file system ? If yes, what and where? Our home grown tool was also very simple and was comparing new values with the known oracles which can be defined by installation engineer or tester fairly easily.

We found this approach very useful as having a small checklist made it easier for installation engineer to remove his mistakes and gave sufficient information to the qe team on what should be expected in new build.

+++++++++++++++++++++++++++++++++++++++++++++++++++

Matt Heusser

If I understood you correctly, I have a couple of ideas.

First off, Do you have some level of documentation for these?

In other words, can you say: "We're spending an average of X hours a week finding Y installation bugs"

You numbers don't have to be exact.

If you have something, you could present it as an engineering challenge to the developers:

"Hey, guys, I know you perceive testing as a bottleneck. Right now, we are spending a lot of time (tangible numbers go here) verifying the installation process. If we could decrease the time we spend doing that, we could focus on verifying other aspects of the software, and decrease our overall testing time. Do you have any ideas?"

Gentle directions to push the dev in ->

1) Offer to pair program on the install, so less bugs come through
2) Write some simple scripts to do the verification for you (a dir or ls command, piped to a file for the oracle, do the install, do another dir or ls command for the actual results, then diff)
3) Find some other way that the dev team can decrease the defect count before it gets to you
4) If this work is manual and repetitive, outsource it. (Seriously, could some stay at home mom do this work for $8/hr? Maybe 10 or 12? An Intern?)


A few years ago, I would have pushed hard on #3 - the code is in an unacceptable state before it gets to test; the developers have to take some responsibility and fix the !@#$% problem.

A few grey hairs later, I'm not so sure. Now I would say that the key is to either get your management or the developers to take ownership and the credit for it. Let it be their idea. Give it to them as an engineering problem; let them solve it. Don't make it be an embarrassment; instead, let it be a win for them.

It's amazing what you can get done when you don't care about the credit.
+++++++++++++++++++++++++++++++++++++++++++++++++++

Adam Goucher

At HP, we partially addressed the installer testing problem in the following ways
- Do most of the installation testing through Install Shield's command line or silent modes; the logic of the gui installer is still executed the same, but the presentation mode is different. This lets things get driven through automation (python in this case)
- To verify the files, we would spider the installation directory and get a checksum for each of the files which would be matched against one generated by the build process (pre packaging into the installer)
- Do a code review / inspection of the build files / system to ensure that basic sanity measures are in place. At one point we discovered that we were doing a version control update instead of a full clean and re-sync.
+++++++++++++++++++++++++++++++++++++++++++++++++++

Walter Gorlitz

We use a single build machine. This eliminates the need to have developers drop the files in place. After the build has been completed, the process that started the build tells our installer to grab the required files. This addresses the repeatability of creating the installer. Our installer guy just has to approve all changes to the installer scripts. We still have to do installer testing.

The problems are:
1) when developers change their compiler code and DLLs get built elsewhere, we ship old DLLs until we delete the entire binary location.
2) occasionally, when we use checked-in DLLs (particularly common with 3rd party code) and a developer moves that DLL, the installer fails to complete.

In Another Post

We use Wise. We just call Wise from the command line with a parameter of the script to be used.

This is how installer scripts work: The installer application goes out and grabs all the components required from their locations and creates an installer. This installer knows where to put these various files.

The files could be laid out like this
install\bar.dll
install\foo.dll
projectx\coolgui.exe

The installer can take all of those, ask the user where she wants the installed files to be dropped and you come out the other end with
c:\programme\bar.dll
c:\programme\coolgui.exe
c:\programme\foo.dll
(assuming you're using a German Windows system).

This is a very simple example. I would imagine that there are more complicated ones available on the net.

+++++++++++++++++++++++++++++++++++++++++++++++++++

Joao

I share your concern.

It is indeed a huge task to verify setups, because if you need to repeat the test you tipically must:

1-Uninstall

2-Check that everything was removed (like registry stuff, etc) – Probably you have to verify the uninstall feature as well…

3-Install

4-Perform the verifications

In my company we have patches every week, and you cannot imagine the immense diversity of problems such as:

-This file is missing because we forgot to include it

-This file is missing because we did not know we needed to include it

-This other team did not tell us this shared file was changed, so we did not include it in our module.

-There were “compilation problems” (corrupted files)

It seems to me that the way to resolve this problem is more on their side. I mean, they should find procedures and methods that are more reliable, more automated (in the sense that they don’t have to think every time about what files they should include, etc). The more tasks they have to do “by hand”, the more likely they are to miss some. They should get check lists or any other tools to help them.

I ought to say that if a file is missing from a release, the responsibility is from who released the product.

I don’t see our function (tester function) as a parachute to developers work, because I guess it is impossible to verify everything.

Quality is not responsibility of the quality department (QA, Test team, whatever you call it); it is responsibility of the whole R&D team. (I read this on paper “classic testing mistakes”, I think)

+++++++++++++++++++++++++++++++++++++++++++++++++++

Dave

I've had some limited contact with install testing before. I have used a tool called inctrl5 (http://www.pcmag.com/article2/0,1759,9882,00.asp). It's fairly cheap as test tools go - you can download it for $8. It will watch an install and compare before and after snapshots of the disk, registry, and specified files.

You might look into putting together an automated smoke test that can run through some installs and report any obvious problems quickly.

+++++++++++++++++++++++++++++++++++++++++++++++++++

Michael Bolton

I got a clear whiff of that from your initial report. I had in mind a somewhat different answer from most of the respondents: to my mind, your testing job may be done when you've identified the amount of time and effort that is being expended on the problem as it is. One important part of that story is the opportunity cost: every moment you spend on investigating and reporting a problem that could otherwise have been anticipated and addressed is a moment that you can't spend on getting test coverage on the rest of the product. The problems that you know about are therefore concealing problems that you don't know about yet, and that's usually a pretty serious risk.

As for driving change when there's an untouchable developer involved, there be dragons. Be careful out there.

+++++++++++++++++++++++++++++++++++++++++++++++++++

Neeraj Tikku

In my last company I was also on the other side of the fence, that is, I was the one who had the responsibility of creating the installer besides testing them. To add to the complexity, the product I created installer for, was supported on windows platform plus 3 flavours of UNIX [HP, AIX & Solaris].

Below is the approach I took:

1. Created a single Installation script file (we used Install Anywhere so that helped) for all platforms.
2. Created a single ANT script that did the following:
a) First, it would check the build date of all the files that are to be packaged and compare them to the last check-in date (since all files were sourced from a Version Control System)
b) Second check was to make sure that none of the file is of zero size.
C) Then created installer using Install Anywhere's command line utility.
d) Once the installer was created, we executed the installer in silent mode and did a complete installation for each platform.
e) Once the installation was complete, we again check that all the files are copied in appropriate directory structures and the values in properties files are changed appropriately (compared to baseline files).
f) Then brought up the product for Testing team to continue working.
f) Once all the checks passed, the installer was copied to a central location.

If any of the check failed, a mail was sent to appropriate people with all the details. Plus if the post-installation check failed, then the script used to remove the new installation and restore the backup of working setup.

All the installation were done on the setups that were used daily by testing team. Now since you are not the one who is creating the installers, you'll need to have development's buy-in for setting up such kind of process. But if you can translate this in to scenario specific to you, I'm sure the value derived would be too great for development to look other side.

+++++++++++++++++++++++++++++++++++++++++++++++++++

Eric

In a review, I would point out that the test case presented should be optimized for the problem space being solved for.

I’ve been doing install testing since Installshield was a pup, and there’s no way I would expect uninstall to set the correct base state for the next install testing round. I don’t mean this to seem like an Installshield problem, it’s common for the install developer to miss things. And have QA test quality into the installer.

The gross-level steps I’d follow for the install/uninstall testcase (there are so many more than this one) look like this:

1.Restore base image (from Ghost, VMWare, MS VPC, format and reinstall Windows, something)

2.Install anything else you want to have there as part of the test (i.e. back when apps conflicted due to DLL Hell)

3. Take filesystem and registry snapshot

4. Install

5. Verify File system, registry, any apps (DLL Hell again, but not always…)

6. Uninstall

7. Verify File system, registry, any apps (DLL Hell again, but not always…)

Of course, this TC does not specify implementation method (manual, automated, etc.). In my case, automated, automated, automated. I’m the laziest, while being thorough, tester in the world and automate everything that gets me ROI while balancing for objectives. Before we get onto that tangent, let’s be clear that manual testing (ad hoc and structured) is a MUST for any GUI work to ensure a great customer experience. But from a functionality regression resource perspective, it’s not the right tool IMHO.

Last Updated on Thursday, 05 February 2009 13:15
 

Stay in touch

Enter your email address:

Delivered by FeedBurner

Your Opinion Matters

Defect found by testers is
 

Follow Me - Twitter

Follow me on Twitter @ TestingGeek

Services.

Do you need reliable and efficient testing services covering all aspects of software testing? Contact Atlantis Software for all your software testing needs.

Check Websites

If you are looking for easy and cost effective way of checking and monitoring your web application and websites - try iCheckWebsite