4. Software Development Lifecycle (SDLC)
Process of producing and maintaining software systems
Primary goal is delivering software that is:
High quality
1.
Meets customer expectations
2.
On time & within budget
3.
SDLC consist of several phases...
5. SDLC Process & Phases
Variations in names / phases but follows same process:
Requirements
1.
Design
2.
Implementation
3.
Testing
4.
Deployment
5.
Maintenance
6.
6. SDLC Process & Phases
Variations in names / phases but follows same process:
Requirements: Gather & define project foundation
1.
Design
2.
Implementation
3.
Testing
4.
Deployment
5.
Maintenance
6.
7. SDLC Process & Phases
Variations in names / phases but follows same process:
Requirements: Gather & define project foundation
1.
Design: Determine architectural structure documents
2.
Implementation
3.
Testing
4.
Deployment
5.
Maintenance
6.
8. SDLC Process & Phases
Variations in names / phases but follows same process:
Requirements: Gather & define project foundation
1.
Design: Determine architectural structure documents
2.
Implementation: Product coded & built to spec
3.
Testing
4.
Deployment
5.
Maintenance
6.
9. SDLC Process & Phases
Variations in names / phases but follows same process:
Requirements: Gather & define project foundation
1.
Design: Determine architectural structure documents
2.
Implementation: Product coded & built to spec
3.
Testing: Fix bugs, errors & inconsistencies
4.
Deployment
5.
Maintenance
6.
10. SDLC Process & Phases
Variations in names / phases but follows same process:
Requirements: Gather & define project foundation
1.
Design: Determine architectural structure documents
2.
Implementation: Product coded & built to spec
3.
Testing: Fix bugs, errors & inconsistencies
4.
Deployment: Public release, inc. training & help files
5.
Maintenance
6.
11. SDLC Process & Phases
Variations in names / phases but follows same process:
Requirements: Gather & define project foundation
1.
Design: Determine architectural structure documents
2.
Implementation: Product coded & built to spec
3.
Testing: Fix bugs, errors & inconsistencies
4.
Deployment: Public release, inc. training & help files
5.
Maintenance: Support, big fixes, updates etc.
6.
12. Role of Testing in SDLC
Testing is an essential part of the SDLC
Ensures quality and reliability
Occurs throughout development process
Identify & fix defects early
Prevents mistakes, reduces risk of failure
13. Testing in different SDLC Phases
Requirements - validate & verify that clear & complete
1.
Design - check documents are accurate & consistent
2.
Implementation - develop test cases, run Unit Testing
3.
Testing - execute cases, identify defects & retest
4.
Deployment - verify correct, provide support material
5.
Maintenance - test new features, bug fixes and changes
6.
14.
15. SDLC
Quiz
Activities
Requirements
Elicitation Analysis Specification ??? Prioritisation
Design
Architectural
design
Detailed
design
Interface
design
Design
documentation
Implementation Coding
Code review (e.g.,
peer code review)
Integration Code
refactoring
Testing
Test planning Test case
design
Test evaluation Defect
tracking
Deployment
Configuration
management
Release
management
Deployment Maintenance
???
???
???
???
Unit testing
Post-deployment
validation
Validation Design review Test execution
22. Case Study Error in Intel's Pentium Microprocessor
Mathematics professor at Lynchburg College, USA, Dr.Thomas Nicely, found a floating point division error in Intel Pentium
microprocessor in the year 1994. He was computing on his Pentium-based computer to find the sum of the reciprocals of prime numbers.
He noticed that the computation result was significantly different from the theoretical values. When the same computation was carried out
on another computer with a different microprocessor (486 CPU) he was able to get the correct values that obey the theoretical values. The
worst and well-known case was division of 4195835 by 3145727. The correct value is 1.33382, however the Pentium's floating point unit
computed and generated a value 1.33374 (Only 6 places after decimal is mentioned here), which has an error of 0.006.
Dr.Thomas Nicely reported the bug to Intel, but Intel ignored it and Nicley did not receive any proper response from Intel. Later, Nicley
took the issue to public with the help of the Internet and media. Following these events, Intel publicly announced that "an error is only
likely to occur [about] once in nine billion random floating points". They also mentioned in their announcement that "an average
spreadsheet user could encounter this subtle flaw once in every 27,000 years of use." However, it was noted that the Intel Pentium
processors output was wrong every time when such division was performed for such values.
On November 28, 1994, Intel publicly admitted the problem and issued a statement saying that it would replace pentium chips only for
those who could explain the need of high accuracy in complex calculations. Industry experts, public, and media criticized this attitude of
Intel. Later, in the month of December, Intel announced that it would freely replace the processor for any owner who asked for one.
The bug problem made Intel to issue an apology to its customers and the public for the way it handled the bug and issues related to it. It
had to spend more than $400 million for replacing bad chips. Learning a lesson from this, Intel now reports all known problems on its
official website and it also monitors customer feedbacks carefully and regularly.
Questions
1. Is Intel right in their approach to customers? How did they win customers’ confidence?
2. Explain the kind of bug faced by Intel. What method would you suggest to overcome the bug?
24. Axiom 1
It is impossible to test a
program completely
Software Testing Axioms
Axiom 2
Software testing is a risk-
based exercise
Axiom 3
Testing cannot show the
absence of bugs.
Axiom 4
The more bugs you find,
the more bugs there are.
Axiom 5
Not all bugs found will be
fixed.
Axiom 6
It is difficult to say when a
bug is indeed a bug.
Axiom 7
Specifications are never
final.
Axiom 8
Software testers are not
the most popular
members of a project.
Axiom 9
Software testing is a
disciplined and technical
profession.
25. Software Quality
Software Testing Terms and Definitions
Verification
Validation
Quality Assurance
Quality Control
Test plan
Test case
is impacted by bugs. It is essential that the software is bug free or
defect free and meets the requirements, specifications, and
expectations of the client.
the process of discovering the possible failures in the software
before the commencement of the testing phase. It involves reviews,
inspections, meetings, code reviews, and specifications. It answers
the question.” Are we building the product right?”
the actual testing of the product happens at a later stage. Defects
which occur due to discrepancies in functionality and specifications
are detected in this phase. It answers the question, “Are we building
the right product?”
26. Software Quality
Software Testing Terms and Definitions
Verification
Validation
Quality Assurance
Quality Control
Test plan
Test case
is a document which gives information about the objectives, scope,
approach and the various attributes that the testing project must
focus on.
The main aim is to evaluate whether the deliverables are of
acceptable quality. The focus thus is to detect defects and correction
of these defects (correction oriented). The activities ensure data
integrity, correctness and completeness.
The activities are more generic and can encompass the whole
development process. The main aim is to prevent defects, and thus
it focuses on the process of product or application building.
is a document and is the smallest unit of testing. It has a developed
set of inputs, execution preconditions and expected outcomes for a
specific objective.
27.
28. Questions
1. Is there any difference between the water fall model and the spiral model? Discuss.
2. In V model, test cases are developed at every stage of software development. Explain.
3. Explain how you will carry out software development process using RAD model.
4. In Agile model, the customers, developers, and testers constantly interact with each other
during the entire development process. Discuss.
5. How does test strategy differ from the test technique? Substantiate how planning a
strategy helps in efficient testing.
6. Suppose you are recruited as a tester in a software company, what qualities are you
expected to exhibit?
7. Do you think software testers need to be just knowledgeable in their domain? Are there
any specific soft skills they are expected to exhibit?
8. “The process of static test is very tedious”. Explain why.
9. Is there any difference between Verification and Validation? Discuss
10. “Not all bugs found will be fixed. “ How would you substantiate this axiom?
29. Summary
Testing plays critical role in SDLC
Ensures software is reliable & defect-tree
Testing throughout the SDLC minimises risk of software failure
The Waterfall model of software development is a traditional model which
follows sequential method of software development. V and Spiral models, which
employ testing as an integral part of software development, are more efficient
than the Waterfall model. Agile is considered to be the most advanced and
efficient type of software development model. Extreme Programming (XP) is a
method developed based on the agile model, which uses test driven development
to develop highly efficient software.