Search This Blog

Welcome to Machers Blog

Blogging the world of Technology and Testing which help people to build their career.

Monday, October 20, 2008

Software Test Automation

Automation is the buzzword in the entire QA spectrum. Firms in India and abroad have got a new outlook on how the QA efforts can be saved by automation. Some companies have begun to mature in this field and utilizing automation in most effective ways. For a list of myths related to Automation, read http://www.satisfice.com/articles/test_automation_snake_oil.pdf



It is important to educate the senior management about the expectations from Automation. Identifying what to automate and when to do it is as important as it is to plan the entire effort. Managing an automation project is similar to managing a software development project. The most critical part is to write maintainable scripts – scripts which can be reused across multiple releases of the same product with slight modification. That requires defining a set of guidelines before automation begins. Here are a few tips on how to get started with an Automation project:

The Manager and the entire team should attend trainings on the product and become familiar with the product functionality to the maximum. One of the reasons for the automation efforts going waste is the scriptor’s lack of knowledge of the component which is being automated.
Next the team should conduct brainstorming sessions on what can be automated and when. The outcome of all such sessions would be a detailed Automation Master Test Plan
By the time the planning activities are in progress, the team members should attend all the meetings associated with the component for which they are assigned – SRS Review meeting, DDS review meeting or any other meetings which could be with Manual testing team. This gives an insight on what can be automated and in which stages
Another activity which goes in parallel would be designing the Automation framework. The framework is one task which would be allocated a majority of effort, since it forms the crux of entire automation effort in future. The framework should be designed in such a way that it could handle all the ways in which an application could fail during execution of scripts and still recover smoothly to execute the next set of testcases. This is known as the Recovery System. At the same time, the framework should be flexible enough to accommodate any changes into the application functionality. Since Automation scripts would always need to be up-to-date with the application’s functionality.
Next comes the automation of scripts – how to get started? A senior member of the team should automate a few testcases for a particular area and demonstrate the same to entire team. The team should ensure that the automation has been done in accordance with the guidelines defined for automation of scripts.
Once every member is involved in writing automated scripts, two steps need to be performed:
Peer review of scripts every week or fortnight.
A check-in mechanism needs to be defined using some Version Control System such as VSS or CVS, so that scripts are always up-to-date. One member in the team should be assigned this responsibility of Check-in Administrator. Before every check-in the Admin has to ensure that the check-in does not break the existing framework.
Be in regular contact with the Manual Test Engineer and get the scripts reviewed from him. It is important to gain their trust.
It is not important to automate everything, but it is most important to ensure that whatever is automated should be in working condition on the current build. Due to this reason, the maintenance of scripts is a constantly on-going task.
There are many times when the scripts fail due to UI/functionality changes and not due to bug in the code. Those are trying times for Automation Engineers and they need to cope with all such changes. The Manager should ensure the motivation levels of the team are always up in such cases and a failure due to a bug in the software should never go unnoticed
To keep the automation efforts visible to management, it is important to produce some deliverables at different stages during the SDLC. The deliverables could be in the following order:
Automated set of Smoke testcases – a set of high-level testcases which verify that the basic functionality of the product is correct. Once the smoke tests are automated, they should be executed on every weekly build (some places it is also done on Daily Builds to identify the side-effects of any check-ins). Such tests could include – UI tests, Command-line. For tests which cannot be automated, maintain such a list separately so that they could be executed manually on every build. The results of execution should be published to all concerned teams – including Dev, PMG and QA
Automated set of command-line tests – Such tests one automated are resistant to change. Since the functionality is command-line which is not expected to change frequently, maintenance of such testcases requires minimal effort
Automated set of Functionality tests – This set should be automated based on the priority. For example – we associate a rotation with every testcase – R1, R2, R4, R8, R12, R16. R1- smoke test (Every 1 week); R2,R4,R8 – High priority functionality tests; R12,R16 – Low priority, low risk functionality tests.
Automated set of Regression tests – This requires keeping a track of all critical defects. A critical defect could be a showstopper (P0), P1 or even a P2. I always recommend to automate all P1s, selected P2s and selected P0s. This kind of Automation would always give a high visibility, since no manual tester would regress his fixed defects again. An execution report of such testcases could be published every fortnight or so.
Automation of workflows, shortcut keys, localization tests, performance tests

No comments: