0% found this document useful (0 votes)
14 views

Software Testing

Uploaded by

www.sungsam007
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Software Testing

Uploaded by

www.sungsam007
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

Department Of Software Engineering

SE-113 (Introduction to Software Engineering)


Course Teacher: Debabrata Mallick (DM)

Topic: Software Testing


Software Testing
Software Testing Help to reduce the risk of problem occurring.
Software testing is a process of identifying the correctness of software by considering its all attributes (Reliability, Scalability,
Portability, Re-usability, Usability) and evaluating the execution of software components to find the software bugs or errors or defects.

Error, Fault and Failure


● A programmer makes an error (mistake).
● Error results in a defect (fault, bug).
● A failure occurs when a faulty piece of code is executed.
Validation & Verification
● Validation: Are we building the right software?
● Verification: Are we building the product right?
● The aim of verification is to check that the software must be
stated functional and non-functional requirements.
Verification Validation
This is process of deciding that the product on particular step of the software This is process of deciding that the valuation of the software at the end of the
development meets the expected need. process is as per the actual need.

Verification includes valuations in terms of plan, code, need and quality. Validation includes actual test results and use of software when verification
Checklist and inspection are part of it. process gets completed.

Verification decides that result of one phase of development confirms the ok Validation decides that developed product meets required needs.
status of previous phase.
Software Testing
Testing vs Debugging
● Debugging: The process of finding, analyzing and removing the causes of failure.
● Testing is a quality assurance activities
Software Testing
Manual testing

The process of checking the functionality of an application as per the customer needs without taking
any help of automation tools is known as manual testing.
While performing the manual testing on any application, we do not need any specific knowledge of any testing tool, rather than
have a proper understanding of the product so we can easily prepare the test document.

Manual testing can be further divided into three types of testing, which are as follows:

○ White box testing


○ Black box testing
○ Gray box testing

Automation testing

Automation testing is a process of converting any manual test cases into the test scripts with the
help of automation tools, or any programming language is known as automation testing.
With the help of automation testing, we can enhance the speed of our test execution because here, we do not require any
human efforts. We need to write a test script and execute those scripts.
Software Testing
White-box testing

● The white box testing is done by Developer, where they check every line of a code before giving
it to the Test Engineer.
○ Since the code is visible for the Developer during the testing, that's why it is also known as White box
testing.

Black box testing

● The black box testing is done by the Test Engineer, where they can check the functionality of
an application or the software according to the customer /client's needs.

Gray Box testing

● Gray box testing is a combination of white box and Black box testing. It can be performed by a
person who knew both coding and testing.
○ And if the single person performs white box, as well as black-box testing for the
application, is known as Gray box testing.
White box testing Black box testing Grey box testing
Access to internal structure, code, No access to internal structure, Partial access to internal structure, code,
Knowledge
and implementation details code, or implementation details or implementation details

End user's perspective, such as


Internal workings of the system, such Combination of testing from an internal
Testing focus usability, functionality, and
as code coverage and architecture and end user's perspective
compatibility

Test cases designed based on Test cases designed based on Test cases designed based on partial
Test design knowledge of the system's internal functional requirements and use knowledge of the system's internal
structure and behavior cases workings and end user's perspective

Useful for evaluating the Useful for testing complex systems that
Useful for detecting defects, bugs,
system's usability, functionality, require a deeper understanding of the
Applicability and vulnerabilities that are hidden
and compatibility with other internal workings while also testing
within the code
systems from an end-user perspective

Can provide thorough test coverage Can simulate real-world usage Can detect defects that are difficult to
Advantages
and identify hidden defects and evaluate system usability find with black box testing alone

May require specialized knowledge


May miss defects that are hidden May not provide as much test coverage
Disadvantages and access to the system's internal
within the code as white box testing
workings
Software Testing
Functional testing is a type of software testing that evaluates whether a software
system or application is functioning correctly and performing the functions it was
designed to perform.
● The main objective of functional testing is to ensure that the software system meets the
specified functional requirements and operates according to its intended purpose.

Some common types of functional testing include:

● Unit testing: testing individual units or components of the software system in isolation
● Integration testing: testing the integration and interaction between different components of
the software system
● System testing: testing the entire system to ensure it meets the specified functional
requirements
● Acceptance testing: testing the software system to ensure it meets the user's requirements
and expectations.
Software Testing
Non-functional testing is a type of software testing that evaluates how well a software system
performs non-functional requirements such as performance, reliability, scalability, usability, security,
and compatibility.
● Unlike functional testing, which focuses on the functional requirements of the system, non-functional testing evaluates how
well the system meets other requirements that may not be directly related to its primary functions.

Examples of non-functional testing include:

● Performance testing: testing the system's performance under different conditions to ensure it meets performance
requirements such as response time, throughput, and resource usage.
● Security testing: testing the system's security features to ensure it meets security requirements such as confidentiality,
integrity, and availability.
● Usability testing: testing the system's usability and user experience to ensure it meets usability requirements such as ease of
use and user satisfaction.
● Compatibility testing: testing the system's compatibility with different hardware, software, and operating systems to ensure it
meets compatibility requirements.
● Reliability testing: testing the system's reliability and ability to perform under different conditions to ensure it meets reliability
requirements such as availability and fault tolerance.

Non-functional testing can be performed at different stages of the software development life cycle, such as during integration
testing, system testing, and acceptance testing. The goal of non-functional testing is to ensure that the software system not only
meets its functional requirements but also meets other non-functional requirements that are important for its success.
Functional Testing Non-Functional Testing
Evaluates whether the system meets non-functional requirements such
Evaluates whether the system meets the functional
Objective as performance, reliability, scalability, usability, security, and
requirements and performs the intended functions
compatibility

Focuses on the features, functions, and behavior of the


Focuses on the non-functional aspects of the software system such as
Focus software system based on the functional requirements
its performance, reliability, usability, security, and compatibility
and specifications

Unit testing, integration testing, system testing, Performance testing, security testing, usability testing, compatibility
Examples
acceptance testing testing, reliability testing

Can be performed using manual or automated testing Usually requires specialized tools and frameworks for testing
Tools
tools non-functional aspects of the system

Useful for ensuring that the software system works Useful for ensuring that the software system meets non-functional
Applicability
correctly and performs the intended functions requirements that are critical for its success

Can be performed at different stages of the software Usually performed during the later stages of the software development
Testing
development life cycle such as unit testing, integration life cycle such as integration testing, system testing, and acceptance
stages testing, system testing, and acceptance testing testing

Response time, throughput, resource usage, error rates, security


Examples of
Functional coverage, requirement coverage vulnerabilities, user satisfaction, compatibility, availability, and fault
Metrics tolerance.
Software Testing - Boundary Value Testing
Boundary value analysis is one of the widely used case design technique for black box testing.
It is used to test boundary values because the input values near the boundary have higher chances
of error.
Whenever we do the testing by boundary value analysis, the tester focuses on, while entering
boundary value whether the software is producing correct output or not.
The black box testing - techniques are helpful for detecting any errors or threats that happened at
the boundary values of valid or invalid partitions rather than focusing on the center of the input data.
Software Testing - Boundary Value Testing
Software Testing - Boundary Value Testing
Software Testing - Decision Table
Decision table technique is one of the widely used case design techniques for black box
testing.
● This is a systematic approach where various input combinations and their respective system
behavior are captured in a tabular form.That's why it is also known as a cause-effect table.
● Decision table technique is appropriate for the functions that have a logical relationship
between two and more than two inputs.
○ Document the complicated logic
○ Help to test all combinations of conditions
○ Contains condition and action
Software Testing - Decision Table
Software Testing - Decision Table
Software Testing - Decision Table
Software Testing - Cyclomatic Complexity
Cyclomatic Complexity in Software Testing is a testing metric used for measuring the complexity of a
software program.
● It is a quantitative measure of independent paths in the source code of a software program.
● Cyclomatic complexity can be calculated by using control flow graphs or with respect to functions,
modules, methods or classes within a software program.
Software Testing - Cyclomatic Complexity

● V(G) = E - N + 2
=9–7+2=4
● V(G) = P + 1
= 3 + 1 = 4 (Condition nodes are 1,2 and 3 nodes)
Software Testing - Cyclomatic Complexity - Few Example

You might also like