Software Engg Unit-3 Testing Notes
Software Engg Unit-3 Testing Notes
Sometimes due to certain factors such as Lack of resources or not following proper steps Fault
occurs in software which means that the logic was not incorporated to handle the errors in the
application. This is an undesirable situation, but it mainly happens due to invalid documented steps
or a lack of data definitions.
It is an unintended behavior by an application program.
It causes a warning in the program.
If a fault is left untreated it may lead to failure in the working of the deployed code.
A minor fault in some cases may lead to high-end error.
There are several ways to prevent faults like adopting programming techniques, development
methodologies, peer review, and code analysis.
What is a Failure?
Failure is the accumulation of several defects that ultimately lead to Software failure and results in
the loss of information in critical modules thereby making the system unresponsive.
Failure is detected by end-users once they face a particular issue in the software.
Failure can happen due to human errors or can also be caused intentionally in the system by an
individual.
It is a term that comes after the production stage of the software.
It can be identified in the application when the defective part is executed.
A simple diagram depicting Bug vs Defect vs Fault vs Failure:
Boundary-Value Boundary Value Technique is used to test boundary values, boundary values are those that contain
Technique the upper and lower limit of a variable. It tests, while entering boundary value whether the software
is producing correct output or not.
State-Transition State Transition Technique is used to capture the behaviour of the software application when
Technique different input values are given to the same function. This applies to those types of applications that
provide the specific number of attempts to access the application.
All-pair-Testing All-pair testing Technique is used to test all the possible discrete combinations of values. This
Technique combinational method is used for testing the application that uses checkbox input, radio button
input, list box, text box, etc.
Cause-Effect Cause-Effect Technique underlines the relationship between a given result and all the factors
Technique affecting the result. It is based on a collection of requirements.
Equivalence Equivalence partitioning is a technique of software testing in which input data divided into
Partitioning partitions of valid and invalid values, and it is mandatory that all partitions must exhibit the same
Technique behaviour.
Error-Guessing Error guessing is a technique in which there is no specific method for identifying the error. It is
Technique based on the experience of the test analyst, where the tester uses the experience to guess the
problematic areas of the software.
Use-Case Use case Technique used to identify the test cases from the beginning to the end of the system as per
Technique the usage of the system. By using this technique, the test team creates a test scenario that can
exercise the entire software based on the functionality of each function from start to end.
White box testing techniques analyze the internal structures the used data structures,
internal design, code structure, and the working of the software rather than just the
functionality as in black box testing. It is also called glass box testing or clear box
testing or structural testing. White Box Testing is also known as transparent testing or
open box testing.
White box testing is a software testing technique that involves testing the internal
structure and workings of a software application. The tester has access to the source
code and uses this knowledge to design test cases that can verify the correctness of the
software at the code level.
White box testing is also known as structural testing or code-based testing, and it is
used to test the software’s internal logic, flow, and structure. The tester creates test
cases to examine the code paths and logic flows to ensure they meet the specified
requirements.
6. Unit testing: White box testing is also used for unit testing, which involves testing individual
units of code to ensure that they are working correctly.
o Once all the components or modules are working independently, then we need
to check the data flow between the dependent modules is known
as integration testing.
Integration Testing Techniques
Any testing technique (Blackbox, Whitebox, and Greybox) can be used for
Integration Testing; some are listed below:
Black Box Testing
o State Transition technique
o Decision Table Technique
o Boundary Value Analysis
o All-pairs Testing . etc
White Box Testing
o Data flow testing
o Control Flow Testing
o Branch Coverage Testing
o Decision Coverage Testing
Types of Integration Testing
Integration testing can be classified into two parts:
o Incremental integration testing
o Non-incremental integration testing
Advantages
o Identification of defect is easy.
o Do not need to wait for the development of all the modules as it saves time.
Disadvantages
o Critical modules are tested last due to which the defects can occur.
o There is no possibility of an early prototype.
System Testing
System Testing is a type of software testing that is performed on a complete
integrated system to evaluate the compliance of the system with the
corresponding requirements. In system testing, integration testing passed
components are taken as input.
The goal of integration testing is to detect any irregularity between the units
that are integrated together. System testing detects defects within both the
integrated units and the whole system.
The result of system testing is the observed behavior of a component or a
system when it is tested.
System Testing is carried out on the whole system in the context of either
system requirement specifications or functional requirement specifications or
in the context of both.
System testing tests the design and behavior of the system and also the
expectations of the customer.
System Testing Process: System Testing is performed in the following steps:
Test Environment Setup : Create testing environment for the better quality testing.
Create Test Case: Generate test case for the testing process.
Create Test Data: Generate the data that is to be tested.
Execute Test Case: After the generation of the test case and the test data, test cases are executed.
Defect Reporting: Defects in the system are detected.
Regression Testing: It is carried out to test the side effects of the testing process.
Log Defects: Defects are fixed in this step.
Retest: If the test is not successful then again test is performed.
1. JMeter
2. Gallen Framework
3. Selenium
This testing is time consuming process than another testing techniques since it checks
the entire product or software.
The cost for the testing will be high since it covers the testing of entire software.
It needs good debugging tool otherwise the hidden errors will not be found.
Alpha Testing
Alpha Testing is a type of software testing performed to identify bugs before releasing the
product to real users or to the public. Alpha Testing is one of the user acceptance tests. It is
the first stage of software testing, during which the internal development team tests the
program before making it available to clients or people outside the company.
Beta Testing
Beta Testing is performed by real users of the software application in a real environment.
Beta testing is one type of User Acceptance Testing. A pre-release version of the product is
made available for testing to a chosen set of external users or customers during the second
phase of software testing.
Acceptance Testing –
Acceptance Testing is a method of software testing where a system is tested for acceptability.
The major aim of this test is to evaluate the compliance of the system with the business
requirements and assess whether it is acceptable for delivery or not.
Acceptance Testing is the last phase of software testing performed after System Testing and
before making the system available for actual use.
Software Maintenance
Software Maintenance refers to the process of modifying and updating a software system
after it has been delivered to the customer. It is a critical part of the software development life
cycle (SDLC) and is necessary to ensure that the software continues to meet the needs of the
users over time.
Software Reverse Engineering is the process of recovering the design and the requirements
specification of a product from an analysis of its code. Reverse Engineering is becoming
important, since several existing software products, lack proper documentation, are highly
unstructured, or their structure has degraded through a series of maintenance efforts.