Académique Documents
Professionnel Documents
Culture Documents
Traditionally, Testing is a phase in a software development life cycle (SDLC). STLC generally begins with Test planning and ends with Test execution followed by Defect Analysis and reporting. Testing is always performed after Coding is complete. Customers and end users are involved only in the Acceptance Testing Critical Bugs are reported at the end of the phase and hence there is a delay in Release. Effort & Cost overruns Final Software is delivered late as a result of which it becomes less competitive.
Accelerate the realization of the benefits in business since developer, tester and business analyst work as a team. Accommodate change which maintains the flexibility and continuity of business. Reduction of risk Increase visibility of risks, schedule, etc. Improvement of quality Address business needs. As a result of multidisciplinary team structure, the business needs are properly satisfied. Helps in reducing missed and false features. Fewer number of defects reported while testing. Increase maintainability of the product.
Agile methodologies emphasize more on execution than on documentation. This helps in delivering flawless software. It emphasizes more on client requirements, working of the software, clear communication, scrum calls and team work and better understanding of the main functionalities. This helps to a greater extent, designing the product as per client requirements. It is a testing practice which adheres to the Agile Manifesto treating the development team as the customer of testing.
As this development is an incremental approach, so there will be a small release on incremental basis for testing. Releases are therefore, dependent on each other. The further development is done on the previously released and tested piece of function or code. This way the defects are identified at the earlier stage, analyzed and fixed and hence are not carried forward.
Contd
Having multidisciplinary team structure, client, developers and testers work together, interact and communicate often to capture the requirements correctly and efficiently. This communication helps in better understanding of the requirements and reduces misunderstandings between clients and developers to maintain a good business. The Development team and Test team are co-located so that the clarifications and defect fixes are done then and there itself. This reduces rework and ensures the delivery of the software on time. Sharing of updates is done on daily basis via stand up call or scrum call.
Even with business value and cake slices being added in small increments, code still needs to be regression tested
Scope/Requirements
Client
Developer
Defects reported & analyzed
Tester
Requirement clarifications
Customer satisfaction by rapid, continuous delivery of usable software Frequent delivery of bug free software Changes in requirements are welcome at any point of time. Rapport between business people and developers Discussion is the best form of communication. Continuous attention to technical excellence and good design. Self-organizing teams
Extreme Programming
Dynamic Systems Development Method (DSDM) SCRUM Adaptive Software Development(ASD) Feature Driven Development(FDD)
Extreme Programming teams use a simple form of planning and tracking to decide what should be done next and to predict when the project will be done. Focused on business value, the team produces the software in a series of small fully-integrated releases that pass all the tests the Customer has defined. Extreme Programming Practices: Test Driven Development Pair Programming Short Iterations and Releases Refactoring and User Stories Acceptance Testing
When the customer does not have a clear understanding of the detailed features of the new system. Customer may not have clear idea about the new features of the latest technology used. When the technology used to develop the system is new compared to other technologies. Some product needs development with the latest version of the technology used. When we are able to create automated unit and functional tests. When the team size is small (usually 2 to 12 people).
This is an extension of Rapid Application Development, which primarily focuses on Information Systems projects that are characterized by tight schedules and budgets. DSDM addresses the most common failures of information systems projects, which includes exceeding budgets, missing deadlines, and lack of user involvement and top-management commitment. This methodology is very useful for short term projects which are to be delivered in a very short span of time. Therefore, work should be exact and process-oriented.
DSDM consists of Three phases: pre-project phase, project life- cycle phase, and post-project phase. A project life-cycle phase subdivided into 5 stages: feasibility study, business study, functional model iteration, design and build iteration, and implementation
Feasibility
Implementation
Major Roles:
Scrum master: One of the team member of scrum team becomes the Scrum master. Scrum team: Developers and Testers comprises the scrum team. Product owner: Customers or the business users who own the product.
24 Hours
30 Days
Product Backlog
Sprint Backlog
Sprint
The role of testing in SCRUM is that of an integrated approach. The testers will be more closely associated with the developers to provide more immediate feedback to the developers and the team.
Adaptive Software development works on the principle of continuous adaptation of ideas while developing a software.
It uses repeated series of speculate, collaborate and learn cycles to develop the application which is based on requirement changes and client expectations from the product. These series help in adapting the approaches and latest technologies.
The main purpose of this testing is to deliver the customer a tangible, working software without any delay.
The development process involves 5 activities: Develop Overall Model, Build Features List, Plan by feature, Design by feature, Build by feature.
Milestones are identified and progress is tracked on basis of the achievement of milestone. Milestone Reports are prepared as well.
1. 2. 3. 4. 5.
Story Exploration
The product owner shares this information through: 1. Visible product roadmap 2. Release overviews 3. Iteration planning
Estimation
Estimation is another team activity to which agile testers should contribute.
Estimate does not equal hours of effort .Estimate is the relative size of a story w.r.t other stories.
If significant additional testing needs to be performed then that is factored into the estimate also.
Story Planning
The Agile tester actively participates in story Planning. Detailed story planning occurs after a story has been estimated and placed in iteration. The team identifies the tasks that need to be performed and assigns detailed effort estimates to the story. The tasks include the standard work of the team that is applicable to the story. For Testing activities, tasks for standard work are 1.Prepare test data 2.Extend acceptance tests 3.Execute manual tests 4.Conduct exploratory testing sessions 5.Automate testing for the scenarios which are feasible.
Story Progression
Unit testing is done by developers and then the application is send for testing to the testing team. Testers can review unit test coverage and testers can monitor failed unit tests. Testers will also conduct exploratory tests as the features become functional. During this phase, agile tester will also actively communicate information about testing status and progress like: a) Expresses the acceptance criteria of the story in test form. b) Visually indicates the status of story. c) Highlights testing constraint. d) Giving targeted information regarding problem areas and blocking issues.
Story Acceptance
Developers arent done when all the code is written; testers arent done when all the tests pass or when all the tests are automated. The team is done when story is done.
Testers contribute both to the team discussion and the team definition.
Traditional approach
Requirement and Detailed design documents are mandatory. Processes are defined well ahead. Development and Testing teams are rarely co-located. Unit testing and integration testing are handled internally between the testing and development team. No scrum calls are conducted on daily basis.
Agile approach
Requirement and Design documents are not required and are optional. No processes involved. Development and Testing teams are co-located for better communication. Clients are involved in each and every small unit of deliverables and are updated on daily happenings. There will be scrum call or stand up call on daily basis with all the stakeholders.
Traditional approach
Face to face communication is limited and mostly not possible. Emphasize more on requirement document, detailed design, weekly reports and review calls process and tools. Time consuming in understanding the scope and requirement, getting the defect fix and for the sign-off. Time to market cost is unpredictable
Face to face communication is highly possible and plays a vital role. Emphasize on client requirements, working software, collaboration, people communication, scrum calls and team work. Saves lot of time since there is lot of interaction among the stakeholders on daily basis. Reduces the time to market cost.
Since changes are welcomed at anytime in agile development, change control is common place.
In agile testing, no formal test planning is required, instead a detailed test plan is preferred.
There is no predefined entry or exit criterion as there is no stipulated time frame allotted for testing.
Focus would be on priorities, client needs, critical functionalities rather than focusing on the documentation.
Very much flexible and adaptable which make these practices more helpful and simpler.
Progress can be so closely tracked and can be reported to top management at a very early stage in the process, resulting in reduction of defects.
Substituting unit tests for acceptance tests or vice versa. Acceptance tests are not totally automated. Automated tests are thought to be sufficient. Non-functional tests are never taken into execution such as performance, volume, reliability, usability, scalability, memory usage, etc.
The reason behind the success of agile testing is the co-location of the developers, testers and business analysts, which contributes to the delivery for quality software in a very short span of time. Communication becomes the most important for developing a bug free, working software. Discussions, both formal and informal, form the backbone of agile testing. Hence, it will be exceptionally beneficial to follow agile testing methodologies especially in projects where there are frequent changes in requirements and the time to live is short.
Any Questions?
Thank You!