Seminar Topic
SOFTWARE TESTING
By
Name Matric Number
Abdulwaheed Toheeb Olanrewaju 0480
Adegboye Adebola Ifeoluwa 0489
Adedara Samuel Precious 0488
Adebimpe precious david 0486
Adebayo Oluwatosin isaac 0485
Adebowale Gideon Adedayo 0487
Abioye Daniel Oluwamayowa 0483
Adedara Samuel Precious 0488
Adebayo Muhammed Ayomide 0484
Course Tittle: Software Engineering
Course code: Csc 412
INTRODUCTION
Software testing is the process of evaluating a system or its component(s) with the intent to find
that whether it satisfies the specified requirements or not. This activity results in the actual,
expected and difference between their results. In simple words testing is executing a system in
order to identify any gaps, errors or missing requirements in contrary to the actual desire or
requirements.
Who does testing?
It depends on the process and the associated stakeholders of the project(s). In the IT industry,
large companies have a team with responsibilities to evaluate the developed software in the
context of the given requirements.
• Software Tester
• Software Developer
• Project Lead/Manager
• End User
It is not possible to test the software at any time during its cycle. The next two sections state
when testing should be started and when to end it during the SDLC.
i. When to Start Testing
An early start to testing reduces the cost, time to rework and error free software that is delivered
to the client. However in Software Development Life Cycle (SDLC) testing can be started from
the Requirements Gathering phase and lasts till the deployment of the software.
Testing is done in different forms at every phase of SDLC like during Requirement gathering
phase, the analysis and verifications of requirements are also considered testing.
ii. When to Stop Testing
Unlike when to start testing it is difficult to determine when to stop testing, as testing is a never
ending process and no one can say that any software is 100% tested. Following are the aspects
which should be considered to stop the testing: Testing Deadlines.
• Completion of test case execution.
• Completion of Functional and code coverage to a certain point.
• Bug rate falls below a certain level and no high priority bugs are identified.
Difference between Verification & Validation
Verification Validation
Are you building it right? Are you building the right thing?
Ensure that the software system meets Ensure that functionalities meet the
all the functionality. intended behavior.
Difference between Testing and Debugging
Testing: It involves the identification of bug/error/defect in the software without correcting it.
Normally professionals with a Quality Assurance background are involved in the identification
of bugs. Testing is performed in the testing phase.
Debugging: It involves identifying, isolating and fixing the problems/bug. Developers who code
the software conduct debugging upon encountering an error in the code. Debugging is the part of
White box or Unit Testing. Debugging can be performed in the development phase while
conducting Unit Testing or in phases while fixing the reported bugs.
Testing Types
1. Manual Testing: This type includes the testing of the Software manually i.e. without
using any automated tool or any script. In this type the tester takes over the role of an end
user and test the Software to identify any un-expected behavior or bug. There are
different stages for manual testing like unit testing, Integration testing, System testing and
User Acceptance testing.
2. Automation Testing
Automation testing which is also known as “Test Automation”, is when the tester writes scripts
and uses another software to test the software. This process involves automation of a manual
process. Automation Testing is used to re-run the test scenarios that were performed manually,
quickly and repeatedly.
What to automate: It is not possible to automate everything in the Software; however the areas
at which user can make transactions such as login form or registration forms etc, any area where
large amount of users’ can access the Software simultaneously should be automated.
When to Automate: Test Automation should be uses by considering the following for the
Software:
• Large and critical projects.
• Projects that require testing the same areas frequently.
• Requirements not changing frequently.
• Accessing the application for load and performance with many virtual users.
• Stable Software with respect to manual testing.
Testing Methods
There are different methods which can be used for Software testing. This chapter briefly
describes those methods.
Black Box Testing: The technique of testing without having any knowledge of the
interior workings of the application is Black Box testing. The tester is oblivious to the
system architecture and does not have access to the source code. Worked upon.
Advantages:
• Well suited and efficient for large code segments.
• Code Access not required.
• Disadvantages:
• Limited Coverage since only a selected number of test scenarios are actually
performed.
• Inefficient testing, due to the fact that the tester only has limited knowledge about
an application.
White Box Testing: White box testing is the detailed investigation of internal logic and
structure of the code. White box testing is also called glass testing or open box testing.
Advantages:
As the tester has knowledge of the source code, it becomes very easy to find out which
type of data can help in testing the application effectively.
• It helps in optimizing the code.
• Extra lines of code can be removed which can bring in hidden defects.
Disadvantages:
• Due to the fact that a skilled tester is needed to perform white box testing, the
costs are increased.
• Sometimes it is impossible to look into every nook and corner to find out hidden
errors that may create problems as many paths will go untested.
Grey Box Testing: Grey Box testing is a technique to test the application with limited
knowledge of the internal workings of an application. In software testing, the term “the
more you know the better” carries a lot of weight when testing an application.
Advantages:
• Offers combined benefits of black box and white box testing wherever possible.
• Grey box testers don’t rely on the source code; instead they rely on interface
definition and functional specifications.
Disadvantages:
• Since the access to source code is not available, the ability to go over the code and
test coverage is limited.
• The tests can be redundant if the software designer has already run a test case.
Visual Difference between the Three Testing Methods
Comparison between the Three Testing Types
Black Box Grey Box White Box
Testing Testing Testing
1 The Internal Somewhat Tester has
. Workings of knowledge of full
an application knowledge
the internal
are not of the
workings are
required to be Internal
known known workings of
the
application
Levels of Testing
There are different levels during the process of Testing. In this chapter a brief description is
provided about these levels.
Levels of testing include the different methodologies that can be used while conducting Software
Testing. Following are the main levels of Software Testing:
• Functional Testing.
• Non- functional Testing.
Functional Testing
This is a type of black box testing that is based on the specifications of the software that is to be
tested. The application is tested by providing input and then the results are examined that need to
conform to the functionality it was intended for..
• Step I - The determination of the functionality that the intended application is
meant to perform.
• Step II - The creation of test data based on the specifications of the application.
• Step III - The output based on the test data and the specifications of the
application.
• Step IV - The writing of Test Scenarios and the execution of test cases.
• Steps V - The comparison of actual and expected results based on the executed
test cases.
Unit Testing: This type of testing is performed by the developers before the setup is
handed over to the testing team to formally execute the test cases. Unit testing is
performed by the respective developers on the individual units of source code assigned
areas.
Integration Testing: The testing of combined parts of an application to determine if they
function correctly together is Integration testing. There are two methods of doing
Integration Testing Bottom-up Integration testing and Top down Integration testing.
• Bottom-up integration testing begins with unit testing, followed by tests of
progressively higher-level combinations of units called modules or builds.
• Top-Down integration testing, the highest-level modules are tested first and
progressively lower-level modules are tested after that. In a comprehensive software
development environment, bottom-up testing is usually done first, followed by top-down
testing.
System Testing: This is the next level in the testing and tests the system as a whole.
Once all the components are integrated, the application as a whole is tested rigorously to
see that it meets Quality Standards. This type of testing is performed by a specialized
testing team.
Why is System Testing so Important
System Testing is the first step in the Software Development Life Cycle, where the
application is tested as a whole.
• The application is tested thoroughly to verify that it meets the functional and
technical specifications.
Non-Functional Testing
This section is based upon the testing of the application from its non-functional attributes.
Non-functional testing of Software involves testing the Software from the requirements
which are non-functional in nature related but important a well such as performance,
security, and user interface etc. Some of the important and commonly used non-
functional testing types are mentioned as follows.
Performance Testing: It is mostly used to identify any bottlenecks or performance issues
rather than finding the bugs in software. There are different causes which contribute in
lowering the performance of software:
• Client side processing.
• Database transaction processing.
• Load balancing between servers.
Load Testing: A process of testing the behavior of the Software by applying maximum
load in terms of Software accessing and manipulating large input data. It can be done at
both normal and peak load conditions. This type of testing identifies the maximum
capacity of Software and its behavior at peak time.
Stress Testing: This testing type includes the testing of Software behavior under
abnormal conditions. Taking away the resources, applying load beyond the actual load
limit is Stress testing.
This testing can be performed by testing different scenarios such as:
• Shutdown or restart of Network ports randomly.
• Turning the database on or off.
• Running different processes that consume resources such as CPU, Memory,
server etc.
Usability Testing: This section includes different concepts and definitions of Usability
testing from Software point of view. It is a black box technique and is used to identify
any error(s) and improvements in the Software by observing the users through their usage
and operation.
References:
1. "Software Testing: A Craftsman's Approach" by Paul C. Jorgensen -
https://www.amazon.com/Software-Testing-Craftsmans-Approach-Jorgensen/dp/1138597178
2. "Testing Computer Software" by Cem Kaner, Jack Falk, and Hung Q. Nguyen -
https://www.amazon.com/Testing-Computer-Software-Cem-Kaner/dp/0471808555
3. "The Art of Software Testing" by Glenford J. Myers, Corey Sandler, and Tom Badgett -
https://www.amazon.com/Art-Software-Testing-Glenford-Myers/dp/0471043286