INTRODUCTION
What is SDLC?
Is a process of formal, logical steps taken to develop and maintain a software product Goals: Meets or exceeds customer expectations Deliver within time and cost estimates Work effectively and efficiently in the current and planned IT infrastructure Cheap to maintain and cost-effective to enhance Support visibility and predictability
Why SDLC?
Software Development Life cycle(SDLC)
SDLC Generic Flowchart
Maintan anence & Support
Client Evaluation & Release
Testing and Integratio n ( Manual
Planning
Requirem ent Analysis Design
Coding & Impleme ntation
& Automated )
SDLC Phase Details
SDLC Phase Own er Participant(s) & Roles Main Customer(s) / Consumer(s ) RM Milestone Output(s) / Deliverable(s)
Strategy
PM
PM - Owner/Driver RM - Owner/Driver PM - Reviewer/Approver ENG - Reviewer/Approver QA - Reviewer/Approver TP - Reviewer/Approver PM - Owner/Driver ENG - Reviewer/Approver QA - Reviewer/Approver TP - Reviewer/Approver ENG - Owner/Driver PM - Reviewer/Approver QA - Reviewer/Approver TP - Reviewer ENG - Owner/Driver QA - Reviewer/Approver PM - Reviewer/Approver TP - Reviewer QA - Owner/Driver ENG - Reviewer/Approver/Bug Fixing PM - Reviewer/Approver
Release Planning
RM
PM, ENG, QA, TP
Release(s) Plan(s)
Requirements
PM
ENG, QA, TP
Requirement s Complete
BRD
Design
EN G
QA, TP
C2P
FDD, TDD; ENG, QA & TP Project Plans
Coding / Implementation
EN G
QA, TP
Code Complete
Code, Unit Tests, Test Specs, Test Reports
Integration & Testing
QA
ENG
Beta Ready
Test Plan, Test Specs, Test Cases, Test Scripts
Customer Uptake/Testing
PM
PM - Owner/Driver Customers - Reviewer/Approver ENG - Bug Fixer QA - Test Content Fixing
Apps / Customers
GA Ready
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
What is Software Testing?
Execute the Application in the Controlled manner to answer the question Does the Software behave as designed? Purpose :
Verification Validation Finding
defects
Verification
A Process that confirms the software meets its technical specifications.
Are we doing the Job right? Sample Scenario
User Name length should be more than 5 Characters
Validation
A Process that confirms the software meets the business requirements?
Are we doing the Right Job?
Sample Scenario:
Display the information of the Branch Managers Contact details with respect to the branch chosen.
Defects
Variance between the expected and actual
result. Defects Ultimate source can be traced in the specification, design or the code.
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
Why we need to do testing?
Its not to find bugs. Focused on finding defects on final product Examples of some of the disaster defects:
In June 1996, European space craft Ariane 5 rocket failed immediately after launching, due to the lack of exception handling for a floating-point error when a 64-bit integer was converted to a 16-bit signed integer. The loss was $500 million In Oct 1999, NASA Mars Climate Orbitor, a Whether Satellite lost due to a data conversion error. Investigators discovered that software on the spacecraft performed certain calculations in English units (yards) when it should have used metric units (meters).
Why we need to testing? Contd..
Software testing answers questions that development testing and code reviews cant
Does it really work as expected? Does it meet the users requirements? Is it what the users expect? Do the users like it? Is it compatible with our other systems? How does it perform? How does it scale when more users are added? Which areas need more work? Is it ready for release?
Why we need to testing? Contd..
What can we do with the answers to these questions?
Save time and money by identifying defects early Does it meet the users requirements? Avoid or reduce development downtime Provide better customer service by building a better application Know that weve satisfied our users requirements Build a list of desired modifications and enhancements for later versions Identify and catalog reusable modules and components Identify areas where programmers and developers need training
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
What do we Test?
Focus on what is Important Focus on Core functionality first and then look on Nice to have feature Check the Behavior of the application
Sometimes, the code might have been solid but coded in such a way that application behaves totally in a different way. It is also possible that application is perfectly behaving what we are telling it do, but we are not telling the right thing to the application.
Comprehensive testing covers testing of all the components associated with the application. Testing provides an opportunity to validate and verify things like the assumptions that went into the requirements, the appropriateness of the systems that the application is to run on, and the manuals and documentation that accompany the application.
What do we Test? Contd..
Testing can involve some or all of the following factors. The more, the better.
Business requirements Functional design requirements Technical design requirements Regulatory requirements Programmer code Systems administration standards and restrictions Corporate standards Professional or trade association best practices Hardware configuration Cultural issues and language differences
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
Who does the testing?
Its not ONE persons Job. It takes a team to do it. Testers should ask the following questions
How well does it work? What does it mean to you that it works? How do you know it works? What evidence do you have? In what ways could it seem to work but still have something wrong? In what ways could it seem to not work but really be working? What might cause it to not to work well?
Who does the testing?
Professional Characters of the testers
Understanding the Business approach and goals of the Organization Understanding the entire software development process Strong desire for quality Establish and enforce SQA Methodologies, Test Strategies and Process Judgment skills to access high risk areas Clear communication skills with Analysis and Engineering team Report defects with full evidence Take actions for continuous improvement Report issues to the upper Management timely Say NO when the Quality is insufficient even before the release. Work Management and Meet deadlines.
Classic Testing Mistakes
Role of Testing
the testing team is responsible for assuring quality. Thinking that the purpose of testing is to find bugs. Not finding the important bugs. Not reporting usability problems. Starting Testing too late.
Planning the complete testing effort
A testing effort biased toward functional testing. Underemphazing the configuration testing Load testing at last minute No Document and Installation testing
Personnel issues
Using testing as the transitional job for new programmers Recruiting failed programmers as testers No domain expert
Testers at work
Checking that the product does what its supposed to do, but not that it doesnt do what it isnt supposed to do. Poor Bug reporting Testing only through user visible interface.
Business Sponsors & Partners
Roles
Testers
Provides funding
Specifies Requirements and deliverables
Approves Changes and some test results
Executes the tests and Document Results
Software Developers
Testing Coordinators or QA Leads
Design,Codes and Build Application
Participates in code reviews and testing
Project Managers
Fixes bugs defects and shortcomings
Creates test plans and test specifications based on the requirements and functional, and technical documents
Plans and Manages the Project
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
Activities associated to testing?
Debugging
Process of Analyzing and locating the bugs when software was not behaving as expected Is an activity which supports testing, but cannot replace testing
Static Analysis
Activity which investigates the software code, looking for problems, gathering metrics without actually executing the code.
Dynamic Analysis
Looks at the behavior of software while it is executing Provides information such as execution traces, timing profiles and test coverage information.
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
Test Life Cycle
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
Test Related Documents
Test Plan
A formal detailed document that describes
Scope, objectives, and the approach to testing, People and equipment dedicated/allocated to testing Tools that will be used Dependencies and risks Categories of defects Test entry and exit criteria Measurements to be captured Reporting and communication processes Schedules and milestones
Test Design Specification Test case
Test Plan
Component
Responsibilities Assumptions Test Communication Risk Analysis Defect Reporting Environment
Description
Specific people who are and their assignments
Purpose
Assigns responsibilities and keeps everyone on track and focused Avoids misunderstandings about schedules
Code and systems status and availability
Testing scope, schedule, duration, and prioritization Communications planwho, what, when, how Critical items that will be tested
Outlines the entire process and maps specific tests Everyone knows what they need to know when they need to know it Provides focus by identifying areas that are critical for success Tells how to document a defect so that it can be reproduced, fixed, and retested Reduces or eliminates misunderstandings and sources of potential delay.
How defects will be logged and documented The technical environment, data, work area, and interfaces used in testing
Software Testing Fundamentals
What is Software Testing? Why we need do testing? What do we test ? Who does the testing? What are the activities associated to testing? Test Life Cycle Test Related Documents Types of Testing
Types of Testing
Unit test Integration testing System testing Block box testing White box testing Grey box testing