In this article written by Renu Rajani, author of the book Testing Practitioner Handbook, we will discuss agile development.
Organizations are increasingly struggling to reach the right level of quality versus speed. Some key issues with traditional development and testing include the following:
- Excessively long time to market for products and applications
- Inadequate customer orientation and regular interaction
- Over-engineered products--most of the features on a product or application may not be used
- High project failure rate
- ROI below expectation
- Inability to respond quickly to change
- Inadequate software quality
(For more resources related to this topic, see here.)
To address this, QA and testing should be blended with agile development. Agile engagements should take a business-centric approach to select the right test focus areas, such as behavior-driven development (BDD), to define acceptance criteria. This requires skills not only in testing but also in business and software development. The latest World Quality Report reveals an increase in the adoption of agile testing methodologies, which helps expedite time to market for products and services.
The need for agile development (and testing) is primarily driven by digital transformation. Let's take a look at the major trends in digital transformation:
- More continual integration fueled by digital transformation
- Complex integration using multi-channel, omnipresent commerce, making it necessary to integrate multiple channels, devices, and wearable technology
Unlike yesterday's nomenclature, when agile meant colocation, today's advanced telepresence infrastructure makes it possible to work in distributed agile models and has removed colocation dependency. Agile is not just a concept. It is a manner of working, made possible with multiple tools to enable development and testing in agile environments.
What do agile projects promise compared to traditional waterfall?
The next diagram summarizes the value an agile approach offers compared to traditional waterfall.
Waterfall engagements are characterized as plan driven. One should know the software requirements and estimate the time and effort needed to accomplish the task at hand.
In the case of agile engagements, one knows the time and resources available and needs to estimate the features that can go into a release.
Flavors of agile
There are various flavors of agile, including the following:
- Scrum: This prioritizes the highest-value features and incremental delivery once every 2-4 weeks
- Kanban: This pinpoints bottlenecks to avoid holdups
- Lean: This eliminates waste and unnecessary documentation and provides future flexibility
- XP: This reconfigures and ensures the simplest design to deliver iteration features.
Let's look at their features.
- Reacts quickly in volatile markets
- Focuses on customer benefits and avoids both unnecessary outlays and time investments
- Utilizes organized development teams within a structured framework in order to coordinate activities and work together for quick decision-making
- Involves customers directly in the development process
- Works with existing roles and processes and may be introduced either step by step or by establishing pioneer teams.
- Scrum and Kanban complement one another. While Scrum ensures adaptability and agile, Kanban improves efficiency and throughput. Both techniques increase overall transparency.
How is testing done in agile sprints?
I have often heard that agile projects do not require testers. Is this true? Would you compromise on quality in the name of agile?
Like any other development life cycle, agile also needs quality and testing. Agile engagements involve testers from the start of the sprint, that is, from the requirement analysis stage, in a process known as user story grooming.
In sprint planning, the team selects the story points depending on various factors, including availability of resources and user story complexity. All the members of the sprint team (cross-functional teams) are involved in this process (developers, business analysts, testers, configuration teams, build teams, the scrum master, and the production owner).
Once the user stories destined for the sprint are finalized, they are analyzed. Then, developers work on the design while testers write the test cases and share these with business analysts for review. At the end of each sprint, the team discloses the user stories selected during the sprint to the product owner and gets a go or no-go ruling. Once the demo is complete, the team gathers for the retrospective. Take a look at the following diagram:
The benefits of this approach include:
- Productive, collaborative, and high-performing teams
- Predictability and project control featuring transparency and flexibility
- Superior prioritization and risk management for business success
- High-value revenue with low upfront and ongoing costs
- High-quality products delivered with minimum time to market
- Increased possibility of stakeholder engagement and high customer satisfaction
Agile in distributed environments
Often, people assume agile means colocation. Today's technology infrastructure and maturity of distributed teams have enabled agile to be practiced in a distributed mode. As per the World Quality Report 2016-2017, more than 42% of the organizations that adopt an agile delivery model use distributed agile. Distributed agile allows the organizations to achieve higher cost savings with the global delivery model. Take a look at the following figure:
Key challenges in distributed agile model include:
- Communication challenges across the distributed team
- Increasing product backlogs
- An ever-growing regression pack
- Poor knowledge management and handover for new people due to less documentation and high-level placeholder tests
- Little time overlap with isolated regional developers for distributed teams
These challenges can be addressed through the following:
- Communication: Live meetings, video conference calls, and common chat rooms
- Product backlogs: Better prioritization within the iteration scope
- Regression scope: Better impact analysis and targeted regression only
- Knowledge management: Efficient tools and processes along with audio and video recordings of important tests, virtual scrum boards, and the latest communication and tracking tools
- Distributed teams: Optimal overlap timings through working shifts (40–50 %)
State of agile adoption – findings from the World Quality Report 2016-2017
As per the latest World Quality Report, there are various challenges in applying testing to agile environments. Colocation and a lack of required skills are the two biggest challenges that are considered major risks associated with agile adoption. That said, organizations have been able to find solutions to these challenges.
Approaches to testing in agile development environments
Organizations use different ways to speed up cycle times and utilize agile. Some of these tactics include predictive analytics, BDD/TDD, continuous monitoring, automated test data generation, and test environment virtualization. The following diagram provides a snapshot of the practices used to convert to agile:
Skills needed from QA and testing professions for agile
The following diagram from WQR2016 depicts the state of skills relating to agile testing as organizations strive to adopt agile methodologies:
An ideal agile engagement needs a test ecosystem that is flexible and supports both continual testing and quality monitoring. Given the complexity in agile engagements, there would be value from automated decision-making to achieve both speed and quality.
Agile development has attained critical mass and is now being widely adopted; the initial hesitation no longer prevails. The QA function is a key enabler in this journey. The coexistence of traditional IT along with agile delivery principles is giving rise to a new methodology based on bimodal development.
Resources for Article:
- Unit Testing and End-To-End Testing [article]
- Storing Records and Interface customization [article]
- Overview of Certificate Management [article]