0% found this document useful (0 votes)
5 views27 pages

Software Testing

This document outlines the principles, types, and processes involved in software testing, including definitions of testing, verification, validation, and debugging. It details various testing methods such as unit, integration, system, and acceptance testing, along with their advantages and disadvantages. Additionally, it emphasizes the importance of test planning, execution, reporting, and real-time testing to ensure software quality and reliability.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views27 pages

Software Testing

This document outlines the principles, types, and processes involved in software testing, including definitions of testing, verification, validation, and debugging. It details various testing methods such as unit, integration, system, and acceptance testing, along with their advantages and disadvantages. Additionally, it emphasizes the importance of test planning, execution, reporting, and real-time testing to ensure software quality and reliability.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 27

Software Testing

Objective
The objective of this chapter is to show the

• How to define Software Testing Principles


• What are the types of Software Tests
• What is Test Planning
• Test Execution and Reporting
• Real-Time Testing
How to define Software Testing Principles
• Testing
The execution of a program to find its faults
• Verification
The process of proving the programs correctness.
• Validation
The process of finding errors by executing the program in a real
environment
• Debugging
Diagnosing the error and correct it
Software Testing Principles
• All the tests should meet the customer requirements
• To make our software testing should be performed by a third party.
Exhaustive testing is not possible.
• As we need the optimal amount of testing based on the risk assessment
of the application.
• All the tests to be conducted should be planned before implementing
it .
• It follows the Pareto rule(80/20 rule) which states that 80% of errors
come from 20% of program components.
Start testing with small parts and extend it to large parts.
Types of Software Tests

• Unit Testing
• Integration Testing
• System Testing
• Functional Testing
• Acceptance Testing
• Smoke Testing
• Regression Testing
• Performance Testing
• Security Testing
• User Acceptance Testing
Unit Testing (White Box) continued…
• Unit testing is a method of testing individual units or components of a
software application.
• It is typically done by developers and is used to ensure that the
individual units of the software are working as intended.
• Unit tests are usually automated and are designed to test specific parts
of the code, such as a particular function or method.
• Unit testing is done at the lowest level of the software development
process, where individual units of code are tested in isolation.
Unit Testing (White Box)
• It helps to identify bugs early in the development process, before they
become more difficult and expensive to fix.
• It helps to ensure that changes to the code do not introduce new bugs.
• It makes the code more modular and easier to understand and maintain.
• It helps to improve the overall quality and reliability of the software.

• Disadvantage:
• The tester may be biased by previous experience. And the test value
may not cover all possible values.
Function Testing (Black Box)
Black box testing is a type of functional testing that involves testing the
functionality of an application or system without knowing anything
about the internals of the code. In other words, you test the application
as if you were a user who doesn't know anything about how it works.
• Designed to exercise the to its external specifications
• Testers not biased by knowledge of the program’s design.
• Disadvantages:
• The need for explicitly stated requirements
• Only cover a small portion of the possible test conditions.
Integration Testing
• Integration testing is a method of testing how different units or
components of a software application interact with each other.
• It is used to identify and resolve any issues that may arise when different
units of the software are combined.
• Integration testing is typically done after unit testing and before
functional testing, and is used to verify that the different units of the
software work together as intended.
• Integration testing types:
• Top-down Integration Test
• Bottom-up Integration Test
Top-down Integration Test
• It starts with the highest level modules and differentiate them with
lower-level modules.
• Advantages:
• No test drivers needed
• Interface errors are discovered early
• Modular features aid debugging
• Disadvantages: Test stubs are needed
• Errors in critical modules at low levels are found late.
Top-down Testing

T1
T1 A

T2
T2 B

B T3
T3
C

T4
Bottom-up Integration Test
• It starts with the lowest-level modules and integrates them with
higher-level modules.
• Advantages: No test stubs are needed
Errors in critical modules are found early

• Disadvantages: Test drivers are needed


Interface errors are discovered late
Bottom-up testing
Test Test Test
Drivers Drivers Drivers

Level N Level N Level N

Test Test
Drivers Drivers

Level N-1 Level N-1


Advantages…
• It helps to identify and resolve issues that may arise when different units of
the software are combined.
• It helps to ensure that the different units of the software work together as
intended.
• It helps to improve the overall reliability and stability of the software.
• It’s important to keep in mind that Integration testing is essential for complex
systems where different components are integrated together.
• As with unit testing, integration testing is only one aspect of software testing
and it should be used in combination with other types of testing such as unit
testing, functional testing, and acceptance testing to ensure that the software
meets the needs of its users.
System Testing
• 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.
• The software is tested such that it works fine for the different
operating systems.
• It is covered under the black box testing technique. In this, we just
focus on the required input and output without focusing on internal
working.
In this, we have security testing, recovery testing, stress testing, and
performance testing
• Example: This includes functional as well as non-functional testing
Alpha testing
• This is a type of validation testing. It is a type of acceptance testing which is
done before the product is released to customers. It is typically done by QA
people.
Example:
• When software testing is performed internally within the organization
• Beta Testing
• The beta test is conducted at one or more customer sites by the end-user of
the software. This version is released for a limited number of users for testing
in a real-time environment.
• Example:
• When software testing is performed for the limited number of people
Smoke testing

• This test is done to make sure that the software under testing is ready
or stable for further testing
It is called a smoke test as the testing of an initial pass is done to check
if it did not catch the fire or smoke in the initial switch on.
Example:
• If the project has two modules so before going to module 2 make sure
that module 1 is working properly
Regression testing
• Regression testing is a method of testing that is used to ensure that
changes made to the software do not introduce new bugs or cause
existing functionality to break.
• It is typically done after changes have been made to the code, such as
bug fixes or new features, and is used to verify that the software still
works as intended.
Regression testing continued…
• Regression testing can be performed in different ways, such as:
• Retesting: This involves testing the entire application or specific
functionality that was affected by the changes.
• Re–execution: This involves running a previously executed test suite
to ensure that the changes did not break any existing functionality.
• Comparison: This involves comparing the current version of the
software with a previous version to ensure that the changes did not
break any existing functionality.
Advantages
• The main advantages of regression testing include:
• It helps to ensure that changes made to the software do not introduce new bugs
or cause existing functionality to break.
• It helps to ensure that the software continues to work as intended after changes
have been made.
• It helps to improve the overall reliability and stability of the software.
• It’s important to keep in mind that regression testing is an ongoing process that
should be done throughout the software development
• lifecycle to ensure that the software continues to work as intended. It should
be automated as much as possible to save time and resources. Additionally, it’s
important to have a well-defined regression test suite that covers
Performance Testing
• It is designed to test the run-time performance of software within the
context of an integrated system.
• It is used to test the speed and effectiveness of the program.
• It is also called load testing. In it we check, what is the performance of
the system in the given load.
• Example:
• Checking several processor cycles.
Object-Oriented Testing

• This testing is a combination of various testing techniques that help to


verify and validate object-oriented software. This testing is done in the
following manner:
• Testing of Requirements,
• Design and Analysis of Testing,
• Testing of Code,
• Integration testing,
• System testing,
• User Testing.
Acceptance Testing

• Acceptance testing is done by the customers to check whether the


delivered products perform the desired tasks or not, as stated in
requirements.
Test Execution & Reporting
• Testing should be treated like an experiment.

• Testing require that all anomalous behavior be noted and investigated.

• Big companies keep a special library with all copies of test reports,
incident forms, and test plans
Real-Time Testing
• Real-Time testing is necessary because the deployment system is
usually more complicate than development system
• Rules apply for testing real time system
• Evaluate possible deadlocks, thrashing to special timing conditions
• Use tests to simulate hardware faults.
• Use hardware simulation to stress the software design.
• Design ways to simulate modules missing in the development system.
Advantages:
• Advantages of software testing:
• Improved software quality and reliability
• Early identification and fixing of defects
• Improved customer satisfaction
• Increased stakeholder confidence
• Reduced maintenance costs
Disadvantages
• Disadvantages of software testing:
• Time-consuming and adds to project cost
• Can slow down development process
• Not all defects can be found
• Can be difficult to fully test complex systems
• Potential for human error during testing process

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy