Module I:
Introduction To Software Concepts
Topic to be covered
1. Introduction, Definition and Characteristics
of Software,
2. Importance of Software,
3. Software types,
4. Software components,
5. Members involved in software development,
6. Overview of SDLC.
Computer software, is a collection of
computer programs and related data
that provides the instructions for
telling a computer what to do and
how to do it.
software is a set of programs, procedures,
algorithms and its documentation
concerned with the operation of a data
processing system.
What the software consumer wants:
• Reliable
• Powerful
• Fast
• Flexible
• Available
• Cheap to buy
• Easy to learn
• Easy to use
• Solves the
problem
What the software producer wants:
• Cheap to produce
• Well-defined
behavior
• Easy to "sell"
• Easy to maintain
• Reliable
• Easy to use
• Flexible
• Available (quick to
produce)
Why software is important?
• In recent years the capabilities of computer technology have
increased manifold
– however, the software programs that control the computers have
not been able to match the pace of advances in hardware
• Software is infusing our society
– software is used to control critical functions of various machines
such as aircrafts, pacemakers, and other medical devices
• Software errors have led to loss of time, money, human life
– cancer patients received lethal doses of radiation from Therac-25
– Ariane 5 space rocket blown up 37 seconds after launch
– a computer error in AT&Ts communication system led to the
shutdown of all three major airports in the New York region
Software components
• Component-based software engineering
(CBSE) (also known as component-based
development (CBD)) is a branch of software
engineering that emphasizes the separation of
concerns in respect of the wide-ranging functionality
available throughout a given software system.
• It is a reuse-based approach to defining,
implementing and composing loosely coupled
independent components into systems. This practice
aims to bring about an equally wide-ranging degree
of benefits in both the short-term and the long-term
for the software itself and for organizations that
sponsor such software.
Definition of s/w components
• An individual software component is a software
package, a web service, a web resource, or
a module that encapsulates a set of
related functions (or data).
A simple example of several software components - pictured within a
hypothetical holiday-reservation system represented in UML 2.0.
• All system processes are placed into separate
components so that all of the data and functions
inside each component are semantically related .
• With regard to system-wide co-ordination,
components communicate with each other
via interfaces.
• important attribute of components is that they
are substitutable, so that a component can replace
another component
Members involved in software
development
Subject Matter Experts (SME)
• The Subject Matter Expert is the person or persons
from which requirements are captured.
• These are the people who know what the software
needs to do and how the process works.
• The SME role is somewhat different from the other
roles because it is constantly changing as new
clients (internal or external) are brought in to help
design a solution.
• SMEs are rarely from IT -- except when the solution
is being designed to support IT.
Functional Analysts (FA)
• Functional Analysts have the unpleasant task
of producing clear, concise, non-conflicting
requirements from the Subject Matter
Experts.
• who may or may not understand how
technology can be used to transform the
business processes in a positive way.
Solutions Architect (SA)
• The solution architect is responsible for
transforming the requirements created by the
Functional Analysts into a set of architecture and
design documents that can be used by the rest of
the team to actually create the solution.
• The Solutions Architect is typically responsible for
matching technologies to the problem being solved.
Development Lead (DL)
• The Development Lead's role is focused on
providing more detail to the Solution Architect's
architecture.
• This would include detailed program specifications
creation.
• The Development Lead is also the first line of
support for the developers who need help
understanding a concept or working through a
particularly pointed issue.
Developer (Dev)
• Developer (Dev) is The heart and soul of the
process, the developer actually writes the code that
the Development Leads provided specifications for.
Quality Assurance (QA)
• The Quality Assurance role is an often-thank less
position that is designed to find bugs before they
find their way to the end customers.
• Using a variety of techniques ranging from keying in
data and playing with the system to formalized,
automated testing scripts, the Quality Assurance
team is responsible for ensuring the quality of the
solution and it's fit to the requirements gathered by
the Functional Analyst.
Project Manager (PM)
• The Project Manager is responsible for ensuring
consistent reporting, risk mitigation, timeline, and
cost control.
• The project manager role is a problem-solver role.
• They try to resolve problems while they are small so
that they can be handled more quickly and with less
cost.
Development Manager (DM)
• The Development Manager is responsible for
managing multiple priorities of conflicting projects.
• The Development Manager role is also an
escalation for issues from the team, which it is
unable to resolve internally.
Deployment (Deploy)
• The Deployment role is the one that packages up all
of the compiled code and configuration files and
deploys it through the appropriate environments or
on the appropriate systems.
• The Deployment role is focused on getting the
solution used. To that end, the role may include
automated software installation procedures or may
be as simple as copying the files to the appropriate
place and running them.
Training
• The Training role is responsible for documentation
for the system as well as any instructor or
computer-based training
• solutions that are designed to help the users better
understand how the system works and what they
can do with it.
System Development Life cycle
Approach
Waterfall model
Waterfall Model
There are 8 phases in waterfall model
SN Phase Explanation
1 Feasibility Study Applying cost –benefit criteria to the proposed application
2 Information Analysis Determining user information requirement.
3 System Design Designing user interface, files to be used and information
processing function to be performed by system.
4. Program
development
Designing, coding, compiling, testing and documenting
program.
5 Procedures & form
development
Designing and documenting system procedures and forms
for the user of the system.
6 Acceptance testing Final testing of the system and formal approval and
acceptance by management and user.
7 Conversion Changeover from old system to new system.
8 Operation &
maintenance
Working with the system and subsequent modification and
maintenance if any problem detected.
1.Feasibility Study
2. Information
Analysis
3.System Design
4.Program
Development
5.Procedure and
form development
6.Acceptance
Testing
7.Conversion
8.Operation &
Maintenance
• What is testing & Importance of testing
• Testing goals and characteristics
• Testing during planning stage
• Testing during Design stage,
• Testing During Coding Stage
Software testing is an activity to check
whether actual results match the
expected results and to ensure software
system is defect free.
1. To discover defects.
2. To avoid user detecting problems
3. To prove that the software has no faults
4. To learn about the reliability of the software.
5. To avoid being sued by customers
6. To ensure that product works as user expected.
7. To stay in business
8. To detect defects early, which helps in reducing
the cost of defect fixing?
A goal is a projected state of affairs that a person or system
plans or intends to achieve. Software testing has following
goals:
1. Verification and Validation
2. Priority Coverage
3. Balanced
4. Traceable.
5. Deterministic
1. Verification and Validation
• It would not be right to say that
testing is done only to find faults.
• Faults will be found by everybody
using the software.
• Testing is a quality control measure
used to verify that a product works
as desired .
1. Verification and Validation(CONTD.)
• Software testing provides a status report of the
actual product in comparison to product Testing
process has to verify and validate whether the
software fulfills conditions laid down for its
release/use.
• Testing should reveal as many errors as possible in
the software under test, check whether it meets its
requirements and also bring it to an acceptable
level of quality.
Difference between Verification & Validation
Verification Validation
Are you building it right? Are you building the right thing?
Ensure that the software system
meets all the functionality.
Ensure that functionalities meet the
intended behavior.
Verification takes place first and
includes the checking for
documentation, code etc.
Validation occurs after verification
and mainly involves the checking of
the overall product.
Done by developers. Done by Testers.
Have static activities as it includes
the reviews, walkthroughs, and
inspections to verify that software
is correct or not.
Have dynamic activities as it
includes executing the software
against the requirements.
It is an objective process and no
subjective decision should be
needed to verify the Software.
It is a subjective process and
involves subjective decisions on
how well the Software works.
2. Priority Coverage
• Exhaustive testing is impossible.
• We should perform tests efficiently and effectively,
within budgetary and scheduling imitations.
Therefore testing needs to assign effort reasonably
and prioritize thoroughly.
• Generally every feature should be tested at least
with one valid input case.
• We can also test input permutations, invalid input,
and non-functional requirements depending upon
the operational profile of software.
2. Priority Coverage (CONTD..)
• Highly present and frequent use scenarios should
have more coverage than infrequently encountered
and insignificant scenarios.
• A study by on 25 million lines of code also revealed
that 70-80% of problems were due to 10-15% of
modules , 90% of all defects were in modules
containing 13% of the code, 95% of serious defects
were from just 2.5% of the code.
3 Balanced
• Testing process must balance the written
requirements, real-world technical limitations, and
user expectations.
• The testing process and its results must be
repeatable and independent of the tester, i.e.,
consistent and unbiased .
• Apart from the process being employed in
development there will be a lot unwritten or
implicit requirements.
• While testing, the software testing team should
keep all such requirements in mind.
3 Balanced (CONTD..)
• They must also realize that we are part of
development team, not the users of the software.
• The end user's viewpoint is obviously vital to the
success of the software, but it is not all that
matters as all needs cannot be fulfilled because of
technical, budgetary or scheduling limitations.
• Every defect/shortcoming has to be prioritized
with respect to their time and technical constraints.
4 Traceable
• Documenting both the successes and failures
helps in easing the process of testing.
• What was tested, and how it was tested, are
needed as part of an ongoing testing process.
• Such things serve as a means to eliminate
duplicate testing effort
5 Deterministic
• Problem detection should not be random in testing.
• We should know what we are doing, what are we
targeting, what will be the possible outcome.
• Coverage criteria should expose all defects of a
decided nature and priority. Also, afterward surfacing
errors should be categorized as to which section in the
coverage it would have occurred, and can thus present
a definite cost in detecting such defects in future
testing.
• Having clean insight into the process allows us to
better estimate costs and to better direct the overall
development.
1. High Probability of detecting Errors
2. No Redundancy
3. Choose the most appropriate Test
4. Moderate
1. To detect maximum errors, the tester should
understand the software thoroughly and try to
find the possible ways in which the software can
fail
2. In a program to divide two numbers, for example,
the possible way in which the program can fail is
when 2 and zero are given as inputs and two is to
be divided by zero.
3. In this case, a set of tests should be developed that
can demonstrate an error in the division operator.
• Resources and testing time are limited in
software development process.
• so it is not beneficial to develop several tests,
which have the same intended purpose. Every
test should have a distinct purpose
• There can be different tests that have the
same intent but due to certain limitations,
such as time and resource constraint, only few
of them are used.
• In such as case, the tests that have the highest
probability of finding errors should be
considered.
• A test is considered good if it is neither too
simple nor too complex.
• Many tests can be combined to form one test
case. However, this can increase the
complexity and leave many errors undetected.
• Hence, all tests should be performed
separately.
1. Goals for the Planning Phase .
2. Developing the Solution Design and Architecture .
3. Validating the Technology .
4. Creating the Functional Specification for the Solution.
5. Developing the Project Plans .
6. Creating the Project Schedules.
7. Setting Up the Development and Test Environments.
8. Closing the Planning Phase .
–Evaluates correct implementation of the design
intended, and requires intimate knowledge of the
design detail.
–Performed by designers, or dedicated group of
DAT testers. Typically tightly coupled to
designers. Verifies that implementation is correct
as intended and meets requirements. In
addition, allows designers to exercise design in
extreme ways. White box testing.
– Demonstrates that specified requirements have been
met.
– Typically performed by independent group, sometimes
called QA, especially in SW word. Verifies design to
requirements. Black box testing.
– Demonstrates that the system conforms to user needs
and intended uses.
– Performed by independent group, or more likely, the
designers and system engineers.
- The areas to
check include modular structure, module interfaces, data
structures, functions, algorithms and I/O handling.
-
Perform the Testing process in an organized and systematic
manner with test runs dated, marked and saved. A plan or
schedule can be used as a checklist to help the programmer
to organize testing efforts. If errors are found and changes
made to the program, all tests involving the erroneous
segment (including those which resulted in success
previously) must be rerun and recorded.
The programmer should be
familiar with various compilers and interpreters
available on the system for the implementation
language being used because they differ in their
error analysis and code generation capabilities.
Testing should
exercise and stress the program structure, the data
structures, the internal functions and the externally
visible functions or functionality. Both valid and
invalid data should be included in the test set.
• Pieces of code, individual modules and small
collections of modules should be exercised separately
before they are integrated into the total program, one
by one.
• Errors are easier to isolate when the number of
potential interactions should be kept small.
• A tester should perform array bound checks, check
loop control variables, determine whether key data
values are within permissible ranges, trace program
execution, and count the number of times a group of
statements is executed.
Testing During coding phase
If errors are still found every time the
program is executed, testing should
continue. Because errors tend to cluster,
modules appearing particularly error-prone
require special scrutiny.
• The metrics used to measure testing thoroughness
include statement testing (whether each statement in
the program has been executed at least once),
• Branch testing (whether each exit from each branch has
been executed at least once) and
• Path testing (whether all logical paths, which may
involve repeated execution of various segments, have
been executed at least once).
• Statement testing is the coverage metric most
frequently used as it is relatively simple to implement.

Introduction To Software Concepts Unit 1 & 2

  • 1.
    Module I: Introduction ToSoftware Concepts
  • 2.
    Topic to becovered 1. Introduction, Definition and Characteristics of Software, 2. Importance of Software, 3. Software types, 4. Software components, 5. Members involved in software development, 6. Overview of SDLC.
  • 3.
    Computer software, isa collection of computer programs and related data that provides the instructions for telling a computer what to do and how to do it.
  • 4.
    software is aset of programs, procedures, algorithms and its documentation concerned with the operation of a data processing system.
  • 7.
    What the softwareconsumer wants: • Reliable • Powerful • Fast • Flexible • Available • Cheap to buy • Easy to learn • Easy to use • Solves the problem
  • 8.
    What the softwareproducer wants: • Cheap to produce • Well-defined behavior • Easy to "sell" • Easy to maintain • Reliable • Easy to use • Flexible • Available (quick to produce)
  • 15.
    Why software isimportant? • In recent years the capabilities of computer technology have increased manifold – however, the software programs that control the computers have not been able to match the pace of advances in hardware • Software is infusing our society – software is used to control critical functions of various machines such as aircrafts, pacemakers, and other medical devices • Software errors have led to loss of time, money, human life – cancer patients received lethal doses of radiation from Therac-25 – Ariane 5 space rocket blown up 37 seconds after launch – a computer error in AT&Ts communication system led to the shutdown of all three major airports in the New York region
  • 16.
    Software components • Component-basedsoftware engineering (CBSE) (also known as component-based development (CBD)) is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system. • It is a reuse-based approach to defining, implementing and composing loosely coupled independent components into systems. This practice aims to bring about an equally wide-ranging degree of benefits in both the short-term and the long-term for the software itself and for organizations that sponsor such software.
  • 17.
    Definition of s/wcomponents • An individual software component is a software package, a web service, a web resource, or a module that encapsulates a set of related functions (or data).
  • 18.
    A simple exampleof several software components - pictured within a hypothetical holiday-reservation system represented in UML 2.0.
  • 19.
    • All systemprocesses are placed into separate components so that all of the data and functions inside each component are semantically related . • With regard to system-wide co-ordination, components communicate with each other via interfaces. • important attribute of components is that they are substitutable, so that a component can replace another component
  • 20.
    Members involved insoftware development
  • 21.
    Subject Matter Experts(SME) • The Subject Matter Expert is the person or persons from which requirements are captured. • These are the people who know what the software needs to do and how the process works. • The SME role is somewhat different from the other roles because it is constantly changing as new clients (internal or external) are brought in to help design a solution. • SMEs are rarely from IT -- except when the solution is being designed to support IT.
  • 22.
    Functional Analysts (FA) •Functional Analysts have the unpleasant task of producing clear, concise, non-conflicting requirements from the Subject Matter Experts. • who may or may not understand how technology can be used to transform the business processes in a positive way.
  • 23.
    Solutions Architect (SA) •The solution architect is responsible for transforming the requirements created by the Functional Analysts into a set of architecture and design documents that can be used by the rest of the team to actually create the solution. • The Solutions Architect is typically responsible for matching technologies to the problem being solved.
  • 24.
    Development Lead (DL) •The Development Lead's role is focused on providing more detail to the Solution Architect's architecture. • This would include detailed program specifications creation. • The Development Lead is also the first line of support for the developers who need help understanding a concept or working through a particularly pointed issue.
  • 25.
    Developer (Dev) • Developer(Dev) is The heart and soul of the process, the developer actually writes the code that the Development Leads provided specifications for.
  • 26.
    Quality Assurance (QA) •The Quality Assurance role is an often-thank less position that is designed to find bugs before they find their way to the end customers. • Using a variety of techniques ranging from keying in data and playing with the system to formalized, automated testing scripts, the Quality Assurance team is responsible for ensuring the quality of the solution and it's fit to the requirements gathered by the Functional Analyst.
  • 27.
    Project Manager (PM) •The Project Manager is responsible for ensuring consistent reporting, risk mitigation, timeline, and cost control. • The project manager role is a problem-solver role. • They try to resolve problems while they are small so that they can be handled more quickly and with less cost.
  • 28.
    Development Manager (DM) •The Development Manager is responsible for managing multiple priorities of conflicting projects. • The Development Manager role is also an escalation for issues from the team, which it is unable to resolve internally.
  • 29.
    Deployment (Deploy) • TheDeployment role is the one that packages up all of the compiled code and configuration files and deploys it through the appropriate environments or on the appropriate systems. • The Deployment role is focused on getting the solution used. To that end, the role may include automated software installation procedures or may be as simple as copying the files to the appropriate place and running them.
  • 30.
    Training • The Trainingrole is responsible for documentation for the system as well as any instructor or computer-based training • solutions that are designed to help the users better understand how the system works and what they can do with it.
  • 31.
    System Development Lifecycle Approach Waterfall model
  • 32.
    Waterfall Model There are8 phases in waterfall model SN Phase Explanation 1 Feasibility Study Applying cost –benefit criteria to the proposed application 2 Information Analysis Determining user information requirement. 3 System Design Designing user interface, files to be used and information processing function to be performed by system. 4. Program development Designing, coding, compiling, testing and documenting program. 5 Procedures & form development Designing and documenting system procedures and forms for the user of the system. 6 Acceptance testing Final testing of the system and formal approval and acceptance by management and user. 7 Conversion Changeover from old system to new system. 8 Operation & maintenance Working with the system and subsequent modification and maintenance if any problem detected.
  • 33.
    1.Feasibility Study 2. Information Analysis 3.SystemDesign 4.Program Development 5.Procedure and form development 6.Acceptance Testing 7.Conversion 8.Operation & Maintenance
  • 35.
    • What istesting & Importance of testing • Testing goals and characteristics • Testing during planning stage • Testing during Design stage, • Testing During Coding Stage
  • 37.
    Software testing isan activity to check whether actual results match the expected results and to ensure software system is defect free.
  • 38.
    1. To discoverdefects. 2. To avoid user detecting problems 3. To prove that the software has no faults 4. To learn about the reliability of the software. 5. To avoid being sued by customers 6. To ensure that product works as user expected. 7. To stay in business 8. To detect defects early, which helps in reducing the cost of defect fixing?
  • 39.
    A goal isa projected state of affairs that a person or system plans or intends to achieve. Software testing has following goals: 1. Verification and Validation 2. Priority Coverage 3. Balanced 4. Traceable. 5. Deterministic
  • 40.
    1. Verification andValidation • It would not be right to say that testing is done only to find faults. • Faults will be found by everybody using the software. • Testing is a quality control measure used to verify that a product works as desired .
  • 41.
    1. Verification andValidation(CONTD.) • Software testing provides a status report of the actual product in comparison to product Testing process has to verify and validate whether the software fulfills conditions laid down for its release/use. • Testing should reveal as many errors as possible in the software under test, check whether it meets its requirements and also bring it to an acceptable level of quality.
  • 42.
    Difference between Verification& Validation Verification Validation Are you building it right? Are you building the right thing? Ensure that the software system meets all the functionality. Ensure that functionalities meet the intended behavior. Verification takes place first and includes the checking for documentation, code etc. Validation occurs after verification and mainly involves the checking of the overall product. Done by developers. Done by Testers. Have static activities as it includes the reviews, walkthroughs, and inspections to verify that software is correct or not. Have dynamic activities as it includes executing the software against the requirements. It is an objective process and no subjective decision should be needed to verify the Software. It is a subjective process and involves subjective decisions on how well the Software works.
  • 43.
    2. Priority Coverage •Exhaustive testing is impossible. • We should perform tests efficiently and effectively, within budgetary and scheduling imitations. Therefore testing needs to assign effort reasonably and prioritize thoroughly. • Generally every feature should be tested at least with one valid input case. • We can also test input permutations, invalid input, and non-functional requirements depending upon the operational profile of software.
  • 44.
    2. Priority Coverage(CONTD..) • Highly present and frequent use scenarios should have more coverage than infrequently encountered and insignificant scenarios. • A study by on 25 million lines of code also revealed that 70-80% of problems were due to 10-15% of modules , 90% of all defects were in modules containing 13% of the code, 95% of serious defects were from just 2.5% of the code.
  • 45.
    3 Balanced • Testingprocess must balance the written requirements, real-world technical limitations, and user expectations. • The testing process and its results must be repeatable and independent of the tester, i.e., consistent and unbiased . • Apart from the process being employed in development there will be a lot unwritten or implicit requirements. • While testing, the software testing team should keep all such requirements in mind.
  • 46.
    3 Balanced (CONTD..) •They must also realize that we are part of development team, not the users of the software. • The end user's viewpoint is obviously vital to the success of the software, but it is not all that matters as all needs cannot be fulfilled because of technical, budgetary or scheduling limitations. • Every defect/shortcoming has to be prioritized with respect to their time and technical constraints.
  • 47.
    4 Traceable • Documentingboth the successes and failures helps in easing the process of testing. • What was tested, and how it was tested, are needed as part of an ongoing testing process. • Such things serve as a means to eliminate duplicate testing effort
  • 48.
    5 Deterministic • Problemdetection should not be random in testing. • We should know what we are doing, what are we targeting, what will be the possible outcome. • Coverage criteria should expose all defects of a decided nature and priority. Also, afterward surfacing errors should be categorized as to which section in the coverage it would have occurred, and can thus present a definite cost in detecting such defects in future testing. • Having clean insight into the process allows us to better estimate costs and to better direct the overall development.
  • 49.
    1. High Probabilityof detecting Errors 2. No Redundancy 3. Choose the most appropriate Test 4. Moderate
  • 50.
    1. To detectmaximum errors, the tester should understand the software thoroughly and try to find the possible ways in which the software can fail 2. In a program to divide two numbers, for example, the possible way in which the program can fail is when 2 and zero are given as inputs and two is to be divided by zero. 3. In this case, a set of tests should be developed that can demonstrate an error in the division operator.
  • 51.
    • Resources andtesting time are limited in software development process. • so it is not beneficial to develop several tests, which have the same intended purpose. Every test should have a distinct purpose
  • 52.
    • There canbe different tests that have the same intent but due to certain limitations, such as time and resource constraint, only few of them are used. • In such as case, the tests that have the highest probability of finding errors should be considered.
  • 53.
    • A testis considered good if it is neither too simple nor too complex. • Many tests can be combined to form one test case. However, this can increase the complexity and leave many errors undetected. • Hence, all tests should be performed separately.
  • 54.
    1. Goals forthe Planning Phase . 2. Developing the Solution Design and Architecture . 3. Validating the Technology . 4. Creating the Functional Specification for the Solution. 5. Developing the Project Plans . 6. Creating the Project Schedules. 7. Setting Up the Development and Test Environments. 8. Closing the Planning Phase .
  • 55.
    –Evaluates correct implementationof the design intended, and requires intimate knowledge of the design detail. –Performed by designers, or dedicated group of DAT testers. Typically tightly coupled to designers. Verifies that implementation is correct as intended and meets requirements. In addition, allows designers to exercise design in extreme ways. White box testing.
  • 56.
    – Demonstrates thatspecified requirements have been met. – Typically performed by independent group, sometimes called QA, especially in SW word. Verifies design to requirements. Black box testing. – Demonstrates that the system conforms to user needs and intended uses. – Performed by independent group, or more likely, the designers and system engineers.
  • 57.
    - The areasto check include modular structure, module interfaces, data structures, functions, algorithms and I/O handling. - Perform the Testing process in an organized and systematic manner with test runs dated, marked and saved. A plan or schedule can be used as a checklist to help the programmer to organize testing efforts. If errors are found and changes made to the program, all tests involving the erroneous segment (including those which resulted in success previously) must be rerun and recorded.
  • 58.
    The programmer shouldbe familiar with various compilers and interpreters available on the system for the implementation language being used because they differ in their error analysis and code generation capabilities. Testing should exercise and stress the program structure, the data structures, the internal functions and the externally visible functions or functionality. Both valid and invalid data should be included in the test set.
  • 59.
    • Pieces ofcode, individual modules and small collections of modules should be exercised separately before they are integrated into the total program, one by one. • Errors are easier to isolate when the number of potential interactions should be kept small. • A tester should perform array bound checks, check loop control variables, determine whether key data values are within permissible ranges, trace program execution, and count the number of times a group of statements is executed.
  • 60.
    Testing During codingphase If errors are still found every time the program is executed, testing should continue. Because errors tend to cluster, modules appearing particularly error-prone require special scrutiny.
  • 61.
    • The metricsused to measure testing thoroughness include statement testing (whether each statement in the program has been executed at least once), • Branch testing (whether each exit from each branch has been executed at least once) and • Path testing (whether all logical paths, which may involve repeated execution of various segments, have been executed at least once). • Statement testing is the coverage metric most frequently used as it is relatively simple to implement.