0% found this document useful (0 votes)
17 views

Different Types of Software Testing

Uploaded by

shaik.rayyan.07
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views

Different Types of Software Testing

Uploaded by

shaik.rayyan.07
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

Different Types of Software Testing

1. Manual Testing
2. Automation Testing
1. Manual Testing: Manual testing is a technique to test the software that is carried out using the
functions and features of an application. Manual testing is time-consuming because it is done by
humans, and there is a chance of human errors.

Advantages of Manual Testing:

Fast and accurate visual feedback: It detects almost every bug in the software application and is
used to test the dynamically changing GUI designs like layout, text, etc.
Less expensive: It is less expensive as it does not require any high-level skill or a specific type of tool.
No coding is required: No programming knowledge is required while using the black box testing
method. It is easy to learn for the new testers.
Efficient for unplanned changes: Manual testing is suitable in case of unplanned changes to the
application, as it can be adopted easily.
2. Automation Testing: Automated Testing is a technique where the Tester writes scripts on their
own and uses suitable Software or Automation Tool to test the software.
Advantages of Automation Testing:
 Simplifies Test Case Execution: Automation testing can be left virtually unattended and thus
it allows monitoring of the results at the end of the process.
 Improves Reliability of Tests: Automation testing ensures that there is equal focus on all the
areas of the testing, thus ensuring the best quality end product.
 Increases amount of test coverage: Using automation testing, more test cases can be
created and executed for the application under test. Thus, resulting in higher test coverage
and the detection of more bugs.
 Minimizing Human Interaction: In automation testing, everything is automated from test
case creation to execution thus there are no changes for human error due to neglect.
Types of Manual Testing

White Box Testing


In white-box testing, the developer will inspect every line of code before
handing it over to the testing team or the concerned test engineers.
Subsequently, the code is noticeable for developers throughout testing;
that's why this process is known as WBT (White Box Testing).

White box testing is also known as open box testing, glass box
testing, structural testing, clear box testing, and transparent box
testing.

Black Box Testing


Black-box testing is a type of software testing in which the tester is not
concerned with the internal knowledge or implementation details of the
software but rather focuses on validating the functionality based on the
provided specifications or requirements.

black box testing is a process of checking the functionality of an application as


per the customer requirement. The source code is not visible in this testing;
that's why it is known as black-box testing.

3. Gray Box Testing

Gray Box Testing is a software testing technique that is a combination


of the Black Box Testing technique and the White Box Testing technique.

Functional Testing
The test engineer will check all the components systematically against
requirement specifications is known as functional testing. Functional
testing is also known as Component testing.

In functional testing, all the components are tested by giving the value,
defining the output, and validating the actual output with the expected
value.

types of Functional Testing contain the following:

o Unit Testing
o Integration Testing
o System Testing
1. Unit Testing
Unit testing is the first level of functional testing in order to test any
software. In this, the test engineer will test the module of an application
independently or test all the module functionality is called unit testing.

2. Integration Testing

It is the second level of functional testing, where we test the data flow
between dependent modules or interface between two features is
called integration testing.

Integration testing is also further divided into the following parts:

o Incremental Testing
o Non-Incremental Testing

Incremental Integration Testing

Whenever there is a clear relationship between modules, we go for


incremental integration testing. we can say that incrementally adding up
the modules and test the data flow between the modules is known
as Incremental integration testing.

Types of Incremental Integration Testing

Incremental integration testing can further classify into two parts, which
are as follows:

1. Top-down Incremental Integration Testing


2. Bottom-up Incremental Integration Testing

1. Top-down Incremental Integration Testing

In this approach, we will add the modules step by step or incrementally


and test the data flow between them. We have to ensure that the modules
we are adding are the child of the earlier ones.

2. Bottom-up Incremental Integration Testing

In the bottom-up approach, we will add the modules incrementally and


check the data flow between modules. And also, ensure that the module
we are adding is the parent of the earlier ones.

Non-Incremental Integration Testing/ Big Bang Method

Whenever the data flow is complex and very difficult to classify a parent
and a child, we will go for the non-incremental integration approach. The
non-incremental method is also known as the Big Bang method.
3. System Testing

In system testing, the test environment is parallel to the production


environment. It is also known as end-to-end testing.

Non-function Testing

Non-functional testing will help us minimize the risk of production and


related costs of the software.

Non-functional testing is a combination of performance, load, stress,


usability and, compatibility testing.

Types of Non-functional Testing

Non-functional testing categorized into different parts of testing, which we


are going to discuss further:

o Performance Testing
o Usability Testing
o Compatibility Testing

1. Performance Testing

In performance testing, the test engineer will test the working of an


application by applying some load.

the test engineer will only focus on several aspects, such as Response
time, Load, scalability, and Stability of the software or an application.

Classification of Performance Testing

Performance testing includes the various types of testing, which are as


follows:

o Load Testing
o Stress Testing
o Scalability Testing
o Stability Testing
o Load Testing

While executing the performance testing, we will apply some load on the
particular application to check the application's performance, known
as load testing. Here, the load could be less than or equal to the desired
load.

o Stress Testing

It is used to analyze the user-friendliness and robustness of the software


beyond the common functional limits.

Primarily, stress testing is used for critical software, but it can also be
used for all types of software applications.

o Scalability Testing

To analysis, the application's performance by enhancing or reducing the


load in particular balances is known as scalability testing.

In scalability testing, we can also check the system, processes, or


database's ability to meet an upward need. And in this, the Test
Cases are designed and implemented efficiently.

o Stability Testing

Stability testing is a procedure where we evaluate the application's


performance by applying the load for a precise time.

It mainly checks the constancy problems of the application and the


efficiency of a developed product. In this type of testing, we can rapidly
find the system's defect even in a stressful situation.

2. Usability Testing
usability testing is when the software also undergoes various testing
processes which is performed by potential users before launching into the
market. It is a part of the software development lifecycle (SDLC).

3. Compatibility Testing

In compatibility testing, we will check the functionality of an application in


specific hardware and software environments. Once the application is
functionally stable then only, we go for compatibility testing.

Grey Box Testing

Another part of manual testing is Grey box testing. It is


a collaboration of black box and white box testing.

Since, the grey box testing includes access to internal coding for
designing test cases. Grey box testing is performed by a person who
knows coding as well as testing.

Some other types of Software Testing

In software testing, we also have some other types of testing that are not
part of any above discussed testing, but those testing are required while
testing any software or an application.

o Smoke Testing
o Sanity Testing
o Regression Testing
o User Acceptance Testing
o Exploratory Testing
o Adhoc Testing
o Security Testing
o Globalization Testing

Let's understand those types of testing one by one:


Smoke Testing: we will test an application's basic and critical features
before doing one round of deep and rigorous testing.

Example:

If the project has 2 modules so before going to the module make


sure that module 1 works properly.

Sanity Testing

Sanity testing, also known as smoke testing, is a type of software testing


performed after a software build to quickly determine whether it is stable
enough for further, more comprehensive testing. The primary goal of
sanity testing is to verify that the most critical functionalities of the
software are working as expected, without delving into detailed testing.

Regression Testing

Regression testing is a type of software testing that ensures that recent


code changes or enhancements to an application have not adversely
affected existing functionalities. It involves re-running previously executed
test cases to verify that the existing features still work correctly after the
introduction of new code.

User Acceptance Testing


User Acceptance Testing (UAT), also known as end-user testing, beta
testing, or application testing, is a critical phase in the software
development lifecycle where the software is tested by end-users or
stakeholders to ensure that it meets their requirements and expectations
before it is released into production.

Exploratory Testing

Exploratory testing is an approach to software testing that emphasizes


creativity, learning, and adaptability. Unlike traditional scripted testing,
where test cases are predefined and executed based on a predetermined
script, exploratory testing is more free-form and relies on the tester's
intuition, experience, and domain knowledge to explore the software and
uncover defects.

Adhoc Testing

Ad hoc testing is an informal and improvisational approach to software


testing that is performed without a predefined test plan or formal
documentation. Instead of following scripted test cases or structured test
scenarios, testers explore the software system freely, relying on their
intuition, experience, and domain knowledge to identify defects and
issues.

Security Testing

Security testing is a crucial aspect of software testing that focuses on


identifying vulnerabilities, weaknesses, and potential threats in an
application's security posture. It involves evaluating the security controls,
mechanisms, and configurations of a software system to ensure that it
can withstand various security attacks and protect sensitive data from
unauthorized access, modification, or disclosure.

Globalization Testing

Globalization testing, also known as internationalization testing, is a type


of software testing that evaluates how well a software application can
support users and adapt to different languages, cultures, and regions
worldwide. The goal of globalization testing is to ensure that the software
is culturally and linguistically adaptable, making it accessible and usable
by users from diverse backgrounds around the globe.

Alpha Testing

Alpha testing is a type of software testing performed by the internal


teams or developers before releasing the software to external users or
customers. It is conducted in a controlled environment, typically within the
organization's premises, and involves testing the software for defects,
usability issues, and overall functionality.
Beta Testing

Beta testing is a type of software testing performed by real users or


customers in a real-world environment before the software is released to
the general public. It is conducted after alpha testing and aims to gather
feedback from a diverse user base to identify defects, usability issues, and
other areas for improvement.

Validation Testing

Validation testing is a crucial phase in software development, where the


software or system is evaluated to ensure that it meets specified
requirements and functions correctly within its intended environment. This
testing stage aims to validate that the software behaves as expected,
performs its functions accurately, and meets the needs of its users.

There are several types of validation testing, including:

1. Functional Testing: Verifying that each function of the software


application operates in conformance with the requirement
specification.
2. User Acceptance Testing (UAT): Conducted to determine
whether the software system satisfies the user requirements. It is
usually the final phase of testing before the software is released to
end-users.
3. Integration Testing: Testing performed to expose defects in the
interfaces and in the interaction between integrated
components/modules.
4. System Testing: Evaluating the behavior of a complete and fully
integrated software product. It ensures that all components work
together as expected to achieve the desired results.
5. Regression Testing: Testing conducted to ensure that recent
changes or enhancements have not adversely affected existing
features.
6. Performance Testing: Assessing the speed, responsiveness, and
stability of a software application under various workloads.
7. Security Testing: Identifying vulnerabilities and weaknesses in the
software system's security mechanisms to protect data and
resources from unauthorized access.
8. Compliance Testing: Verifying whether the software meets
regulatory standards, industry-specific guidelines, or legal
requirements.

Verification Testing

Verification testing is a quality assurance process that focuses on


confirming whether the software or system being developed accurately
and completely implements the specifications or requirements. It's about
ensuring that the product is built right, in contrast to validation testing,
which focuses on ensuring that the right product is built.
Here are some key points about verification testing:

1. Objective: The main objective of verification testing is to verify that


the software or system conforms to its specified requirements,
design, and standards.
2. Early Stage Activity: Verification testing often starts early in the
software development lifecycle and continues throughout the
development process. It ensures that each phase of development is
producing the expected outputs.
3. Types of Verification Testing:
 Reviews and Inspections: Formal or informal reviews of
documents, code, or design to identify issues and ensure
compliance with requirements.
 Static Analysis: Automated analysis of code or documents to
identify potential defects or deviations from standards without
executing the software.
 Unit Testing: Testing individual units or components of the
software in isolation to verify their correctness.
 Code Analysis: Analyzing the source code to identify
potential issues such as syntax errors, coding standards
violations, or potential security vulnerabilities.
 Model Checking: Formal verification technique to verify
whether a system model meets specified properties or
requirements.
4. Documentation: Verification testing often involves creating and
maintaining documentation, including requirements documents,
design documents, test plans, and test cases, to ensure alignment
with project objectives.
5. Iterative Process: Verification testing is an iterative process that
may involve revisiting and refining requirements, designs, and code
based on feedback and verification results.
6. Prevention of Defects: By identifying and addressing issues early
in the development process, verification testing helps prevent
defects from propagating to later stages, reducing the cost and
effort of fixing them.
7. Complementary to Validation Testing: Verification testing
complements validation testing by ensuring that the software is
being developed correctly according to the specified requirements,
which sets the stage for validation testing to confirm that the
software meets user needs and expectations.

Verification vs Validation in Testing

Verification testing ensures that the software is built correctly and meets
its specified requirements.

Validation testing ensures that the software meets the needs of end-users
and is fit for its intended purpose.
1. What is a Test Case?

Ans: Test Cases can be simply determined as conditions that a tester will check whether the
code runs perfectly or not.

2. What is the use of automation testing?

Ans: Automation Testing is used to reduce the testing efforts, also testing faster delivering
capability.

3. What is the difference between manual and automated testing?

Ans: Manual testing involves a human tester interacting with the software to find bugs.
Automated testing uses scripts or tools to automate repetitive test cases.

4. When should I use manual vs. automated testing?

Ans: Use manual testing for exploratory testing, usability evaluation, and complex
scenarios. Use automated testing for repetitive tasks, regression testing, and performance
testing.

5. What are some tools used for software testing?

Answer: Many tools are available for software testing, including test management tools,
automation frameworks, and performance testing tools. The specific tools used depend on the
project and testing needs.

You might also like