Difference Between Unit Testing and System Testing:
Unit Testing System Testing
In unit testing, independent System testing is done to check whether the
software module are tested software or product meets the specified
separately. requirements or not.
Unit testing is performed by the System testing is generally done by developers and
developers. testers.
Unit testing is also called white box
System testing is also called black box testing.
testing.
Unit testing generally focuses on System testing generally focuses on system
functional verification. validation.
Unit testing comprise of System Testing comprise of System and integration
independent modules. testing.
Unit testing follows the specification System testing follows the requirements
of modules. specification.
It gives high performance because It gives relatively low performance than unit
of single module testing at a time. testing.
Error finding is difficult as compared to unit
Error finding is easy.
testing.
Resource requirement is less. It needs more resources.
Maintenance is relatively less
Maintenance is expensive.
expensive.
It is cost effective as there is
requirement of less number of It is expensive.
resources.
Code details are visible in this type
Code details are not visible in this type of testing
of testing.
Difference between SDLC and STLC:
SDLC STLC
SDLC is mainly related to software
STLC is mainly related to software testing.
development.
Besides development other phases
It focuses only on testing the software.
like testing is also included.
SDLC involves total six phases or
STLC involves only five phases or steps.
steps.
In SDLC, more number of
In STLC, less number of members (testers)
members (developers) are required
are needed.
for the whole process.
In SDLC, development team
In STLC, testing team(Test Lead or Test
makes the plans and designs based
Architect) makes the plans and designs.
on the requirements.
Goal of SDLC is to complete
Goal of STLC is to complete successful
successful development of
testing of software.
software.
It helps in developing good quality
It helps in making the software defects free.
software.
SDLC phases are completed before STLC phases are performed after SDLC
the STLC phases. phases.
Post deployment support , Regression tests are run by QA team to
enhancement , and update are to check deployed maintenance code and
be included if necessary. maintains test cases and automated scripts.
Creation of reusable software A tested software system is the end result of
systems is the end result of SDLC. STLC.
Differences between Verification and Validation
Verification Validation
It includes checking documents, It includes testing and validating
design, codes and programs. the actual product.
Verification is the static testing. Validation is the dynamic testing.
It does not include the execution It includes the execution of the
of the code. code.
Methods used in validation are
Methods used in verification are
Black Box Testing, White Box
reviews, walkthroughs,
Testing and non-functional
inspections and desk-checking.
testing.
It checks whether the software
It checks whether the software meets the requirements and
conforms to specifications or not. expectations of a customer or
not.
It can only find the bugs that
It can find the bugs in the early
could not be found by the
stage of the development.
verification process.
The goal of verification is
The goal of validation is an actual
application and software
product.
architecture and specification.
Validation is executed on
Quality assurance team does
software code with the help of
verification.
testing team.
It comes before validation. It comes after verification.
Verification is for prevention of Validation is for detection of
Verification Validation
errors. errors.
Functional Testing Non-functional Testing
It verifies the operations and It verifies the behavior of an
actions of an application. application.
It is based on requirements of It is based on expectations of
customer. customer.
It helps to enhance the behavior It helps to improve the performance
of the application. of the application.
Functional testing is easy to It is hard to execute non-functional
execute manually. testing manually.
It tests what the product does. It describes how the product does.
Functional testing is based on the Non-functional testing is based on
business requirement. the performance requirement.
Black Box Testing White Box Testing
It is a way of software testing in It is a way of testing the software
which the internal structure or in which the tester has
the program or the code is knowledge about the internal
hidden and nothing is known structure or the code or the
about it. program of the software.
Implementation of code is not Code implementation is
needed for black box testing. necessary for white box testing.
It is mostly done by software It is mostly done by software
testers. developers.
No knowledge of Knowledge of implementation is
implementation is needed. required.
It is a functional test of the It is a structural test of the
software. software.
No knowledge of programming It is mandatory to have
is required. knowledge of programming.
It is the behavior testing of the It is the logic testing of the
software. software.
It is also called as clear box
It is also called closed testing.
testing.
It is least time consuming. It is most time consuming.
Black Box Testing White Box Testing
It is not suitable or preferred for
It is suitable for algorithm testing.
algorithm testing.
Static testing Dynamic testing
Testing is performed without Testing is done by executing the
executing the program program
Static testing prevents bugs Dynamic testing finds and fixes bugs
Static testing examines code and Dynamic testing reports software
documentation bugs and bottlenecks
Static testing includes a checklist and Dynamic testing includes specific test
process to follow cases to execute
Can be performed before code Dynamic testing is done after
compilation compilation
Low cost of finding and fixing bugs High cost of finding and fixing bugs
Significantly fewer meetings
Requires many meetings required
Static testing is less costly. Dynamic testing is highly costly.
The objective is to find and fix
The objective is to prevent defects. defects.
4-Testing strategies in software testing? The following are
common testing strategies:
1. Black box testing – Tests the functionality of the software without
looking at the internal code structure.
2. White box testing – Tests the internal code structure and logic of
the software.
3. Unit testing – Tests individual units or components of the software
to ensure they are functioning as intended.
4. Integration testing – Tests the integration of different components
of the software to ensure they work together as a system.
5. Functional testing – Tests the functional requirements of the
software to ensure they are met.
6. System testing – Tests the complete software system to ensure it
meets the specified requirements.
7. Acceptance testing – Tests the software to ensure it meets the
customer’s or end-user’s expectations.
8. Regression testing – Tests the software after changes or
modifications have been made to ensure the changes have not
introduced new defects.
9. Performance testing – Tests the software to determine its
performance characteristics such as speed, scalability, and stability.
10. Security testing – Tests the software to identify vulnerabilities and
ensure it meets security requirements.
Q: Explain seven principles of testing.
1. Testing shows the Presence of Defects: The goal of software testing
is to make the software fail. Software testing reduces the presence of
defects. Software testing talks about the presence of defects and
doesn’t talk about the absence of defects.
2. Exhaustive Testing is not Possible: It is the process of testing the
functionality of the software in all possible inputs (valid or invalid)
and pre-conditions is known as exhaustive testing.
3. Early Testing: To find the defect in the software, early test activity
shall be started. The defect detected in the early phases of SDLC will
be very less expensive.
4. Defect Clustering: In a project, a small number of modules can
contain most of the defects. The Pareto Principle for software testing
states that 80% of software defects come from 20% of modules.
5. Pesticide Paradox: Repeating the same test cases, again and again,
will not find new bugs. So it is necessary to review the test cases and
add or update test cases to find new bugs.
6. Testing is Context-Dependent: The testing approach depends on the
context of the software developed. Different types of software need
to perform different types of testing. For example, The testing of the
e-commerce site is different from the testing of the Android
application.
7. Absence of Errors Fallacy: If a built software is 99% bug-free but
does not follow the user requirement then it is unusable