CH02. L02. Test-types
Summary
TLDRThis script delves into the multifaceted world of software testing, highlighting the importance of identifying testing objectives to select the appropriate testing type. It outlines four key types: Functional testing, which is 'Black box testing' ensuring software meets requirements; Non-functional testing, measuring performance and usability; Structural testing, the 'White box testing' focusing on internal logic; and Testing Related to Changes, including 'Confirmation Testing' and 'Regression Testing' to ensure bug fixes don't impact other modules. The script emphasizes assessing customer needs, security, interoperability, and the software's ability to handle load and maintain reliability.
Takeaways
- π The testing process is divided into activities with varying objectives, from testing individual software components to the entire software system.
- π Identifying the testing objective is crucial to determine the appropriate type of testing to be conducted.
- π οΈ There are four main types of testing: Functional, Non-functional, Structural, and Testing Related to Changes.
- π Functional testing, often called 'Black box testing', focuses on the software's external behavior and whether it meets the specified requirements.
- π Security testing within functional testing checks for vulnerabilities that could be exploited by hackers, protecting data and information.
- π Interoperability testing ensures that the software can interact with different components and systems outside of itself.
- π Suitability testing assesses if the software's functionality aligns with the business needs as per the requirements.
- π’ Accurateness testing verifies that the software's output matches the expected results.
- βοΈ Non-functional testing evaluates 'How the system works?' by measuring characteristics like performance, load, stress, usability, maintainability, reliability, and portability.
- π·ββοΈ Structural testing, known as 'White box testing', examines the internal logic of the software's source code to ensure correctness.
- π Confirmation Testing is conducted after developers fix bugs to ensure the issue has been resolved, followed by Regression Testing to check for any new issues caused by the fix.
Q & A
What are the main objectives of the testing process?
-The main objectives of the testing process vary from testing a specific part of the software to testing the entire software, ultimately to ensure that the software meets its intended requirements and functions correctly.
What is Functional Testing and what does it focus on?
-Functional Testing is a type of testing that focuses on testing all the software functionalities that were previously identified in the requirements. It answers the question 'what the system does?' and ensures that the software behaves as specified in the requirements.
How does Functional Testing relate to the calculator program example mentioned in the script?
-In the calculator program example, Functional Testing would help to test whether the calculator accepts user input, performs the addition correctly, and provides the correct result. It ensures that the software meets the specified requirements for functionality.
What are the different types of Functional Testing mentioned in the script?
-The script mentions four types of Functional Testing: Security Testing, Interoperability Testing, Suitability Testing, and Accurateness Testing. Each type focuses on different aspects such as security vulnerabilities, compatibility with other systems, adherence to requirements, and correctness of results.
Why is it important to consider all testing levels for Functional Testing?
-It is important to consider all testing levels (Unit, Integration, System) for Functional Testing because it ensures that the software's external behavior is tested consistently at each stage of development, helping to catch and fix issues early in the process.
What is the difference between Black Box Testing and White Box Testing?
-Black Box Testing, also known as Functional Testing, focuses on the software's external behavior without considering the internal structure. It tests the software based on its specifications. White Box Testing, on the other hand, focuses on the internal structure and logic of the software, examining the source code to ensure it works correctly.
What does Non-functional Testing measure in software?
-Non-functional Testing measures the software's characteristics such as performance, load, stress, usability, maintainability, reliability, and portability. It answers the question 'How does the system work?' and ensures that the software operates efficiently under various conditions.
How does the script define Suitability Testing?
-Suitability Testing is a type of Functional Testing that assesses whether the software's functionality was designed according to the requirements. It checks if the software can perform the tasks it was intended to do, such as accepting user input in the calculator example.
What is the purpose of Confirmation Testing and Regression Testing?
-Confirmation Testing is conducted to ensure that a bug has been fixed after the developer's intervention. Regression Testing follows to check that the fix has not introduced new issues or affected other parts of the software, ensuring that the changes do not negatively impact previously tested modules.
How does the script describe the importance of assessing customer needs in testing?
-The script emphasizes that one of the key aspects of testing is to assess whether the customer's needs have been fulfilled and succeeded. This involves checking that the software meets the business and technical requirements specified by the customer.
Outlines
π Functional Testing Overview
The first paragraph discusses the concept of functional testing, which is focused on evaluating the software's compliance with its specified requirements. It emphasizes the importance of identifying the testing objective to select the appropriate testing type. Functional testing is described as a 'black box' approach, where the software's external behavior is tested without concern for its internal structure. The paragraph outlines different types of functional testing, including security testing, interoperability testing, suitability testing, and accuracy testing. Each type is briefly explained, with examples provided, such as testing a calculator program's addition function for user input acceptance, addition process, and correct result output. The paragraph also highlights the need to assess whether the software meets customer needs and expectations.
π Non-functional and Structural Testing Insights
The second paragraph delves into non-functional testing, which is concerned with how the system operates rather than what it does. It covers aspects such as performance, load, stress, usability, maintainability, reliability, and portability. Non-functional testing measures software characteristics, like the time taken to load a website or the system's ability to handle a certain number of users. The paragraph also touches on structural testing, which is a 'white box' approach that examines the internal logic of the program, particularly the source code. Structural testing is crucial after black box testing and can be applied at various testing levels, including component testing and system integration testing. The concept of code coverage is introduced, explaining how it measures the extent to which the code has been tested. The paragraph concludes with a discussion on testing related to changes, specifically confirmation testing and regression testing, which are conducted to ensure that bug fixes and software changes do not introduce new issues.
Mindmap
Keywords
π‘Testing Process
π‘Functional Testing
π‘Black Box Testing
π‘Security Testing
π‘Interoperability Testing
π‘Suitability Testing
π‘Accurateness
π‘Non-functional Testing
π‘Performance Testing
π‘Load Testing
π‘Regression Testing
Highlights
Testing process is divided into activities with varying objectives, from testing a software partition to the entire software.
Identification of testing objectives is crucial to determine the appropriate testing type.
There are four main types of testing: Functional, Non-functional, Structural, and Testing Related to Changes.
Functional testing focuses on what the system does, ensuring all functionalities meet requirements.
Functional testing is applicable at all testing levels: Unit, Integration, and System.
Functional testing is also known as 'Black box testing', focusing on external behavior without concern for internal structure.
Different types of functional testing include Security, Interoperability, Suitability, and Accurateness testing.
Security testing checks for vulnerabilities that could be exploited by hackers, crucial for online banking security.
Interoperability testing ensures software can interact with different components outside of its system.
Suitability testing verifies if the software functions are designed according to requirements.
Accurateness testing checks if program results match expected outcomes.
Non-functional testing answers 'How does the system work?' by measuring software characteristics like performance and load.
Performance testing measures the time taken for a website to load after URL entry and server response.
Load testing assesses the system's ability to handle a specific number of users simultaneously.
Stress testing evaluates the system's ability to bear an overload of its normal user capacity.
Usability testing determines if the program is easy for end-users, Maintainability checks if modifications or additions are feasible.
Reliability testing measures the software's ability to work without failure during a specific period in real environments.
Portability testing checks if software can be moved between hardware or software platforms efficiently.
Structural testing, or 'White box testing', focuses on the internal logic of the program's source code.
Code coverage techniques in structural testing help determine the percentage of code tested and identify potential issues.
Confirmation Testing is conducted after bug fixes to ensure the issue is resolved, leading to Regression Testing.
Regression Testing confirms that bug fixes or changes do not affect other modules in the software.
Transcripts
we've agreed before that the testing process
is divided into some activities.
Their objectives varies from testing
a particular partition of software
till testing the whole software.
Accordingly, we have to identify
the testing objective to be able to
determine the suitable testing type.
There are 4 types:
The first type is "the Functional testing"
which answers the question
"what the system does?"
so it cares and focuses on
testing all the software functionalities
which were previously identified in requirements.
Therefore, we can't deliver the software
without them,
for example, if we are required to create
a calculator program, and one of
its requirements is a function that
add 2 numbers, so the functional testing
will help you to test this point, to ensure
the following: Firstly,
when you input 2 numbers to the calculator,
it accepts them, i.e. it accepts
the user input. Secondly, it adds them.
and thirdly it gives us the result of the addition
correctly. we have to take into
consideration that we can apply the functional
testing on all the testing levels,
whether: the Unit testing level,
Integration testing level,
or System testing level. The functional test
cares about testing the external
behavior of the software.
This means that we test the software specification
externally as a functionality.
so I am not responsible for the internal
structure, as I can't actually see it.
In the calculator example, I care about
testing the addition process not the internal
source code which does the addition
so I should get back to the requirements
to check that the software has implemented
the required specifications or not.
So here, the functional testing is
the specification based testing, which
we often call it "Black box testing"
there are different types of functional
testing. For example,
we will mention only 4 types:
Security testing and this is responsible for
testing the software against
vulnerabilities.
Such as, I need to know whether
the software has weaknesses
that a hacker can use,
and accordingly threats the security
of my data and information or not.
The most famous example for this, is
the online Bank accounts and thefts
they get exposed to. The second type
is the interoperability testing.
through which I need to know
whether the software can
deal with different components
and system out of it or not.
As for the suitability testing,
it answers the question:
was the function designed
according to the requirements?
in the calculator example,
can it accept 2 numbers from the user or not?
The last type we have is
the Accurateness through which
we check whether the current results
of the program are the same as
we've expected or not.
In the calculator example,
for the 2 numbers it accepted, whether
the result of adding them is correct or not.
so, again, what does the functional
testing asses?
1. Suitability, assessing the business needs.
2. Accurateness assessing the technical needs
3. Security assessing threats and vulnerabilities
4. Interoperability assessing interactions with other components and apps.
finally and the most important point
we have to asses whether the customer needs
were fulfilled and succeeded or not.
Now we'll move to the second type
which is "Non-functional testing"
This answers:
"How does the system work?"
This is used for measuring
the software characteristics. For example,
we will measure the performance.
such as, when I open any
website , how much time it takes
since I write the URL and
sent it to the server then get back
to see the content of the page.
Another example is Load.
Here, I may need to measure
the system's ability to bear
a number of 100 users logged in
in a particular period at the same time.
and whether the system bear this number or not
Through Stress,
we need to asses the system,
can it bear the number of connected
users if it increased to be more
than 100, for instant? or will it fail?
Sothis means we check its ability
to bear the over load of its normal use
for the number of users and resources.
we also check its performance
with the normal use, once with the fewest number of users
and another time we check the performance
when the number of users overloads the
normal number of use.
Then we compare between the 2 cases.
Usability: is the program
easy to be used for the end-user
or not?
Maintainability: can I
modify it or add any new feature to it
or not?
Reliability: we know through it
the ability of a software to work
during a particular period without failing
or crashing has a problem
while using it live in
the real environment, or through the
number of required processes
in addition to use it in different environments
Portability: can we move
the software from a hardware
or a software to another
then will it work with efficiently or not?
The third type is
the structure testing,
this cares about the internal structure of
a software and we call it
"white box testing". This means that we will test
the source code to be sure that
the internal logic of the program works correctly.
This type of testing
can be applied to all testing levels
and specially to component testing and
Component integration testing.
Using this type is very important
especially after we conduct the black box testing
or specification based,
as we get involved in the code's details.
By using particular techniques,
I can know how many lines of code
I tested. This technique is
the coverage technique of code
in other words, how many
lines of code did you test,
from the total lines of the program?
i.e. what is the number you have covered
to be able to set the percentage of coverage
that was done? and did you do
a statement coverage and decision
coverage to be sure that your code
works as a whole or it has some problems
which need to be fixed?
this will be explained in details
in chapter 4. Note that
you can also apply the structure testing
to the system, the system integration
and the acceptance testing level.
For example:
Business models and menu structures.
now we will move to
the Testing Related to changes.
here, we will talk about 2 kinds
involved in it. The first kind is
" Confirmation Testing"
which is conducted after the developer
resolve bugs. so we need to ensure that
the bug was actually fixed or not.
then we confirm on it, that's why
we call it "retesting"
this type leads us to another type
called "Regression type", why?
because it is expected that the fixed bug
which we ensured it was resolved
could have an affect somehow on the rest
of modules, which were tested before.
This effect appears in
a form of a new bug that was not
there before. Here comes the time of
"regression testing"
to confirm that any resolved bugs
or any other change in the software,
didn't affect the other modules.
we should note that, it also
happens in all testing levels.
Browse More Related Video
![](https://i.ytimg.com/vi/pCC6kZulLZM/hq720.jpg)
ISTQB FOUNDATION 4.0 | Tutorial 18 | Test Types | Functional Testing | Non-Functional Testing | CTFL
![](https://i.ytimg.com/vi/SX4mnUxeOdw/hq720.jpg)
CH05.L01 . Black box or white box testing
![](https://i.ytimg.com/vi/T0TynxN77oY/hq720.jpg)
Types of Testing in Software Engineering | Levels of Testing
![](https://i.ytimg.com/vi/v5OiDZBz0yU/hq720.jpg)
ISTQB FOUNDATION 4.0 | Tutorial 36 | Value of White Box Test Techniques | CTFL Tutorials | TM SQUARE
![](https://i.ytimg.com/vi/QhNU3VyWNZ4/hq720.jpg)
L16 Unit Testing
![](https://i.ytimg.com/vi/sIrzyHUk-K8/hq720.jpg)
ISTQB FOUNDATION 4.0 | Tutorial 15 | Test Levels | System Testing | CTFL Tutorials | TM Square
5.0 / 5 (0 votes)