You are on page 1of 33

School of Computing

Science and Engineering

Program: B. Tech
Course Code:BTCS3502
Course Name: Software Engineering &
Testing Methodologies
School of Computing Science and Engineering
Course Code :BCSE3032 Course Name: Software Engineering
& Testing
Methodologies

Course Outcomes :
CO’S
TITLE

CO1
Understand the key concerns that are common to all software
development processes.
CO2
Select appropriate process models, approaches and techniques
to manage a given software development process.
CO3
Able to elicit requirements for a software product and translate
these into a documented design.
CO4
Recognize the importance of software reliability and how we
can design dependable software, and what measures are used.
CO5
Understand the principles and techniques underlying the
process of inspecting and testing software and making it free of
errors and tolerable.
CO6
Understand the Software Quality Assurance (SQA) architecture
and identify Software quality management standards and
procedures

Program Name: B. Tech Program Code:CSE


School of Computing Science and Engineering
Course Code :BCSE3032 Course Name: Software Engineering & Testing
Methodology

Syllabus
I-Introduction to Software Engineering

• Software Components, Software Characteristics, Software


Crisis, Software Engineering Processes, Similarity and
Differences from Conventional Engineering Processes,
Software Quality Attributes. Software Development Life
Cycle (SDLC) Models: Water Fall Model, Prototype Model,
Spiral Model, Evolutionary Development Models, Iterative
Enhancement Models
II-Software Requirement
Specifications (SRS) and Design
• Requirement Engineering Process: Elicitation, Analysis,
Documentation, Review and Management of User Needs, Feasibility
Study, Information Modeling,
• Basic Concept of Software Design, Architectural Design, Low Level
Design: Modularization, Design Structure Charts, Pseudo Codes,
Flow Charts, Coupling and Cohesion Measures, Design Strategies:
Function Oriented Design, Object Oriented Design, Top-Down and
Bottom-Up Design Data Flow Diagrams, Entity Relationship
Diagrams.
III-Basic Software Testing Methods and
Selection
• Testing Objectives ,Faults, Errors, and Failures, Basics
of software testing, Testing objectives, Principles of
testing, Requirements, behavior and correctness,
Testing and debugging, Test metrics and
measurements, Verification, Validation and Testing,
Types of testing, Software Quality and Reliability,
Software defect tracking.
IV-White Box & Black Box Testing
Method and Selection
• Structural Testing (White Box Testing), Functional Testing (Black
Box Testing), Integration Testing, Regression Testing, Testing for
Functionality and Testing for Performance, Top-Down and Bottom-
Up, Acceptance Testing ,Alpha and Beta Testing of Products. Static
Testing Strategies: Formal Technical Reviews (Peer Reviews), Walk
Through, Regression testing, Regression test process, Initial Smoke
or Sanity test, Tools for regression testing, Ad hoc Testing: Pair
testing, Exploratory testing, Iterative testing, Defect seeding.
V- Software Project and Test
Management
• Software as an Evolutionary Entity, Need for Maintenance,
Categories of maintenance: Preventive, Corrective and
Perfective Maintenance, Cost of Maintenance, Software Re-
Engineering, Reverse Engineering. Software Configuration
Management Activities, Constructive Cost Models
(COCOMO). Test Planning, Management, Execution and
Reporting, Software Test Automation: Testing in Object
Oriented Systems.
VI-Software Quality Assurance
• Need for Software quality, Quality challenges,
Software quality assurance (SQA), Definition
and objectives, Software quality factors, McCall‟s
quality model, SQA system and architecture ,
Quality management standards , ISO 9001 and
ISO 9000-3 , capability Maturity Models, CMM
and CMMI assessment methodologies
School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

SOFTWARE TESTING
• is the process of verifying and validating that a software is
bug free
• should meets the technical requirements as guided by it’s
design and development
• should meets the user requirements effectively and efficiently
with handling all the exceptional and boundary cases.
Importance of Software Testing
• Testing is important because software bugs could be
expensive or even dangerous.
• Software bugs can potentially cause monetary and human
loss, and history is full of such examples.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

EXAMPLES
• In April 2015, Bloomberg terminal in London crashed due to
software glitch affected more than 300,000 traders on
financial markets. It forced the government to postpone a
3bn pound debt sale.
• Nissan cars recalled over 1 million cars from the market due
to software failure in the airbag sensory detectors. There has
been reported two accident due to this software failure.
• Starbucks was forced to close about 60 percent of stores in
the U.S and Canada due to software failure in its POS system.
At one point, the store served coffee for free as they were
unable to process the transaction.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

• Some of Amazon's third-party retailers saw their product


price is reduced to 1p due to a software glitch. They were left
with heavy losses.
• Vulnerability in Windows 10. This bug enables users to escape
from security sandboxes through a flaw in the win32k system.
• In 2015 fighter plane F-35 fell victim to a software bug,
making it unable to detect targets correctly.
• China Airlines Airbus A300 crashed due to a software bug on
April 26, 1994, killing 264 innocents live

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

• In 1985, Canada's Therac-25 radiation therapy machine


malfunctioned due to software bug and delivered lethal
radiation doses to patients, leaving 3 people dead and
critically injuring 3 others.
• In April of 1999, a software bug caused the failure of a $1.2
billion military satellite launch, the costliest accident in
history
• In May of 1996, a software bug caused the bank accounts of
823 customers of a major U.S. bank to be credited with 920
million US dollars.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

SOFTWARE TESTING OBJECTIVE


• Software testing has different goals and objectives. The
major objectives of Software testing are as follows:
– Finding defects which may get created by the programmer while
developing the software.
– Gaining confidence in and providing information about the level
of quality
– To prevent defects.
– To make sure that the end result meets the business and user
requirements.
– To ensure that it satisfies the BRS that is Business Requirement
Specification and SRS that is System Requirement Specifications.
– To gain the confidence of the customers by providing them a
quality product.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING


There are seven principles in software testing:
• Testing shows presence of defects
• Exhaustive testing is not possible
• Early testing
• Defect clustering
• Pesticide paradox
• Testing is context dependent
• Absence of errors fallacy

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING (CONT.,)

Testing shows presence of defects


– Software testing talks about the presence of
defects and doesn’t talk about the absence of
defects.
– Software testing can ensure that defects are
present but it can not prove that software is
defects free.
– Even multiple testing can never ensure that
software is 100% bug-free. Testing can reduce the
number of defects but not removes all defects.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING (CONT.,)


Exhaustive testing is not possible
– It is the process of testing the functionality of a software in
all possible inputs (valid or invalid) and pre-conditions is
known as exhaustive testing.

– Exhaustive testing is impossible means the software can


never test at every test cases. It can test only some test
cases and assume that software is correct and it will
produce the correct output in every test cases.

– If the software will test every test cases then it will take
more cost, effort, etc. and which is impractical.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING (CONT.,)

Early Testing
– To find the defect in the software, early test
activity shall be started.
– The defect detected in early phases of SDLC will
very less expensive.
• For better performance of software, software
testing will start at initial phase i.e. testing will
perform at the requirement analysis phase.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING (CONT.,)

Defect clustering
– In a project, a small number of the module can
contain most of the defects.
– Pareto Principle to software testing state that 80%
of software defect comes from 20% of modules

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING (CONT.,)

Pesticide paradox
– Repeating the same test cases again and again will
not find new bugs.
– So it is necessary to review the test cases and add
or update test cases to find new bugs.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING (CONT.,)

Testing is context dependent


– Testing approach depends on context of software
developed.
– Different types of software need to perform
different types of testing.
– For example, The testing of the e-commerce site is
different from the testing of the Android
application.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

PRINCIPLES OF SOFTWARE TESTING (CONT.,)

Absence of errors fallacy


– If a built software is 99% bug-free but it does not
follow the user requirement then it is unusable.
• It is not only necessary that software is 99%
bug-free but it also mandatory to fulfil all the
customer requirements.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

REQUIREMENTS BASED TESTING

• Requirements-based testing is a testing


approach in which test cases, conditions and
data are derived from requirements.
• It includes functional tests and also non-
functional attributes such as
– performance,
– reliability or usability.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

STAGES IN REQUIREMENTS BASED TESTING


• Defining Test Completion Criteria - Testing is completed only when all the
functional and non-functional testing is complete.
• Design Test Cases - A Test case has five parameters namely the initial
state or precondition, data setup, the inputs, expected outcomes and
actual outcomes.
• Execute Tests - Execute the test cases against the system under test and
document the results.
• Verify Test Results - Verify if the expected and actual results match each
other.
• Verify Test Coverage - Verify if the tests cover both functional and non-
functional aspects of the requirement.
• Track and Manage Defects - Any defects detected during the testing
process goes through the defect life cycle and are tracked to resolution.
Defect Statistics are maintained which will give us the overall status of the
project.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

REQUIREMENTS TESTING PROCESS


• Testing must be carried out in a timely manner.
• Testing process should add value to the software life cycle,
hence it needs to be effective.
• Testing the system exhaustively is impossible hence the
testing process needs to be efficient as well.
• Testing must provide the overall status of the project, hence
it should be manageable.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

BEHAVIOUR TESTING
• Behavioural Testing is a testing of the external behaviour of
the program, also known as black box testing. It is usually a
functional testing.
• Techniques used in Black box testing
– Equivalence Class
– Boundary Value Analysis
– Domain Tests
– Orthogonal Arrays
– Decision Tables
– State Models
– Exploratory Testing
– All-pairs testing

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

CORRECTNESS
• Correctness from software engineering perspective can be
defined as the adherence to the specifications that determine
how users can interact with the software and how the
software should behave when it is used correctly.
• If the software behaves incorrectly, it might take considerable
amount of time to achieve the task or sometimes it is
impossible to achieve it.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

CORRECTNESS (CONT.,)

• Below are some of the important rules for effective


programming which are consequences of the program
correctness theory.
– Defining the problem completely.
– Develop the algorithm and then the program logic.
– Reuse the proved models as much as possible.
– Prove the correctness of algorithms during the design
phase.
– Developers should pay attention to the clarity and
simplicity of your program.
– Verifying each part of a program as soon as it is developed.

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

Program Name: B.Tech


School of Computing Science and Engineering
Course Code : BCSE3003 Course Name: SE & TM

Program Name: B.Tech

You might also like