Sunday, November 27, 2011

How to approach functional test automation?

Functional Test Automation: While testing, when a certain functionality is tested repeatedly, it is advisable to automate the test so that it can be tested efficiently, providing more test coverage. This is with respect to functional testing. But when we talk about other kinds of testing like performance testing and security testing, testing goals and mechanism to test will defer. Since I have not worked in those areas, I will not able to talk much about those in detail and would focus only on functional test automation in the below article. Along with the technical parameters, I have also incorporated few operational parameters which I thought are important for the success of the project.

But directly attacking any application would cause more harm than profit, and an structured approach towards automation will help to get a positive ROI faster. Following are the main phases which should be worked upon without diving into automation of the application directly.

- Feasibility Analysis: This is the most important phase where automatibility of the application is evaluated. There are multiple things which should be taken care of in this phase. Firstly the technology of the application must be taken into consideration. It would affect a lot on the choice of the tool taken for automation. Also  you need to see, which phase the application is currently in, and is it the time to go for automation or not. At many time you might opt for automating the application assuming the fact that it will solve your testing problems and increase testing coverage. But application might be in its development phase and might not be stable enough to be automated. So evaluating all the factors which are important before diving into automation is critical. Here are few points which can be checked in this phase:
       - Stability of the application
       - Sufficient regression cycles to get the positive ROI
       - Availability of the resources

- Tool for automation: This phase can be taken as a subordinate phase of the Feasibility Analysis phase. Based on the technology of the application different tools available for automation in the market and available skill set can be taken as a option. Then based on the budget and coverage of tool, few tools can be selected. After selection of the tool, a proof of concept exercise must be perform to conclude the feasibility study and to find out the best suited tool for automation. Following factors may be considered while talking a decision on the tool:
        - Budget of the project to choose between open source and commercial tool
        - Compatibility of the tool with the application
        - Integration with existing test management tool

- Decision on Automation Framework: After doing the feasibility analysis when the technical picture is clear about the kind of application, which needs to be automated and the tool, which would be used for its automation. It is a good idea to discuss now about the framework which can be used for automation. The selection of framework may be decided on the following factors:
        - Tools being used for automation and test management
        - Organisational policy in terms of usage of the tool
        - Available frameworks in place(in case of reuse of existing stuff)
        - Skill set of available automation engineers

- Make a plan: In this phase you need to deal with the technical as well as the tactical aspects of the project. It is the most important part of the project as it acts as the backbone of the project and all the deliverables are dependent on this. One important thing, which needs to be taken care of, is that the plan should be made in such a way that it can be referred throughout the project execution and should not be just a ritual. This would involve planning for resources, deciding on timeline, reporting mechanism, defining stakeholders etc. Following factors may be considered while making a plan for automation:
        - Framework for automation
        - Timeline of delivery
        - Resourcing
        - Reporting structure
        - Metrics for tracking progress
        - Probable risks and mitigation plan for those

- Tracking and coordination: Though I have already mentioned about tracking in the above point, I want to talk a bit more about this as I feel it is one of the most important part in success of the project, as the success of the project depends upon the coordinated team effort towards completion of the goal. A tracking mechanism ensures proper division of work among the team members, and reduces the chance of duplication of the effort. Also this would help the project managers and leads to track the progress of the project against the plan, to identify and issues, and to find a solution for the smooth delivery of the project.

- Environment management: Having a proper test environment is critical for the success of the automation. It is suggested that the team is provided with an environment, which can be used for the automation. The data required for environment to work properly should be available and properly be maintained in the environment. This data maintenance is critical with respect to automation because in its absence the tests would fail.

Though there might be more things to be considered for automating which can be added as per project requirements. Comments and suggestions are welcome :-)) 

No comments:

Post a Comment