Software Engineering
By
Abid Ali
Lecturer in Software Engineering
MEAN/MERN stack, Web 3 & Blockchain developer and
trainer
0092-345-9361065
Lecture #19.1
1
CHAPTER 19
2
Table of Content
• Principles of Software Testing
• Different Types of Software Testing
• Types of Manual Testing
• Types of Black Box Testing
• Types of Functional Testing
• Types of Integration Testing
• Types of Non-functional Testing
• Other Types of Testing
• Advantages of Software Testing
• Disadvantages of Software Testing
3
Principles of Software Testing
• All the tests should meet the customer’s 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 Testing
4
Different Types of Software Testing
Types of Software Testing
5
• Manual Testing
• Automation Testing
6
Manual Testing
• Manual testing is a technique to test the software
that is carried out using the functions and features
of an application. In manual software testing, a
tester carries out tests on the software by
following a set of predefined test cases. In this
testing, testers make test cases for the codes, test
the software, and give the final report about that
software. Manual testing is time-consuming
because it is done by humans, and there is a
chance of human errors.
7
Advantages of Manual Testing
• Fast and accurate visual feedback: It detects almost every
bug in the software application and is used to test the
dynamically changing GUI designs like layout, text, etc.
• Less expensive: It is less expensive as it does not require
any high-level skill or a specific type of tool.
• No coding is required: No programming knowledge is
required while using the black box testing method. It is
easy to learn for the new testers.
• Efficient for unplanned changes: Manual testing is suitable
in case of unplanned changes to the application, as it can be
adopted easily.
8
Automated Testing
• Automated Testing is a technique where the
Tester writes scripts on their own and uses
suitable Software or Automation Tool to test
the software. It is an Automation Process of a
Manual Process. It allows for executing
repetitive tasks without the intervention of a
Manual Tester.
9
Advantages of Automated Testing:
• Simplifies Test Case Execution: Automation
testing can be left virtually unattended and
thus it allows monitoring of the results at the
end of the process. Thus, simplifying the
overall test execution and increasing the
efficiency of the application.
• Improves Reliability of Tests: Automation
testing ensures that there is equal focus on all
the areas of the testing, thus ensuring the best
quality end product. 10
• Increases amount of test coverage: Using automation
testing, more test cases can be created and executed for
the application under test. Thus, resulting in higher test
coverage and the detection of more bugs. This allows
for the testing of more complex applications and more
features can be tested.
• Minimizing Human Interaction: In automation testing,
everything is automated from test case creation to
execution thus there are no changes for human error
due to neglect. This reduces the necessity for fixing
glitches in the post-release phase.
11
Types of Manual Testing
• White Box Testing
• Black Box Testing
• Gray Box Testing
12
1. White Box Testing
• 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 clear box testing or
structural testing. White Box Testing is also
known as transparent testing or open box
testing.
13
• 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.
14
Advantages of White box Testing:
• Thorough Testing: White box testing is thorough as the
entire code and structures are tested.
• Code Optimization: It results in the optimization of code
removing errors and helps in removing extra lines of code.
• Early Detection of Defects: It can start at an earlier stage as
it doesn’t require any interface as in the case of black box
testing.
• Integration with SDLC: White box testing can be easily
started in the Software Development Life Cycle.
• Detection of Complex Defects: Testers can identify defects
that cannot be detected through other testing techniques.
15
Black Box Testing
• Black-box testing is a type of software testing
in which the tester is not concerned with the
internal knowledge or implementation details
of the software but rather focuses on
validating the functionality based on the
provided specifications or requirements.
16
Advantages of Black Box Testing:
• The tester does not need to have more functional
knowledge or programming skills to implement the
Black Box Testing.
• It is efficient for implementing the tests in the larger
system.
• Tests are executed from the user’s or client’s point
of view.
• Test cases are easily reproducible.
• It is used to find the ambiguity and contradictions in
the functional specifications.
17
Gray Box Testing
• Gray Box Testing is a software testing technique that is a
combination of the Black Box Testing technique and the
White Box Testing technique.
• In the Black Box Testing technique, the tester is unaware of
the internal structure of the item being tested and in White
Box Testing the internal structure is known to the tester.
• The internal structure is partially known in Gray Box
Testing.
• This includes access to internal data structures and
algorithms to design the test cases.
18
Advantages of Gray Box Testing:
• Clarity of goals: Users and developers have clear goals
while doing testing.
• Done from a user perspective: Gray box testing is
mostly done from the user perspective.
• High programming skills not required: Testers are not
required to have high programming skills for this
testing.
• Non-intrusive: Gray box testing is non-intrusive.
• Improved product quality: Overall quality of the
product is improved.
19
Types of Black Box Testing
• Functional Testing
• Non-Functional Testing
20
Functional Testing
• Functional Testing is a type of Software Testing in
which the system is tested against the functional
requirements and specifications. Functional testing
ensures that the requirements or specifications are
properly satisfied by the application. This type of
testing is particularly concerned with the result of
processing. It focuses on the simulation of actual
system usage but does not develop any system
structure assumptions. The article focuses on
discussing function testing.
21
Benefits of Functional Testing
• Bug-free product: Functional testing ensures the delivery of a
bug-free and high-quality product.
• Customer satisfaction: It ensures that all requirements are met
and ensures that the customer is satisfied.
• Testing focused on specifications: Functional testing is focused on
specifications as per customer usage.
• Proper working of application: This ensures that the application
works as expected and ensures proper working of all the
functionality of the application.
• Improves quality of the product: Functional testing ensures the
security and safety of the product and improves the quality of
the product.
22
Non-Functional Testing
• Non-functional Testing is a type of Software Testing that is
performed to verify the non-functional requirements of the
application. It verifies whether the behavior of the system is
as per the requirement or not. It tests all the aspects that are
not tested in functional testing. Non-functional testing is a
software testing technique that checks the non-functional
attributes of the system. Non-functional testing is defined as
a type of software testing to check non-functional aspects of
a software application. It is designed to test the readiness of
a system as per nonfunctional parameters which are never
addressed by functional testing. Non-functional testing is as
important as functional testing.
23
Benefits of Non-functional Testing
• Improved performance: Non-functional testing checks the
performance of the system and determines the performance
bottlenecks that can affect the performance.
• Less time-consuming: Non-functional testing is overall less time-
consuming than the other testing process.
• Improves user experience: Non-functional testing like Usability
testing checks how easily usable and user-friendly the software is
for the users. Thus, focus on improving the overall user experience
for the application.
• More secure product: As non-functional testing specifically
includes security testing that checks the security bottlenecks of
the application and how secure is the application against attacks
from internal and external sources.
24
25
26
27
28
29
30
31
The end
Thank you
32