Software Testing
Software Testing
Concepts
(FALL 2023)
Software Testing
11/23/2023 CSE291 - Introduction to Software Engineering 2
Software Testing
Software Testing
Software Testing
- When you test software, you execute a program using artificial data.
You check the results of the test run for errors, anomalies, or
information about the program’s non-functional attributes.
11/23/2023 CSE291 - Introduction to Software Engineering 5
• Software Tester
• Software Developer
• Project Leader/Manager
• End User
11/23/2023 CSE291 - Introduction to Software Engineering 6
Types of Testing
Manual testing
• There are different stages for manual testing like unit testing,
Integration testing, System testing and User Acceptance
testing.
• Testers use test plan, test cases or test scenarios to test the
Software to ensure the completeness of testing.
11/23/2023 CSE291 - Introduction to Software Engineering 8
Types of Testing
Manual testing
• There are different stages for manual testing like unit testing,
Integration testing, System testing and User Acceptance
testing.
• Testers use test plan, test cases or test scenarios to test the
Software to ensure the completeness of testing.
11/23/2023 CSE291 - Introduction to Software Engineering 9
Automation Testing
• Automation testing which is also known as Test Automation, is
when the tester uses another software to test the software.
• Code auditing
• Coverage monitoring
• Load tests…etc
11/23/2023 CSE291 - Introduction to Software Engineering 10
Software Testing
Typically, a commercial software system has to go through three stages of testing:
Release testing, where a separate testing team tests a complete version of the
system before it is released to users. The aim of release testing is to check that
the system meets the requirements of system stakeholders.
User testing, where users or potential users of a system test the system in their
own environment.
For software products, the ‘user’ may be an internal marketing group who decide
if the software can be marketed, released, and sold. Acceptance testing is one
type of user testing.
11/23/2023 CSE291 - Introduction to Software Engineering 11
• Inefficient testing, due to the fact that the tester only has limited
knowledge about an application.
• The tester needs to have a look inside the source code and find
out which unit/chunk of the code is behaving inappropriately.
11/23/2023 CSE291 - Introduction to Software Engineering 16
The Internal Workings of an application are Tester has full knowledge of the Internal workings of
not required to be known the application
Also known as closed box testing, data drivenAlso known as clear box testing, structural testing or
testing and functional testing code based testing
This is the least time consuming and The most exhaustive and time consuming type of
exhaustive testing
Not suited to algorithm testing Suited for algorithm testing
11/23/2023 CSE291 - Introduction to Software Engineering 19
Incremental testing:
• Tests the software piecemeal – software modules are tested as
they are completed (unit tests)
• followed by groups of modules composed of tested modules
integrated with newly completed modules (integration tests).
• Once the entire package is completed, it is tested as a whole
(system test).
11/23/2023 CSE291 - Introduction to Software Engineering 20
Unit Testing
System Testing
• This is the next level in the testing and tests the system as a
whole.
Testing Strategies
Incremental testing is also performed according to two basic
strategies:
Top-down Testing
Top-down testing
Stage 1: Unit tests of module 11.
Stage 2: Integration test A of module 11 integrated with modules
9 and 10, developed in the current stage.
Stage 3: Integration test B of A integrated with module 8,
developed in the current stage.
Stage 4: Integration test C of B integrated with modules 6 and 7,
developed in the current stage.
Stage 5: Integration test D of C integrated with modules 1 and 2,
developed in the current stage.
• Stage 6: System test of D integrated with modules 3, 4 and 5,
developed in the current stage.
11/23/2023 CSE291 - Introduction to Software Engineering 26
• They are used when the sub modules are ready but the main
module is still not ready.
11/23/2023 CSE291 - Introduction to Software Engineering 28
For Example
we have 3 modules login, home, and user module. Login
module is ready and need to test it, but we call functions from
home and user (which is not ready). To test at a selective
module we write a short dummy piece of a code which
simulates home and user, which will return values for Login,
this piece of dummy code is always called Stubs and it is used
in a top down integration.
11/23/2023 CSE291 - Introduction to Software Engineering 29
Regression Testing
User Testing
In practice, there are three different types of user testing: