Software Testing
Software Testing
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:
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.
● 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 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
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
● 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.
● 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
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
● 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