20/12/2024
Agile Testing is a testing approach aligned with Agile software development principles, focusing on adaptability, teamwork, and incorporating customer feedback throughout the development lifecycle. Unlike traditional testing, which is typically performed near the end of the development process, Agile testing is seamlessly embedded at every stage of development.
A summary of all the essential tests with regard to Agile software development as devised by Crispin and Gregory (2009) determine Agile testing quadrants (figure 1). They conceived four Agile testing matrices and called them quadrants. The quadrant numbers follow no specific order but only refer to whether a quadrant is Technology facing, Supporting the team etc.
It is worth noting that these quadrants do not work in Waterfall. Some projects start with Q2 because this quadrant contains specifications and tests that drive coding. Q4 puts the emphasis on the structure of features. When customers are not sure about the requirements, it is better to start with Q3 so as to use exploratory testing. These two quadrants require extensive coding.
Companies that use Agile methodology, use the quadrants on a regular basis in order to work faster and to release products of higher quality. The quadrants also help Agile teams have better adaptive planning for their testing in the subsequent sprints (ibid).
Here, the author intends to briefly explain the four quadrants of Agile testing which comprise team-supporting tests, product-critiquing tests, business-facing tests, and technology-facing tests.
Figure 1: Agile Testing Quadrants
Tests that support the team relate to product development. Tests in Q1 and Q2 are done more often. The aim of Q1 tests is to implement test-driven development in order to help programmers write the codes well. Unit tests confirm the functionality of the system and Component tests confirm the behavior of the system. Both are automated and are based on the same programming language as the application. The internal quality of a product is understandable by developers but, in most cases, not by business experts (Crispin and Gregory, 2009).
The purpose of testing in Q2 is to support the work of the development team at a high level. This means that tests are defined in detail for the customer team, with Business facing tests to implement them at operational level. However, tests are written in such a way as to be comprehensible by business experts using the business language familiar to them. Moreover, business facing tests need to be automated. To sum up, quadrants 1 and 2 provide quick access to the information and enable the team to perform equally quick troubleshooting (Crispin and Gregory, 2009).
As Crispin and Gregory (2009) mention, it can be hard for a programmer to understand what a customer exactly wants. The term ‘critique’ refers to suggestions for revision and improvement. Q3 and Q4 are allocated to critiquing the delivered products. In Q3, the business facing test is categorized based on the experience of working with the software. The team does not have any competition. During the implementation phase of business facing tests on products, the author imagines how the user works with the application. In this quadrant, humans do manual testing i.e. testers. They also add, in quadrant 4, technology facing refers to the types of Agile tests that have a critical role in various aspects of Agile software development such as performance, robustness, and security.
Before starting the coding process, it is important that programmers become familiar with the features that are affected most by performance and security. This helps the programmer have an easier job of designing the code based on the customers’ needs. In Agile software development using Automation tools is necessary for certain types of tests such as load testing, performance testing, regression testing and integration testing. In fact, it is Automated testing that creates the test cases and test scenarios required in manual testing.
This section is largely inspired by a related article on Qasymphony.com (the complete address is mentioned under all image captions) and introduces all Agile testing methods in detail so as to facilitate the reader’s understanding of this study
3.1. Behavior Driven Development (BDD).
It is a type of Agile testing that gets its inspiration from Test Driven Development (TDD). It is suitable for teams that make use of feature-focused software. Behavior driven development (BDD) is applied for high-level tests in business environments. In BDD, a set of initial requirements are written based on the user’s behavior which is determined through human readable tests. These requirements serve as a guideline for testers whose specialty is in developing testing methods (QASymphony 2018).
Figure 2: Behavior Driven Development (BDD)
BDD is different from traditional testing in that it requires test cases to be written as early as possible and calls for them to be executed toward the development cycle. However, BDD in an Agile environment means that tests are not based on requirements, while testing happens at the same time as development of the features (QASymphony 2018). Moreover, with Waterfall methodology, testers are tasked with writing the test cases. Contrastingly, a BDD approach reduces communication (or miscommunication) between the business analysts, developers and testers (QASymphony 2018).
BDD testers are responsible for:
3.2. Acceptance Test-Driven Development (ATDD).
The second type of Agile testing is Acceptance Test Driven Development (ATDD). It is similar to BDD in that it needs to have tests written first, and in case the tests fail, codes will be written until the test is passed. ATDD tests are technical-facing unit tests, but ATDD tests are customer-facing acceptance tests. In ATDD, the user’s perfect understanding of the product is as essential as its functionality, therefore it can help increase adaptiveness (QASymphony 2018).
Figure 3: Acceptance Test-Driven Development (ATDD)
ATDD is different from traditional methodology because it is not based on requirements of the testing process. In Agile methodology, ATDD is a test-first methodology. It is based on user experience with a high degree of adaptiveness. Some of the ATDD practices for Agile testers include: (1) Close interaction with customers in order to have a better understanding of their expectations, (2) Improving acceptance criteria based on customers’ demands (QASymphony 2018).
3.3. Exploratory Testing
Exploratory testing is a functional testing approach that holds significant value in Agile environments (QASymphony, 2018). As described by Kaner (2018), it emphasizes the tester's autonomy and accountability, integrating test-related learning, design, execution, and result analysis as interconnected activities performed simultaneously throughout the project.
Figure 4: Exploratory Testing
Exploratory testing has applications in both methodologies, but the main difference between them is that the interaction between testers and developers in Agile methodologies can be easier as regards the process. Exploratory testing is suitable for teams under time constraint; it is known to be able not only to reduce the required time but also to increase the code’s coverage. The team member tasked with implementing the exploratory testing method is the tester (QASymphony 2018).
Exploratory testing is best-suited to testers who (1) Organize the functionality of the program, (2) Track the error repetitions, (3) Use automated tools and documenting results included in the tools in order to establish what has been tested by a given point in time and highlight the skill of testers (QASymphony 2018).
3.4. Session-based Testing
The last type of Agile testing is Session-based Testing (SBT), which is inspired by Exploratory Testing, although it is claimed to be more structured. In SBT, tests are conducted
during the available time frame. Testers should report the outcome of the tests that are carried out in each session (QASymphony 2018).
Similar to Exploratory Testing, SBT is implemented in both methodologies. The biggest obstacle for testers is accepting the more structured nature of this test in each session. Session Based tests are performed by the team in order that they be involved throughout the process and remember everything afterwards. SBT also helps reduce the time it takes tests to finish and increases code coverage. Some of the considerations that session-based testers are expected to take into account are as follows:
1. Paying attention to session reports and documenting activities
2. Ensuring that tests are run without any interruption
3. Being clear about the software platform (QASymphony 2018).
Figure 5: Exploratory Testing
In Agile software development – including Agile testing –various Agile methodologies and Agile tests are implemented. Among them, using Behavior driven development (BDD) in Agile testing provides the opportunity for stakeholders to be informed as to the projects’ progress. In light of the fact that Agile testing reduces the implementation time of tests, the objective of some former research was to investigate how the testers can minimize the time it takes to achieve the target in each sprint and thus deliver the product to the customer more rapidly (Carrera et al., 2013). Moreover, the Acceptance test-driven development (ATDD) helps the Agile team through all steps of the development phase to have a better understanding of how the system should work based on customers’ feedback (Pugh, 2011).
In what follows the relevant literature will be reviewed so as to propose the research question that the present study tends to answer.
In Agile software development, testing is not a standalone phase but an integral part of the entire development lifecycle. Agile Testing in Scrum fosters a collaborative environment, enabling teams to respond rapidly to change and deliver high-quality software that meets customer expectations. By leveraging frameworks like the Agile Testing Quadrants and methodologies such as BDD and ATDD, teams can improve their testing strategies and streamline their development process. Ultimately, Agile Testing serves as a cornerstone for iterative development, enhancing adaptability, collaboration, and overall product success.
Agile Testing in Scrum: Methods and Best Practices
Agile Testing plays a pivotal role in Agile software development, ensuring that testing aligns with the dynamic, iterative, and collaborative nature of this methodology. This article explores Agile Testing within the context of Scrum, delving into its core principles, the Agile Testing Quadrants, and various methods such as Behavior-Driven Development (BDD), Acceptance Test-Driven Development (ATDD), and exploratory testing. By understanding these concepts, organizations can enhance the quality and efficiency of their software development processes while delivering products that align closely with customer needs.
20/12/2024
Overview about Craft.js - library used for page builder
Building rich, customizable user interfaces is a challenge that many web applications face. Developers need solutions that provide flexibility, performance, and extensibility, especially for drag-and-drop editors, landing page builders, and WYSIWYG content creation. Enter Craft.js, a headless framework for building these complex user interfaces with React. In this guide, we will learn about the architecture of Craft.js, the workflows, custom components, state management, and extensibility.
13/12/2024
Quyet
Related contents
Building rich, customizable user interfaces is a challenge that many web applications face. Developers need solutions that provide flexibility, performance, and extensibility, especially for drag-and-drop editors, landing page builders, and WYSIWYG content creation. Enter Craft.js, a headless framework for building these complex user interfaces with React. In this guide, we will learn about the architecture of Craft.js, the workflows, custom components, state management, and extensibility.
13/12/2024
Quyet
GitHub is a popular platform for hosting Git repositories and collaborating on code. It allows developers to share their work, contribute to open-source projects, and collaborate with others in a seamless manner. This article will provide an overview of GitHub, explain the difference between Git and GitHub, and explore key features like cloning repositories, pushing code, and using SSH keys.
20/12/2024
Node.js is a powerful platform for developing network applications, renowned for its ability to handle asynchronous I/O tasks. Libuv is the core library that provides the event loop and APIs for Node.js to manage I/O. This article will delve into how Libuv in Node.js operates, providing specific examples of I/O handling in Node.js across different operating systems while explaining how Libuv interacts with the operating system and how the event loop processes callbacks.
20/12/2024