Unit Testing contains Concept of Unit Testing, Static Unit Testing, Dynamic Unit Testing, steps for Static Unit Testing, Test Driver, Stub, selection of Data for Unit Testing, etc...
The document discusses various black-box testing techniques. It introduces testing, verification, and validation. It then describes black-box and white-box testing. Various types of testing like unit, integration, functional, system, acceptance, regression, and beta testing are explained. Strategies for writing test cases like equivalence partitioning and boundary value analysis are provided. The document emphasizes the importance of planning testing early in the development process.
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.
This document provides an introduction to using the Google Test framework for unit testing C++ code. It begins with an example of a simple test for a function called calc_isect. It then demonstrates how to add assertions to tests, use test fixtures to reduce duplicated setup code, and generate parameterized tests. The document also covers best practices for test organization, installing and using Google Test, and some key features like XML output and selecting subsets of tests. Overall, the document serves as a tutorial for getting started with the Google Test framework for writing and running unit tests in C++ projects.
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.
BugRaptors provide Software testing is entirely about finding defects in applications, right? Apparently, this can be considered as the principal goal of all the QA practices. However, all the defects diverge from each other. It cannot be stated if some are more important than others, yet it’s possible to locate and fix them all.
Testing metrics provide objective measurements of software quality and the testing process. They measure attributes like test coverage, defect detection rates, and requirement changes. There are base metrics that directly capture raw data like test cases run and results, and calculated metrics that analyze the base metrics, like first run failure rates and defect slippage. Tracking these metrics throughout testing provides visibility into project readiness, informs management decisions, and identifies areas for improvement. Regular review and interpretation of the metrics is needed to understand their implications and make changes to the development lifecycle.
This document discusses various software testing metrics including defect density, requirement volatility, test execution productivity, and test efficiency. Defect density measures the number of defects found divided by the size of the software. Requirement volatility measures the percentage of original requirements that were changed. Test execution productivity measures the number of test cases executed per day. Test efficiency measures the percentage of defects found during testing versus post-release. These metrics provide ways to measure software quality and testing effectiveness.
The document discusses various types of test tools used at different stages of testing. It describes tools for test management, requirements management, incident management, configuration management, static testing, static analysis, modeling, test design, test data preparation, test execution, test harness, test comparators, coverage measurement, security testing, dynamic analysis, performance testing, load testing, stress testing, monitoring and thanks the reader. The tools support activities like scheduling tests, tracking bugs, reviewing code, generating test data, automating test execution, measuring code coverage and monitoring system performance.
The document discusses various black-box testing techniques. It introduces testing, verification, and validation. It then describes black-box and white-box testing. Various types of testing like unit, integration, functional, system, acceptance, regression, and beta testing are explained. Strategies for writing test cases like equivalence partitioning and boundary value analysis are provided. The document emphasizes the importance of planning testing early in the development process.
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.
This document provides an introduction to using the Google Test framework for unit testing C++ code. It begins with an example of a simple test for a function called calc_isect. It then demonstrates how to add assertions to tests, use test fixtures to reduce duplicated setup code, and generate parameterized tests. The document also covers best practices for test organization, installing and using Google Test, and some key features like XML output and selecting subsets of tests. Overall, the document serves as a tutorial for getting started with the Google Test framework for writing and running unit tests in C++ projects.
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.
BugRaptors provide Software testing is entirely about finding defects in applications, right? Apparently, this can be considered as the principal goal of all the QA practices. However, all the defects diverge from each other. It cannot be stated if some are more important than others, yet it’s possible to locate and fix them all.
Testing metrics provide objective measurements of software quality and the testing process. They measure attributes like test coverage, defect detection rates, and requirement changes. There are base metrics that directly capture raw data like test cases run and results, and calculated metrics that analyze the base metrics, like first run failure rates and defect slippage. Tracking these metrics throughout testing provides visibility into project readiness, informs management decisions, and identifies areas for improvement. Regular review and interpretation of the metrics is needed to understand their implications and make changes to the development lifecycle.
This document discusses various software testing metrics including defect density, requirement volatility, test execution productivity, and test efficiency. Defect density measures the number of defects found divided by the size of the software. Requirement volatility measures the percentage of original requirements that were changed. Test execution productivity measures the number of test cases executed per day. Test efficiency measures the percentage of defects found during testing versus post-release. These metrics provide ways to measure software quality and testing effectiveness.
The document discusses various types of test tools used at different stages of testing. It describes tools for test management, requirements management, incident management, configuration management, static testing, static analysis, modeling, test design, test data preparation, test execution, test harness, test comparators, coverage measurement, security testing, dynamic analysis, performance testing, load testing, stress testing, monitoring and thanks the reader. The tools support activities like scheduling tests, tracking bugs, reviewing code, generating test data, automating test execution, measuring code coverage and monitoring system performance.
The document provides an overview of compilers by discussing:
1. Compilers translate source code into executable target code by going through several phases including lexical analysis, syntax analysis, semantic analysis, code optimization, and code generation.
2. An interpreter directly executes source code statement by statement while a compiler produces target code as translation. Compiled code generally runs faster than interpreted code.
3. The phases of a compiler include a front end that analyzes the source code and produces intermediate code, and a back end that optimizes and generates the target code.
This document provides an overview of unit testing and isolation frameworks. It defines key concepts like units, unit tests, stubs, mocks and isolation frameworks. It explains that the goal of unit tests is to test individual units of code in isolation by replacing dependencies with stubs or mocks. It also discusses different isolation frameworks like Rhino Mocks and Moq that make it easier to dynamically create stubs and mocks without writing implementation code. The document covers different styles of isolation like record-and-replay and arrange-act-assert. It emphasizes best practices like having one mock per test and using stubs for other dependencies being tested.
What is Quality ||
Software Quality Metrics ||
Types of Software Quality Metrics ||
Three groups of Software Quality Metrics ||
Customer Satisfaction Metrics ||
Tools used for Quality Metrics/Measurements ||
PERT and CPM ||
The document discusses test effort estimation which involves estimating the resources, time, and skills required to test a project. The test manager is typically responsible for test estimation. The steps include identifying components and test strategies, tasks, software size and complexity, and inputs to estimate test effort. The estimate is then used to prepare a test plan and validate the estimate after the project. Common techniques discussed are function point analysis, COCOMO model, and test point analysis.
The document discusses various techniques for software testing including whitebox testing, blackbox testing, unit testing, integration testing, validation testing, and system testing. It provides details on techniques like equivalence partitioning, boundary value analysis, orthogonal array testing, and graph matrices. The objective of testing is to systematically uncover errors in a minimum amount of time and effort. Testing should begin with unit testing and progress towards integration and system-level testing.
This document discusses Java I/O and streams. It begins by introducing files and the File class, which provides methods for obtaining file properties and manipulating files. It then discusses reading and writing files using byte streams like FileInputStream and FileOutputStream. Character streams like PrintWriter and BufferedReader are presented for console I/O. Other stream classes covered include buffered streams, object streams for serialization, and data streams for primitive types. The key methods of various stream classes are listed.
The document outlines seven principles of software testing: 1) Testing shows the presence of errors, not their absence; 2) Exhaustive testing of all possible test cases is impossible; 3) Testing early in the development cycle is important to more easily fix defects; 4) Defects tend to cluster together, following an 80-20 distribution; 5) Test effectiveness fades over time as software changes; 6) Testing methods depend on the type of application; 7) Finding no errors does not mean the system is usable - user requirements must still be met.
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.
This document provides an overview of software testing concepts and definitions. It discusses key topics such as software quality, testing methods like static and dynamic testing, testing levels from unit to acceptance testing, and testing types including functional, non-functional, regression and security testing. The document is intended as an introduction to software testing principles and terminology.
The document provides an overview of code coverage as a white-box testing technique. It discusses various coverage metrics like statement coverage, decision coverage, conditional coverage, and path coverage. It also covers code coverage implementation in real tools and general recommendations around code coverage goals and testing practices. The presentation includes demos of different coverage metrics and aims to help readers learn about coverage theory, metrics, and tools to familiarize them with code coverage.
The document provides an overview of software testing techniques and strategies. It discusses unit testing, integration testing, validation testing, system testing, and debugging. The key points covered include:
- Unit testing involves testing individual software modules or components in isolation from the rest of the system. This includes testing module interfaces, data structures, boundary conditions, and error handling paths.
- Integration testing combines software components into clusters or builds to test their interactions before full system integration. Approaches include top-down and bottom-up integration.
- Validation testing verifies that the software meets the intended requirements and customer expectations defined in validation criteria.
- System testing evaluates the fully integrated software system, including recovery, security, stress,
Software testing metrics | David Tzemach David Tzemach
Overview
What we can measure using metrics
Common metrics to evaluate test process
why do we need to use metrics
Test metrics life cycle (TMLC)
Type of metrics
Fundamental testing metrics
The document discusses three ways to handle errors in JSP:
1. Using Java exception handling mechanisms like try/catch blocks.
2. Specifying an error page using the errorPage attribute in the page directive.
3. Configuring error pages in the web deployment descriptor (web.xml) by mapping exceptions to error pages.
White box testing is a software testing technique that tests internal coding and infrastructure. It involves writing test cases that exercise the paths in the code to help identify missing logic or errors. The document discusses various white box testing techniques like statement coverage, decision coverage, loop coverage, condition coverage, and path coverage. It also discusses performing white box testing at the unit, integration, and system levels. The session will cover white box testing at the unit level using control flow analysis techniques like building control flow graphs and analyzing possible paths.
1) The document provides an overview of different test case design techniques including specification based testing, input domain testing, risk based testing, and scenario testing.
2) Specification based testing techniques discussed include analyzing specifications for gaps or contradictions, gathering additional information from developers, and using the 5W1H technique to derive test cases.
3) Input domain testing techniques like equivalence partitioning and boundary value analysis are covered to avoid redundant test cases around inputs.
4) Risk based testing involves imagining how a program could fail, assessing the likelihood and impact of failures, and designing test cases to expose potential failures.
5) Scenario testing uses real user personas and examples of how the software will be used to further
This document discusses exception handling in C++. It defines an exception as an event that occurs during program execution that disrupts normal flow, like divide by zero errors. Exception handling allows the program to maintain normal flow even after errors by catching and handling exceptions. It describes the key parts of exception handling as finding problems, throwing exceptions, catching exceptions, and handling exceptions. The document provides examples of using try, catch, and throw blocks to handle exceptions in C++ code.
MindScripts Technologies is the authorized Softwrae Testing Training institutes in Pune, providing a complete softwrae testing certification course with ISTQB certification. It provides a IBM Certified courses.
This document provides an overview of static testing techniques and how they differ from dynamic testing techniques. It defines static testing as testing that does not require executing the software, such as reviews, inspections and static analysis tools. Dynamic testing involves executing the software with test cases. The document then describes various static techniques like formal reviews, informal reviews, walkthroughs, technical reviews and inspections. It also discusses static and dynamic analysis tools. Finally, it covers cyclomatic complexity, which is a measure of how many independent paths exist in a program.
The document provides an overview of compilers by discussing:
1. Compilers translate source code into executable target code by going through several phases including lexical analysis, syntax analysis, semantic analysis, code optimization, and code generation.
2. An interpreter directly executes source code statement by statement while a compiler produces target code as translation. Compiled code generally runs faster than interpreted code.
3. The phases of a compiler include a front end that analyzes the source code and produces intermediate code, and a back end that optimizes and generates the target code.
This document provides an overview of unit testing and isolation frameworks. It defines key concepts like units, unit tests, stubs, mocks and isolation frameworks. It explains that the goal of unit tests is to test individual units of code in isolation by replacing dependencies with stubs or mocks. It also discusses different isolation frameworks like Rhino Mocks and Moq that make it easier to dynamically create stubs and mocks without writing implementation code. The document covers different styles of isolation like record-and-replay and arrange-act-assert. It emphasizes best practices like having one mock per test and using stubs for other dependencies being tested.
What is Quality ||
Software Quality Metrics ||
Types of Software Quality Metrics ||
Three groups of Software Quality Metrics ||
Customer Satisfaction Metrics ||
Tools used for Quality Metrics/Measurements ||
PERT and CPM ||
The document discusses test effort estimation which involves estimating the resources, time, and skills required to test a project. The test manager is typically responsible for test estimation. The steps include identifying components and test strategies, tasks, software size and complexity, and inputs to estimate test effort. The estimate is then used to prepare a test plan and validate the estimate after the project. Common techniques discussed are function point analysis, COCOMO model, and test point analysis.
The document discusses various techniques for software testing including whitebox testing, blackbox testing, unit testing, integration testing, validation testing, and system testing. It provides details on techniques like equivalence partitioning, boundary value analysis, orthogonal array testing, and graph matrices. The objective of testing is to systematically uncover errors in a minimum amount of time and effort. Testing should begin with unit testing and progress towards integration and system-level testing.
This document discusses Java I/O and streams. It begins by introducing files and the File class, which provides methods for obtaining file properties and manipulating files. It then discusses reading and writing files using byte streams like FileInputStream and FileOutputStream. Character streams like PrintWriter and BufferedReader are presented for console I/O. Other stream classes covered include buffered streams, object streams for serialization, and data streams for primitive types. The key methods of various stream classes are listed.
The document outlines seven principles of software testing: 1) Testing shows the presence of errors, not their absence; 2) Exhaustive testing of all possible test cases is impossible; 3) Testing early in the development cycle is important to more easily fix defects; 4) Defects tend to cluster together, following an 80-20 distribution; 5) Test effectiveness fades over time as software changes; 6) Testing methods depend on the type of application; 7) Finding no errors does not mean the system is usable - user requirements must still be met.
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.
This document provides an overview of software testing concepts and definitions. It discusses key topics such as software quality, testing methods like static and dynamic testing, testing levels from unit to acceptance testing, and testing types including functional, non-functional, regression and security testing. The document is intended as an introduction to software testing principles and terminology.
The document provides an overview of code coverage as a white-box testing technique. It discusses various coverage metrics like statement coverage, decision coverage, conditional coverage, and path coverage. It also covers code coverage implementation in real tools and general recommendations around code coverage goals and testing practices. The presentation includes demos of different coverage metrics and aims to help readers learn about coverage theory, metrics, and tools to familiarize them with code coverage.
The document provides an overview of software testing techniques and strategies. It discusses unit testing, integration testing, validation testing, system testing, and debugging. The key points covered include:
- Unit testing involves testing individual software modules or components in isolation from the rest of the system. This includes testing module interfaces, data structures, boundary conditions, and error handling paths.
- Integration testing combines software components into clusters or builds to test their interactions before full system integration. Approaches include top-down and bottom-up integration.
- Validation testing verifies that the software meets the intended requirements and customer expectations defined in validation criteria.
- System testing evaluates the fully integrated software system, including recovery, security, stress,
Software testing metrics | David Tzemach David Tzemach
Overview
What we can measure using metrics
Common metrics to evaluate test process
why do we need to use metrics
Test metrics life cycle (TMLC)
Type of metrics
Fundamental testing metrics
The document discusses three ways to handle errors in JSP:
1. Using Java exception handling mechanisms like try/catch blocks.
2. Specifying an error page using the errorPage attribute in the page directive.
3. Configuring error pages in the web deployment descriptor (web.xml) by mapping exceptions to error pages.
White box testing is a software testing technique that tests internal coding and infrastructure. It involves writing test cases that exercise the paths in the code to help identify missing logic or errors. The document discusses various white box testing techniques like statement coverage, decision coverage, loop coverage, condition coverage, and path coverage. It also discusses performing white box testing at the unit, integration, and system levels. The session will cover white box testing at the unit level using control flow analysis techniques like building control flow graphs and analyzing possible paths.
1) The document provides an overview of different test case design techniques including specification based testing, input domain testing, risk based testing, and scenario testing.
2) Specification based testing techniques discussed include analyzing specifications for gaps or contradictions, gathering additional information from developers, and using the 5W1H technique to derive test cases.
3) Input domain testing techniques like equivalence partitioning and boundary value analysis are covered to avoid redundant test cases around inputs.
4) Risk based testing involves imagining how a program could fail, assessing the likelihood and impact of failures, and designing test cases to expose potential failures.
5) Scenario testing uses real user personas and examples of how the software will be used to further
This document discusses exception handling in C++. It defines an exception as an event that occurs during program execution that disrupts normal flow, like divide by zero errors. Exception handling allows the program to maintain normal flow even after errors by catching and handling exceptions. It describes the key parts of exception handling as finding problems, throwing exceptions, catching exceptions, and handling exceptions. The document provides examples of using try, catch, and throw blocks to handle exceptions in C++ code.
MindScripts Technologies is the authorized Softwrae Testing Training institutes in Pune, providing a complete softwrae testing certification course with ISTQB certification. It provides a IBM Certified courses.
This document provides an overview of static testing techniques and how they differ from dynamic testing techniques. It defines static testing as testing that does not require executing the software, such as reviews, inspections and static analysis tools. Dynamic testing involves executing the software with test cases. The document then describes various static techniques like formal reviews, informal reviews, walkthroughs, technical reviews and inspections. It also discusses static and dynamic analysis tools. Finally, it covers cyclomatic complexity, which is a measure of how many independent paths exist in a program.
1. The document discusses various software testing concepts including objectives of testing, types of testing (static and dynamic), verification and validation, test case development, and quality assurance vs quality control.
2. Static testing involves checking code and documentation without executing code, while dynamic testing executes code to validate functionality and find defects.
3. The objectives of software testing are to find defects before release, verify software meets requirements, perform tests efficiently within budget and time constraints, and record errors to prevent future issues.
object oriented system analysis and designwekineheshete
The document discusses software testing and maintenance. It defines key testing concepts like test cases, stubs, and drivers. It also describes different types of testing like unit testing, integration testing, and system testing. It discusses techniques for each type of testing. The document also defines software maintenance and its objectives to correct faults, adapt to new requirements, improve code quality, and inspect code. It describes four main types of maintenance: corrective, adaptive, perfective, and inspection.
This document provides an overview of topics related to implementing a software system design and ensuring it works properly. It discusses documentation of the system and code, testing approaches like unit testing, integration testing, and validation testing. It also covers related tasks like installation, training users, and ongoing maintenance. The goal is to translate the design into a working software system that meets requirements and can be effectively used.
In this session you will learn:
Overview of Testing Life Cycle
Testing Methodologies
Black Box Testing
White Box Testing
Gray Box Testing
Integration Testing
System Testing
Regression Testing
User Acceptance Testing (UAT)
For more information, click here:
https://www.mindsmapped.com/courses/quality-assurance/software-testing-tutorial/
Find out more about quality assurance training and specifically about Testing concepts and manual testing. Topics covered in this session are:
Overview of Testing Life Cycle
Testing Methodologies
Black Box Testing
White Box Testing
Gray Box Testing
Integration Testing
System Testing
Regression Testing
User Acceptance Testing (UAT)
For more information, visit: https://www.mindsmapped.com/courses/quality-assurance/quality-assurance-training-learn-manual-and-automation-testing/
In this quality assurance training, you will learn Testing Concepts and Manual Testing. Topics covered in this session are:
• Overview of Testing Life Cycle
• Testing Methodologies
• Black Box Testing
• White Box Testing
• Gray Box Testing
• Integration Testing
• System Testing
• Regression Testing
• User Acceptance Testing (UAT)
For more information, visit this link: https://www.mindsmapped.com/courses/quality-assurance/software-testing-training-beginners-and-intermediate-level/
In this session you will learn:
Overview of Testing Life Cycle
Testing Methodologies
Black Box Testing
White Box Testing
Gray Box Testing
Integration Testing
System Testing
Regression Testing
User Acceptance Testing (UAT)
For more information: https://www.mindsmapped.com/courses/quality-assurance/qa-software-testing-training-for-beginners/
In this quality assurance training session, you will learn Testing Concepts and Manual Testing. Topics covered in this course are:
• Overview of Testing Life Cycle
• Testing Methodologies
• Black Box Testing
• White Box Testing
• Gray Box Testing
• Integration Testing
• System Testing
• Regression Testing
• User Acceptance Testing (UAT)
To know more, visit this link: https://www.mindsmapped.com/courses/quality-assurance/software-testing-quality-assurance-qa-training-with-hands-on-exercises/
1) The document discusses software testing principles, lifecycles, limitations and methods. It describes the different phases of software testing like requirements study, test case design, test execution, test closure and test process analysis.
2) It also discusses different levels of testing including unit testing, integration testing, system testing and acceptance testing. Unit testing checks individual program modules, integration testing verifies interface connections, system testing checks full application functionality, and acceptance testing gets customer approval.
3) The document provides objectives and features of good test cases and objectives of a software tester. It also outlines principles of testing like testing for failures, starting early, defining test plans, and testing for valid and invalid conditions.
The document discusses static testing techniques, which involve examining software work products like requirements and code manually or with tools, without executing the software. It covers topics like formal reviews, roles in reviews, types of reviews including walkthroughs, inspections and technical reviews. It also discusses using static analysis tools to check for adherence to coding standards and metrics. There are multiple choice questions at the end to test understanding of reviews and static analysis.
This document provides an overview of software testing concepts related to manual testing. It discusses key topics like software quality, software quality assurance, software quality control, requirements gathering, design, programming, integration testing, system testing, and more. The document is intended to educate readers on software testing processes and techniques.
The document provides an overview of reliability metrics, hazard analysis stages, critical systems development techniques, verification and validation processes, types of testing, software inspections, and static analysis. It discusses reliability metrics like availability, probability of failure on demand, and mean time to failure. It also outlines hazard identification, risk analysis, and fault tolerance techniques like fault recovery and fault-tolerant architectures.
In this session you will learn:
Testing Concepts and Manual Testing
Overview of Testing Life Cycle
Testing Methodologies
Dynamic Testing
Black Box Testing
White Box Testing
Gray Box Testing
Unit Testing
Integration Testing
System Testing
Regression Testing
User Acceptance Testing (UAT)
Exploratory testing is a hands-on approach where testers are involved in minimal planning and maximum test execution. The planning involves creating a test charter and objectives, while test design and execution are done in parallel without formally documenting test conditions, cases, or scripts. Some notes are taken during testing to produce a report afterwards. Use case testing identifies and executes the functional requirements of an application from start to finish using use cases. SDLC deals with software development/coding while STLC deals with validation and verification of software. A traceability matrix shows the relationship between test cases and requirements.
Integration testing is the phase in software testing in which individual software modules are combined and tested as a group. Read complete guide of integration testing types and tools here.
The document provides guidelines for software testing at United Finance Limited. It outlines the scope, purpose, types of testing including unit, integration, functional, system and acceptance testing. It describes the testing methods of automated and manual testing and the testing approaches of white box and black box testing. The document also discusses testing documentation including test plans, specifications, incident reports and progress reports. General testing principles and complementary reviews are provided.
The document provides an overview of topics related to software quality assurance including software testing strategies, project management, risk management, and maintenance. It discusses software quality assurance and defines verification and validation. It describes different testing types like unit testing, integration testing, system testing, and validation testing. It also covers ISO standards for testing, SQA plans, testing goals and attributes. Finally, it discusses testing approaches, strategies for validation testing, and the goals of system testing.
Software testing means to cut errors, reduce
maintenances and to short the cost of software development. Many
software development and testing methods are used from many
past years to improve software quality and software reliability. The
major problem arises in the field of software testing is to find the
best test case to performs testing of software. There are many kind
of testing methods used for making a best case. Teasing is a
important part of software development cycle .The process of
testing is not bounded to detection of ’error’ in software but also
enhances the surety of proper functioning and help to find out the
functional and non functional particularities .Testing activities
focuses on the overall progress of software.
Open Channel Flow: fluid flow with a free surfaceIndrajeet sahu
Open Channel Flow: This topic focuses on fluid flow with a free surface, such as in rivers, canals, and drainage ditches. Key concepts include the classification of flow types (steady vs. unsteady, uniform vs. non-uniform), hydraulic radius, flow resistance, Manning's equation, critical flow conditions, and energy and momentum principles. It also covers flow measurement techniques, gradually varied flow analysis, and the design of open channels. Understanding these principles is vital for effective water resource management and engineering applications.
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
ELS: 2.4.1 POWER ELECTRONICS Course objectives: This course will enable stude...Kuvempu University
Introduction - Applications of Power Electronics, Power Semiconductor Devices, Control Characteristics of Power Devices, types of Power Electronic Circuits. Power Transistors: Power BJTs: Steady state characteristics. Power MOSFETs: device operation, switching characteristics, IGBTs: device operation, output and transfer characteristics.
Thyristors - Introduction, Principle of Operation of SCR, Static Anode- Cathode Characteristics of SCR, Two transistor model of SCR, Gate Characteristics of SCR, Turn-ON Methods, Turn-OFF Mechanism, Turn-OFF Methods: Natural and Forced Commutation – Class A and Class B types, Gate Trigger Circuit: Resistance Firing Circuit, Resistance capacitance firing circuit.
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
Determination of Equivalent Circuit parameters and performance characteristic...pvpriya2
Includes the testing of induction motor to draw the circle diagram of induction motor with step wise procedure and calculation for the same. Also explains the working and application of Induction generator
Blood finder application project report (1).pdfKamal Acharya
Blood Finder is an emergency time app where a user can search for the blood banks as
well as the registered blood donors around Mumbai. This application also provide an
opportunity for the user of this application to become a registered donor for this user have
to enroll for the donor request from the application itself. If the admin wish to make user
a registered donor, with some of the formalities with the organization it can be done.
Specialization of this application is that the user will not have to register on sign-in for
searching the blood banks and blood donors it can be just done by installing the
application to the mobile.
The purpose of making this application is to save the user’s time for searching blood of
needed blood group during the time of the emergency.
This is an android application developed in Java and XML with the connectivity of
SQLite database. This application will provide most of basic functionality required for an
emergency time application. All the details of Blood banks and Blood donors are stored
in the database i.e. SQLite.
This application allowed the user to get all the information regarding blood banks and
blood donors such as Name, Number, Address, Blood Group, rather than searching it on
the different websites and wasting the precious time. This application is effective and
user friendly.
Accident detection system project report.pdfKamal Acharya
The Rapid growth of technology and infrastructure has made our lives easier. The
advent of technology has also increased the traffic hazards and the road accidents take place
frequently which causes huge loss of life and property because of the poor emergency facilities.
Many lives could have been saved if emergency service could get accident information and
reach in time. Our project will provide an optimum solution to this draw back. A piezo electric
sensor can be used as a crash or rollover detector of the vehicle during and after a crash. With
signals from a piezo electric sensor, a severe accident can be recognized. According to this
project when a vehicle meets with an accident immediately piezo electric sensor will detect the
signal or if a car rolls over. Then with the help of GSM module and GPS module, the location
will be sent to the emergency contact. Then after conforming the location necessary action will
be taken. If the person meets with a small accident or if there is no serious threat to anyone’s
life, then the alert message can be terminated by the driver by a switch provided in order to
avoid wasting the valuable time of the medical rescue team.
Build the Next Generation of Apps with the Einstein 1 Platform.
Rejoignez Philippe Ozil pour une session de workshops qui vous guidera à travers les détails de la plateforme Einstein 1, l'importance des données pour la création d'applications d'intelligence artificielle et les différents outils et technologies que Salesforce propose pour vous apporter tous les bénéfices de l'IA.
1. UNIT TESTING
UNIT - 2
1
Prepared By: Ravi J Khimani, CSE Department, SLTIET, Rajkot
2. CONCEPTS
First level of testing
Refers to testing program units in isolation
Commonly understood units are function, procedures or
methods
Or we can say class in OOP is a unit
A program unit is assumed to implement a well defined
function providing a certain level of abstraction to the
implementation of higher level functions.
2
3. CONCEPTS
It is only natural to test the unit before it is integrated with
other units.
Thus, a program unit is tested in isolation, that is, in a
stand-alone manner
Due to two reasons
Errors found during testing can be attributed to a specific unit
so that it can be easily fixed
During unit testing it is desirable to verify that each distinct
execution of a program unit produces the expected result
3
4. CONCEPTS
In terms of code details, a distinct execution refers
to a distinct path in the unit.
Ideally, all possible—or as much as possible—
distinct executions are to be considered during unit
testing.
This requires careful selection of input data for each
distinct execution
4
5. CONCEPTS
Unit testing has a limited scope.
Needs to verify, code works perfectly or not?
a programmer needs to test a unit as follows:
Execute every line of code. This is desirable because the
programmer needs to know what happens when a line of code is
executed. In the absence of such basic observations, surprises at a
later stage can be expensive.
Execute every predicate in the unit to evaluate them to true and
false separately.
Observe that the unit performs its intended function and ensure
that it contains no known errors.
5
6. CONCEPTS
In spite of the above tests, there is no guarantee that a satisfactorily
tested unit is functionally correct from a system wide perspective.
means that some errors in a program unit can only be found later, when
the unit is integrated with other units in the integration testing and
system testing phases.
It serves no purpose to integrate an erroneous unit with other units for
the following reasons:
(i) many of the subsequent tests will be a waste of resources
(ii) finding the root causes of failures in an integrated system is more
resource consuming.
6
7. CONCEPTS
Unit testing is performed by the programmer who writes
the program unit because the programmer is intimately
familiar with the internal details of the unit.
The objective for the programmer is to be satisfied that
the unit works as expected with no errors
Unit testing is conducted in two complementary phases:
Static unit testing
Dynamic unit testing
7
8. CONCEPTS
Static Unit Testing, programmer does not execute
Unit, instead of code is examined all possible
behavior.
Possible issues can be solved by reviewing code in
SUT.
Dynamic Unit Testing, is totally execution based.
After rounds of code reviewing, execution testing is
conducted to minimize possible runtime errors.
8
9. STATIC UNIT TESTING
It is undergo of philosophical belief of inspection and
correction.
Idea behind review is to find possible defects such that
they can not be converted to errors further.
In SUT, code review applied by two methods,
INSPECTION and WALKTHROUGH.
9
10. STATIC UNIT TESTING
Inspection: It is a step-by-step peer group review of a work
product, with each step checked against predetermined criteria.
Walkthrough: It is a review where the author leads the team
through a manual or simulated execution of the product using
predefined scenarios.
So, any of the method is a systematic approach to examine
source code in detail.
10
11. STATIC UNIT TESTING
Goal: to assess the quality of product, not to assess the quality of
process to develop the product.
It’s time consuming process
Not perfect up to the level.
The key to the success code review is Divide & Conquer.
Means having an examiner inspect small parts of the unit in isolation,
while making sure of the following:
nothing is overlooked
the correctness of all examined parts of the module implies the
correctness of the whole module.
11
12. STATIC UNIT TESTING
Must assure the each step should simple enough.
The objective of code review is to review the code, not to evaluate the
author of the code.
Therefore, code review must be planned and managed in a professional
manner.
There is a need for mutual respect, openness, trust, and sharing of
expertise in the group.
code review consists of six steps : readiness, preparation, examination,
rework, validation, and exit.
the process produces two types of documents, a change request (CR)
and a report.
12
14. STEP 1: READINESS
14
The author of the unit ensures that the unit under test is ready
for review.
A unit is said to be ready if it satisfies the following criteria:
Completeness: All the code relating to the unit to be reviewed must be available.
Minimal Functionality: The code must have been tested to some extent to make
sure that it performs its basic functionalities.
Readability: It is essential that the code is highly readable.
Complexity: There is no need to schedule a group meeting to review
straightforward code which can be easily reviewed by the programmer
Requirements and Design Documents: Relevant documents must be available to
the reviewer.
15. STEP 1: READINESS
15
People involved in review process are informed for group meeting
before two days.
Review Group involves a number of peoples with their roles,
which are as follows,
Moderator: A review meeting is chaired by the moderator. The
moderator is a trained individual who guides the pace of
the review process.
Author: This is the person who has written the code to be reviewed.
Presenter: A presenter is someone other than the author of the code. It is
the presenter who presents the author’s code in the review
meeting for the following reasons:
16. STEP 1: READINESS
16
an additional software developer will understand the work within
the software organization;
if the original programmer leaves the company with a short notice,
at least one other programmer in the company knows what is
being done;
The original programmer will have a good feeling about his or her
work, if someone else appreciates their work.
Record-keeper: The record keeper documents the problems found during
the review process and the follow-up actions suggested.
Reviewers: These are experts in the subject area of the code under
review.
Observers: These are people who want to learn about the code under
review.
17. STEP 2: PREPARATION
17
Before the meeting, each reviewer carefully reviews the work package.
Each reviewer develops the following:
List of Questions: A reviewer prepares a list of questions to be
asked, if needed, of the author to clarify issues
arising from his or her reading.
Potential CR: A reviewer may make a formal request to make a
change. These are called change requests rather
than defect reports.
These reports are not included in defect
statistics related to the product.
Suggested Improvement Opportunities:
The reviewers may suggest how to fix the problems, if
there are any
18. STEP 3: EXAMINATION
18
Includes following activities,
The author makes a presentation of the procedural logic used in the
code, the paths denoting major computations, and the dependency .
The presenter reads the code line by line.
The reviewers may raise questions if the code is seen to have defects.
Problems are not resolved in the meeting.
The record-keeper documents the change requests and the suggestions
for fixing the problems
19. STEP 3: EXAMINATION
19
Includes following activities,
The moderator ensures that the meeting remains focused on the review
process.
At the end of the meeting, a decision is taken regarding whether or not
to call another meeting to further review the code.
If the review process leads to extensive rework of the code or critical
issues are identified in the process, then another meeting is generally
convened..
20. STEP 3: EXAMINATION – CHANGE REQUEST
20
A CR includes the following details:
Give a brief description of the issue or action item.
Assign a priority level (major or minor) to a CR.
Assign a person to follow up the issue. Since a CR documents a potential
problem, there is a need for interaction between the author
Set a deadline for addressing a CR
22. STEP 4: RE-WORK
22
At the end of the meeting, the record keeper produces a summary of the
meeting that includes the following information.
A list of all the CRs, the dates by which those will be fixed, and the names of the
persons responsible for validating the CRs
A list of improvement opportunities
The minutes of the meeting (optional)
A copy of the report is distributed to all the members of the review
group.
After the meeting, the author works on the CRs to fix the problems.
The author documents the improvements made to the code in the CRs.
23. STEP 5: VALIDATION
23
The CRs are independently validated by the moderator or another
person designated for this purpose.
The validation process involves checking the modified code as
documented in the CRs and ensuring that the suggested
improvements have been implemented correctly.
The revised and final version of the outcome of the review meeting
is distributed to all the group members.
24. STEP 6: EXIT
24
It is said to be complete if all of the following actions have been taken:
Every line of code in the unit has been inspected.
If too many defects are found in a module, the module is once again reviewed
after corrections are applied by the author.
As a rule of thumb, if more than 5% of the total lines of code are thought to be
contentious, then a second review is scheduled.
The author and the reviewers reach a consensus that when corrections have
been applied the code will be potentially free of defects.
All the CRs are documented and validated by the moderator or someone else.
The author’s follow-up actions are documented.
A summary report of the meeting including the CRs is distributed to all the
members of the review group.
25. CODE REVIEW MATRICES
25
The effectiveness of static testing is limited by the ability of a
reviewer to find defects in code by visual means.
to observe its behaviours in response to a variety of inputs.
It is important to collect measurement of data relevant to a review
process.
The Review process can be evaluated, made visible to the upper
management as a testing strategy, and improved to be more
effective.
26. CODE REVIEW MATRICES
26
Collecting metrics during code review facilitates estimation of
review time and resources for future projects
The following metrics can be collected from a code review:
Number of lines of code (LOC) reviewed per hour
Number of CRs generated per thousand lines of code (KLOC)
Number of CRs generated per hour
Total number of CRs generated per project
Total number of hours spent on code review per project
27. DEFECT PREVENTION – WHAT IS?
27
It is in the best interest of the programmers in particular and the
company in general to reduce the number of CRs generated during
code review.
Because CRs - indications of potential problems - must be resolved.
Addressing CRs - spending more resources and potentially delay in
project.
Therefore, it is essential to adopt the concept of defect prevention.
28. DEFECT PREVENTION - GUIDELINES
28
These guidelines focus on incorporating suitable mechanisms into
the code:
Build internal diagnostic tools, also known as instrumentation
code, into the units
Provides information about the internal states of the units
allow programmers to realize built-in tracking and tracing
mechanisms
Instrumentation plays a passive role in dynamic unit testing
Use standard controls to detect possible occurrences of error
conditions.
29. DEFECT PREVENTION - GUIDELINES
29
Ensure that code exists for all return values, some of which may be
invalid.
Ensure that counter data fields and buffer overflow and underflow
are appropriately handled.
Provide error messages and help texts from a common source so
that changes in the text do not cause inconsistency.
Validate input data, such as the arguments, passed to a function.
Use assertions (act of stating something) to detect impossible
conditions, undefined uses of data, and undesirable program
behaviour.
30. DEFECT PREVENTION – USE OF ASSERTION
30
Assertion should be routinely used to perform the following kinds
of checks:
Ensure that preconditions are satisfied before beginning to execute a
unit.
Ensure that the expected post conditions are true while exiting from the
unit
Ensure that the invariants hold. That is, check invariant states —
conditions which are expected not to change during the execution of a
piece of code.
Leave assertions in the code. You may deactivate them in the
released version of code
Fully document the assertions that appear to be unclear.
31. DEFECT PREVENTION
31
After every major computation, reverse-compute the input(s) from
the results in the code itself. Then compare the outcome with the
actual inputs for correctness.
In systems involving message passing, buffer management is an
important internal activity.
Develop a timer routine which counts down from a preset time
until it either hits zero or is reset.
Include a loop counter within each loop. If the loop is ever
executed less than the minimum possible number of times or more
than the maximum possible number of times, then invoke an
exception handler routine.
32. DYNAMIC UNIT TESTING
32
Execution-based unit testing.
this execution differs from ordinary execution in the following way:
A unit under test is taken out of its actual execution environment.
The actual execution environment is emulated by writing more code
The outcome of such an execution is collected in a variety of ways, such as
straightforward observation on a screen, logging on files, and software
instrumentation of the code to reveal run time behaviour
The context of a unit test consists of two parts:
a caller of the unit
all the units called by that unit.
33. DYNAMIC UNIT TESTING - STRUCTURE
33
The caller unit is
known as a test
driver.
all the emulations of
the units called by
the unit under test
are called stubs
The test driver and
the stubs are
together called
scaffolding
34. DYNAMIC UNIT TESTING - STRUCTURE
34
Test Driver
A test driver is a program that invokes the unit under test.
input values received from the driver and returns a value to the driver.
The driver compares the actual outcome with the expected outcome
The test driver functions as the main unit in the execution process.
Stub
A stub is a “dummy subprogram” that replaces a unit that is called by the
unit under test.
A stub performs two tasks. First, it shows an evidence that the stub was, in
fact, called.
Second, the stub returns a precompiled value to the caller so that the unit
under test can continue its execution.
35. DYNAMIC UNIT TESTING - STRUCTURE
35
A test driver and the stubs for a unit should be reusable
and maintainable.
For each unit, there should be one dedicated test driver
and several stubs as required
the test driver should not depend on the external input
data files
Any modification to the driver to accommodate changes
in one of the units under test may have side effects in
testing the other units
36. DYNAMIC UNIT TESTING - STRUCTURE
36
The test driver should have the capability to determine the
success or failure.
the driver should also check for memory leaks and problems
in allocation and de-allocation of memory.
The test driver and stubs are tightly coupled with the unit
under test and should accompany the unit throughout its life
cycle
The low-level design document provides guidance for the
selection of input test data that are likely to uncover faults.
37. DYNAMIC UNIT TESTING – SELECTION OF DATA
37
Selection of Data Based on Following Techniques:
Control Flow Testing
Draw a control flow graph from a program unit;
Select a few control flow testing criteria;
Identify paths in the control flow graph to satisfy the selection
criteria;
Derive path predicate expressions from the selected paths;
By solving the path predicate expression for a path,
38. DYNAMIC UNIT TESTING
38
Data Flow Testing
Draw a data flow graph from a program unit;
Select a few data flow testing criteria;
Identify paths in the data flow graph to satisfy the selection criteria;
Derive path predicate expressions from the selected paths;
By solving the path predicate expression, generate values of the
inputs to the program unit that are considered as a test case to
exercise the corresponding path
39. DYNAMIC UNIT TESTING
39
Domain Testing
In control flow and data flow testing, no specific types of faults are
considered for detection.
New approach for fault detection.
In this approach, a category of faults called domain errors are defined
and then test data are selected to catch those faults.
40. DYNAMIC UNIT TESTING
40
Functional Program Testing:
Identify the input and output domains of a program
For a given input domain, select some special values and compute the
expected outcome;
For a given output domain, select some special values and compute
the input values that will cause the unit to produce those output
values;
Consider various combinations of the input values chosen above.
41. MUTATION TESTING - INTRODUCTION
41
Introduced in 1970, originally proposed by Dick Lipton.
Mutation testing is a technique that focuses on measuring the adequacy
(quality) of test data
Intention behind it to expose and locate weaknesses in test cases
Should be used to supplement traditional unit testing techniques.
What is Mutation? : “A mutation of a program is a modification of the
program created by introducing single, small, legal syntactic change in
the code.”
What is Mutant? : “A modified program so obtained is called a mutant”
42. MUTATION TESTING - INTRODUCTION
42
A mutant is said to be killed when the execution of a test case
causes it to fail and the mutant is considered to be dead.
Some mutants are equivalent to the given program.
The result of executing a mutant may be different from the
expected result.
But a test suite does not detect the failure because it does
not have the right test case.
43. MUTATION TESTING - INTRODUCTION
43
In this scenario the mutant is called killable or stubborn, that
is, the existing set of test cases is insufficient to kill it.
What is Mutation Score? : A mutation score for a set of test
cases is the percentage of non-equivalent mutants killed by
the test suite.
What is mutation adequate? : The test suite is said to be
mutation adequate if its mutation score is 100%.
44. MUTATION TESTING – ANALYSIS PROCESS
44
Mutation analysis takes two steps:
The adequacy of an existing test suite is determined to
distinguish the given program from its mutants. (non-
equivalent mutants that could not be identified are
Stubborn)
New test cases are added to the existing test suite to kill
the stubborn mutants.
47. MUTATION TESTING – EXAMPLE ANALYSIS
If we calculate the mutation score, we see that we created four
mutants, and two of them were killed.
Means the mutation score is 50%, assuming that mutants 1 and 3 are
non-equivalent.
The score is found to be low. It is low because we assumed that
mutants 1 and 3 are non-equivalent to the original program.
We have to show that either mutants 1 and 3 are equivalent mutants or
those are killable. If those are killable, we need to add new test cases to
kill these two mutants.
47
48. MUTATION TESTING – TWO ASSUMPTION
Competent Programmer Hypothesis:
This assumption states that programmers are generally competent, and
they do not create “random” programs.
Therefore, we can assume that for a given problem a programmer will
create a correct program except for simple errors.
The mutants to be considered are the ones falling within a small deviation
from the original program.
Such mutants are obtained by systematically and mechanically applying a
set of transformations, called mutation operators.
48
49. MUTATION TESTING – TWO ASSUMPTION
Coupling Effect:
The assumption can be restated as complex faults are coupled to
simple faults in such a way that a test suite detecting all simple
faults in a program will detect most of the complex faults.
If the software contains a fault, there will usually be a set of mutants
that can only be killed by a test case that also detect that fault.
49
50. DEBUGGING
The process of determining the cause of a failure is known as
debugging.
Debugging occurs as a consequence of a test revealing a failure.
Myers proposed three approaches to debugging:
Brute Force
Cause Elimination
Back Tracking
software engineers notice newly discovered faults while
debugging . The best way to deal with such faults is to file CR.
50
51. DEBUGGING – BRUTE FORCE
The brute-force approach to debugging is preferred by many programmers
Here, “let the computer find the error” philosophy is used.
Good debugging tool makes these print statements redundant.
A dynamic debugger allows the software engineer to navigate by stepping
through the code, observe which paths have executed, and observe how
values of variables change during the controlled execution.
Instrumentation code can be built into the source code to detect problems and
to log intermediate values of variables for problem diagnosis.
The log and memory dump are reviewed to understand what happened and
how the failure occurred
51
52. DEBUGGING – CAUSE ELIMINATION
The cause elimination approach can be best described as a process involving
induction and deduction.
In the induction part,
first, all data related to the failure are collected.
Next, the collected data are organized in terms of behaviour and symptoms, and
their relationship is studied to find a pattern to isolate the causes.
In the deduction part,
a list of all possible causes is developed in order of their likelihoods, and tests are
conducted to eliminate or substantiate each cause in decreasing order of their
likelihoods.
If the initial tests indicate that a particular hypothesis shows promise, test data
are refined in an attempt to isolate the problem as needed.
52
53. DEBUGGING – BACKTRACKING
the programmer starts at a point in the code where a failure was observed and
traces back the execution to the point where it occurred.
This technique is frequently used by programmers, and this is useful in small
programs.
the probability of tracing back to the fault decreases as the program size
increases, because the number of potential backward paths may become too
large.
53
54. DEBUGGING [CONT…]
Debugging is usually a time consuming and error-prone process.
For Given a symptom of a problem, the purpose is to isolate and determine its
specific cause. It’s done by the author itself.
The following heuristic may be followed to isolate and correct it:
Reproduce the symptom(s).
Formulate some likely hypotheses for the cause of the problem
Develop a test scenario for each hypothesis to be proved or disproved
Prioritize the execution of test cases
Execute the test cases in order to find the cause of a symptom
Fix the problem.
Document the changes which have been made.
54
55. TOOLS FOR UNIT TESTING
Other kinds of tools that facilitate effective unit testing are as follows:
Code Auditor:
check the quality of software
detects violations of programming, naming, and style guidelines
suggest improvements to the structure and style of the source code.
Bound Checker:
Check for accidental writes into the instruction areas of memory or to any other
memory location outside the data storage area of the application
Fills unused memory space with a signature pattern
issue diagnostic messages when boundary violations on data items occur
55
56. TOOLS FOR UNIT TESTING
Documenters:
read source code and automatically generate descriptions and caller/callee tree
diagram or data model from the source code
Interactive Debuggers:
assist software developers in implementing different debugging approaches .
have the trace-back and breakpoint capabilities for dynamic programming
Breakpoint debuggers are based on deductive logic.
omniscient debugger with no deduction.
56
57. TOOLS FOR UNIT TESTING
In-Circuit Emulators:
Commonly known as ICE.
Provides a high-speed Ethernet connection between a host debugger and a target
microprocessor,
Enabling developers to perform common source-level debugging activities.
Memory Leak Detectors:
test the allocation of memory to an application which requests for memory, but
fails to de-allocate.
Identifies faults like, Illegal Reads, un-initialized memory reading, dynamic memory
overwrites, before time perform reading operations.
Watches on Heap and keeps the track of Heap allocation in application.
57
58. TOOLS FOR UNIT TESTING
Static Code (Path) Analyzer
identify paths to test, based on the structure of the code
dependent on source language and require the source code to be recompiled with
the tool.
Software Inspection Support:
Helps schedule group inspections.
Provide status of items reviewed and follow-up actions and distribute the reports
of problem resolution.
can be integrated with other tools, like static code analyzer.
58
59. TOOLS FOR UNIT TESTING
Test Coverage Analyzer:
measure internal test coverage, in terms of the control structure of the test object,
and report the coverage metric
track and report what paths were exercised during dynamic unit testing.
to identify parts of source code that were never touched by any dynamic unit test
Test Data Generator:
assist programmers in selecting test data that cause a program to behave in a
desired manner.
Can Generate, test input data from source code, from description and
characteristics which is fed into tool.
Generate equivalent classes and values to the boundaries.
59
60. TOOLS FOR UNIT TESTING
Test Harness:
supports the execution of dynamic unit tests by making it almost painless to
- install the unit under test in a test environment,
- drive the unit under test with input data in the expected input format,
- generate stubs to emulate the behaviour of subordinate modules,
- capture the actual outcome as generated by the unit under test and log
Performance Monitors:
The timing characteristics of software components can be monitored and
evaluated by these tools
Evaluate the performance characteristics of the system, such as delay and
throughput
60
61. TOOLS FOR UNIT TESTING
Network Analyzers:
Network operating systems such as software that run on routers, switches, and
client/server systems are tested by network analyzers.
ability to analyze the traffic and identify problem areas.
Simulators and Emulators:
To replace the real software and hardware that are currently not available
are used for training, safety, and economy reasons.
Traffic Generators:
Large volumes of data needed to stress the interfaces and the integrated system
are generated by traffic generators.
61
62. TOOLS FOR UNIT TESTING
Version Control:
A version control system provides functionalities to store a sequence of revisions of
the software and associated information files under development.
A system release is a collection of the associated files from a version control tool
perspective.
These files may contain source code, compiled code, documentation, and
environment information, such as version of the tool used to write the software.
The characteristics of the version control and configuration management tools are
as follows:
Access Control Cross Referencing
Tracking of Modification Release Generations
System Version Management Archiving
62