This ppt covers the following
A strategic approach to testing
Test strategies for conventional software
Test strategies for object-oriented software
Validation testing
System testing
The art of debugging
This lecture provide a review of requirement engineering process. The slides have been prepared after reading Ian Summerville and Roger Pressman work. This lecture is helpful to understand user, and user requirements.
White-box testing is a software testing technique that uses knowledge of the internal workings of a system to design test cases. It involves testing internal structures or workings of a program, such as code coverage. The document discusses different white-box testing techniques like statement coverage, decision coverage, condition coverage, and multiple condition coverage. It aims to execute every statement, decision path, condition, and combination of conditions in the code. White-box testing is more effective at finding defects earlier in the SDLC but also more expensive and difficult to implement than black-box testing.
The document discusses component-level design which occurs after architectural design. It aims to create a design model from analysis and architectural models. Component-level design can be represented using graphical, tabular, or text-based notations. The key aspects covered include:
- Defining a software component as a modular building block with interfaces and collaboration
- Designing class-based components following principles like open-closed and dependency inversion
- Guidelines for high cohesion and low coupling in components
- Designing conventional components using notations like sequence, if-then-else, and tabular representations
The document discusses requirements analysis for software engineering projects. It describes requirements analysis as bridging system requirements and software design by providing models of system information, functions, and behavior. The objectives of analysis are identified as identifying customer needs, evaluating feasibility, allocating functions, and establishing schedules and constraints. Common analysis techniques discussed include interviews, use cases, prototyping, and specification documentation.
This is the most important topic of OOAD named as Object Oriented Testing. It is used to prepare a good software which has no bug in it and it performs very fast. <a href="https://harisjamil.pro">Haris Jamil</a>
The document discusses software testing concepts like verification, validation, whitebox testing, and blackbox testing. Verification ensures the product satisfies specifications, while validation ensures it meets customer requirements. Whitebox testing uses internal knowledge to test code, while blackbox testing treats the system as a black box without internal knowledge. The document also covers different types of testing like unit, integration, and functional testing.
The data design action translates data objects into data structures at the software component level.
Data Design is the first and most important design activity. Here the main issue is to select the appropriate data structure i.e. the data design focuses on the definition of data structures.
Data design is a process of gradual refinement, from the coarse "What data does your application require?" to the precise data structures and processes that provide it. With a good data design, your application's data access is fast, easily maintained, and can gracefully accept future data enhancements.
The document discusses different software engineering process models including:
1. The waterfall model which is a linear sequential model where each phase must be completed before moving to the next.
2. Prototyping models which allow requirements to be refined through building prototypes.
3. RAD (Rapid Application Development) which emphasizes short development cycles through reuse and code generation.
4. Incremental models which deliver functionality in increments with early increments focusing on high priority requirements.
5. The spiral model which has multiple iterations of planning, risk analysis, engineering and evaluation phases.
This lecture provide a review of requirement engineering process. The slides have been prepared after reading Ian Summerville and Roger Pressman work. This lecture is helpful to understand user, and user requirements.
White-box testing is a software testing technique that uses knowledge of the internal workings of a system to design test cases. It involves testing internal structures or workings of a program, such as code coverage. The document discusses different white-box testing techniques like statement coverage, decision coverage, condition coverage, and multiple condition coverage. It aims to execute every statement, decision path, condition, and combination of conditions in the code. White-box testing is more effective at finding defects earlier in the SDLC but also more expensive and difficult to implement than black-box testing.
The document discusses component-level design which occurs after architectural design. It aims to create a design model from analysis and architectural models. Component-level design can be represented using graphical, tabular, or text-based notations. The key aspects covered include:
- Defining a software component as a modular building block with interfaces and collaboration
- Designing class-based components following principles like open-closed and dependency inversion
- Guidelines for high cohesion and low coupling in components
- Designing conventional components using notations like sequence, if-then-else, and tabular representations
The document discusses requirements analysis for software engineering projects. It describes requirements analysis as bridging system requirements and software design by providing models of system information, functions, and behavior. The objectives of analysis are identified as identifying customer needs, evaluating feasibility, allocating functions, and establishing schedules and constraints. Common analysis techniques discussed include interviews, use cases, prototyping, and specification documentation.
This is the most important topic of OOAD named as Object Oriented Testing. It is used to prepare a good software which has no bug in it and it performs very fast. <a href="https://harisjamil.pro">Haris Jamil</a>
The document discusses software testing concepts like verification, validation, whitebox testing, and blackbox testing. Verification ensures the product satisfies specifications, while validation ensures it meets customer requirements. Whitebox testing uses internal knowledge to test code, while blackbox testing treats the system as a black box without internal knowledge. The document also covers different types of testing like unit, integration, and functional testing.
The data design action translates data objects into data structures at the software component level.
Data Design is the first and most important design activity. Here the main issue is to select the appropriate data structure i.e. the data design focuses on the definition of data structures.
Data design is a process of gradual refinement, from the coarse "What data does your application require?" to the precise data structures and processes that provide it. With a good data design, your application's data access is fast, easily maintained, and can gracefully accept future data enhancements.
The document discusses different software engineering process models including:
1. The waterfall model which is a linear sequential model where each phase must be completed before moving to the next.
2. Prototyping models which allow requirements to be refined through building prototypes.
3. RAD (Rapid Application Development) which emphasizes short development cycles through reuse and code generation.
4. Incremental models which deliver functionality in increments with early increments focusing on high priority requirements.
5. The spiral model which has multiple iterations of planning, risk analysis, engineering and evaluation phases.
The Unified Process (UP) is a popular iterative software development framework that uses use cases, architecture-centric design, and the Unified Modeling Language. It originated from Jacobson's Objectory process in the 1980s and was further developed by Rational Software into the Rational Unified Process. The UP consists of four phases - inception, elaboration, construction, and transition - and emphasizes iterative development, architectural drivers, and risk-managed delivery.
Architecture design in software engineeringPreeti Mishra
The document discusses software architectural design. It defines architecture as the structure of a system's components, their relationships, and properties. An architectural design model is transferable across different systems. The architecture enables analysis of design requirements and consideration of alternatives early in development. It represents the system in an intellectually graspable way. Common architectural styles structure systems and their components in different ways, such as data-centered, data flow, and call-and-return styles.
This ppt covers the following topics
Software quality
A framework for product metrics
A product metrics taxonomy
Metrics for the analysis model
Metrics for the design model
Metrics for maintenance
Formal Specification in Software Engineering SE9koolkampus
This document discusses formal specification techniques for software. It describes algebraic techniques for specifying interfaces as abstract data types and model-based techniques for specifying system behavior. Algebraic specifications define operations and their relationships, while model-based specifications represent the system state using mathematical constructs like sets and sequences. Formal specification finds errors earlier and reduces rework, though it requires more upfront effort. The document also provides an example of formally specifying an air traffic control system and insulin pump.
Black box testing is a software testing technique where the internal structure and implementation of the system is not known. It focuses on validating the functionality of the system based on requirements and specifications. Some key techniques of black box testing include equivalence partitioning, boundary value analysis, and error guessing. Equivalence partitioning divides test cases into equivalence classes based on expected behavior. Boundary value analysis tests values at the boundaries of equivalence classes. Error guessing involves creating test cases based on intuition about potential errors. Black box testing is applied at various levels including unit, integration, system, and non-functional testing.
Agile development focuses on effective communication, customer collaboration, and incremental delivery of working software. The key principles of agile development according to the Agile Alliance include satisfying customers, welcoming changing requirements, frequent delivery, collaboration between business and development teams, and self-organizing teams. Extreme Programming (XP) is an agile process model that emphasizes planning with user stories, simple design, pair programming, unit testing, and frequent integration and testing.
Software testing is the process of evaluation a software item to detect differences between given input and expected output. Also to assess the feature of A software item. Testing assesses the quality of the product. Software testing is a process that should be done during the development process. In other words software testing is a verification and validation process.
Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to the process of executing a program or application with the intent of finding software bugs (errors or other defects).
Software testing can be stated as the process of validating and verifying that a computer program/application/product:
• meets the requirements that guided its design and development,
• works as expected,
• can be implemented with the same characteristics,
• and satisfies the needs of stakeholders.
Software Development Process Cycle:-
PLAN (P): Device a plan. Define your objective and determine the strategy and supporting methods required to achieve that objective.
DO (D): Execute the plan. Create the conditions and perform the necessary training to execute the plan.
CHECK (C): Check the results. Check to determine whether work is progressing according to the plan and whether the results are obtained.
ACTION (A): Take the necessary and appropriate action if checkup reveals that the work is not being performed according to plan or not as anticipated.
The document discusses requirements analysis and specification in software engineering. It defines what requirements are and explains the typical activities involved - requirements gathering, analysis, and specification. The importance of documenting requirements in a Software Requirements Specification (SRS) document is explained. Key sections of an SRS like stakeholders, types of requirements (functional and non-functional), and examples are covered. Special attention is given to requirements for critical systems and importance of non-functional requirements.
The document discusses component-based software engineering and defines a software component. A component is a modular building block defined by interfaces that can be independently deployed. Components are standardized, independent, composable, deployable, and documented. They communicate through interfaces and are designed to achieve reusability. The document outlines characteristics of components and discusses different views of components, including object-oriented, conventional, and process-related views. It also covers topics like component-level design principles, packaging, cohesion, and coupling.
Unit testing involves individually testing small units or modules of code, such as functions, classes, or programs, to determine if they are fit for use. The goal is to isolate each part of a program and verify that it works as intended, helps reduce defects early in the development process, and improves code design. Unit testing is typically done by developers to test their code meets its design before integration testing.
Peephole optimization techniques in compiler designAnul Chaudhary
This document discusses various compiler optimization techniques, focusing on peephole optimization. It defines optimization as transforming code to run faster or use less memory without changing functionality. Optimization can be machine-independent, transforming code regardless of hardware, or machine-dependent, tailored to a specific architecture. Peephole optimization examines small blocks of code and replaces them with faster or smaller equivalents using techniques like constant folding, strength reduction, null sequence elimination, and algebraic laws. Common replacement rules aim to improve performance, reduce memory usage, and decrease code size.
THIS DESCRIBES VARIOUS ELEMENTS OF TRANSPORT PROTOCOL IN TRANSPORT LAYER OF COMPUTER NETWORKS
THERE ARE SIX ELEMENTS OF TRANSPORT PROTOCOL NAMELY
1. ADDRESSING
2. CONNECTION ESTABLISHMENT
3.CONNECTION REFUSE
4.FLOW CONTROL AND BUFFERS
5.MULTIPLEXING
6.CRASH RECOVERY
The document discusses context models and their use in system modeling. Context models illustrate the operational context of a system by showing what lies outside its boundaries, including other systems in the environment. They help define a system's boundaries and show how IT applications fit into the context of people and organizations. Two examples are provided: (1) a Mental Health Care Patient Management System (MHC-PMS) and its connections to other clinical systems; (2) an Automated Teller Machine (ATM) and its links to banking systems. Context models on their own do not show relationships between external systems, so additional models are needed.
These slides gives you information about path testing and data flow testing in software testing. These slides will be helpful for Engineering, CSE students.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
The document discusses software quality assurance (SQA) and defines key terms related to quality. It describes SQA as encompassing quality management, software engineering processes, formal reviews, testing strategies, documentation control, and compliance with standards. Specific SQA activities mentioned include developing an SQA plan, participating in process development, auditing work products, and ensuring deviations are addressed. The document also discusses software reviews, inspections, reliability, and the reliability specification process.
A presentation on software testing importance , types, and levels,...
This presentation contains videos, it may be unplayable on slideshare and need to download
Testing is the process of identifying bugs and ensuring software meets requirements. It involves executing programs under different conditions to check specification, functionality, and performance. The objectives of testing are to uncover errors, demonstrate requirements are met, and validate quality with minimal cost. Testing follows a life cycle including planning, design, execution, and reporting. Different methodologies like black box and white box testing are used at various levels from unit to system. The overall goal is to perform effective testing to deliver high quality software.
This document discusses various design notations that can be used at different levels of software design, including:
- Data flow diagrams, structure charts, HIPO diagrams, pseudo code, and structured flowcharts, which can be used for external, architectural, and detailed design specifications.
- Data flow diagrams use nodes and arcs to represent processing activities and data flow. Structure charts show hierarchical structure and interconnections. HIPO diagrams use a tree structure.
- Other notations discussed include procedure templates for interface specifications, pseudo code for algorithms and logic, and decision tables for complex decision logic.
1. The document discusses different types of software testing including manual testing, automation testing, black-box testing, white-box testing, grey-box testing, and different levels of testing like unit testing, integration testing, system testing, regression testing, and acceptance testing.
2. It provides details on when each type of testing is used and their objectives such as finding defects, ensuring quality, and meeting requirements.
3. The key types of testing covered include functional testing, which has sub-types like unit, integration, system, regression, and acceptance testing, and non-functional testing.
The document discusses various software testing strategies, including unit testing, integration testing, validation testing, and system testing. It provides details on test strategies for both conventional and object-oriented software. For conventional software, it describes unit testing targets, integration techniques like top-down and bottom-up integration, and regression testing. For object-oriented software, it discusses class testing and thread-based or use-based testing strategies.
This document discusses various software testing strategies, including unit testing, integration testing, validation testing, and system testing. It provides details on test strategies for conventional software, including focusing unit testing on individual components/functions, using incremental integration testing to combine components, and performing regression and smoke testing. Verification aims to ensure algorithms are coded correctly while validation ensures requirements are met.
The Unified Process (UP) is a popular iterative software development framework that uses use cases, architecture-centric design, and the Unified Modeling Language. It originated from Jacobson's Objectory process in the 1980s and was further developed by Rational Software into the Rational Unified Process. The UP consists of four phases - inception, elaboration, construction, and transition - and emphasizes iterative development, architectural drivers, and risk-managed delivery.
Architecture design in software engineeringPreeti Mishra
The document discusses software architectural design. It defines architecture as the structure of a system's components, their relationships, and properties. An architectural design model is transferable across different systems. The architecture enables analysis of design requirements and consideration of alternatives early in development. It represents the system in an intellectually graspable way. Common architectural styles structure systems and their components in different ways, such as data-centered, data flow, and call-and-return styles.
This ppt covers the following topics
Software quality
A framework for product metrics
A product metrics taxonomy
Metrics for the analysis model
Metrics for the design model
Metrics for maintenance
Formal Specification in Software Engineering SE9koolkampus
This document discusses formal specification techniques for software. It describes algebraic techniques for specifying interfaces as abstract data types and model-based techniques for specifying system behavior. Algebraic specifications define operations and their relationships, while model-based specifications represent the system state using mathematical constructs like sets and sequences. Formal specification finds errors earlier and reduces rework, though it requires more upfront effort. The document also provides an example of formally specifying an air traffic control system and insulin pump.
Black box testing is a software testing technique where the internal structure and implementation of the system is not known. It focuses on validating the functionality of the system based on requirements and specifications. Some key techniques of black box testing include equivalence partitioning, boundary value analysis, and error guessing. Equivalence partitioning divides test cases into equivalence classes based on expected behavior. Boundary value analysis tests values at the boundaries of equivalence classes. Error guessing involves creating test cases based on intuition about potential errors. Black box testing is applied at various levels including unit, integration, system, and non-functional testing.
Agile development focuses on effective communication, customer collaboration, and incremental delivery of working software. The key principles of agile development according to the Agile Alliance include satisfying customers, welcoming changing requirements, frequent delivery, collaboration between business and development teams, and self-organizing teams. Extreme Programming (XP) is an agile process model that emphasizes planning with user stories, simple design, pair programming, unit testing, and frequent integration and testing.
Software testing is the process of evaluation a software item to detect differences between given input and expected output. Also to assess the feature of A software item. Testing assesses the quality of the product. Software testing is a process that should be done during the development process. In other words software testing is a verification and validation process.
Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include, but are not limited to the process of executing a program or application with the intent of finding software bugs (errors or other defects).
Software testing can be stated as the process of validating and verifying that a computer program/application/product:
• meets the requirements that guided its design and development,
• works as expected,
• can be implemented with the same characteristics,
• and satisfies the needs of stakeholders.
Software Development Process Cycle:-
PLAN (P): Device a plan. Define your objective and determine the strategy and supporting methods required to achieve that objective.
DO (D): Execute the plan. Create the conditions and perform the necessary training to execute the plan.
CHECK (C): Check the results. Check to determine whether work is progressing according to the plan and whether the results are obtained.
ACTION (A): Take the necessary and appropriate action if checkup reveals that the work is not being performed according to plan or not as anticipated.
The document discusses requirements analysis and specification in software engineering. It defines what requirements are and explains the typical activities involved - requirements gathering, analysis, and specification. The importance of documenting requirements in a Software Requirements Specification (SRS) document is explained. Key sections of an SRS like stakeholders, types of requirements (functional and non-functional), and examples are covered. Special attention is given to requirements for critical systems and importance of non-functional requirements.
The document discusses component-based software engineering and defines a software component. A component is a modular building block defined by interfaces that can be independently deployed. Components are standardized, independent, composable, deployable, and documented. They communicate through interfaces and are designed to achieve reusability. The document outlines characteristics of components and discusses different views of components, including object-oriented, conventional, and process-related views. It also covers topics like component-level design principles, packaging, cohesion, and coupling.
Unit testing involves individually testing small units or modules of code, such as functions, classes, or programs, to determine if they are fit for use. The goal is to isolate each part of a program and verify that it works as intended, helps reduce defects early in the development process, and improves code design. Unit testing is typically done by developers to test their code meets its design before integration testing.
Peephole optimization techniques in compiler designAnul Chaudhary
This document discusses various compiler optimization techniques, focusing on peephole optimization. It defines optimization as transforming code to run faster or use less memory without changing functionality. Optimization can be machine-independent, transforming code regardless of hardware, or machine-dependent, tailored to a specific architecture. Peephole optimization examines small blocks of code and replaces them with faster or smaller equivalents using techniques like constant folding, strength reduction, null sequence elimination, and algebraic laws. Common replacement rules aim to improve performance, reduce memory usage, and decrease code size.
THIS DESCRIBES VARIOUS ELEMENTS OF TRANSPORT PROTOCOL IN TRANSPORT LAYER OF COMPUTER NETWORKS
THERE ARE SIX ELEMENTS OF TRANSPORT PROTOCOL NAMELY
1. ADDRESSING
2. CONNECTION ESTABLISHMENT
3.CONNECTION REFUSE
4.FLOW CONTROL AND BUFFERS
5.MULTIPLEXING
6.CRASH RECOVERY
The document discusses context models and their use in system modeling. Context models illustrate the operational context of a system by showing what lies outside its boundaries, including other systems in the environment. They help define a system's boundaries and show how IT applications fit into the context of people and organizations. Two examples are provided: (1) a Mental Health Care Patient Management System (MHC-PMS) and its connections to other clinical systems; (2) an Automated Teller Machine (ATM) and its links to banking systems. Context models on their own do not show relationships between external systems, so additional models are needed.
These slides gives you information about path testing and data flow testing in software testing. These slides will be helpful for Engineering, CSE students.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
The document discusses software quality assurance (SQA) and defines key terms related to quality. It describes SQA as encompassing quality management, software engineering processes, formal reviews, testing strategies, documentation control, and compliance with standards. Specific SQA activities mentioned include developing an SQA plan, participating in process development, auditing work products, and ensuring deviations are addressed. The document also discusses software reviews, inspections, reliability, and the reliability specification process.
A presentation on software testing importance , types, and levels,...
This presentation contains videos, it may be unplayable on slideshare and need to download
Testing is the process of identifying bugs and ensuring software meets requirements. It involves executing programs under different conditions to check specification, functionality, and performance. The objectives of testing are to uncover errors, demonstrate requirements are met, and validate quality with minimal cost. Testing follows a life cycle including planning, design, execution, and reporting. Different methodologies like black box and white box testing are used at various levels from unit to system. The overall goal is to perform effective testing to deliver high quality software.
This document discusses various design notations that can be used at different levels of software design, including:
- Data flow diagrams, structure charts, HIPO diagrams, pseudo code, and structured flowcharts, which can be used for external, architectural, and detailed design specifications.
- Data flow diagrams use nodes and arcs to represent processing activities and data flow. Structure charts show hierarchical structure and interconnections. HIPO diagrams use a tree structure.
- Other notations discussed include procedure templates for interface specifications, pseudo code for algorithms and logic, and decision tables for complex decision logic.
1. The document discusses different types of software testing including manual testing, automation testing, black-box testing, white-box testing, grey-box testing, and different levels of testing like unit testing, integration testing, system testing, regression testing, and acceptance testing.
2. It provides details on when each type of testing is used and their objectives such as finding defects, ensuring quality, and meeting requirements.
3. The key types of testing covered include functional testing, which has sub-types like unit, integration, system, regression, and acceptance testing, and non-functional testing.
The document discusses various software testing strategies, including unit testing, integration testing, validation testing, and system testing. It provides details on test strategies for both conventional and object-oriented software. For conventional software, it describes unit testing targets, integration techniques like top-down and bottom-up integration, and regression testing. For object-oriented software, it discusses class testing and thread-based or use-based testing strategies.
This document discusses various software testing strategies, including unit testing, integration testing, validation testing, and system testing. It provides details on test strategies for conventional software, including focusing unit testing on individual components/functions, using incremental integration testing to combine components, and performing regression and smoke testing. Verification aims to ensure algorithms are coded correctly while validation ensures requirements are met.
A PPT about A Strategic approach to testing, Validation and verfication, Criteria for Completion of testing, STRATEGIC ISSUES, Unit testing,Unit testing considerations and procedures, Unit-test environment,Integration testing,Non-incremental
Integration Testing,Incremental Integration Testing,Top-down Integration,Bottom-up Integration,Regression Testing,Smoke testing
Module V - Software Testing Strategies.pdfadhithanr
This document discusses strategies for software testing, including test planning, unit testing, integration testing, and validation. It provides details on:
- Developing a testing strategy that incorporates test planning, design, execution, data collection, and evaluation.
- Conducting unit testing on individual software components to test interfaces, data structures, paths, and boundaries.
- Performing integration testing by combining tested units and testing interfaces to avoid issues with data loss or component interactions.
- The goals of verification to ensure correct implementation and validation to ensure requirements traceability.
Unit 8 discusses software testing concepts including definitions of testing, who performs testing, test characteristics, levels of testing, and testing approaches. Unit testing focuses on individual program units while integration testing combines units. System testing evaluates a complete integrated system. Testing strategies integrate testing into a planned series of steps from requirements to deployment. Verification ensures correct development while validation confirms the product meets user needs.
Strategic Approach to Software Testing, Strategic Issues, Test Conventional Software, Test Strategies for Object-Oriented Software, Test Strategies for WebApps, Validation Testing, System Testing, The Art of Debugging, Software Testing Fundamentals, White-Box Testing, Basis Path Testing,
Control Structure Testing
A strategy for software testing integrates the design of software test cases into a well-planned series of steps that result in successful development of the software.
The document provides an overview of software testing strategies. It discusses that the main objective of software testing is to systematically find errors without taking much time. It emphasizes the importance of choosing the best testing strategy. It then covers various software testing strategies including unit testing, integration testing, validation testing, and system testing. Unit testing involves testing individual software components in isolation while integration testing focuses on testing the interaction between integrated components. The document contrasts the incremental and "big bang" approaches to integration testing and argues that the incremental approach is more effective.
This document discusses software testing practices and processes. It covers topics like unit testing, integration testing, validation testing, test planning, and test types. The key points are that testing aims to find errors, good testing uses both valid and invalid inputs, and testing should have clear objectives and be assigned to experienced people. Testing is done at the unit, integration and system levels using techniques like black box testing.
Software testing strategies And its typesMITULJAMANG
Software Testing is a type of investigation to find out if there is any default or error present in the software so that the errors can be reduced or removed to increase the quality of the software and to check whether it fulfills the specifies requirements or not.
According to Glen Myers, software testing has the following objectives:
The process of investigating and checking a program to find whether there is an error or not and does it fulfill the requirements or not is called testing.
When the number of errors found during the testing is high, it indicates that the testing was good and is a sign of good test case.Finding an unknown error that’s wasn’t discovered yet is a sign of a successful and a good test case
Testing is the process of executing software to find defects and verify requirements are met. It involves executing a program or modules to observe behavior and outcomes, and analyze failures to locate and fix faults. The main purposes of testing are to demonstrate quality and proper behavior, and to detect and fix defects. Testing strategies include starting with individual component tests and progressing to integrated system tests. Different techniques like black-box and white-box testing are used at various stages. Manual testing is time-consuming while automated testing is faster and more reliable. Testing continues until quality goals are met or resources run out. Debugging locates and removes defects found via testing.
This document discusses strategies for software testing at different stages of development. It begins by outlining a strategic approach starting with component testing and working outward to integration testing. Different techniques are appropriate at different stages. The stages discussed include unit testing, integration testing, function testing, performance testing, acceptance testing, and installation testing. Details are provided on techniques for each stage like top-down vs bottom-up integration testing. The roles of testers, tools, and documentation are also summarized.
This document discusses various software testing techniques. It begins by explaining the goals of verification and validation as establishing confidence that software is fit for its intended use. It then covers different testing phases from component to integration testing. The document discusses both static and dynamic verification methods like inspections, walkthroughs, and testing. It details test case development techniques like equivalence partitioning and boundary value analysis. Finally, it covers white-box and structural testing methods that derive test cases from examining a program's internal structure.
Software Testing Strategies, General Characteristics of Strategic Testing, Verification and Validation, Organizing for Software Testing, A Strategy for Testing Conventional Software, Levels of Testing for Conventional Software, Testing Strategy applied to Conventional Software, Startegic Issues-Ensuring a Successful Software Test Strategy, Fundamentals of Software Engineering
Testing is the process of validating and verifying software to ensure it meets specifications and functions as intended. There are different levels of testing including unit, integration, system, and acceptance testing. An important part of testing is having a test plan that outlines the test strategy, cases, and process to be followed. Testing helps find defects so the product can be improved.
This lecture is about the detail definition of software quality and quality assurance. Provide details about software tesing and its types. Clear the basic concepts of software quality and software testing.
This document discusses various software testing techniques classified into static, dynamic, and exhaustive categories. Static techniques like verification and static analysis do not require executing the program. Dynamic techniques execute the program and are divided into structure-oriented techniques like control flow testing and function-oriented techniques like function coverage and use case testing. Exhaustive techniques aim to cover all possible test cases. The document provides examples and explanations of different testing methods.
Testing is a process used to identify the correctness, completeness and quality of developed computer software. It involves finding differences between expected and observed behavior by executing the system with different inputs. The goal of testing is to maximize the number of discovered faults and increase reliability. Testing techniques include unit testing of individual components, integration testing of combined components, and system testing of the full application. Fault avoidance techniques like code reviews aim to prevent errors from being introduced.
The document discusses software testing and analysis. It describes the goals of verification and validation as establishing confidence that software is fit for purpose without being completely defect-free. Both verification and validation are whole-life cycle processes involving static and dynamic techniques to discover defects and assess usability. The document outlines different testing and inspection methods like unit testing, integration testing, walkthroughs, and inspections and their roles in the verification and validation process.
Similar to Chapter 13 software testing strategies (20)
This topic covers the following topics
Introduction
Golden rules of user interface design
Reconciling four different models
User interface analysis
User interface design
User interface evaluation
Example user interfaces
The document summarizes key concepts in project management, focusing on people, product, process, and project. It discusses establishing effective teams by focusing on stakeholders, team leaders with strong people skills, and software teams structured appropriately based on the problem. It emphasizes defining the product scope and decomposing problems into functionality and processes. Choosing the right process model and planning tasks is described. Signs of projects in jeopardy and using the W5 principle to establish a project definition and plan are also summarized.
This ppt covers the following topics
Introduction
The software component
Designing class-based components
Designing conventional components
Thus it covers Component level design
This ppt covers the following topics :-
Introduction
Design quality
Design concepts
The design model
Thus it covers design engineering in software engineering
This ppt explains about the FAQ's in software engineering and software engineer profession and ethics of software engineer.
Difference between the system engineer and software engineer.
This ppt covers the following topics:
Introduction
Data design
Software architectural styles
Architectural design process
Assessing alternative architectural designs
Thus it covers Architectural Design
The document discusses modular programming concepts in assembly language. It explains that large programming problems can be broken down into modules that are tested individually and then linked together. It outlines some issues that must be resolved for successful linking, such as data access permissions and external labels. The directives PUBLIC and EXTRN are described as ways to declare data, procedures, and labels that need to be accessed externally or are defined externally. The document provides examples of how to use these directives and assemble/link multiple modules into a single program.
The document discusses the architecture of the 8086 microprocessor. It describes the 8086 as a 16-bit processor that can access external memory using a 20-bit address bus. The 8086 uses memory segmentation to map the larger 20-bit physical addresses to the smaller 16-bit registers. Each segment is defined by a base address stored in a 16-bit segment register. The 20-bit physical address is calculated by combining the segment register value and offset. The document provides details on the various memory segments and addressing modes supported by the 8086 architecture.
This document discusses the hardware structure and pin configurations of the Intel 8086 and 8088 microprocessors. It describes the differences between the 8086 and 8088, including their data bus widths, instruction queues, and specific pin functions. The pin diagrams and functions of pins in both minimum and maximum modes are explained. Key concepts covered include address/data demultiplexing, bus cycles, control signals, clock generation, and interrupt handling. Wait states, direct memory access, and the roles of the bus controller IC and request/grant pins in maximum mode configurations are also summarized.
This ppt explains in brief what actually is arm processor and it covers the first 3 chapters of book "ARM SYSTEM DEVELOPERS GUIDE". The 3 chapters include the history,architecture,instruction set etc.
A high-Speed Communication System is based on the Design of a Bi-NoC Router, ...DharmaBanothu
The Network on Chip (NoC) has emerged as an effective
solution for intercommunication infrastructure within System on
Chip (SoC) designs, overcoming the limitations of traditional
methods that face significant bottlenecks. However, the complexity
of NoC design presents numerous challenges related to
performance metrics such as scalability, latency, power
consumption, and signal integrity. This project addresses the
issues within the router's memory unit and proposes an enhanced
memory structure. To achieve efficient data transfer, FIFO buffers
are implemented in distributed RAM and virtual channels for
FPGA-based NoC. The project introduces advanced FIFO-based
memory units within the NoC router, assessing their performance
in a Bi-directional NoC (Bi-NoC) configuration. The primary
objective is to reduce the router's workload while enhancing the
FIFO internal structure. To further improve data transfer speed,
a Bi-NoC with a self-configurable intercommunication channel is
suggested. Simulation and synthesis results demonstrate
guaranteed throughput, predictable latency, and equitable
network access, showing significant improvement over previous
designs
This is an overview of my current metallic design and engineering knowledge base built up over my professional career and two MSc degrees : - MSc in Advanced Manufacturing Technology University of Portsmouth graduated 1st May 1998, and MSc in Aircraft Engineering Cranfield University graduated 8th June 2007.
Tools & Techniques for Commissioning and Maintaining PV Systems W-Animations ...Transcat
Join us for this solutions-based webinar on the tools and techniques for commissioning and maintaining PV Systems. In this session, we'll review the process of building and maintaining a solar array, starting with installation and commissioning, then reviewing operations and maintenance of the system. This course will review insulation resistance testing, I-V curve testing, earth-bond continuity, ground resistance testing, performance tests, visual inspections, ground and arc fault testing procedures, and power quality analysis.
Fluke Solar Application Specialist Will White is presenting on this engaging topic:
Will has worked in the renewable energy industry since 2005, first as an installer for a small east coast solar integrator before adding sales, design, and project management to his skillset. In 2022, Will joined Fluke as a solar application specialist, where he supports their renewable energy testing equipment like IV-curve tracers, electrical meters, and thermal imaging cameras. Experienced in wind power, solar thermal, energy storage, and all scales of PV, Will has primarily focused on residential and small commercial systems. He is passionate about implementing high-quality, code-compliant installation techniques.
Better Builder Magazine brings together premium product manufactures and leading builders to create better differentiated homes and buildings that use less energy, save water and reduce our impact on the environment. The magazine is published four times a year.
Impartiality as per ISO /IEC 17025:2017 StandardMuhammadJazib15
This document provides basic guidelines for imparitallity requirement of ISO 17025. It defines in detial how it is met and wiudhwdih jdhsjdhwudjwkdbjwkdddddddddddkkkkkkkkkkkkkkkkkkkkkkkwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwioiiiiiiiiiiiii uwwwwwwwwwwwwwwwwhe wiqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq gbbbbbbbbbbbbb owdjjjjjjjjjjjjjjjjjjjj widhi owqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq uwdhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhwqiiiiiiiiiiiiiiiiiiiiiiiiiiiiw0pooooojjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj whhhhhhhhhhh wheeeeeeee wihieiiiiii wihe
e qqqqqqqqqqeuwiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiqw dddddddddd cccccccccccccccv s w c r
cdf cb bicbsad ishd d qwkbdwiur e wetwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww w
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffw
uuuuhhhhhhhhhhhhhhhhhhhhhhhhe qiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii iqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ccccccccccccccccccccccccccccccccccc bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbu uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuum
m
m mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm m i
g i dijsd sjdnsjd ndjajsdnnsa adjdnawddddddddddddd uw
1. Chapter 13
Software Testing Strategies
- A strategic approach to testing
- Test strategies for conventional software
- Test strategies for object-oriented software
- Validation testing
- System testing
- The art of debugging
2. Introduction
• A strategy for software testing integrates the design of software test
cases into a well-planned series of steps that result in successful
development of the software
• The strategy provides a road map that describes the steps to be taken,
when, and how much effort, time, and resources will be required
• The strategy incorporates test planning, test case design, test execution,
and test result collection and evaluation
• The strategy provides guidance for the practitioner and a set of
milestones for the manager
• Because of time pressures, progress must be measurable and problems
must surface as early as possible
2
4. General Characteristics of Strategic
Testing
• To perform effective testing, a software team should conduct effective
formal technical reviews
• Testing begins at the component level and work outward toward the
integration of the entire computer-based system
• Different testing techniques are appropriate at different points in time
• Testing is conducted by the developer of the software and (for large
projects) by an independent test group
• Testing and debugging are different activities, but debugging must be
accommodated in any testing strategy
4
5. Verification and Validation
• Software testing is part of a broader group of activities called verification
and validation that are involved in software quality assurance
• Verification (Are the algorithms coded correctly?)
• The set of activities that ensure that software correctly implements a specific
function or algorithm
• Validation (Does it meet user requirements?)
• The set of activities that ensure that the software that has been built is
traceable to customer requirements
5
6. Organizing for Software Testing
• Testing should aim at "breaking" the software
• Common misconceptions
• The developer of software should do no testing at all
• The software should be given to a secret team of testers who will test it
unmercifully
• The testers get involved with the project only when the testing steps are
about to begin
• Reality: Independent test group
• Removes the inherent problems associated with letting the builder test the
software that has been built
• Removes the conflict of interest that may otherwise be present
• Works closely with the software developer during analysis and design to
ensure that thorough testing occurs
6
7. A Strategy for Testing Conventional
Software
7
Code
Design
Requirements
System Engineering
Unit Testing
Integration Testing
Validation Testing
System TestingAbstractto
concrete
Narrow
to
Broaderscope
8. Levels of Testing for Conventional
Software
• Unit testing
• Concentrates on each component/function of the software as implemented
in the source code
• Integration testing
• Focuses on the design and construction of the software architecture
• Validation testing
• Requirements are validated against the constructed software
• System testing
• The software and other system elements are tested as a whole
8
9. Testing Strategy applied to Conventional
Software
• Unit testing
• Exercises specific paths in a component's control structure to ensure
complete coverage and maximum error detection
• Components are then assembled and integrated
• Integration testing
• Focuses on inputs and outputs, and how well the components fit together
and work together
• Validation testing
• Provides final assurance that the software meets all functional, behavioral,
and performance requirements
• System testing
• Verifies that all system elements (software, hardware, people, databases)
mesh properly and that overall system function and performance is achieved
9
10. Testing Strategy applied to Object-
Oriented Software
• Must broaden testing to include detections of errors in analysis and design
models
• Unit testing loses some of its meaning and integration testing changes
significantly
• Use the same philosophy but different approach as in conventional
software testing
• Test "in the small" and then work out to testing "in the large"
• Testing in the small involves class attributes and operations; the main focus is on
communication and collaboration within the class
• Testing in the large involves a series of regression tests to uncover errors due to
communication and collaboration among classes
• Finally, the system as a whole is tested to detect errors in fulfilling
requirements
10
11. When is Testing Complete?
• There is no definitive answer to this question
• Every time a user executes the software, the program is being tested
• Sadly, testing usually stops when a project is running out of time,
money, or both
• One approach is to divide the test results into various severity levels
• Then consider testing to be complete when certain levels of errors no longer
occur or have been repaired or eliminated
11
12. Ensuring a Successful Software Test
Strategy
• Specify product requirements in a quantifiable manner long before testing
commences
• State testing objectives explicitly in measurable terms
• Understand the user of the software (through use cases) and develop a
profile for each user category
• Develop a testing plan that emphasizes rapid cycle testing to get quick
feedback to control quality levels and adjust the test strategy
• Build robust software that is designed to test itself and can diagnose
certain kinds of errors
• Use effective formal technical reviews as a filter prior to testing to reduce
the amount of testing required
• Conduct formal technical reviews to assess the test strategy and test cases
themselves
• Develop a continuous improvement approach for the testing process
through the gathering of metrics
12
14. Unit Testing
• Focuses testing on the function or software module
• Concentrates on the internal processing logic and data structures
• Is simplified when a module is designed with high cohesion
• Reduces the number of test cases
• Allows errors to be more easily predicted and uncovered
• Concentrates on critical modules and those with high cyclomatic
complexity when testing resources are limited
14
15. Targets for Unit Test Cases
• Module interface
• Ensure that information flows properly into and out of the module
• Local data structures
• Ensure that data stored temporarily maintains its integrity during all steps in
an algorithm execution
• Boundary conditions
• Ensure that the module operates properly at boundary values established to
limit or restrict processing
• Independent paths (basis paths)
• Paths are exercised to ensure that all statements in a module have been
executed at least once
• Error handling paths
• Ensure that the algorithms respond correctly to specific error conditions
15
16. Common Computational Errors in
Execution Paths
• Misunderstood or incorrect arithmetic precedence
• Mixed mode operations (e.g., int, float, char)
• Incorrect initialization of values
• Precision inaccuracy and round-off errors
• Incorrect symbolic representation of an expression (int vs. float)
16
17. Other Errors to Uncover
• Comparison of different data types
• Incorrect logical operators or precedence
• Expectation of equality when precision error makes equality unlikely
(using == with float types)
• Incorrect comparison of variables
• Improper or nonexistent loop termination
• Failure to exit when divergent iteration is encountered
• Improperly modified loop variables
• Boundary value violations
17
18. Problems to uncover in
Error Handling
• Error description is unintelligible or ambiguous
• Error noted does not correspond to error encountered
• Error condition causes operating system intervention prior to error
handling
• Exception condition processing is incorrect
• Error description does not provide enough information to assist in the
location of the cause of the error
18
19. Drivers and Stubs for
Unit Testing
• Driver
• A simple main program that accepts test case data, passes such data to the
component being tested, and prints the returned results
• Stubs
• Serve to replace modules that are subordinate to (called by) the component
to be tested
• It uses the module’s exact interface, may do minimal data manipulation,
provides verification of entry, and returns control to the module
undergoing testing
• Drivers and stubs both represent overhead
• Both must be written but don’t constitute part of the installed software
product
19
20. Integration Testing
• Defined as a systematic technique for constructing the software
architecture
• At the same time integration is occurring, conduct tests to uncover errors
associated with interfaces
• Objective is to take unit tested modules and build a program structure
based on the prescribed design
• Two Approaches
• Non-incremental Integration Testing
• Incremental Integration Testing
20
21. Non-incremental
Integration Testing
• Commonly called the “Big Bang” approach
• All components are combined in advance
• The entire program is tested as a whole
• Chaos results
• Many seemingly-unrelated errors are encountered
• Correction is difficult because isolation of causes is complicated
• Once a set of errors are corrected, more errors occur, and testing appears
to enter an endless loop
21
22. Incremental Integration Testing
• Three kinds
• Top-down integration
• Bottom-up integration
• Sandwich integration
• The program is constructed and tested in small increments
• Errors are easier to isolate and correct
• Interfaces are more likely to be tested completely
• A systematic test approach is applied
22
23. Top-down Integration
• Modules are integrated by moving downward through the control
hierarchy, beginning with the main module
• Subordinate modules are incorporated in either a depth-first or breadth-
first fashion
• DF: All modules on a major control path are integrated
• BF: All modules directly subordinate at each level are integrated
• Advantages
• This approach verifies major control or decision points early in the test
process
• Disadvantages
• Stubs need to be created to substitute for modules that have not been built
or tested yet; this code is later discarded
• Because stubs are used to replace lower level modules, no significant data
flow can occur until much later in the integration/testing process
23
24. Bottom-up Integration
• Integration and testing starts with the most atomic modules in the
control hierarchy
• Advantages
• This approach verifies low-level data processing early in the testing process
• Need for stubs is eliminated
• Disadvantages
• Driver modules need to be built to test the lower-level modules; this code is
later discarded or expanded into a full-featured version
• Drivers inherently do not contain the complete algorithms that will
eventually use the services of the lower-level modules; consequently, testing
may be incomplete or more testing may be needed later when the upper
level modules are available
24
25. Sandwich Integration
• Consists of a combination of both top-down and bottom-up integration
• Occurs both at the highest level modules and also at the lowest level
modules
• Proceeds using functional groups of modules, with each group
completed before the next
• High and low-level modules are grouped based on the control and data
processing they provide for a specific program feature
• Integration within the group progresses in alternating steps between the
high and low level modules of the group
• When integration for a certain functional group is complete, integration and
testing moves onto the next group
• Reaps the advantages of both types of integration while minimizing the
need for drivers and stubs
• Requires a disciplined approach so that integration doesn’t tend
towards the “big bang” scenario
25
26. Regression Testing
• Each new addition or change to baselined software may cause problems
with functions that previously worked flawlessly
• Regression testing re-executes a small subset of tests that have already
been conducted
• Ensures that changes have not propagated unintended side effects
• Helps to ensure that changes do not introduce unintended behavior or
additional errors
• May be done manually or through the use of automated capture/playback
tools
• Regression test suite contains three different classes of test cases
• A representative sample of tests that will exercise all software functions
• Additional tests that focus on software functions that are likely to be
affected by the change
• Tests that focus on the actual software components that have been changed
26
27. Smoke Testing
• Taken from the world of hardware
• Power is applied and a technician checks for sparks, smoke, or other
dramatic signs of fundamental failure
• Designed as a pacing mechanism for time-critical projects
• Allows the software team to assess its project on a frequent basis
• Includes the following activities
• The software is compiled and linked into a build
• A series of breadth tests is designed to expose errors that will keep the
build from properly performing its function
• The goal is to uncover “show stopper” errors that have the highest likelihood of
throwing the software project behind schedule
• The build is integrated with other builds and the entire product is smoke
tested daily
• Daily testing gives managers and practitioners a realistic assessment of the
progress of the integration testing
• After a smoke test is completed, detailed test scripts are executed
27
28. Benefits of Smoke Testing
• Integration risk is minimized
• Daily testing uncovers incompatibilities and show-stoppers early in the
testing process, thereby reducing schedule impact
• The quality of the end-product is improved
• Smoke testing is likely to uncover both functional errors and architectural
and component-level design errors
• Error diagnosis and correction are simplified
• Smoke testing will probably uncover errors in the newest components that
were integrated
• Progress is easier to assess
• As integration testing progresses, more software has been integrated and
more has been demonstrated to work
• Managers get a good indication that progress is being made
28
30. Test Strategies for
Object-Oriented Software
• With object-oriented software, you can no longer test a single operation in
isolation (conventional thinking)
• Traditional top-down or bottom-up integration testing has little meaning
• Class testing for object-oriented software is the equivalent of unit testing
for conventional software
• Focuses on operations encapsulated by the class and the state behavior of the
class
• Drivers can be used
• To test operations at the lowest level and for testing whole groups of classes
• To replace the user interface so that tests of system functionality can be
conducted prior to implementation of the actual interface
• Stubs can be used
• In situations in which collaboration between classes is required but one or more
of the collaborating classes has not yet been fully implemented
30
31. Test Strategies for Object-Oriented
Software (continued)
• Two different object-oriented testing strategies
• Thread-based testing
• Integrates the set of classes required to respond to one input or event for the
system
• Each thread is integrated and tested individually
• Regression testing is applied to ensure that no side effects occur
• Use-based testing
• First tests the independent classes that use very few, if any, server classes
• Then the next layer of classes, called dependent classes, are integrated
• This sequence of testing layer of dependent classes continues until the entire
system is constructed
31
33. Background
• Validation testing follows integration testing
• The distinction between conventional and object-oriented software disappears
• Focuses on user-visible actions and user-recognizable output from the system
• Demonstrates conformity with requirements
• Designed to ensure that
• All functional requirements are satisfied
• All behavioral characteristics are achieved
• All performance requirements are attained
• Documentation is correct
• Usability and other requirements are met (e.g., transportability, compatibility, error
recovery, maintainability)
• After each validation test
• The function or performance characteristic conforms to specification and is accepted
• A deviation from specification is uncovered and a deficiency list is created
• A configuration review or audit ensures that all elements of the software
configuration have been properly developed, cataloged, and have the necessary
detail for entering the support phase of the software life cycle
33
34. Alpha and Beta Testing
• Alpha testing
• Conducted at the developer’s site by end users
• Software is used in a natural setting with developers watching intently
• Testing is conducted in a controlled environment
• Beta testing
• Conducted at end-user sites
• Developer is generally not present
• It serves as a live application of the software in an environment that cannot
be controlled by the developer
• The end-user records all problems that are encountered and reports these to
the developers at regular intervals
• After beta testing is complete, software engineers make software
modifications and prepare for release of the software product to the
entire customer base
34
36. Different Types
• Recovery testing
• Tests for recovery from system faults
• Forces the software to fail in a variety of ways and verifies that recovery is
properly performed
• Tests reinitialization, checkpointing mechanisms, data recovery, and restart for
correctness
• Security testing
• Verifies that protection mechanisms built into a system will, in fact, protect it
from improper access
• Stress testing
• Executes a system in a manner that demands resources in abnormal quantity,
frequency, or volume
• Performance testing
• Tests the run-time performance of software within the context of an integrated
system
• Often coupled with stress testing and usually requires both hardware and
software instrumentation
• Can uncover situations that lead to degradation and possible system failure
36
38. Debugging Process
• Debugging occurs as a consequence of successful testing
• It is still very much an art rather than a science
• Good debugging ability may be an innate human trait
• Large variances in debugging ability exist
• The debugging process begins with the execution of a test case
• Results are assessed and the difference between expected and actual
performance is encountered
• This difference is a symptom of an underlying cause that lies hidden
• The debugging process attempts to match symptom with cause, thereby leading
to error correction
38
39. Why is Debugging so Difficult?
• The symptom and the cause may be geographically remote
• The symptom may disappear (temporarily) when another error is
corrected
• The symptom may actually be caused by nonerrors (e.g., round-off
accuracies)
• The symptom may be caused by human error that is not easily traced
39
(continued on next slide)
40. Why is Debugging so Difficult?
(continued)
• The symptom may be a result of timing problems, rather than processing
problems
• It may be difficult to accurately reproduce input conditions, such as
asynchronous real-time information
• The symptom may be intermittent such as in embedded systems involving
both hardware and software
• The symptom may be due to causes that are distributed across a number
of tasks running on different processes
40
41. Debugging Strategies
• Objective of debugging is to find and correct the cause of a software
error
• Bugs are found by a combination of systematic evaluation, intuition, and
luck
• Debugging methods and tools are not a substitute for careful evaluation
based on a complete design model and clear source code
• There are three main debugging strategies
• Brute force
• Backtracking
• Cause elimination
41
42. Strategy #1: Brute Force
• Most commonly used and least efficient method
• Used when all else fails
• Involves the use of memory dumps, run-time traces, and output
statements
• Leads many times to wasted effort and time
42
43. Strategy #2: Backtracking
• Can be used successfully in small programs
• The method starts at the location where a symptom has been
uncovered
• The source code is then traced backward (manually) until the location of
the cause is found
• In large programs, the number of potential backward paths may become
unmanageably large
43
44. Strategy #3: Cause Elimination
• Involves the use of induction or deduction and introduces the concept of
binary partitioning
• Induction (specific to general): Prove that a specific starting value is true; then
prove the general case is true
• Deduction (general to specific): Show that a specific conclusion follows from a
set of general premises
• Data related to the error occurrence are organized to isolate potential
causes
• A cause hypothesis is devised, and the aforementioned data are used to
prove or disprove the hypothesis
• Alternatively, a list of all possible causes is developed, and tests are
conducted to eliminate each cause
• If initial tests indicate that a particular cause hypothesis shows promise,
data are refined in an attempt to isolate the bug
44
45. Three Questions to ask Before
Correcting the Error
• Is the cause of the bug reproduced in another part of the program?
• Similar errors may be occurring in other parts of the program
• What next bug might be introduced by the fix that I’m about to make?
• The source code (and even the design) should be studied to assess the coupling
of logic and data structures related to the fix
• What could we have done to prevent this bug in the first place?
• This is the first step toward software quality assurance
• By correcting the process as well as the product, the bug will be removed from
the current program and may be eliminated from all future programs
45