What is test driven development?
Explain what is Velocity in Agile?
Explain what does it mean by product roadmap?
How is Agile different from other software delivery aproaches?
Mention what should a burndown chart should highlight?
If a timebox plan needs to be reprioritized who should re-prioritise it?
What is story points/efforts/ scales?
Explain in Agile, burn-up and burn-down chart?
Mention what are the challenges involved in Agile software development?
What does project velocity mean?
Can you explain the purpose of a burndown chart?
Mention what are the advantages of maintaining consistent iteration length throughout the project?
What are four Agile Manifesto values?
What are the qualities of a good Agile tester should have?
What are some methodologies used to implement Agile?
Why Continuous Integration is important for Agile?
Mention what are the Agile quality strategies?
In Agile mention what is the difference between the Incremental and Iterative development?
Mention what is the difference between Scrum and Agile?
Explain what is Spike and Zero sprint in Agile? What is the purpose of it?
To improve the performance, the existing code is modified; this is re-factoring. During re-factoring the code functionality remains same.
User stories are features customers might want to see in their software. They are written on index cards to encourage face-to-face communication. Typically no more than a couple days work, they form the basis of our Agile plans.
An Agile iteration is a short one to two week period where a team takes most important user stories, builds them completely and deliver as running-tested-software to the customer. Analysis, design, coding, testing happen during an iteration.
Test driven development (TDD) is also known as test-driven design. In this method, developer first writes an automated test case which describes new function or improvement and then creates small codes to pass that test, and later re-factors the new code to meet the acceptable standards.
Velocity is a metric that is calculated by addition of all efforts estimates related with user stories completed in an iteration. It figures out how much work Agile can complete in a sprint and how much time will it need to finish a project.
A product roadmap is referred for the holistic view of product features that create the product vision.
Agile is a time boxed, iterative approach (framework) to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end.
It works by breaking projects down into little bits of user functionality called user stories, prioritizing them, and then continuously delivering them in short two week cycles called iterations.
Agile refers to any process that aligns with the concepts of the Agile Manifesto.
- Analysis, design, coding, and testing are continuous activities
- Development is iterative
- Planning is adaptive
- Roles blur
- Scope can vary
- Requirements can change
- Working software is the primary measure of success
The burn-down chart shows the remaining work to complete before the timebox (iteration) ends.
If a timebox plan needs to be reprioritized it should include whole team, product owner, and developers.
It is used to discuss the difficulty of the story without assigning actual hours. The most common scale used is a Fibonacci sequence (1, 2, 3, 5, 8,1 3,….100) although some teams use linear scale (1, 2, 3, 4….), Powers of 2 (1, 2, 4, 8……) and cloth size (XS, S ,M, L, XL)
To track the project progress burnup and burn down, charts are used
- Burnup Chart: It shows the progress of stories done over time
- Burndown Chart: It shows how much work was left to do overtime
Challenges involved in Agile Software development includes:
- It requires more testing and customers involvement
- It impacts management more than developers
- Each feature needs to be completed before moving on to the next
- All the code has to work fine to ensure application is in working state
- More planning is required
In February 2001, 17 software developers met in Utah to discuss lightweight development methods. They published the Manifesto for Agile Software Development, which covered how they found “better ways of developing software by doing it and helping others do it” and included four values and 12 principles.
Project velocity is the rate at which a team is "burning" through story points, so a possible velocity might be "30 story points per iteration." That means that so far, the team has been able to identify, code and test 30 units of functionality (story points) in an average iteration and can expect to do about that much in future iterations, giving a fairly good view towards what can be accomplished by a release date.
A burndown chart is a graph that shows the progress of the team in terms of work burned through. The work is usually put in terms of a set of story points which represent functionality. Once a piece of functionality is coded and tested and reviewed by the user, it is considered to be burned and the graph will reflect this. The graph should show a steady movement down until it is clear that the team will have completed the story point backlog by the release date.
The advantages are
- It helps team to objectively measure progress
- It provides a consistent means of measuring team velocity
- It helps to establish a consistent pattern of delivery
While there is value in the items on the right, agile team value the items on the left more:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
A good Agile tester should have following qualities:
- It should be able to understand the requirements quickly
- Agile tester should know Agile principals and concepts well
- As requirements keep changing, tester should understand the risk involve in it
- Based on the requirements Agile tester should be able to prioritize the work
- Continue communication between business associates, developers and tester is must
Agile is a framework and there are a number of specific methods within the Agile movement, for example:
- Extreme Programming (XP)
- Scrum
- Lean Software Development
- Kanban
- Crystal Clear
Continuous Integration is important for Agile for following reasons:
- It helps to maintain release schedule on time by detecting bugs or integration errors
- Due to frequent agile code delivery usually every sprint of 2-3 weeks, stable quality of build is a must and continuous integration ensures that
- In helps to maintain the quality and bug free state of code-base
- Continuous integration helps to check the impact of work on branches to the main trunk if development work is going on branches using automatic building and merging function
Agile quality strategies are:
- Re-factoring
- Non-solo development
- Static and dynamic code analysis
- Reviews and Inspection
- Iteration/sprint demos
- All hands demo
- Light weight milestone reviews
- Short feedback cycles
- Standards and guidelines
Before using Agile methodology, you must ask following questions
- Is functionality splitable
- Is customer available
- Are requirements flexible
- Is it really time constrained
- Is team skilled enough
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity - the art of maximizing the amount of work not done - is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
-
Iterative: Iterative method is a continuous process of software development where the software development cycles are repeated (Sprint & Releases) till the final product is achieved.
-
Incremental: Incremental development segregates the system functionality into increments or portions. In each increment, each segment of functionality is delivered through cross-discipline work, from the requirements to the deployment.
- Scrum: In the scrum, a sprint is a basic unit of development. Each sprint is followed by a planning meeting, where the tasks for the sprint are identified and estimated. During each sprint, the team creates finished portion of a product
- Agile: In Agile, each iteration involves a team working through a full software development cycle, including planning, design, coding, requirement analysis, unit testing, and acceptance testing when a product is demonstrated to stakeholders
In simple words, Agile is the practice and scrum is the process to following this practice.
-
Sprint Zero: It is introduced to perform some research before initiating the first sprint. Usually this sprint is used during the start of the project for activities like setting development environment, preparing product backlog and so on.
-
Spikes: Spikes are type of stories that are used for activities like research, exploration, design and even prototyping. In between sprints, you can take spikes for the work related to any technical or design issue. Spikes are of two types Technical Spikes and Functional Spikes.