Automation QA Testing Course Content

Showing posts with label SDLC Models. Show all posts
Showing posts with label SDLC Models. Show all posts

Waterfall vs Agile: Difference Between Waterfall and Agile Methodologies

 One of the most challenging tasks faced in project management is deciding what software to choose and how to organize the work. Both of these challenges are overcome if the main concern is reduced to the development methodology. You must learn about agile methodology steps and phases which can help to understand further in detail.

The two most essential and popular methods of managing projects in today’s modern software development industry are:

  • Waterfall- Can be termed as a traditional method of software development 
  • Agile- This belongs to a specific category of Rapid Application Development. It is more recent than Waterfall (2000s), and it operated along with Kanban or Scrum. 

Even though both the methodologies of software development are dependable and serve the same function of ruling out the best possible approach to get a project done in the least amount of time, they do their jobs very differently. 

Key Differences Between Waterfall and Agile 

While both seem to be two sides of the same coin, they do have their share of differences. 

Key Differences Between Waterfall and Agile Methodologies

Waterfall methodology is a model in which each stage of the product’s lifecycle occurs sequentially. The progress of the project flows progressively downwards through phases mimicking a waterfall. This kind of model considers a one-time massive whole delivery. Product/s are delivered at the end of the SDLC.

Agile methodology is a model which follows a proper sequential, linear, and an iterative approach. It is termed agile because it is swifter and has a more flexible approach to project management.   This model allows delivery in multiple and small chunks at definite time intervals. A Minimum Viable Product (MVP) is delivered at the end of each sprint.

Waterfall methodology divides the software development lifecycle into different phases. Therefore, it comprises of a single cycle and single release.

Agile methodology divides the software development lifecycle into sprints. Therefore, it comprises of a repetitive number of iterations and several releases.

Waterfall methodology can be said to be very structured and rigid in terms of its model.

Agile methodology model is extremely flexible.

In Waterfall methodology, the distance between the customer and the developer is long. Long-term planning scale, along with a longer time between specification and implementation.

In Agile methodology, the distance between the customer and the developer is short. Short term planning scale, along with a shorter time between specification and implementation.

In Waterfall methodology, detecting problems within takes a lot of time. High project schedule risk

In Agile methodology, problems are discovered very efficiently and quickly. Low project schedule risk.

Waterfall methodology’s ability to quickly respond to changes is less. 

Agile methodology: high ability to respond quickly to changes.

In Waterfall methodology, the testing phase occurs after the development phase is completed.

In Agile methodology, testing is usually carried out in parallel with the development phase so as to ensure consistent quality.

Waterfall methodology is quite fitting for projects which have definite requirements and those where the constant modification or changes are not needed.

Agile methodology is suitable for projects which continually evolve and those involving altering requirements. Learn more about agile methodology steps.

even though both Agile and Waterfall are the popular software development methodologies used in ERP projects, their methodologies are strikingly different. The image below captures the difference between the two very effectively.

[mpp_inline id="82848"] [mpp_inline id="84313"] [mpp_inline id="84315"] [mpp_inline id="84318"] [mpp_inline id="84320"] [mpp_inline id="84323"] [mpp_inline id="84325"] [mpp_inline id="84328"] [mpp_inline id="88834"] [mpp_inline id="90424"]

Source

Both Agile and Waterfall follow different ways of serving a common goal- to deliver the necessary result or product, free from bugs and errors, in the least time possible.  

Key Differences Between Waterfall and Agile Testing

Both Waterfall and Agile follow different approaches to their testing. The waterfall is not divided into many parts- but treated as one single, consolidated project which is, in turn, further divided into different phases.

Agile, on the other hand, is not a single entity but divided into multiple smaller projects, where each of the small projects has an iteration of different stages. Everyone must be curious about what is agile testing or what is waterfall testing lets know furthermore about it by going through the difference between them.

Key Differences Between Waterfall and Agile Testing

In Waterfall Testing, the testing begins after the development and builds phases of the process are completed. 

In Agile Testing,  The testing starts in concert with the development phase.

In Waterfall Testing, the process of planning is finalized and done before the testing phase.

In Agile Testing, the process of planning is not just done before the project starts, but also continues until its completion. 

In Waterfall Testing, the test plans are not revised during the project.

In Agile Testing, the test plans are reviewed after each sprint.

Waterfall Testing is very challenging to propose or implement any changes in the requirements once the process has started.

Agile Testing actively accommodates all required changes throughout the process.

In Waterfall Testing, test cases are created just once for all functionalities.

In Agile Testing, test cases are created after each sprint for the functionalities. 

In Waterfall Testing, the acceptance testing is performed only once by the client after the release.

In Agile Testing, acceptance testing can be conducted after each iteration. 

In Waterfall Testing, there is a clear distinction between the Test teams and the Development teams. 

In Agile Testing, the Test teams and the Development teams work as an integrated unit which allows them to have a free flow of communication. 

In Waterfall Testing, regression testing is hardly ever done, and it entails the execution of all the test cases.

In Agile Testing, regression testing is religiously done after each iteration and it entails only those test cases that are relevant.

Also read: Agile Methodology Interview Questions & Answers

The key to deciding which development methodology one should go for depends on five key considerations. They are as follows: Choosing between Agile And Waterfall 

  1. The ease of use
  2. Ability to integrate with other software
  3. Project reporting
  4. The flexibility allowed by the software
  5. High-level view of project statuses

Conclusion

In conclusion, if we look at Agile and Waterfall as whole software, they do highlight key differences. A smart project manager understands the differences and decides which one to implement as per project-specific requirements. If your project is short, simple and does not require changes and updates, Waterfall can be a first choice. But, if it is large, complex, and has to be changed and checked at intervals, Agile is the best working option.

Top Agile Interview Questions & Answers

1. What is Agile Testing?

 Agile testing is a practice based on the principles of agile software development. It includes all members of an agile team with specific skills and a certain expertise to ensure the timely delivery of a product with the release of additional features at frequent intervals.

2. How is Agile Methodology different than Traditional Waterfall process?

 In agile methodology, features of the software are delivered frequently, so that the testing activity is done simultaneously with the development activity. Testing time is shortened as only small features are need be tasted at once.

agile interview questions

While, in the waterfall model, testing activities take place at the end of the entire development process. Testing time, in this case, is as long as the entire product is to be tested in one go. Waterfall methodology is a closed process where all stakeholders are not involved in the development process whereas agile methodology requires the involvement of various stakeholders including customers 

3. What are the pros and cons of Agile Methodology?

This is one of the most frequently asked agile interview questions.

Pros of the agile methodology:

  • Speedy and continuous delivery of the software ensures customer satisfaction.
  • All the stakeholders (customers, developers, and testers) are involved in the process which leads to technical excellence and good design.
  • It facilitates close interaction between business people and developers.
  • Its flexibility ensures the adaptation to changing circumstances. Changes added at the last moment or at a later stage of development can be incorporated without any problem.

However, it does have some disadvantages too:

  • Sometimes when software deliverables are large ones, it is tough to determine the effort level required at the beginning of the software development lifecycle.
  • In agile methodology, documentation and designing take a back seat.
  • The decision making crucial for the development process comes with seniority and experience. Hence, freshers can hardly manage to find a place in the agile software development process.

4. What kind of projects is suitable for the Agile Methodology?

The traditional methodology is suited for projects with predefined, clearly stated requirements while agile development methodology is suitable for projects with dynamic requirements where frequent changes in the product come up on a regular basis.
15 Must-Know Spring MVC Interview Questions

5. What are the different types of Agile Methodologies?

An agile interview question and answers guide will not complete without this question. There are several types of agile development methodology. Scrum is one of the most popular and widely used agile methods. Other types of agile development methodology are; development like Crystal Methodology, DSDM(Dynamic Software Development Method), Feature-driven development(FDD), Lean software development and Extreme Programming(XP).

6. Difference between extreme programming and scrum?

Scrum teams usually have to work in iterations which are known as sprints which generally last up to two weeks to one month long while XP team works in the iteration that lasts for one or two weeks.
XP teams are more flexible as they can change their iterations while Scrum teams do not allow any change in their iterations.
The product owner prioritizes the product backlog but the team decides the sequence in which they will develop the backlog items in scrum methodology. Whereas XP team works in strict priority order, features developed are prioritized by the customers.
agile interview question and answers

7. Can you explain the lean methodology in detail?

Lean software development method follows the principle of “Just in time production”. It aims at increasing the speed of software development and decreasing cost.
The basic idea of lean is to reduce non-value-added activities (known as “wastes”) in order to increase customer value. The agile process itself is a lean method for software development lifecycle. However, activities like backlog grooming (when team review items on the backlog to ensure the appropriate items are in the backlog, that they are prioritized well, and that the items at the top of the backlog are ready for delivery) code refactoring (process of restructuring existing computer code – changing the factoring — without changing its external behavior) fits agile methodology more in tune with lean principles.

What is Test-driven Development: A Newbie’s Guide

8. What is Kanban?

Kanban is a tool which helps the team to keep a close eye the work i.e., to measure its progress. Apart from the progress, the status of a development story can be seamlessly described with the help of ‘kanban board’.
Kanban board aids in writing the whole scenario of a project at a single place to give a perfect picture of the bottleneck, a task done, workflow progress. It helps in the continuous delivery of the product without overburdening the team.

9. Is there any difference between incremental and iterative development?

Yes, the iterative methodology is a process of software development without any interruption. In this method, software development cycles consisting of sprint and release are repeated until the final product is obtained. Whereas, the incremental model is a process of software development where the product is designed, implemented and tested incrementally until the product is finished. It involves both development and maintenance.

10. What are burndown and burn-up charts in agile methodology?

To track the progress of an ongoing project, these charts are used. Burn-up charts indicate the work that has been completed while Burn-down chart shows the amount of remaining work in a project.
Why Companies are Looking to Hire Full Stack Developers

11. Can you explain pair programming and its benefits?

The combined effort in the team where one programmer writes the code and the other one reviews it is called pair programming. There are several benefits of pair programming, it not only improves the quality of code but also facilitates the knowledge transfer. It reduces the chance of mistakes as two people are simultaneously working on a code.

12. Do you know what is the scrum of scrums?

The term “Scrum of Scrums” is used when there are multiple teams involved in a project. It refers to the scaling of the daily Scrum meeting. In this scenario, each team is responsible for conducting and leading its separate scrum meeting. However, to maintain coordination and communication among all the different teams, a separate meeting must be conducted wherein all the teams participate. This is known as the “Scrum of Scrums.”

In this meeting, one team leader from every team (known as the “ambassador”), will represent their team. The main idea behind this is to encourage Agile teams to collaborate and coordinate their work with each other. 

[mpp_inline id="82848"] [mpp_inline id="84313"] [mpp_inline id="84315"] [mpp_inline id="84318"] [mpp_inline id="84320"] [mpp_inline id="84323"] [mpp_inline id="84325"] [mpp_inline id="84328"] [mpp_inline id="88834"] [mpp_inline id="90424"]

agile interview questions and answers

13. What is the velocity of a sprint and how it is measured?

Velocity is one of the planning tool used to estimate the speed of the work and time of completion of the project. The calculation of velocity is done by reviewing the work team has successfully completed during earlier sprints; for example, if the team completed 5 stories during a two-week sprint and each story was worth 3 story points, then the team’s velocity is 15 story points per sprint.
How to Become a Full Stack Developer

14. According to you what are some qualities that a good agile tester must have?

A competent agile tester must possess the following qualities:

  • They should be capable of understanding the requirements quickly.
  • An agile tester should be aware of all the agile principles and concepts and values as listed down in an agile manifesto.
  • They should be able to prioritize the work based on the requirements.
  • They should have excellent communication skills as continuous communication between business associates, developers and tester is a backbone of the agile development process.

15. Can you list some responsibilities that a scrum team have to undertake?

This is one of the important agile interview questions. Major responsibilities that a scrum team has to include:

  • Breaking down the requirements, creating tasks, estimating and distributing the created tasks. To put simply they are in charge of creating sprint backlogs.
  • They have to arrange daily sprint meeting.
  • It is a responsibility of the team to ensure that every functional feature is delivered on time. They have to create a sprint burndown diagram to know to get the exact estimate of work done and the work that needs to be done.

16. Mention the principles of Agile testing.

The principles of Agile testing are:

  • Continuous testing – This ensures the continuous progress of the product. An interesting aspect of the Agile testing process is that unlike the traditional methodologies where only the testing team is focused on product testing, it requires the entire team to participate equally in the testing process. 
  • Continuous feedback – With every test, the client feedback is encouraged to ensure that the product meets the business requirements of the client. 
  • Simple and clean code – Whatever errors and defects arise during the testing phase are fixed within the same iteration by the Agile team. This allows for simple, concise, and clean code. 
  • Less documentation – Agile teams use a reusable checklist. Here, they are more focused on the testing process rather than the incidental details.

17. Differentiate between Agile and Scrum.

A critical agile interview question you need to be aware of. Agile and Scrum have their fair share of similarities and differences. Since Scrum is a part of the Agile Methodology, both of them promote the completion of projects incrementally in small fragments. Also, both methodologies are iterative in nature.

However, the main difference between Agile and Scrum is that the former has a broader spectrum. While Agile Methodology is used for project management, Scrum is ideal for projects where the requirements change rapidly. In the Agile Methodology, leadership holds the most pivotal position, whereas Scrum encourages the creation of a self-organizing and cross-functional team.

What is Product Backlog Refinement?

Backlog grooming in agile scrum is a regular event where the development team and product owner review and refine the product backlog. The goal is to ensure the backlog items are clear, concise, and prioritize for upcoming sprints. The team can clarify requirements, adjust estimates, and reorder items to reflect the current state of the project. Backlog grooming helps to ensure the team has a clear understanding of the work to be done and improves the overall efficiency of the development process.

18. What are the crucial Agile Matrices? 

Some of the essential Agile Matrices are:

  • Velocity – It is essential to keep track of the project’s velocity so that the Agile team can have a clear about your progress, capacity, and other metrics. 
  • Work category allocation – Allocating separate work categories provides a clear idea about where different team members are investing their time and what is the order of priority of the various tasks in a project. 
  • Defect removal awareness – When team members work proactively and correct the errors simultaneously as they develop and test a product, the quality of the end product improves significantly.
  • Cumulative flow diagram – It represents a workflow in which the x-axis represents time, and the y-axis depicts the effort of members. 
  • Sprint burn-down matric – This allows the Agile team to track and monitor the completion of the work along with the sprint.
  • Deliver business value – It is primarily concerned with the overall work efficiency of the Agile team. Only when all the team members are productive that the Agile team can deliver business value to their clients. 
  • Time coverage – The time required to develop and test each iteration is measured using the ratio between the number of lines in a code (test suite) and the number of relative lines of codes.
  • Defect resolution time – As the name suggests, it pertains to the time required to detect and fix bugs and issues. This is an elaborate process that requires the Agile team to collaborate and deliver improved results in the most productive manner possible.

19. Explain “Zero Sprint” in Agile.

In Agile Methodology, Zero Sprint refers to the first step that comes before the first sprint. So, it is more like a pre-step to the first sprint. Thus, Zero Sprint would include a host of activities that are to be completed before starting a project, including setting up the development environment, preparing backlog, and other such tasks that are usually done before beginning the actual development process. 

20. What is the ideal duration of a Scrum Sprint?

The duration of a Scrum Sprint or the Scrum Cycle primarily depends on the project size and the team working on it. A Scrum team may consist of 3-9 members, and it takes about 3-4 weeks to draft and complete a Scrum script. Going by this calculation, the average duration of a Scrum Sprint is four weeks.

21. Explain the role of the Scrum Master.

One of the popular agile interview questions. The Scrum Master is the leader and supervisor of the Scrum team. The main job of the Scrum Master is to ensure that the team abides by the Agile values and principles and follows the agreed-upon processes and practices. Some of the most crucial responsibilities of the Scrum Master are:

  • To eliminate all the obstacles that could hamper the productivity of the Scrum team.
  • To establish a productive and collaborative work environment for the Scrum team.
  • To protect the team from the interruptions and distractions of the outside world.
  • To maintain a good relationship between the team, clients, and all the other stakeholders involved in a project. 
  • To supervise the operations of the Scrum team and motivating them as and when needed. 

22. Differentiate between “Sprint Planning Meeting” and “Sprint Retrospective Meeting.”

Although the two terms may sound similar, Sprint Planning Meeting and Sprint Retrospective Meeting are quite different from one another. A Sprint Planning Meeting involves all the Scrum roles – product owner, scrum team, and scrum master – coming together to discuss the project priorities and backlog items. Usually, the Sprint Planning Meeting is a weekly event that lasts for about an hour. A Sprint Retrospective Meeting, on the other hand, is one where all the Scrum roles (product owner, scrum team, and scrum master) come together to discuss the good and bad elements of the sprint and the sprint improvements. This meeting is generally an extension of the Sprint Planning Meeting and can last up to two to three hours.

Apart from these agile methodology interview questions, questions based on your previous experience in case you are already acquainted with agile methodology can be asked by the interviewer. You might want to revisit your on-the-job learnings and prepare answers to questions like:

    1. How long were your sprints for the projects you have worked on?
    2. What is the maximum number of scrum you have handled at a time?
    3. What kind of project management tools were used for your project?
    4. Have you used automated test tools earlier? How was your experience?
    5. Did your iterations overlap?

SDLC Models

  i.        Waterfall Model


Classic Waterfall





The first introduced Process Model is Waterfall Model hence it is basic mode of SDLC which is also known as mother of all other model. It is simple to understand and use. It is referred to as a linear-sequential life cycle model where each phase should be executed fully before the next phase can begin. This model is basically used for the project where there are no uncertain requirements and small. Here testing starts only when the development is complete. The phases do not overlap in waterfall model.

Discover the Waterfall Model's Sequential Phases in Software Testing: Uncover the structured approach to testing, understand its significance, and explore activities at each stage for ensuring high-quality software outcomes.

1️⃣ Requirements Analysis — understanding and analyzing the software requirements to create comprehensive test plans and strategies. Testers collaborate with stakeholders to gather requirements and define testable criteria based on functionality, performance, security, and other aspects.

2️⃣ Design — creating detailed test cases, test scenarios, and test data based on the requirements and design specifications. Testers also develop test environments and prepare testing tools and resources needed for the upcoming testing phases.

3️⃣ Implementation — executing the test cases and scenarios developed earlier to validate the software against the specified requirements. Testers report defects or issues found during testing and work closely with developers to resolve them before moving to the next phase.

4️⃣ Testing — comprehensive testing activities, including unit testing, integration testing, system testing, and acceptance testing. Testers verify that the software functions correctly, meets performance expectations, and fulfills user requirements according to the predefined test plans.

5️⃣ Deployment — conducting final acceptance testing to ensure the software is ready for deployment. They verify that all identified defects have been addressed, and the software meets the quality standards before it is released to the production environment.

6️⃣ Maintenance — conducting regression testing to ensure that software updates or changes do not introduce new defects. They also monitor the software in the live environment, gather user feedback, and contribute to ongoing improvements and enhancements to maintain software quality over time.

Waterfall Strengths
Easy to understand, easy to use
Provides structure to inexperienced staff
Milestones are well understood
Sets requirements stability
Good for management control (plan, staff, track)
Works well when quality is more important than cost or schedule

Waterfall Deficiencies:
All requirements must be known upfront
Deliverables created for each phase are considered frozen – inhibits flexibility
Can give a false impression of progress
Does not reflect problem-solving nature of software development – iterations of phases
Integration is one big bang at the end
Little opportunity for customer to preview the system (until it may be too late)
Defects were being found too late in the life cycle, as testing was not involved until the end of the project. Testing also added lead time due to its late involvement
When to use the Waterfall Model:
Requirements are very well known
Product definition is stable
Technology is understood
New version of an existing product
Porting an existing product to a new platform.

V-Shaped SDLC Model:



1.The V-model provides guidance that testing needs to begin as early as possible in the life cycle.
2.It also shows that testing is not only an execution-based activity. There are a variety of activities that need to be performed before the end of the coding phase. These activities should be carried out in parallel with development activities, and testers need to work with devel-opers and business analysts so they can perform these activities and tasks and produce a set of test deliverables.
3. The work products produced by the developers and business analysts during development are the basis of testing in one or more levels.
4.By starting test design early, defects are often found in the test basis documents.
5.A good practice is to have testers involved even earlier, during the review of the (draft) test basis documents.
6. The V-model is a model that illustrates how testing activities (verification and validation) can be integrated into each phase of the life cycle.
7. Within the V-model, verification testing takes place especially during the early stages, e.g. reviewing the user requirements, and late in the life cycle, e.g. during user acceptance testing.

V-Shaped Strengths:
Emphasize planning for verification and validation of the product in early stages of product development
Each deliverable must be testable
Project management can track progress by milestones
Easy to use

V-Shaped Weaknesses:
Does not easily handle concurrent events
Does not handle iterations or phases
Does not easily handle dynamic changes in requirements
Does not contain risk analysis activities

When to use the V-Shaped Model:
Excellent choice for systems requiring high reliability – hospital patient control applications
All requirements are known up-front
When it can be modified to handle changing requirements beyond analysis phase
Solution and technology are known

  iii.        Prototyping Model

 In this Prototype Model before designing phase, a prototype is developed, tested, reviewed and approved by the customer, after that design will be ready for coding, testing, installation and maintenance will takes place. This prototype is prepared based on the customer requirements. Prototype testing is checking for the required components are present or not.
By using this prototype, customer can understand the requirements of desired system and also the customer can get an “actual feel” of the system. It is an attractive idea for complex and bigger systems.
There are 2 approaches for this model:
  1. Rapid Throwaway Prototyping –
    This technique offers a useful method of exploring ideas and getting customer feedback for each of them. In this method, a developed prototype need not necessarily be a part of the ultimately accepted prototype. Customer feedback helps in preventing unnecessary design faults and hence, the final prototype developed is of a better quality.
  2. Evolutionary Prototyping –
    In this method, the prototype developed initially is incrementally refined on the basis of customer feedback till it finally gets accepted. In comparison to Rapid Throwaway Prototyping, it offers a better approach which saves time as well as effort. This is because developing a prototype from scratch for every iteration of the process can sometimes be very frustrating for the developers
Main Phases

1.      Requirements gathering
2.      Quick design
3.      Build prototype
4.      Customer evaluation of prototype
5.      Refine prototype
Iterate steps 4.and 5. to “tune” the prototype
6.      Engineer product

Prototyping



 Advantages –
  • The customers get to see the partial product early in the life cycle. This ensures a greater level of customer satisfaction and comfort.
  • New requirements can be easily accommodated as there is scope for refinement.
  • Missing functionalities can be easily figured out.
  • Errors can be detected much earlier thereby saving a lot of effort and cost, besides enhancing the quality of the software.
  • The developed prototype can be reused by the developer for more complicated projects in the future.
  • Flexibility in design.
Disadvantages –
  • Costly w.r.t time as well as money.
  • There may be too much variation in requirements each time the prototype is evaluated by the customer.
  • Poor Documentation due to continuously changing customer requirements.
  • It is very difficult for the developers to accommodate all the changes demanded by the customer.
  • There is uncertainty in determining the number of iterations that would be required before the prototype is finally accepted by the customer.
  • After seeing an early prototype, the customers sometimes demand the actual product to be delivered soon.
  • Developers in a hurry to build prototypes may end up with sub-optimal solutions.
  • The customer might lose interest in the product if he/she is not satisfied with the initial prototype.
Use –
The Prototyping Model should be used when the requirements of the product are not clearly understood or are unstable. It can also be used if requirements are changing quickly. This model can be successfully used for developing user interfaces, high technology software-intensive systems, and systems with complex algorithms and interfaces. It is also a very good choice to demonstrate the technical feasibility of the product.

Not all life cycles are sequential. There are also iterative or incremental life cycles where, instead of one large development time line from beginning to end, we cycle through a number of smaller self-contained life cycle phases for the same project. As with the V-model, there are many variants of terative life
cycles.
A common feature of iterative approaches is that the delivery is divided into increments or builds with each increment adding new functionality. The initial increment will contain the infrastructure required to support the initial build functionality. The increment produced by an iteration may be tested at several levels as part of its development. Subsequent increments will need testing for the new functionality, regression testing of the existing functionality, and inte-gration testing of both new and existing parts. Regression testing is increasingly important on all iterations after the first one. This means that more testing will be required at each subsequent delivery phase which must be allowed for in the project plans. This life cycle can give early market presence with critical func-tionality, can be simpler to manage because the workload is divided into smaller pieces, and can reduce initial investment although it may cost more in the long run. Also early market presence will mean validation testing is carried out at each increment, thereby giving early feedback on the business value and fitness-for-use of the product.

Construct a partial implementation of a total system
Then slowly add increased functionality
The incremental model prioritizes requirements of the system and then implements them in groups.
Each subsequent release of the system adds function to the previous release, until all designed functionality has been implemented

Incremental Model Strengths:
Develop high-risk or major functions first
Each release delivers an operational product
Customer can respond to each build
Uses  “divide and conquer” breakdown of tasks
Lowers initial delivery cost
Initial product delivery is faster
Customers get important functionality early
Risk of changing requirements is reduced

Incremental Model Weaknesses:

Requires good planning and design
Requires early definition of a complete and fully functional system to allow for the definition of increments
Well-defined module interfaces are required (some will be developed long before others)
Total cost of the complete system is not lower

When to use the Incremental Model:
Risk, funding, schedule, program complexity, or need for early realization of benefits.
Most of the requirements are known up-front but are expected to evolve over time
A need to get basic functionality to the market early
On projects which have lengthy development schedules
On a project with new technology

       v.   Spiral SDLC Model:



-Objective: overcome problems of other models, while combining their advantages
-Key component: risk management (because traditional models often fail when risk is neglected)
-Development is done incrementally, in several cycles-Cycle as often as necessary to finish.

Main Phases
Ø  Determine objectives, alternatives for development, and constraints for the portion of the whole system to be developed in the current cycle.
Ø  Evaluate alternatives, considering objectives and constraints: identify and resolve risks
Ø  Develop the current cycle’s part of the system, using evolutionary or conventional development methods (depending on remaining risks); perform validation at the end
Ø  Prepare plans for subsequent phases.

Advantages of Spiral Model
-Most realistic for approach for large systems envelopment
-Allows identification and resolution of risks early in the development
•          Provides early indication of insurmountable risks, without much cost
•          Users see the system early because of rapid prototyping tools
•          Critical high-risk functions are developed first
•          The design does not have to be perfect
•          Users can be closely tied to all lifecycle steps
•          Early and frequent feedback from users
•          Cumulative costs assessed frequently


Problems with Spiral Model

-Difficult to convince customer that this approach is controllable
-Requires significant risk assessment expertise to succeed
-Not yet widely used: efficacy not yet proven.

Time spent for evaluating risks too large for small or low-risk projects
Time spent planning, resetting objectives, doing risk analysis and prototyping may  be excessive
The model is complex
Risk assessment expertise is required
Spiral may continue indefinitely
Developers must be reassigned during non-development phase activities
May be hard to define objective, verifiable milestones that indicate readiness to proceed through the next iteration
When to use Spiral Model:
When creation of a prototype is appropriate
When costs and risk evaluation is important
For medium to high-risk projects
Long-term project commitment unwise because of potential changes to economic priorities
Users are unsure of their needs
Requirements are complex
New product line
Significant changes are expected (research and exploration)

  vi.        Rapid Application Development

Rapid Application Development (RAD) is formally a parallel development of
functions and subsequent integration.
Components/functions are developed in parallel as if they were mini projects, the developments are time-boxed, delivered, and then assembled into a working prototype. This can very quickly give the customer something to see and use and to provide feedback regarding the delivery and their requirements. Rapid change and development of the product is possible using this methodology. However the product specification will need to be developed for the product at some point, and the project will need to be placed under more formal controls prior to going into production. This methodology allows early validation of technology risks and a rapid response to changing customer requirements


Requirements planning phase  (a workshop utilizing structured discussion of business problems)
User description phase – automated tools capture information from users
Construction phase – productivity tools, such as code generators, screen generators, etc. inside a time-box. (“Do until done”)
Cutover phase  -- installation of the system, user acceptance testing and user training

RAD Strengths:

Reduced cycle time and improved productivity with fewer people means lower costs
Time-box approach mitigates cost and schedule risk
Customer involved throughout the complete cycle minimizes risk of not achieving customer satisfaction and business needs
Focus moves from documentation to code (WYSIWYG).
Uses modeling concepts to capture information about business, data, and processes.

RAD Weaknesses:
Accelerated development process must give quick responses to the user
Risk of never achieving closure
Hard to use with legacy systems
Requires a system that can be modularized
Developers and customers must be committed to rapid-fire activities in an abbreviated time frame.

When to use RAD:
Reasonably well-known requirements
User involved throughout the life cycle
Project can be time-boxed
Functionality delivered in increments
High performance not required
Low technical risks
System can be modularized

================================================================================
AGILE METHODOLOGY

Topics Covered:
Agile and Scrum Process
• What is Scrum and Scrum Team
• What is Sprint
• What is User Story
• How to give story points / How to estimate user story
• What is Definition of Done and Definition of Ready
• Different Sprint Activities:
• Sprint Planning / Backlog Refinement / Sprint Review / Sprint Retrospective

Jira Tool
• How to install and configure JIRA tool
• How to create an EPIC/User Stories in JIRA
• Creating sprints in Jira
• Sprint life cycle in JIRA
• Backlogs in JIRA
• Creating bugs in Jira
• How to write test cases in JIRA with Zephyr plugin
• Creating Test Cycles and Execute Test cases in Jira


ProductBacklog:
All the new requirementss/EPIC/userstories are available

What is Agile?

AGILE is a methodology that promotes continuous iteration of development and testing throughout the software development life cycle of the project. Both development and testing activities are concurrent unlike the Waterfall method.

What is Agile Testing?

Unlike the WaterFall method , Agile Testing can begin at the start of the project with continuous integration between development and testing. Agile Testing is not sequential (in the sense its executed only after coding phase) but continuous.
Agile team works as single team towards a common objective of achieving Quality .Agile Testing has shorter time frames called iterations (say from One to Four weeks ). This methodology is also called release or delivery driven approach since it gives better prediction on the workable products in short duration of time.


Methodologies of Agile Testing

There are various methodologies present in agile testing and those are listed below:

Scrum

SCRUM is an agile development method which concentrates particularly on how to manage tasks within a team based development environment. Basically, Scrum is derived from activity that occurs during rugby match. Scrum believes in empowering the development team and advocates working in small teams (say- 7 to 9 members). It consists of three roles and their responsibilities are explained as follows:







Scrum Master:

 Master is responsible for setting up the team, sprint meeting and removes obstacles to progress
  Scrum Master – ensures Scrum process is followed; not the team leader
  
Product owner
The Product Owner creates product backlog, prioritizes the backlog and is responsiblefor the delivery of the functionality at each iteration
 Product Owner – is voice of customers; should not be same person as Scrum Master
 Product owner create the user stories(new functions/features)

Scrum Team
Team manages its own work and organizes the work to complete the sprint or cycle


Product Backlog

This is repository where requirements are tracked with details on the no of requirements to be completed for each release. It should be maintained and prioritized by scrum master and it should be distributed to the scrum team. Team can also request for new requirement addition or modification or deletion

Phases of Scrum testing:


There are three phases of scrum testing ,elaborated as follows:
Test Design
Ø  User stories are used for development of test cases .User stories are written by the product owner. User stories are short description of functionalities of the System Under Test. Example for Insurance Provider is –Premium can be paid using online system
Ø  Test Cases are developed based on user stories which should be reviewed/approved by business analysts/QA manager/product Manager and the customers

Test Execution
Ø  Test execution is carried out in a lab where both tester and developer work hand in hand.
Ø  Defect are logged in Defect Management tool which are tracked on a daily basis. Defects can be discussed during scrum meeting
Ø  Defects are retested as soon as it is fixed and deployed for testing
Test Automation
Ø  This also gains importance due to short delivery timelines
Ø  Test Automation can be achieved by utilizing various opensource or paid tools available in the market .
Ø  This proves effective in ensuring that everything that needs to be tested was covered. Sufficient Test coverage can be achieved with the close interaction with the team.
Managing
 Sprint(Cycle) meeting is held at the beginning to decide the scope of sprint, understand the product backlog, task estimates and assignments
 Daily 15 minutes meeting will be held where participants answer three questions.
o    Last 24 hours tasks
o    Plan for next 24 hours tasks
o    What are all obstructions of the tasks?

Sprint Burn down Charts


Each day, Scrum Master records the estimated remaining 
work for the sprint. This is nothing but the Burn Down Chart.
 It is updated daily.

Process flow of scrum

    Process flow of scrum testing is as follows:
     Each iteration of a scrum is known as Sprint
     Product backlog is a list where all details are entered to get end product
     During each Sprint, top items of Product backlog are selected and turned   into Sprint backlog
     Team works on the defined sprint backlog
     Team checks for the daily work
     At the end of sprint, team delivers product functionality

 

AGILE DEVELOPMENT MODEL

  • Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning. The project scope and requirements are laid down at the beginning of the development process.
  • All the team member should work together to deliver a quality product.
  • Management is also involved continuously in this project.
  • It is one of the most widely used process in software development world as it helps teams to deliver the work faster in small increments with less issues.
General terminologies used in Agile process
  • Product Backlog – User stories(requirements are split into user stories) will be added here. For any sprint, user stories will be picked from product backlog and worked upon.
  • Epic – It is the complete feature or requirement which needs to be implemented.
  • User story – An Epic is split into user stories based on the complexity or work involved in order to develop it. User story is generally part of Epic. In case of small feature, it will be a single user story.
  • Story points – It is a measurement to define the complexity of the user story from dev and QA perspective. This activity will be done in Sprint planning.
  • Burn down chart – This is a pictorial graph representation of time and work. This is drawn with the help of the time spent on tasks along with the work. Team need to burn the hours on daily basis for the work accomplished against the tasks.
Agile Process:   
  • Customer satisfaction by rapid, continuous delivery of useful software Here in Agile process, we can monitor the project progress every day. 
  • Every release is implemented in iterations or sprints. Every iteration or sprint consists of 2 or 3 weeks in general. However, this sprint duration varies from project to project and also to sprint to sprint as well sometimes. 
  • Many meetings were involved in this Agile process to know the progress of the release in each sprint.
Agile Meetings:   
  • Sprint Planning meeting is conducted before the start of the sprint to discuss the user stories that can be covered in that particular sprint.
  • Daily stand up/Scrum is conducted to know the work done by each in the team. Mainly the below things are discussed,
  • What work is done yesterday
  • What work is planned for today
  • What work is planned for tomorrow
  • Any impediments to complete the work
Agile Meetings:   
  • Sprint Review meeting is conducted at the end of the sprint to discuss the progress and where does the team stand for that sprint. However this is a optional meeting which is conducted based on the projects/companies as required.
  • Sprint Retrospective meeting is conducted once a sprint is completed and next sprint got started. Following things will be discussed,
  • What went well in the last sprint
  • What didn’t went well in the last sprint
  • What can be done to improve or perform well in the ongoing sprint
  • Defect Triage meeting is conducted to review and have a proper action on the defects. Dev team, testing team and sometimes the Product owner also will be involved in this meeting. Defects identified in the particular sprint will be triaged and assigned to respective team or deferred sometimes depending on the defects.
  • Sprint Planning meeting is conducted before the start of the sprint where the user stories for that particular sprint and the timelines for the same would be planned.



can you explain to me the Definition of Ready in agile scrum?
Definition of Ready (DoR) is a set of criteria agreed upon by the Scrum team, used to define when a product backlog item is considered ready to be worked on. The Definition of Ready ensures that the team is fully prepared to start working on a product backlog item and that all necessary information and dependencies have been addressed. This helps to reduce the risk of delays or rework and ensures that the team can focus on delivering value. The DoR typically includes information such as clear and well-defined user stories, sufficient requirements, and necessary resources and dependencies being in place

can you explain to me the Definition of done in agile scrum?

The Definition of Done (DoD) is a set of criteria agreed upon by the Scrum team, used to define when a product backlog item is considered complete and ready to be accepted by the product owner. The Definition of Done provides a shared understanding of what constitutes a high-quality product increment and helps ensure that everyone on the team is aligned on what needs to be delivered. It typically includes a list of technical and non-technical requirements that must be met before a product backlog item can be considered done.

can you explain to me the Acceptance criteria in agile scrum?

Acceptance Criteria are a set of specific, testable conditions that a product backlog item must meet in order to be considered complete and accepted by the product owner. The acceptance criteria help to define what success looks like for each product backlog item and provide clear and measurable definitions for the team to work towards. This helps ensure that the team is aligned on what needs to be delivered and provides a way for the product owner to confirm that the product backlog item meets their expectations. Acceptance criteria can include functional requirements, performance criteria, usability standards, and other conditions that must be met before the product backlog item is considered done


Advantages:   
  • Customer satisfaction by rapid, continuous delivery of useful software.
  • Working software is delivered frequently (weeks rather than months).
  • Weekly release are expected if any large requirement are split so that development and testing is completed in the week scheduled. 
  • Customers, developers and testers constantly interact with each other.
  • Daily cooperation between business people and developers.
Disadvantages:   
  • Sometimes in Agile methodology the requirement is not very clear hence it’s difficult to predict the expected result.
  • In few of the projects at the starting of the software development life cycle it’s difficult to estimate the actual effort required.
  • Because of the ever-evolving features, there is always a risk of the ever-lasting project.
  • For complex projects, the resource requirement and effort are difficult to estimate.

Agile velocity

·         

Part of the Agile, Scrum, XP glossary:
Velocity is a metric that predicts how much work an Agile software development team can successfully complete within a two-week sprint (or similar time-boxed period).
Velocity is a useful planning tool for estimating how fast work can be completed and how long it will take to complete a project. The metric is calculated by reviewing work the team successfully completed during previous sprints; for example, if the team completed 10stories during a two-week sprint and each story was worth 3 story points, then the team's velocity is 30 story points per sprint. 
Generally, velocity remains somewhat constant during a development project, which makes it a useful metric for estimating how long it will take a team to complete a software development project. If the product backlog has 300 story points, and the team is averaging 30 story points per sprint, it can be estimated that team members will require 10 more sprints to complete work. If each sprint lasts two weeks, then the project will last 20 more weeks. If a team member is moved to another project, however, or new members are added -- the velocity must be recalculated.
 v=🔺x/🔺t= Number of total story points / One iteration
Velocity is a measurement of how much the team gets done in an iteration ( called as Sprint in Scrum ). Velocity is what actually got done in the last iteration not what is planned.
In Scrum it is measure in Story points. Each feature in scrum is a story. A story has points. Points can be anything you come up with.
Examples are 1, 2, 4, 8 , 16
5, 10 15 and so on.
A story depending on its complexity is given certain story points. So if the team does 6 stories that are 8 story points that iteration , the teams velocity is 48 story points.

What is a story point ?

Story point is a arbitrary measure used by Scrum teams. This is used to measure the effort required to implement a story.
How to give story points / How to estimate user story?
Story points are a method used in Agile Scrum to estimate the relative size and complexity of product backlog items, such as user stories. The following is a general approach for estimating user stories with story points:
  1. Understand the user story: Make sure everyone on the team has a clear understanding of what the user story entails and what needs to be delivered.

  2. Use relative sizing: Instead of trying to estimate the exact effort required to complete a user story, use relative sizing to compare it to other user stories that have already been estimated.

  3. Use a standardized scale: Teams typically use a Fibonacci-based scale (e.g. 1, 2, 3, 5, 8, 13, 21) to estimate user stories, as this reflects the uncertainty that often surrounds software development estimates.

  4. Involve the team: Encourage collaboration and teamwork by involving the entire team in the estimation process. This helps ensure that everyone is aligned and that the estimate is based on a shared understanding of the user story.

  5. Re-estimate regularly: User stories are likely to change as the project progresses, so be prepared to re-estimate them as needed to reflect these changes.

Remember, the goal of story point estimation is not to produce an exact estimate, but rather to provide a rough idea of the relative size and complexity of the user story, and to help the team plan and prioritize their work

What are different way to size stories? Why do we do story points, not hours?

ike Cohn talks a  lot about this in his book Agile Estimation and Planning. You can use any measure to size stories.
Teams use different sizing techniques
T Shirt Sizing
X Small, Small , Medium , Large , Xtra Large
or
Coffee Sizing
Small, Tall, Grande
You can pick any sizing technique. Make up one if needed.
This is mainly done as we as humans and as managers are better at abstract terms. If we use hours as a way to size stories,then the managers in the room have questions, teams dont immediately feel comfortable with hours.
Sizing keeps the planning meeting at a fast pace.
A general measure you can use  for T Shirt sizing is how many days it take to complete a story
Small story –  1-3 days
Medium – 3- 5 days
Large – 5 – 7 days
X Large > 10 days
In order to convert a story size to a number you can use either factorial, Fibonacci or Squares.
Sizing Techniques
If in  a sprint your team does two small stories and two medium  then your velocity is 9 * 2 + 4 * 2 = 26 ( if you are following the squares techique). Square is simple and works quite well.