4940system Testing
4940system Testing
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.
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 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.
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.
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:
● 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
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
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
● Real-world feedback
● Marketing and promotion
● Enhanced user experience
● Cost-effective