Agile Model - Notes By ShariqSP
Agile Notes by Shariq SP
Introduction to Agile
Agile is a software development methodology focused on building software incrementally using short iterations (1 to 4 weeks), enabling development and testing to occur simultaneously. Agile is both incremental and iterative, facilitating parallel activities of development and testing.
Types of Agile Processes
- Agile SCRUM Methodology:
Scrum is a popular Agile framework that focuses on iterative and incremental delivery of products. In Scrum, work is divided into "sprints" that usually last 2-4 weeks. A Scrum team includes a Scrum Master, Product Owner, and Development Team. Daily stand-ups, sprint planning, sprint review, and retrospective meetings are held to ensure team alignment and improvement. Scrum is particularly effective for complex projects requiring frequent changes.
- Extreme Programming (XP):
Extreme Programming (XP) is an Agile methodology that emphasizes technical excellence and continuous customer involvement. XP practices include Test-Driven Development (TDD), Pair Programming, and Continuous Integration (CI). This methodology is ideal for projects with rapidly changing requirements and aims to deliver high-quality code through frequent releases and customer feedback.
- Kanban Process:
Kanban is a visual Agile methodology focusing on workflow management. In Kanban, work items are visualized on a board (typically divided into "To Do," "In Progress," and "Done") to monitor progress and limit work in progress (WIP). Kanban emphasizes continuous delivery and improvements without rigid sprint cycles, making it suitable for projects requiring flexible scheduling.
- Crystal:
The Crystal methodology focuses on people and their interactions rather than tools or processes. Crystal is adaptable and can be tailored to the project's size and complexity. It includes several variants, such as Crystal Clear, Crystal Yellow, and Crystal Red, each suited to different team sizes. Crystal is known for its focus on communication, simplicity, and reflective improvement.
- Lean Software Development:
Lean Software Development is derived from Lean manufacturing principles and focuses on eliminating waste, amplifying learning, and delivering as quickly as possible. Lean emphasizes value to the customer, reducing unneeded processes, and empowering the team. This methodology is ideal for projects aiming to maximize efficiency and customer satisfaction.
SCRUM Methodology
Scrum is a lightweight Agile project management framework for managing iterative and incremental projects, allowing development and testing activities to happen in parallel.
12 Principles Behind the Agile Manifesto
- Customer Satisfaction: The highest priority is to satisfy the customer through early and continuous delivery of valuable software, ensuring that the customer's needs are met promptly.
- Welcome Change: Agile welcomes changing requirements, even late in development, as these changes can enhance the product's value and competitive edge.
- Deliver a Working Software: Frequent delivery of working software, ranging from a few weeks to a few months, keeps progress visible and ensures faster feedback loops.
- Collaboration: Business stakeholders and developers work together daily, ensuring a shared understanding and alignment on project goals throughout the project lifecycle.
- Motivation: Projects are built around motivated individuals who are given the right environment, support, and trust, empowering them to deliver quality work.
- Face-to-face Communication: Direct, face-to-face conversation is considered the most effective way to convey information within a development team, reducing misunderstandings and promoting clarity.
- Progress Measured by Working Software: The primary measure of progress is the functionality of working software, rather than documentation or reports.
- Maintain a Sustainable Pace: Agile promotes sustainable development, where the team works at a pace that can be maintained indefinitely without burnout, ensuring productivity over the long term.
- Focus on Technical Excellence: Continuous attention to technical excellence and good design enhances the agility and maintainability of the product.
- Simplicity: Agile encourages simplicity, focusing on doing only what is necessary to add value and minimizing unnecessary work.
- Self-organizing Teams: Teams are encouraged to be self-organizing, allowing them to make decisions and develop the best methods to accomplish tasks, leading to higher-quality outcomes.
- Regular Reflection and Adjustment: At regular intervals, the team reflects on how to become more effective, then adjusts its behavior and processes accordingly, promoting continuous improvement.
Agile Team / Scrum Team Roles
Scrum Master
The Scrum Master leads the team and ensures Agile practices are followed.
Product Owner
The Product Owner manages the product from a business perspective.
Stakeholder
Stakeholders are those affected by the project outcome.
Agile Artifacts and Concepts
Sprint
A fixed time duration for defining requirements, design, testing, and delivering a product increment.
Product Backlog
A repository where all user stories are stored, managed by the Product Owner.
Sprint Backlog
List of user stories committed to the current sprint.
User Story
A customer requirement aimed at fulfilling end-user needs, written from an end-user perspective.
Story Points
Estimate of effort for user stories, often using Fibonacci sequence or size categories.
Capacity
Defines how much work an individual can commit to in hours.
Velocity
Measure of accepted work completed in an iteration.
Acceptance Criteria
Conditions set by the Product Owner or customer for feature validation.
Burn Up Chart
Shows completed work versus the total work.
Burn Down Chart
Displays remaining work to be completed in a project.
Agile Meetings
Sprint Grooming
Product team reviews backlog items and selects user stories for the sprint.
Sprint Planning
All Scrum members attend, and the Product Owner prioritizes user stories to create the sprint backlog.
Daily Stand-up
A 15-minute daily meeting for status updates and identifying any blocks.
Bug Triage
Discusses defect prioritization with the development team.
Sprint Review
Scrum team presents a stable release candidate to the Product Owner for feedback.
Retrospective
Scrum team reviews the previous sprint's outcomes, lessons learned, and identifies improvements.
Advantages of Agile Processes
- Stakeholder Engagement
- Transparency
- Early and Predictable Delivery
- Predictable Costs and Schedule
- Allows for Change
- Focuses on Business Value
- Focuses on Users
- Improves Quality
Agile Interview Questions
- Which processes did you follow in your previous organization?
- Explain the Agile methodology you followed.
- Explain principles and advantages of Agile.
- What are capacity and velocity in Agile?
- Describe the burn-down and burn-up charts in Agile.
- What discussions happen in a retrospective meeting?
Understanding Story Points in Agile Testing
In Agile project management, a story point is a unit of measure used to estimate the effort required to implement a particular user story. Both developers and test engineers collaboratively determine story points to assess the workload for a given task. For test engineers, story points represent the anticipated level of effort to validate the story, considering factors like complexity, risk, dependencies, and the business value.
How Test Engineers Assign Story Points
Test engineers use story points to estimate the testing effort for each individual story. In Agile frameworks, such as Scrum, the Fibonacci sequence (1, 2, 3, 5, 8, etc.) is typically used as the scale for assigning story points. This sequence allows test engineers to quickly assign a relative estimate based on the story's perceived difficulty, potential challenges, and testing scope.
Factors Considered for Story Points
- Complexity: The complexity of the story can include aspects like integrations with other systems, unusual testing requirements, or new technology. High-complexity stories may require more testing effort to verify edge cases and ensure quality.
- Risk: Some stories involve higher levels of risk, such as changes to critical business functions or security-sensitive features, which demand more rigorous testing.
- Dependency: Dependencies on other stories, teams, or systems can impact testing timelines and complicate execution, affecting story points.
- Amount of Work: This includes the total number of test cases, manual and automated testing needs, and any additional documentation.
- Business Value: Stories with high business impact or customer visibility may require additional testing focus, as they are critical to the product’s success.
Scrum Ceremonies
- Bug Triage Meeting: In a bug triage meeting, the team reviews newly logged bugs and assigns priority and severity. This helps the team decide which issues must be fixed in the current sprint and which can be deferred.
- Backlog Grooming / Refinement: During backlog refinement, the team reviews pending stories that weren't completed in the current sprint. Together, they reprioritize the stories based on the business value and customer requirements, determining which ones will move forward into the upcoming sprint.
- Sprint Review Meeting: This meeting allows the team to showcase completed work and gather feedback from stakeholders, confirming that the work aligns with business goals.
- Retrospective Meeting: After each sprint, the team holds a retrospective to discuss what went well, what didn't, and identify improvements for future sprints. This helps enhance the team's productivity and process efficiency.