Manual Software Testing - Must Read for Beginners

# Manual Software Testing for Beginners
The development cycle requires several types of testing. Each kind of testing type focuses on a particular testing condition. The most basic of validation methods needed for the development method is as follows:

1. Unit-level Testing
2. System/Stability Testing
3. Integration/End-to-End Testing
4. Functional/Black-box Testing
5. Performance/Load/Stress Testing
6. Alpha/Beta Testing
7. Acceptance/UAT Testing

However, here, we've tried to cover many existing testing types.

## Acceptance Testing
Is the usual industry practice & it is the final validation which depends on a set of specifications given by the end-user or the client. They could also forward it during a limited time-period.

## Ad-hoc Testing
It is a collective term for manual testing where no planning and documentation is needed. It falls under the category of the exploratory testing and has the least formal of the test methods.

## Alpha Testing
It is also known as the simulated or real operational validation by the actual users or customers or an independent test agency at the developers’ site.

## Beta Testing
It occurs after the alpha testing phase. It gets carried out by end-users or other players and not by the developers or test engineers.

## Black Box Testing
It includes tests based on preliminary requirements and functionality. For Black Box validation, the tester need not have any internal design awareness of the software or the source code. 

## Build Verification Testing
It is also known as the Build Acceptance Test. It includes a smaller set of cases, which verified the primary features of the application software.

## Client Server Testing
Client/Server testing involves the change in the size, scope, and duration of the test estimate itself. The required test phases include build acceptance verification, prototype validation, system stability testing, multiple stages of regression, beta, pilot, and field validation.

## Comparison Testing
Comparing software negatives and positives with that of better or same type of products from the competitors.

## Compatibility Testing
It helps in examining how the product behaves in various environments such as with a specific HW or S/W or OS or NW. It gets done manually or also by an automated functional test framework.

## Configuration Testing
It verifies the product behavior with a wide range of H/W and peripheral configurations and also with the different set of OS and S/W.

## Conformance Testing
It makes sure the implementation is compatible with the industry standards. Various type of tests like the portability, interoperability, and compatibility is done to ensure that.

## Concurrent Testing
It involves multiple users accessing the same application, its features and making database operations. It assesses the behavior of the system while happening such concurrent access.

## Cross Browser Testing
Is used to test an application with different browser & may be under different OS for usability testing & compatibility testing.

## Dynamic Testing
Is used to describe the testing of the dynamic behavior of the software code. It involves actual compilation & running of the software by giving input values and checking if the output is as expected.

## End-To-End Testing
It resembles with the system testing method. But it involves testing of the application in an environment that imitates the real-world use like changes to a database, sending/receiving network packets, or interfacing with the H/W, applications, or systems whichever is applicable. 

## Exploratory Testing
It is a creative & informal software testing aimed to find faults and defects driven by challenging assumptions.

## Functional Testing
It requires testing an app, or a site conforms to its set of specifications and has all the required functions implemented.

## Incremental Integration
It is a continuous testing method which examines the application while new functionality is getting added on the incremental basis.

## Installation / Uninstallation Testing
It has got the full or partial validation of the upgrade, install, uninstall procedures.

## Integration Testing
Testing of the application after combining/integrating its various parts to find out if all parts function together correctly. 

## Life Cycle Testing
Life cycle testing or V testing aims at catching the defects as early as possible and thus reduces the cost of fixing them.

## Load Testing
Load testing helps in determining the maximum sustainable load (i.e., the parameters/factors) the system can handle.

## Monkey Testing
It is a kind of unit-level testing technique. It doesn't require a specific test in mind. The monkey word relates to the producer of any input data.

## Mutation Testing
It is a way to determine if a set of test data or tests is good enough or not, by intentionally introducing various code changes (bugs) and re-testing with the original validation data or the use cases to check if the bugs get discovered.

## Negative Testing
Testing the application for failure like conditions. It involves validation with the tool having invalid input values.

## Performance Testing
Performance testing helps in understanding the application or the product's scalability or to standardizes the performance in a particular environment having the third-party products such as a server or a middleware for potential acquisition.

## Pilot Testing
It requires the users just before actual release to ensure that users become familiar with the release contents and ultimately accept it.

## Recovery Testing
This testing provides the ways to determine the capability of a system or application to recover from occasional failures, H/W crashes, or another type of catastrophic problems.

## Regression Testing
It is an enhanced form of functional testing. A regression test enables a consistent, repeatable validation of each new version of a product or the application.

## Sanity Testing
It is an initial testing effort to determine if the new software version is behaving well enough to allow it for a significant testing activity.

## Scalability Testing
Scalability testing involves tests designed to establish that both the functionality and performance of a system can handle a higher set of requirements in the future. 

## Security Testing
It ensures that a system has enough protection against the unauthorized access whether internal or external.

## Smoke Testing
It is a quick and result oriented testing method. Smoke tests are useful for verifying the impacts of multiple code check-ins made by the developers.

## Static Testing
It requires the testing tasks performed without actually executing the application. It has activities such as the source code inspections/walkthroughs, and desk checks, etc.

## Stress Testing
It is a testing type which gets carried out to determine a system or component performs beyond the limits or not under the specified load.

## System Testing
It comes under the category of the black box testing. It involves no awareness of the core design of the code or the business-logic. 

## Unit Testing
A unit is the shortest possible component of the software.
This testing targets such different units of a program.

## Usability Testing
It examines the user-friendliness of a Software from the end-user perspective.

## White Box Testing
It requires tests which get derived from the code coverage, branches, paths & the different set of conditions used in the source code.

# Quick Reference

1. [Software Testing Types](https://www.techbeamers.com/testing-types/)
2. [Manual Testing Questions](https://www.techbeamers.com/manual-testing-interview-questions-experienced-qa/)

**All the Best.**![Software Testing Types.png](https://qiita-image-store.s3.amazonaws.com/0/289419/571d0c09-1db1-163e-7b01-2de1958f9a37.png)