Thursday 17 January 2013

All About Automation Testing

  • Automation testing involves testing of application or product using some program in some software, or testing or validating software using software which is different from the one which is to be tested.
  • Commonly its well known for reducing and removing human interactions from an existing manual process that follows formalized testing process. Once test have been automated they can be run quickly and repeatedly. This is the most cost effective process for the products or applications whose maintenance life is for long years.
  • Every software development group tests its products, as the delivered product contains defects. Test Engineers strive to catch them before release of the product with the best manual testing processes but they end up in vain. Automated Testing is the best way to test the product with increase in efficiency. Automated tests are created and can be easily repeated to perform the tasks impossible with manual testing. Automated testing is considered critical for big software organizations or too expensive for small companies to implement. Automated software testing improves the accuracy, test coverage within short interval of time at low cost. 
  • Test automation has specific advantages for improving the long-term efficiency of a software team’s testing processes at low cost and time.

Why To Automate

  • Cumulative coverage to detect errors

It is a fact that applications change and gain complexity over their useful life. As depicted in the figure below, the feature set of an application grows steadily over time. Therefore, the number of tests that are needed for adequate coverage is also constantly increasing. Just a 10% code change still requires that 100% of the features be tested. That is why manual testing can’t keep up – unless you constantly increase test resources and cycle time, your test coverage


will constantly decline. Automation can help this by allowing you to accumulate your test cases over the life of the application so that both existing and new features can always be tested. Ironically, when test time is short, testers will often sacrifice regression testing in favor of testing new features. The irony is that the greatest risk to the user is in the existing features, not the new ones! If something the customer is already doing stops working – or worse, starts doing the wrong thing – then you could halt operations. The loss of a new feature may be inconvenient or even embarrassing, but it is unlikely to be devastating. But this benefit will be lost if the automated tests are not designed to be maintainable as the application changes. If they either have to be rewritten or require significant modifications to be reused, you will keep starting over instead of building on prior efforts. Therefore, it is essential to adopt an approach to test library design that supports maintainability over the life of the application.

  • Repeatability to save time and reduce the cost to market
Because software has become a competitive weapon, time to market may be one of the key drivers for a project. In some cases, time is worth more than money, especially if it means releasing a new product or service that generates revenue. Automation can help reduce time to market by allowing test execution to happen 24X7. Once the test library is automated, execution is faster and run longer than manual testing. Of course, this benefit is only available once your tests are automated.
  • Reduced cost of Failure
Software is used for high risk, mission critical applications that represent revenue and productivity. A single failure could cost more than the entire testing budget for the next century! In one case a single bug resulted in costs of almost $2 billion.
  • Leverage to improve resource productivity.
True leverage from automated tests comes not only from repeating a test that was captured while performed manually, but from executing tests that were never performed manually at all. For example, by generating test cases programmatically, you could yield thousands or more - when only hundreds might be possible with manual resources. Enjoying this benefit requires the proper test case and script design to allow you to take advantage of external data files and other constructs.

Benefit: Reduced testing resources. The sad fact is that most test teams are understaffed already, and it makes no sense to try to reduce an already slim team. Instead, focus on getting a good job done with the time and resources you have.

When to Avoid Automation

If the expected behavior of application is well known then one should go for automation. When this is not the case, it is usually better not to automate.
  •  Ad hoc Testing
  • One time testing
  • Testing that demands validation of applications appearance
  • Unstable design of Application
  •  Inexperienced Testers:- If the person(s) automating the test are not sufficiently experienced with the application to know the expected behavior, automating their tests is also of doubtful value.
  •  Temporary testers
  •  Insufficient time, resources:- If you don’t have enough time or resources to get your testing done manually in the short term, don’t expect a tool to help you. The initial investment for planning, training and implementation will take more time in the short term than the tool can save you. Get through the current crisis, then look at automation for the longer term.

Automation is a strategic solution, not a short term fix.

Benefits of Automation Testing
  • Fast: - Tools runs tests significantly faster than human users.
  • Reliable: - Tests perform precisely the same operations each time they are run, thereby eliminating human error.
  • Repeatable:- You can test how the Web site or application reacts after repeated execution of the same operations.
  • Programmable:- You can program sophisticated tests that bring out hidden information.
  • Comprehensive: - You can build a suite of tests that covers every feature in your Web site or application.
  • Reusable: - You can reuse tests on different versions of a Web site or application, even if the user interface changes.
Approaches to Automation Testing

There are basically two approaches for automation testing,

· Code Driven Testing:- It is a process in which unit testing is executed to validate functionality of modules or some functions or classes under different circumstances. It is generally done by Development teams

· Graphical User Interface Testing:- In this approach verification of application is done considering the behavior of    application for mouse clicks and keystrokes.Many test automation tools provide record and playback features that allow users to interactively record user actions and replay them back any number of times, comparing actual results to those expected. The advantage of this approach is that it requires little or no coding skills.However, reliance on these features poses major reliability and maintainability problems. Relabeling a button or moving it to another part of the window may require the test to be re-recorded. Record and playback also often adds irrelevant activities or incorrectly records some activities.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.