0% found this document useful (0 votes)
20 views16 pages

4940system Testing

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views16 pages

4940system Testing

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Testing Levels :

Software testing plays a critical role in ensuring software quality. By detailedly reviewing
specifications, design, and code, testers can find and remove mistakes to maintain and
upgrade the quality of the software during the testing cycle. Different phases or stages
of testing during the software development cycle are called testing levels.

There are various software testing types for manual testing and automated testing, and
different testing methodologies such as black-box testing, white-box testing, and
gray-box testing. During the testing process, testers may use various testing types such
as functional testing, performance testing, security testing, and usability testing.
Software testing helps improve the overall quality of the software product, reduce
development costs, and prevent potential issues that could arise after the software is
released to users.
Principles of Software Testing
The principles of testing are a set of guidelines that help testers to plan, design, and
execute effective software testing. These principles are essential in guiding testers to
design and execute effective software testing that will identify defects and improve the
overall quality of the software application being tested.

● Identifying the presence of defects: Testing is not about proving that software
is error-free but about finding defects that need to be fixed. Defects can include
code bugs, missing requirements, incorrect functionality, and other issues.
● Exhaustive testing is time consuming: It is impossible to test all possible
combinations and scenarios in software applications, so testers must focus on
the most critical and high-risk areas.
● Early testing saves time and money: It is more cost-effective to identify and fix
defects early in the software development life cycle than later in the process.
● Defect clustering: In software development, defects often occur in clusters,
meaning that a small number of modules or components are responsible for the
majority of defects. Testers should focus on these high-risk areas.
● Pesticide paradox: Repeating the same tests with the same inputs can result in
the same defects being identified repeatedly. Testers must continually update
and modify their test cases to find new defects.
● Testing is context-dependent: The testing process should be tailored to the
specific context and requirements of the software application being tested.

● Absence-of-errors fallacy: Finding no defects in the software application does


not mean that it is error-free. Testers must be aware of potential risks and
unknown issues.
Classification of Different Types of Testing
Testing is divided into two types –

​ Functional Testing

​ Non Functional Testing

Functional Testing
Functional testing focuses on verifying the functionality of the software system. It is a
type of testing that is done to ensure that the system works as intended and meets the
functional requirements specified by the stakeholders. Functional testing is concerned
with what the software system does, and how it performs its functions. Some examples
of functional testing include unit testing, integration testing, and acceptance testing.
Example of Functional Testing:
Let’s say you’re testing a login page of a website. The functional requirements of this
login page may include:

● The user should be able to enter their username and password.


● The system should authenticate the user’s credentials and grant access if the
credentials are correct.

● The system should deny access if the user’s credentials are incorrect.
To test the functionality of this login page, you may perform the following functional
tests:

● Enter valid username and password and verify that the user is able to
successfully login.
● Enter invalid username and password and verify that the user is not able to login
and an appropriate error message is displayed.
● Verify that the login page displays correctly on different browsers and devices.
● Verify that the password field is secure and does not display the entered
password.

● Verify that the “Forgot Password” feature works correctly and allows users to
reset their passwords.

Non Functional Testing


Non-functional testing focuses on evaluating the non-functional aspects of the software
system. This type of testing includes testing for performance, usability, reliability,
scalability, and security. Non-functional testing is concerned with how well the software
system performs its functions, rather than what it does. Some examples of
non-functional testing include load testing, stress testing, usability testing, and security
testing.
Example of Non functional Testing:
Let’s say you’re testing the performance of a website. The non-functional requirements
of this website may include:

● The website should be able to handle a certain number of concurrent users.


● The website should load pages within a certain amount of time.
● The website should be responsive and display correctly on different devices and
screen sizes.
● Accessible for users who are differently abled.

● The website should be secure and protect user data.

What are the Software Testing Techniques and How are They Different from
Testing Types?
Software test techniques refer to the methods used to test a software system. The most
common software test techniques are

​ Black Box Testing is a software testing technique where the internal workings or
code structure of the system being tested are not known to the tester.
​ White Box Testing focuses on the software’s internal logic, structure, and
coding. It provides testers with complete application knowledge, including access
to source code and design documents, enabling them to inspect and verify the
software’s inner workings, infrastructure, and integrations.

​ Grey Box Testing is a combination of black box and white box testing; involves
some knowledge of the internal workings but focuses on functionality.
These techniques are used to test a software system at different levels of detail, from a
high-level view of the system’s functionality to a detailed view of its internal workings.
Types of Functional Testing
Here are different types of Functional Testing:

1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing

1. Unit Testing
Unit testing is a software testing type in which individual units/components are tested in
isolation from the rest of the system to ensure that they work as intended. A unit refers
to the smallest testable part of a software application that performs a specific function or
behavior. A unit can be a method, a function, a class, or even a module. They can be
run in isolation or in groups. Unit tests are typically written by developers to check the
correctness of their code and ensure that it meets the requirements and specifications.

Advantages of Unit Testing

● Early detection of Bugs


● Simplifies Debugging Process
● Encourages Code Reusability
● Improves Code Quality
● Enables Continuous Integration

Types of Unit Testing


a. Gorilla Testing
Gorilla testing is a software testing technique where the tester performs testing of a
particular module or component of the software system rigorously and extensively to
identify any issues or bugs that may arise. In other words, Gorilla testing focuses on
testing a single module or component in depth to ensure that it can handle high loads
and perform optimally under extreme conditions.
Example of Gorilla Testing
Testing a particular unit/module extensively to ensure that it handles heavy load.

Advantages of Gorilla Testing

● Identify potential bottlenecks or weaknesses in a particular module


● Capable of handling high loads
● Helps identify issues or bugs that may be missed by other testing techniques

2. Integration Testing
Integration testing is a testing type in which different modules or components of a
software application are tested together as a group to ensure that they work as intended
and are integrated correctly. The main aim of integration tests is to identify issues that
might come up when multiple components work together. It ensures that individual code
units/ pieces can work as a whole cohesively.
Integration testing can be further broken down to:

● Component Integration Testing: This type of testing focuses on testing the


interactions between individual components or modules.
● System Integration Testing: This type of testing focuses on testing the
interactions between different subsystems or layers of the software application.

● End-to-End Integration Testing: This type of integration testing focuses on


testing the interactions between the entire software application and any external
systems it depends on.
Example of Integration Tests: A software application consists of a web-based
front-end, a middleware layer that processes data, and a back-end database that stores
data. Integration tests would verify if the data submitted in the front end is processed by
the middleware and then stored by the backend database.

Advantages of Integration testing:

● Early Detection of Issues


● Improved Software Quality
● Increased Confidence in the Software
● Reduced Risk of Bugs in Production
● Better Collaboration Among Team Members
● More Accurate Estimation of Project Timelines
3. System Testing
System testing is a testing type that tests the entire software application as a whole and
ensures that the software meets its functional and non-functional requirements. System
testing is typically performed after integration testing. During system testing, testers
evaluate the software application’s behavior in various scenarios and under different
conditions, including normal and abnormal usage, to ensure that it can handle different
situations effectively.

Example of System Testing


A software application consists of a web-based front-end, a middleware layer that
processes data, and a back-end database that stores data. The system test for this
scenario would involve the following steps:

● The user accesses the front-end interface and submits an order, including item
details and shipping information.
● The middleware layer receives the order and processes it, including verifying that
the order is valid and the inventory is available.
● The middleware layer sends the order information to the back-end database,
which stores the information and sends a confirmation message back to the
middleware layer.

● The middleware layer receives the confirmation message and sends a response
back to the front-end indicating that the order has been successfully processed.
Advantages of System Testing

● Identifies and resolves defects or issues that may have been missed during
earlier stages of testing.
● Evaluates the software application’s overall quality, including its reliability,
maintainability, and scalability.
● Increases user satisfaction
● Reduces risk

Types of System Testing


a. End to End Testing
End-to-end testing is a testing methodology that tests the entire software system from
start to finish, simulating a real-world user scenario. The goal of end-to-end testing is to
ensure that all the components work together seamlessly and meet the desired
business requirements. Most often people use the term system testing and end to end
testing interchangeably. However both of them are different types of testing.
System testing is a type of testing that verifies the entire system or software application
is working correctly as a whole. This type of testing includes testing all the modules,
components, and integrations of the software system to ensure that they are working
together correctly. The focus of system testing is to check the system’s behavior as a
whole and verify that it meets the business requirements.
End-to-end testing, on the other hand, is a type of testing that verifies the entire
software application from start to finish, including all the systems, components, and
integrations involved in the application’s workflow. The focus of E2E testing is on the
business processes and user scenarios to ensure that they are working correctly and
meet the user requirements.
Example of End to End Testing
E-commerce transaction: End-to-end testing of an e-commerce website involves testing
the entire user journey, from product selection to payment, shipping, and order
confirmation.
Advantages of End to End testing

● Allows you to test real world scenarios


● Comprehensive testing
● Improves quality

b. Monkey Testing
Monkey testing is a testing type where the tester tests in a random manner with random
inputs to analyze if the application breaks. The objective of monkey testing is to verify if
an application crashes by giving random input values. There are no special test cases
written for monkey testing.
Example of Monkey Testing
A tester randomly turns off the power or unplugs the system to test the application’s
ability to recover from sudden power failures.
Advantages of Monkey Testing

● Does not require extensive knowledge


● Ensures reliability
● Used to identify bugs that cannot be discovered through traditional methods
● Cost Effective

Difference between Monkey Testing and Gorilla Testing: Monkey testing and gorilla
testing are not the same, although they both involve sending random input data to the
software system to observe its behavior. Monkey testing is focused on finding defects
related to unexpected or invalid input, while gorilla testing is focused on thoroughly
testing a specific feature or functionality of the software system.
c. Smoke Testing
Smoke testing is a testing type that is conducted to ensure that the basic and essential
functionalities of an application or system are working as expected before moving on to
more in-depth testing.
Example of Smoke Testing
Smoke testing for login will check whether the login screen is accessible and if the users
can log in.
Advantages of Smoke Testing

● Quick Feedback

● Early detection of defects


4. Acceptance Testing
Acceptance Testing verifies whether a software application meets the specified
acceptance criteria and is ready for deployment. It is usually performed by end-users or
stakeholders to ensure that the software meets their requirements and is fit for purpose.
Acceptance Testing can be further divided into two types: User Acceptance Testing
(UAT) and Business Acceptance Testing (BAT). User Acceptance Testing is
performed by end-users to validate that the software meets their needs and is easy to
use. Business Acceptance Testing is performed by stakeholders to ensure the
alignment of business/functional requirements with the organization’s objectives.
Example of Acceptance Testing
Conducting tests to meet if an app meets the requirements of the user. For a banking
app, acceptance testing would involve testing the app for login, account management,
fund transfer, statement download, card payment etc.
Advantages of Acceptance Testing

● Increased stakeholder engagement


● Reduced Risk
● Reduced costs
Types of Acceptance Testing
a. Alpha Testing
Alpha testing is a type of testing that is performed in-house by the development team or
a small group of users. It is the first phase of testing that is conducted before the
software is released to the public or external users. Alpha testing is a crucial step in the
software development process as it helps to identify bugs, defects, and usability issues
before the product is released.

Example of Alpha Testing


A game development company is creating a new game. The development team
performs alpha testing by testing the game’s performance, such as loading times,
graphics, sound effects, and gameplay.
Advantages of Alpha Testing

● Early detection of issues


● Enhanced user experience
● Feedback from internal users
b. Beta Testing
Beta testing is a type of testing that is performed by a group of external users who are
not a part of the development team. The purpose of beta testing is to gather feedback
from real users and to identify any issues that were not found during the alpha testing
phase.
Example of Beta Testing
A software company is releasing a new feature of its product. The company invites a
group of external users to beta test the product and provide feedback on any bugs,
defects, or issues that were not found during the alpha testing phase.
Advantages of Beta Testing

● Real-world feedback
● Marketing and promotion
● Enhanced user experience

c. User Acceptance Testing


User acceptance testing is a type of acceptance testing that is performed by the
end-users of the software system. The focus of UAT is to validate the software system
from a user’s perspective and to ensure that it meets their needs and requirements.
UAT is typically performed at the end of the software development lifecycle.
Example of User Acceptance Testing
A company asks a batch of its customers to test the website and provide feedback on
its functionality, usability, and overall user experience. Based on the feedback, it makes
the necessary changes and improvements to the website.
Advantages of User Acceptance Testing

● Reduced development costs

● Improved customer satisfaction


d. Sanity Testing
Sanity testing is a testing type that is performed to quickly determine if a particular
functionality or a small section of the software is working as expected after making
minor changes. The main objective of sanity testing is to ensure the stability of the
software system and to check whether the software is ready for more comprehensive
testing.
Example of Sanity Testing
After fixing a bug that caused a crash in a mobile application, you can perform sanity
testing by opening the app and ensuring that it does not crash anymore
Advantages of Sanity Testing

● Quick and efficient


● Saves time and effort

● Cost-effective

You might also like