Agile Testing

By Devika RS on March 31, 2014

AGILE is a methodology that promotes continuous iteration of development and testing throughout the software development life cycle of the project. To be more precise, we can say that both development and testing activities are concurrent.

In agile, testing is not a separate phase, it is an integral part of software development.  Testers lend their expertise in demonstrating user stories from customers. They guide the developers to develop user stories. Testing and Coding are done incrementally and iteratively. This will continue until the feature is ready to release in Production.

Now-a-days, we can see that more number of project teams are switching to agile mainly because of the simplicity of principles in it. Agile also seems to be easy to handle and to make communication with the customer more transparent. It already gives the impression that planning is more accurate in agile and may be they get more examples.

There are various techniques present in agile methodologies of which scrum is the favourite one.

Scrum has garnered increasing popularity in the software community due to its simplicity, proven productivity, and ability to act as a wrapper for various engineering practices promoted by other agile methodologies. Scrum concentrates particularly on how to manage tasks within a team based development environment. Scrum believes in empowering the development team and advocates working in small teams.

The following core roles helps in producing the product.

  • Product Owner represents the stakeholders. The Product Owner or the team writes customer-centric items which are called user stories, prioritizes them, and adds them to the product backlog. He is responsible for ensuring that the team delivers value to the business.
  • Development Team is responsible for delivering potentially shippable increments of the product at the end of each Sprint (the Sprint Goal). This team may contain 3-9 members who do the actual work – analyse, design, development, testing, technical communication, documentation, etc
  • Scrum Master is responsible for removing obstacles to the ability of the team to deliver the product goals and deliverables. He ensures that the Scrum process is used as intended.

A sprint is a time period (typically 1–4 weeks) in which development occurs on a set of backlog items that the team has committed to.

Client requirements are gathered and prepares a Product Backlog [High-level requirements]. At the beginning of the sprint cycle (every 7–30 days), a “Sprint planning meeting” is held to select what work is to be done. The items to be done for each Sprint is taken from Product Backlog and prepares Sprint Backlog. These items are broken down into tasks by the Development Team. Daily Scrum meeting [maximum 15 minutes] is held by Project team to know the status of their work. Each user story is released for testing after the completion of development.

The sprint burndown chart shows the remaining work in the sprint backlog.

graph1

At the end of a sprint cycle, two meetings are held: the “Sprint Review Meeting” and the “Sprint Retrospective”. At the Sprint Review Meeting, review of the completed work and the planned work is done. The completed work is presented to the stakeholders. At the Sprint Retrospective, analyses of the past Sprint is done and makes continuous process improvements.

The important aspects of SCRUM for a tester are Iterative lifecycle and frequent communication. Testing of the product is done during the iteration and not at the end of the development life cycle. It is the duty of the tester to decide that what to test when the product is still incomplete. Scrum is all about working as a team, and collaboration is the basic idea. For a tester it is highly recommended that he/she must work closely with other team members rather than working in isolation. Different types of testing are involved in agile such as  Build acceptance testing, Component testing, Integration Testing, Retesting/Regression testing, Demo testing, Test automation, Exploratory Testing etc.

Testers should be given an active participation in the daily meeting and a tester should be present at daily status meetings. For a tester perspective it is worthy and quality oriented if he/she works with other testers and figures out that what to test along with the testing from the requirements specifications.

Automated testing is very important for an agile because new features and refactoring can introduce problems that can be difficult to find. By using an automated test framework, we can maintain quality levels during the iteration.

As we know testing is the real measure of progress, and in agile this means that a user story is not ready until:

  • Development is completed
  • All associated tests have passed
  • Acceptance tests have passed

System tests or acceptance tests fail at the later stages of Sprint indicates that the team has failed to transfer testing to earlier phases of Sprint and failed to meet customer’s requirements.

Each Sprint items have to go through different quality gates in a Sprint.

graph2

In agile, metrics can be found easily such as

  • Effort in hours
  • Amount of backlog converted to shippable functionality of sprint
  • No of Unit Tests added
  • Time taken to complete daily build
  • Bugs detected in an iteration
  • Production defect leakage

Unlike Waterfall method, in agile, the participation of tester is from planning and requirements analysis phases itself. The tester’s experience in development can be fully used. The tester’s functions are largely determined by the tester himself.

During off-testing time, testers can do analysis of requirements and risks, test planning, test automation, setting up test environments, prepare the necessary documents and also provide help to developers.

The essence of agile is that testing activities are planned and executed from the very beginning and we can meet our targets by working more closely together. Compressed test period is the major benefit a tester will get being an agile tester.

The success factors of agile testing are testing at the early stage, better communication between the teams, and extensive regression testing. The factors help Testers and Developers to work together as one team towards a common goal resulting in a successful project completion.

 

Leave a Reply

SCROLL TO TOP