Black Box Testing- Black box testing is a software testing method where testers are not required to know coding or internal structure of the software. Black box testing method relies on testing software with various inputs and validating results against expected output.
White Box Testing-This testing is based on knowledge of the internal logic of an application’s code. Also known as Glass box Testing. Internal software and code working should be known for this type of testing. Tests are based on coverage of code statements, branches, paths, conditions.
Unit testing – Testing of individual software components or modules. Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code.
Integration testing –Once the individual units or components are tested by developers as working then testing team will run tests that will test the connectivity among these units/component or multiple units/components. There are different approaches for Integration testing namely, Top-down integration testing, Bottom-up integration testing and a combination of these two known as Sand witch testing.
Functional testing – This type of testing ignores the internal parts and focus on the output is as per requirement or not. Black-box type testing geared to functional requirements of an application.
System testing – Entire system is tested as per the requirements. Black-box type testing that is based on overall requirements specifications, covers all combined parts of a system.System testing is most often the final test to verify that the system to be delivered meets the specification and its purpose.
End-to-end testing – Similar to system testing, involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
Regression testing –is a type of software testing that is carried out by software testers as functional regression tests and developers as Unit regression tests. The objective of regression tests is to find defects that got introduced to defect fix(es) or introduction of new feature(s). Regression tests are ideal candidates for automation.
Sanity testing –is the subset of regression testing and it is performed when we do not have enough time for doing testing. Sanity testing is the surface level testing where QA engineer verifies that all the menus, functions, commands available in the product and project are working fine.
Acceptance testing -After the system test has corrected all or most defects, the system will be delivered to the user or customer for Acceptance Testing or User Acceptance Testing (UAT).The goal of acceptance testing is to establish confidence in the system.Acceptance testing is most often focused on a validation type testing.
Usability testing –is a type of software testing that is performed to understand how user-friendly the software is. Objective of usability testing is to allow end users to use the software, observe their behavior, their emotional response and collect their feedback on how the software can be made more usable or user friendly and incorporate the changes that make the software easier to use.
Install/uninstall testing – Tested for full, partial, or upgrade install/uninstall processes on different operating systems under different hardware, software environment.
Recovery testing – Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
Compatibility testing – Testing how well software performs in a particular hardware/software/operating system/network environment and different combination s of above.
Alpha testing –Alpha testing is one of the most common Software Testing Strategy used in software development. Its specially used by product development organizations.This test takes place at the developer’s site. Developers observe the users and note problems.
Beta testing –Beta Testing is also known as field testing. It takes place at customer’s site. It sends the system/software to users who install it and use it under real-world working conditions.A beta test is the second phase of software testing in which a sampling of the intended audience tries the product out.
Ad hoc testing –This type of software testing is very informal and unstructured and can be performed by any stakeholder with no reference to any test case or test design documents.The person performing Ad-hoc testing has a good understanding of the domain and workflows of the application to try to find defects and break the software. Ad-hoc testing is intended to find defects that were not found by existing test cases.
Component Testing- This type of software testing is performed by developers. Component testing is carried out after completing unit testing. Component testing involves testing a group of units as code together as a whole rather than testing individual functions, methods.
Internationalization testing- Internationalization is a process of designing a software application so that it can be adapted to various languages and regions without any changes.
Localization testing – Localization is a process of adapting internationalized software for a specific region or language by adding local specific components and translating text.
Performance testing – It is performed to evaluate the performance of components of a particular system in a specific situation. This type of testing generally does not give pass or fail. It is basically done to set the benchmark & standard of the application against Concurrency / Throughput, Server response time, Latency, Render response time etc. In other words, you can say it is technical & formal evaluation for responsiveness, speed, scalability and stability characteristics.
Load testing – Its a performance testing to check system behavior under load. Testing an application under heavy loads, such as testing of a web site under a range of loads to determine at what point the system’s response time degrades or fails.
Stress testing – System is stressed beyond its specifications to check how and when it fails. Performed under heavy load like putting large number beyond storage capacity, complex database queries, continuous input to system or database load.
Volume testing –Volume testing refers to testing a software application or the product with a certain amount of data. E.g., if we want to volume test our application with a specific database size, we need to expand our database to that size and then test the application’s performance on it.
Endurance testing- It is a type of non-functional testing.It is also known as Soak testing.Endurance testing involves testing a system with a significant load extended over a significant period of time, to discover how the system behaves under sustained use. For example, in software testing, a system may behave exactly as expected when tested for 1 hour but when the same system is tested for 3 hours, problems such as memory leaks cause the system to fail or behave randomly.The goal is to discover how the system behaves under sustained use.
Portability testing- It refers to the process of testing the ease with which a computer software component or application can be moved from one environment to another, e.g. moving of any application from Windows 2000 to Windows 10. This is usually measured in terms of the maximum amount of effort permitted. Results are measured in terms of the time required to move the software and complete the and documentation updates.
Security Testing- is a type of software testing carried out by a specialized team of software testers. The objective of security testing is to secure the software is to external or internal threats from humans and malicious programs. Security testing basically checks, how good is software’s authorization mechanism, how strong is authentication, how software maintains confidentiality of the data, how does the software maintain integrity of the data, what is the availability of the software in an event of an attack on the software by hackers and malicious programs is for Security testing requires good knowledge of application, technology, networking, security testing tools. With increased number of web applications, security testing has become more important than ever.