Triaged Tester

Agile’s Alliance with Automation

Agile’s Alliance with Automation

Abstract:

The speed at which Agile projects run demands a high level of automation surrounding any repetitive activities. Nowhere is this more obvious than in a build/test/deploy process. Builds have traditionally been a source of pain and the natural reaction to this pain is for teams to put off the build and deployment activities thereby incurring large amounts of ‘project debt’. In an agile world we attack this problem by accelerating and automating the build/test/deployment processes. The goal of this is to educate a team on how to apply automation to all stages of their work. We incrementally build a complete Continuous Integration strategy that is applicable and configurable for most any environment.

Keywords:

Introduction:

Testing in an agile project can vary in depth and style, but not in its intent. A true agile testing is a software testing practice that follows the effigies of the agile manifesto, treating software development as the customer of testing.

Agile Manifesto:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer Collaboration over contract negotiation
  • Responding to change over following a plan

Values and Principles of Agile:

  • Communication: In the traditional software methodology building the software systems is accomplished through documentation such as SRS, Functional Specification etc. whereas Agile talks about building the software rapidly and to give all the team a shared view of the system. Communication of system requirements to the developers and testers is required and this is achieved by small team meetings. No documentation is done as the time is the key factor for all the systems being agile.
  • Simplicity: Agile encourages in finding the simple solutions for the problems. The most critical but the simplest function is taken first and then thereafter extra functionality is added to it.
  • Feedback: Feedback is very useful if the system is to be done rapidly. The customer is contacted in more frequent iterations which are unlike to the traditional methods. The customer has a clear insight into the system, for which they provide the feedback.
  • Iterations: Agile says that building the entire stuff all at once doesn’t works. It encourages the teams to break down the entire system in to small modules which then are completed in small iterations. By making small iterations, customers have more control over the system

Agile Automation Testing:

Simply by applying the agile values and principles we can perform the automation of test cases. An agile approach to automation:

  • Concise – Test should be as simple as possible but no simpler.
  • Self-Checking – Test should report its results such that no human interpretation is necessary.
  • Repeatable- Test can be run repeatedly without human intervention.
  • Robust- Test produces same result now and forever. Tests are not affected by changes in the external environment
  • Sufficient- Tests verify all the requirements of the software being tested.
  • Necessary – Everything in each test contributes to the specification of desired behavior.
  • Clear – Every statement is easy to understand
  • Efficient – Tests run in a reasonable amount of time
  • Specific- Each test failure points to a specific piece of broken functionality (e.g. Each test case tests one possible point of failure)
  • Independent – Each test can be run by itself or in a suite with an arbitrary set of other tests in any order
  • Maintainable- Tests should be easy to modify and extend.
  • Traceable – Tests should be traceable to the requirements; requirements should be traceable to the tests
  • Joint Effort – Teal collaboration acts as a catalyst for production of new scripts.

Agile Automation Strategy:

  • Where to start?

Test automation creates very good results when employed with effective development practices are in place. The team needs to focus on one story at a time, building functionality step-by-step. Coding must be driven by both technology and business-facing tests as a collaborative effort of customers and developers, so that the right features are delivered on the first try. Continuous integration running a robust suite of unit tests is a first step towards automating other tests. It is very important that the right tool is selected for the automation as it will simplify the road for the maintenance of the automation ahead. The developers and the testers can together work on creating a new tool which suits their needs. Again, the development of tool will be based on the agile values. The functions or objects that are needed to automate the test cases for that particular increment is taken into consideration first and then the others. This helps the tester to build a tool as per their requirements and do not have to compromise with the shortfalls of the pre-existing tools in the market. If, in market there is already a tool that can be

Enhanced somewhat to meet their requirements then it is a wise decision to go for that tool. The test cases written for the first module being developed should be the first customer for the automation tool.

  • What to automate?

A million dollar question is what all should be automated and where to start. Any tedious or repetitive task involved in developing software is a candidate for automation. Such as the Build installation, everyday one has to download and install the build which in turn takes nearly 2-3 hrs on an average. Automating this works saves a lot of manual productive time. Manual unit tests don’t go far towards preventing regression failures, since performing a suite of manual tests before every check-in would not be very practical. So the regression test cases should be automated as it will help testers to work on other priority modules and need not to give their time in testing the same things on every check-in. Some types of testing can’t be done without automation. Manual load tests aren’t usually feasible or accurate. Performance testing requires both monitoring tools and a way to drive actions in the system under test. You can’t generate a high-volume attack to verify whether your application is capable of handling a large load without some tool framework. All the legacy areas or modules should be automated which are less prone to changes, so as to save the manual effort in testing those areas.

  • Selection of right tool?

The selection of the right tool is very important in order to save your time and money both. It is not necessary that the tool that works best for the unit-level test cases will go good for the functional test cases. Basically the selection of tool depends on many things such as System requirements, costing, and approach to the automation etc. By the approach to automation the author means the framework for the automation. Performance, Load, Security testing may require different tools for the testing.

  • Risks?

Once the automation gets started addition of new test cases to the automation becomes very easy. Now there are few things that the engineers automating the test cases need to keep in mind, they should not just go on automating the stuff without knowing the usability and importance of the test case. One should not automate the area which is more likely prone to changes, as that will result in the rework.

  • ROI?

Conclusion:

If the management wants to have agility in the software being developed then they should make sure that there is Communication among the developers, testers and users. Smaller iterations of the product should be practiced; emphasis should be given to the feedbacks. It’s a known fact that 100% of the automation for the test cases for the agile software is not possible but a maximum number of the test cases automated can be achieved in a very less amount of time and effort if the right selection of the automation tool is done and if the team works on the principles of the agility.

References:

[1] http://agilemanifesto.org/

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: