You are on page 1of 30

Ch -2 Overview of Software Testing

• Review of Software Development Models


• (Waterfall Models, Spiral Model, W Model, V Model)
• Basic Definition of Software Testing
• Importance of Software Testing Errors,
• Defects, and Failures Testing and Debugging
Basic System Development Life Cycle

• The Systems development life cycle (SDLC) - is a process of creating or


altering information systems and the models and methodologies that
people use to develop these systems.
• In software engineering, the SDLC concept underpins many kinds of
software development methodologies.
• These methodologies form the framework for planning and controlling the
creation of an information system: the software development process.
Basic System Development Life Cycle
• The SDLC is a process used by a systems analyst to develop an information system.
• Any SDLC should result in a high quality system that meets customer expectations,
reaches completion within time and cost estimates
• Computer systems are complex and often (especially with the recent rise of service-oriented
architecture) link multiple traditional systems potentially supplied by different software
vendors.
• To manage this level of complexity, a number of SDLC models or methodologies have been
created
• Waterfall
• Spiral
• Agile software development
• rapid prototyping
• Incremental
• SDLC models can be described along spectrum of agile to iterative to sequential.
Basic System Development Life Cycle

Fig. SDLC
Preliminary
Investigation

Maintenance Analysis

Implementation Design

Testing Coding
Basic System Development Life Cycle
Following are the phases
1) Preliminary Investigation
• Request clarification
• Feasibility study – identify whether request is feasible
• Carry out by small group of people
• Typically have following types
• Economically
• Technically
• operationally
Basic System Development Life Cycle
• Request approval
• Approved by management
• After that cost, priority, completion time, and personnel requirements are
estimated
Basic System Development Life Cycle
2) Determination of requirement (Analysis)
• Analyst works with employees and managers to understand facts
• Find out facts about existing system, takes opinion of experts.
• Analyze the information which is collected.
• Defines project goals into defined functions and operation of the intended application.
• Analyzes end-user information needs.
3) Design
• Describes desired features and operations in detail, including screen layouts, business rules,
process diagrams, pseudo code and other documentation.
4) Development
• The real code is written here.
5) Testing - checks for errors, bugs and interoperability by using different methods.
Basic System Development Life Cycle

6) Deployment or Implementation: The final stage of initial development, where the


software is put into production and runs actual business.
7) Maintenance: What happens during the rest of the software's life: changes, correction,
additions, moves to a different computing platform and more. This is often the longest of
the stages.
Basic System Development Life Cycle

• Limitations
• Interaction with user is limited
• The analytical tools like flowcharts, programs are focus more with physical aspects
than logical aspects
• It is difficult to change or maintain specification
• Complete software development is only viewed at the end.
• Changes at the ends are very difficult to incorporate, almost impossible.
Different approaches and models for system development

Waterfall Model:-
• Waterfall model sometimes called classic life-cycle.
• It is introduced in 1970 by W. W. Royce
• it is oldest paradigm of software development of SE.
• A systematic sequential approach to software development that begins with customer specification
of requirements and progresses through planning, modeling, construction and deployment and
sometimes on-going support of the completed software.
Different approaches and models for system
development
• Phases in waterfall model
1) Requirements – project initiation and requirement gathering
2) Design – analysis and design
3) Implementation - coding
4) Verification – testing
5) Deployment-delivery
6) Maintenance-support and feedback
Waterfall Model
Waterfall model

• Problems with the model


1) Real projects rarely follow the sequential flow that the model proposes. Changes can
cause confusion as the project team proceeds.
2) It is often difficult for the customer to state all requirements in details. This model
requires at the initial stages.
3) The customer must have a patience. A working version not be available until late in the
project time span.
4) Some times leads into “blocking stage” and can not exceeds until previous work
completes.
Spiral model

• Spiral model originally proposed by Bohem in 1988.


• It is an evolutionary software process model that couples the iterative nature of prototyping with the
controlled and systematic aspects of the waterfall model.
• It is risk driven process model.
• It is used to guide multi-stakeholder concurrent engineering of software.
• Two features- 1) cyclic approach – for incrementally growing software’s degree of definition and
implementation while decreasing its degree of risks.
2) set of anchor-point-milestones (a combination of work products and conditions that are attained along
the path of spiral.) for ensuring stakeholder’s commitment for better software.
• It divided in set of frameworks of activities.
Spiral model
Spiral model

• Unlike the other process models that end when software is delivered, spiral model
can be adapted throughout life of software.
• First cycle represent “the concept development project” which starts at the core and
continues for multiple iterations around the cycle.
• Next, “new product development project” starts.
• At the end spiral might be used to represent “product enhancement project”.
• So used in large scale projects.
• Where customer better understand and react to risks at each evolutionary level.
Spiral model

• Advantages of Spiral Model:


1. Good for large projects
2. Customer evaluation allows for any changes or technology
3. Allow customer and developer to determine & react on risk in each phase
4. Direct consideration of risk reduce the problems
 
• Disadvantages or Drawback of Spiral Model:
1. In contract situation it may be difficult to convince customer that the evolutionary approach is controllable.
2. Need proper risk verification.
3. It not identifying problems properly occurs in development.
Spiral model (win-win)

• Basic spiral model focus on involvement of customer in a negotiation process.


• ‘Win’ condition negotiated among the stakeholder s.
• It means stakeholders should have increase the interaction.
• Sometimes customer fails to provide detail requirements.
• It needs to have negotiation between developer and customer to balance the functionality and
performance with cost and time to market considerations.
• Clients gets the product and developer ‘win’ by working to realistic and achievable budget and deadlines.
• For this objective the model defines the negotiation activities at beginning of each pass around the spiral.
Spiral model (win-win)

• Following are the activities


1. Identify the stakeholders
2. Determine stakeholders ‘win’ condition
3. Then determine the ‘win-win’ condition (stakeholder and software project team)
4. Elaborate on product and process
5. Evaluate the alternatives
6. Elaborate the definition of product and process
7. Plan the next cycle, this can include plan to terminate project if it is too risky or infeasible.
Spiral model (win-win)

• Advantages
1. Faster software production through involvement of the relevant stakeholders
2. Cheaper software via rework and maintenance reduction.
21
Introduction - Testing Concept

• Testing is the process of demonstrating that errors are not present.


• Process of establishing confidence that a program does what it is suppose
to do.
• It is a process of trying to discover every conceivable fault in a work
product
• Testing should intentionally attempt to make things go wrong to
determine if things happen when they shouldn’t or things don’t happen
when they should.
• The purpose of testing is to show that a program perform its intended
functions correctly
• Objective is to find out all possible bugs in a work product.
Introduction

• It is a process of executing program with the intent of finding an error


• A good test is one that has high probability of finding as yet undiscovered error.
• A successful test is one that covers as an yet undiscovered errors
• Mature view of software testing is to see it as a process of reducing the risk of software
failure in the field to an acceptable level.
Importance of testing
• The cost of writing no tests or manually testing your code is much lower
than writing automated tests.
• This is because setting up an automated test suite, and getting developers
familiar with a test-driven workflow will take some time.
• Eventually though, maintaining code without tests will lead to costly
production bugs, and a manual testing strategy scales linearly (as you add
more code, testers must spend more time doing tests).
• So in the long-run, automated tests make maintaining your code cheaper.
Importance of testing

• Quality of the product


• Satisfaction of the customer
• Testing Minimizes Bugs
• Automated Tests Prevent Regressions
• Writing Testable Code Improves Overall Quality
• Tests Help Guide Code Reviewers
• Tests Make It Easier to Add New Features
• Tests Can Help You Debug Edge Cases
Error, Bug and Defect

• Errors are a part of our daily life.


• Humans make errors in their thoughts, actions, and in the products
that might result from their actions.
• Errors occur wherever humans are involved in taking actions and
making decisions.
• Error – Due to which program failed to execute at compile time.
• Bug – Due to which program fail to perform its intended function
correctly
• Defect – Because of the bugs/issues product quality stakes.
• Failure – Impact of overall process on software, which does not
work as per expectations.
Testing and Debugging
• Software testing is a process of identifying defects in the software product. It is
performed to validate the behavior of the software or the application compared to
requirements.
• In other words, we can say that the testing is a collection of techniques to determine the
accuracy of the application under the predefined specification but, it cannot identify all
the defects of the software.
• Each software or application needs to be tested before delivering to the clients and
checks whether the particular software or the application is working fine as per the given
requirements.
Testing and Debugging
• As opposed to Testing, Debugging is the action where the development team or a
developer implements after receiving the test report related to the bugs in the software
from the testing team.
• In the software development process, debugging includes detecting and modifying code
errors in a software program.
• In debugging process, the developer needs to identify the reason behind the
particular bug or defect, which is carried out by analyzing the coding rigorously.
• The developer changes the code and then rechecks whether the defect has been deleted
whenever the bug or error is found.
• Once the debugging is successfully finished, the application is again sent back to the test
engineers, who remain in the process of testing.
• The debugging process allows us an earlier finding of an error and makes software
development stress-free and easy.

You might also like