Professional Documents
Culture Documents
www.udst.edu.qa
Week 05: Software Testing
Plan
- What is Software Testing?
- Why do we need it?
- Approaches
- Levels
What is Software Testing?
Software is a set of instructions or programs that tell a computer what to do. It can
be divided into two main categrories ie., system software and application
software.
System software includes the operating system and all the utilities that help keep
the computer running. Application software includes programs that do specific
tasks, such as word processing or playing games.
One small bug shows a huge impact on business in terms of financial loss and
goodwill.
Why do we need it?
We need Software testing to deliver quality products.
There is a huge difference between marketing about quality and building quality.
1. Cost-effectiveness
2. Customer Satisfaction
3. Security
4. Product Quality
Cost Effectiveness
Design defects can never be completely ruled out for any complex system.
It is not because developers are careless but because the complexity of a system
is intractable.
If the design issues go undetected, then it will become more difficult to trace back
defects and rectify it. It will become more expensive to fix it.
Cost Effectiveness
Sometimes, while fixing one bug we may introduce another one in some other
module unknowingly. If the bugs can be identified in the early stages of
development then it costs much less to fix them.
That is why it is important to find defects in the early stages of the software
development life cycle.
It is better to start testing earlier and introduce it in every phase of the software
development life cycle and regular testing is needed to ensure that the application
is developed as per the requirement.
Customer Satisfaction
The ultimate goal is to give the best customer satisfaction
“Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.” Agile Manifesto
Software testing becomes a very significant and integral part of the Software
Development process.
Testing Approaches
Static, dynamic, and passive testing
Exploratory approach
White/Black/Grey-box testing
Static, dynamic, and passive testing
Static: Reviews, walkthroughs, or inspections are referred to as static testing.
Proofreading which involves verification.
Dynamic: Executing programmed code with a given set of test cases is referred to
as dynamic testing. It takes place when the program itself is run. It involves
validation.
Passive: Verifying the system behavior without any interaction with the software
product, i.e. looking at system traces, logs to mine for specific patterns.
Exploratory Approach
• internal perspective of the system (the source code) and programming skills
are used to design test cases
White/Black/Grey-box testing
White/Black/Grey-box testing
Black box (functional testing):
• treats the software as a "black box," examining functionality without any
knowledge of internal implementation, without seeing the source code.
• testers are only aware of what the software is supposed to do, not how it does
it.
• tester will often have access to both "the source code and the executable
binary
Test Levels
Unit Testing
Integration Testing
System Testing
Acceptance Testing
Unit Testing
Tests that verify the functionality of a specific section of code, usually at the
function level. In an object-oriented environment, this is usually at the class level,
and the minimal unit tests include the constructors and destructors.
These types of tests are usually written by developers as they work on code
(white-box style), to ensure that the specific function is working as expected.
One function might have multiple tests, to catch corner cases or other branches in
the code.
Unit Testing
Unit testing alone cannot verify the functionality of a piece of software, but rather
is used to ensure that the building blocks of the software work independently from
each other.
Integration tests usually involve a lot of code, and produce traces that are larger
than those produced by unit tests.
This has an impact on the ease of localizing the fault when an integration test
fails. To overcome this issue, it has been proposed to automatically cut the large
tests in smaller pieces to improve fault localization.
System Testing
Tests a completely integrated system to verify that the system meets its
requirements.
System testing takes, as its input, all of the integrated components that have
passed integration testing.
System Testing
System testing is performed on the entire system in the context of either
functional requirement specifications (FRS) or system requirement specification
(SRS), or both.
System testing tests not only the design, but also the behaviour and even the
believed expectations of the customer.
Acceptance Testing
Acceptance testing commonly includes the following four types:
Performed by the end user or the client to verify/accept the software system
before moving the software application to the production environment.
UAT is done in the final phase of testing after functional, integration and system
testing is done.
Validate end to end business flow. It does not focus on cosmetic errors, spelling
mistakes or system testing.
Acceptance Testing
Operational acceptance testing (OAT):
Ensure that the portability of the system, as well as working as expected, does
not also damage or partially corrupt its operating environment or cause other
processes within that environment to become inoperative.
Acceptance Testing
Contractual and regulatory acceptance testing:
Comes after alpha testing and can be considered a form of external user
acceptance testing.
The software is released to groups of people so that further testing can ensure
the product has few faults or bugs.
Thank you
+974 4495 2222
info@udst.edu.qa
Location
University of Doha for Science & Technology
68 Al Tarfa, Duhail North
P.O. Box 24449 Doha, Qatar