# Topic covered
* Software Testing
* Type of Software testing
* Manual, Automation
* Software Testing types based on Levels
* Unit, Integration, System, Regression
* Test Case design approach
* AKA - Software Testing Techniques
* White, Black, Gray box testing
* Test Driven Development (TDD)
* Shift Left in Software Testing
* Shift Right in Software Testing
2. Software Testing
Software testing is a process of identifying the correctness of software
by finding the software bugs or errors or defects.
Software testing can be stated as the process of verifying and validating
whether a software or application is bug-free
,
meets the technical requirements as guided by its design and development, and meets the user requirements
effectively and efficiently.
The process of software testing aims not only at finding faults in the existing software but also
at finding measures to improve
the software in terms of efficiency, accuracy, and usability
.
2.1 Type of Software testing
Manual Testing
Manual testing is the procedure that involves testing a software manually
(i.e. without using any automation tool or any script
) by Quality Analysts.
Automation Testing
Automation testing refers to the automatic testing of the software in which developer or tester write the test script
once with the help of testing tools and framework and run it on the software.
The test script automatically test
the software without human intervention and shows the result
2.2 Software Testing types based on Levels
- Unit testing
- Integration testing
- System testing
- Regression Testing
1. Unit testing
Software can be divided many standalone modules, For each module test-case
is written known as Unit testing.
- Tested during software
development phase
- Tested by
development team
. - Functional testing
- Approach: White-box testing
2. Integration testing
While integrating different modules
, test-case is written to check their compatibility known as Integration testing.
- Tested during software
development phase
- Tested by
development team
. - Functional testing
- Approach: White-box testing
3. System testing
After complete development of the software, the whole software is tested known as System testing.
- Tested after development
- Tested by
testing team
. - Functional and Non-functional testing
- Approach: Black-box testing
Types based on who is doing testing
Alpha - By the developer
Beta - By friendly customers (Other developer)
Acceptance - By all customers (Client)
Types - Performance/Non-functional testing
Volume, Load, Stress
Security, Recovery
4. Regression Testing
- This is done during product maintenance phase.
- Test that old feature should not stop after na upgrade.
2.3 Test Case design approach (Software Testing Techniques)
Test case can be designed based on 3 approach
1. White box testing
The white box testing is done by Developer
, where they check every line of a code before giving it to the Test Engineer.
Since the code is visible
for the Developer during the testing, that’s why it is also known as White box testing.
2. Black box testing
The black box testing is done by Test Engineer
, where they can check the functionality of an application or
the software according to the customer /client’s needs.
In this, the code is not visible
while performing the testing; that’s why it is known as black-box testing.
3. Gray box testing
Gray box testing is a combination of white box and Black box
testing.
It can be performed by a person who knew both coding and testing. And if the single person performs white box, as well as black-box testing for the application, is known as Gray box testing.
2.4 Test Driven Development (TDD)
- Test-Driven development is a process of
developing and running automated test before actual development
of the application. - TDD sometimes also called as
Test First Development
. - Instead of writing tests afterward (or, more typically, not ever writing those tests), you always begin with a unit test.
- It is a process of
modifying the code in order to pass a test designed previously
.
TDD is software development approach in which test cases
are developed to specify and validate what the code will do.
# Advantages of TDD
* Confidence to Refactor
* Early bug notification
* Good for teamwork, Developers
Shift Left in Software Testing
Shift left testing ensures you not only perform tests at the end
of the testing cycle; you also
execute them in the early stages
of a software’s development.
It detects problems early and avoid problems before they happen
Eg: Unit testing and Integration testing
can be term as Shift Left testing
Shift Right in Software Testing
It means performing software testing at the very end of the development cycle
Shift right testing is also known as testing in production
, an approach that allows developers
to discover new and unexpected scenarios that may have remained undetected in development environments
Eg: System testing
can be term as Shift Right testing