Software Testing Tutorial #47 – What is Agile Testing

In this Software Testing Tutorial, we will learn what is agile testing. Agile testing is a software testing practice that follows agile software development principles and practices. It follows all the values and principles of agile software development and how we do the testing use those principles and practices while testing in Agile Software development approaches like SCRUM.

The traditional software development approach like waterfall, v-model had some drawbacks like phased approach, late feedback etc. Agile development approach came in picture to overcome those drawbacks. Along with Agile development we also need to embrace new ways of testing and that when Agile testing came in picture which embraces the values and principles of Agile.

Test Process In Context

In this tutorial, we will learn about the test process in context-driven software testing. It advocates testing based on the context of the project.

Instead of going by books methodology testing or some fixed notion of best practices. Seven Basic Principle of Context-driven measurement given as The value of any method depends on its context.

 What is context-driven testing?

The context-driven testing concept is used for debugging and developing the computer software in which the programs will be used or expected to be used in the real world.

 To perform this testing, the software developers must identify the considered market and evaluate the environments in which people are likely to employ it. The context-driven testing is done with other types of conceptual testing in agile software development.

 Context-driven testing is different from other kinds of software testing that are more technical. For example, black-box testing and white box testing are two software testing methodologies that are different in terms of whether developers are looking at the product’s internal design.

 The context-driven testing methodology is similar to the agile process implemented when the end users have different preferences and needs; for instance, notepad is a simple application to write a text.

 The context-driven testers choose their testing objectives, techniques, and deliverables by looking into the specific situation’s details. Context-driven testing is about doing the best we can with what we get rather than applying best practices.

 Why do we need context-driven testing?

 Sometimes, the programmers do not have a proper document that can explain exactly how to do the work, which they are supposed to do, and testers will not be provided with complete materials; in that case, they will not be able to know the total requirement.

They may have an essential document like BRD or some reference documents that tell them what they need to do, but they can find the best way to achieve the task.

Techniques used in Context-Driven Testing are

Grey box testing

 Grey box testing is a software testing technique that combines the Black Box Testing technique and the White Box Testing technique. In the Black Box Testing technique, the tester is unknown to the item tested’s internal structure, and in White Box Testing, the internal structure is known to the examiner.

 Exploratory testing

It is a type of software testing where Test cases are not created in advance, but testers check the system on the fly. It may note down ideas about what to test before test execution. The focus of exploratory testing is more on trial as a “thinking” activity.

 Seven Basic Principles of Context Driven Testing

  •  In context-driven testing, there are good practices, but there are no best practices.
  •  Proper software testing is a challenging process.
  •  In context-driven testing, some projects unfold over time in ways that are often not predictable.
  •  Only through understanding and proper skills are exercised collectively throughout the entire project, then we can do the right things at the correct times to effectively test our products.
  •  The product is like a solution; if the problem is not solved, then the product will not work.
  •  People who are working together are an essential section of any project’s context.
  •  The value of any practice relies on its context.

Some of the Illustrations of Principles are:

  •  It is done on behalf of stakeholders in the service of developing, qualifying, investigating, selling, or debugging product. Different testing strategies are there for various objectives.
  •  Context Driven Testing is entirely for different test groups to have multiple missions.
  • The first practice in the service of one task may be irrelevant or counterproductive in the service of another.
  •  Testing groups are to provide testing-related services. They do not run the development project; they perform or assist the project.
  •  Test artifacts are worth as they satisfy the stakeholder’s relevant requirements.
  •  Automated testing is not automatic manual testing.
  •  Different types of tests will reveal different kinds of defects. Analyses should focus on various risks as the program becomes more stable.
  •  The value of testing can be determined when it provides useful and timely information.
  • Tester tries to understand the customer position and make the best case when they feel it is not addressing.
  •  Testing information providing solutions, not a quality assurance function.

The 12 Agile Manifesto Principles – Agile Software Development Principles

12 Agile Manifesto Principles explained in detail 

There are 12 principles behind Agile Manifesto values, let us go through these 12 Agile Manifesto principles and understand them one by one in detail. 

It is important to understand these 12 principles of Agile Software Development.

If you are planning to do ISTQB Agile tester exam and move to an Agile tester role, then having a good understanding of 12 Agile Manifesto principles is very important.

Satisfy customer through early and continuous delivery of software.

Customer satisfaction is the key in Agile Software Development.

In order to satisfy customer it is very important to get early feedback by delivering a working software early in the development lifecyle.

The software is build incrementally and regular feedback is obtained by customers by doing a software demonstration (AKA, showcase) after end of each sprint (2-4 weeks time boxed development cycle)

Welcome changing requirements, even late in development.

As changes are inevitable in software development process, Agile software development welcomes requirement changes during development.

Due to delivery of working software within few weeks cycles and continuous customer collaboration, the changes if required are welcomed and implemented in the next release cycle.

Frequent delivery of software

Agile development methodology “Scrum” follows the 2-4 weeks development cycle and delivers a working code after these cycles.

Due to frequent delivery of software in Scrum, it becomes very easy for stakeholders to have a quick look at working software and provide feedback.

Agile development advocates frequent delivery of software which could be few weeks to few months, preferable weeks.

Daily collaboration among business people and development team

Agile development advocates daily interaction and collaboration within the whole team.

The development team should be having daily conversation with business stakeholders to get feedback and details around any unclear requirements.

Build project around motivated individuals, provide support and trust team

It is the team members of development teams who deliver the actual software for customer and end users.

Agile teams should be built with skilled and motivated team members.

Once the team is formed they should be given decision-making power in order to come up with the best possible solutions.

Motivated individuals take ownership, communicate regularly with other team members, and share ideas that deliver quality products.

Face to face conversation and collaboration

Colocation is another principle of Agile Manifesto, when teams are colocated, face to face communication becomes very easy.

Collaboration within each team member on a regular basis is easily possible only if all the members are colocated at one place.

Working software is the primary measure of progress.

Delivering the working software is the primary measure of progress in Agile software development.

In SCRUM, the showcase is done at the end of every sprint (time boxed 2-4 weeks development cycle) to demonstrate the working software.

Agile processes promote sustainable development and team should be able to maintain a constant pace

Agile development promotes the sustainable development pace and teams deliver working software with this pace in each iteration.

Attention to technical excellence and good design enhances agility

As the Agile development comprise of motivated individuals, they come up with best skills and right solutions which can accomodate any changes if required.

This ensures that team can maintain the pace and sustain changes if required.

Simplicity – the art of maximizing the amount 
of work not done–is essential

Agile processes also advocate simplicity to any delivery. Develop just enough to get the job done in a simple way.

Agile team should be focusing on essential things which create value to the customer and not on distractors like unnecessary lengthy documentation, processes etc.

Self-organizing teams produce great products

Agile software development teams should be built by hiring skilled and motivated team members.

These team members should have decision-making power, take ownership, communicate regularly with other team members of the team.

Self motivated individuals collaborate and share ideas with other team members which in turn deliver good designs and quality products.

Retrospectives conducted regularly to analyse how to become more effective

Agile teams gather at regular intervals to brainstorm about improvements required to enhance the future delivery and quality.

They discuss about what worked well in past and what didn’t worked very well. They the action items are addressed to improve future deliverables.

What is JIRA Project – Introduction to JIRA Project

Learn about JIRA projects in detail – JIRA project is a collection of JIRA issues with pre defined workflow.

The issues follow the defined workflow from start to finish until all the project tasks are done and project can be marked as complete.

Atlassian JIRA has different flavours of software to cater for the needs of different industries and departments within those industries.

What is JIRA Board – SCRUM and KANBAN boards

Atlassian JIRA board displays issues from projects and provides a flexible and convenient way to view issues.

There are two popular boards in Atlassian JIRA

SCRUM Board – The teams which work in Sprints

KANBAN Board – The teams which have continuous flow of work like support team and they want to manage and put constraint on the work-in-progress items

Boards can be shared within the team and across other projects as well if appropriate permission are given.

You can have multiple boards in one project.