0% found this document useful (0 votes)
36 views44 pages

SW Lecture-08

Uploaded by

jobaerislam16
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)
36 views44 pages

SW Lecture-08

Uploaded by

jobaerislam16
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/ 44

Lecture-08

Software Testing

Nahida Islam
Lecturer, Department of CSE
Email: [email protected]
What Is Software Testing?

▪ Software testing is a process of identifying the correctness of software by considering its all
attributes (Reliability, Scalability, Portability, Re-usability, Usability and evaluating the
execution of software components to find the software bugs or errors or defects.
▪ Testing is a group of techniques to determine the correctness of the application under the
predefined script but, testing cannot find all the defect of application. The main intent of testing
is to detect failures of the application so that failures can be discovered and corrected. It does
not demonstrate that a product functions properly under all conditions but only that it is not
working in some specific conditions.
Verification

▪ Verification is a static practice of verifying documents, design, code and program. It includes
all the activities associated with producing high quality software: inspection, design analysis
and specification analysis. It is a relatively objective process.

▪ Verification is the process of checking that the software meets the specification. “Did I build
what I need?”
▪ Verification will help to determine whether the software is of high quality, but it will not ensure
that the system is useful. Verification is concerned with whether the system is well-engineered
and error-free.
▪ Methods of Verification : Static Testing, Walk Through, Review, Interview.
Validation

▪ Validation is the process of evaluating the final product to check whether the software
meets the customer expectations and requirements. It is a dynamic mechanism of validating
and testing the actual product.

▪ Validation is the process of checking whether the specification captures the customer’s
needs. “Did I build what I said I would?”

▪ Methods of Validation : Dynamic Testing


Verification & Validation
Verification vs. Validation
Verification vs. Validation
What is Error?

▪ An error is a mistake, misconception, or misunderstanding on the part of a software


developer. In the category of developer we include software engineers, programmers,
analysts, and testers.
▪ For example, a developer may misunderstand a design notation, or a programmer might
type a variable name incorrectly — leads to an Error. It is the one which is generated
because of wrong login, loop or due to syntax. Error normally arises in software; it leads to
change the functionality of the program.
What is Failure?

▪ It is a condition that causes the software to fail to perform its required function. It is the
inability of a system or component to perform required function according to its
specification.
▪ For example, as per the software requirement specification there is no need to develop the
login page but all requirements are not clear at the end of developer side and they created
login page .
What is Bug?

• InSoftware testing, when the expected and actual behavior is not matching, an incident
needs to be raised. It is a programmer’s fault where a programmer intended to implement a
certain behavior, but the code fails to correctly conform to this behavior because of incorrect
implementation in coding. It is also known as Defect.
• For example, login module is tested by the tester ; he enter valid email address and
password but it still show warning “ invalid email address”. Now tester reported that defect
to developer and he accepted that defect/ issue is called bug.
Types of Software Testing
Manual Testing

▪ The process of checking the functionality of an application as per the customer needs
without taking any help of automation tools is known as manual testing. While
performing the manual testing on any application, we do not need any specific knowledge
of any testing tool, rather than have a proper understanding of the product so we can
easily prepare the test document.
▪ Manual testing can be further divided into three types of testing, which are as follows:
✔ White box testing
✔ Black box testing
✔ Gray box testing
Black Box Testing

▪ It is carried out to test functionality of the program. It is also called ‘Behavioral’ testing.
The tester in this case, has a set of input values and respective desired results. On
providing input, if the output matches with the desired results, the program is tested ‘ok’,
and problematic otherwise. BLACK BOX TESTING, also known as Behavioral Testing,
is a software testing method in which the internal structure/design/implementation of the
item being tested is not known to the tester.
White Box Testing

▪ It is conducted to test program and its implementation, in order to improve code


efficiency or structure. It is also known as ‘Structural’ testing. In this testing method, the
design and structure of the code are known to the tester. Programmers of the code conduct
this test on the code. White-box testing is a testing technique which checks the internal
functioning of the system.
Grey Box Testing

▪ Grey box is the combination of both White Box and Black Box Testing. The tester who
works on this type of testing needs to have access to design documents. This helps to
create better test cases in this process.
Black Box vs. White Box Testing
Black Box vs. White Box Testing
Black Box vs. White Box Testing
Functional and Non-Functional
Testing
▪ Functional testing verifies each function/feature of the software whereas Non Functional
testing verifies non-functional aspects like performance, usability, reliability, etc.
▪ Functional testing can be done manually whereas Non Functional testing is hard to perform
manually.
▪ Functional testing is based on customer’s requirements whereas Non Functional testing is
based on customer’s expectations.
▪ Functional testing has a goal to validate software actions whereas Non Functional testing has a
goal to validate the performance of the software.
Functional and Non-Functional
Testing
▪ A Functional Testing example is to check the login functionality whereas a Non Functional
testing example is to check the dashboard should load in 2 seconds.
▪ Functional describes what the product does whereas Non Functional describes how the
product works.
▪ Functional testing is performed before the non-functional testing.
Functional and Non-Functional
Testing
▪ Functional Testing types: ▪ Non-functional Testing types:
•Performance Testing
• Unit Testing •Load Testing
• Integration Testing •Stress Testing
• System Testing •Volume Testing
•Security Testing
• Sanity Testing
•Compatibility Testing
• Smoke Testing •Install Testing
• Interface Testing •Recovery Testing
• Regression Testing •Reliability Testing
•Usability Testing
• Beta/Acceptance Testing
•Compliance Testing
•Localization Testing
Unit Testing

▪ It focuses on smallest unit of software design. In this we test an individual unit or


group of inter related units. It is often done by programmer by using sample input
and observing its corresponding outputs.
Module Testing

▪ A type of white box testing technique, module testing is a process of testing


individual components, classes, subroutines, subprograms, or procedures in a
program.
Integration Testing

▪ Integration tests verify that different modules or services used by your application work
well together. It is a level of software testing where individual units are combined and
tested as a group. Integration testing is the process of testing the interface between two
software units or module.
System Testing

▪ It is a level of software testing where a complete and integrated software is tested. The
purpose of this test is to evaluate the system’s compliance with the specified
requirements.
Alpha Testing

▪ It is the most common type of testing used in the Software industry. The objective of
this testing is to identify all possible issues or defects before releasing it into the market
or to the user. Alpha test is a preliminary software field test carried out by a team of
users to find out the bugs that were not found previously by other tests. Alpha testing is
to simulate a real user environment by carrying out tasks and operations that actual user
might perform
▪ Alpha Testing is carried out at the end of the software development phase but before the
Beta Testing.
Beta Testing

▪ Beta Testing is a formal type of Software Testing which is carried out by the customer. It is
performed in the Real Environment before releasing the product to the market for the actual
end-users.
▪ Beta Testing is carried out to ensure that there are no major failures in the software or
product and it satisfies the business requirements from an end-user perspective. Beta
Testing is successful when the customer accepts the software.
Alpha vs. Beta Testing
Alpha vs. Beta Testing
Acceptance Testing

▪ Though System testing has been completed successfully, the Acceptance test is demanded
by the customer. Client accepts the software only when all the features and functionalities
work as expected.
▪ It is the last phase of the testing, after which the software goes into production. This is also
called User Acceptance Testing (UAT).
Acceptance Testing

▪ Stages:
Define acceptance criteria
Plan acceptance testing
Derive acceptance tests
Run acceptance tests
Negotiate test results
Reject/accept system
Load Testing

▪ It is a type of Non-Functional Testing and the objective of Load Testing is to check how
much load or maximum workload a system can handle without any performance
degradation.

▪ Load Testing helps to find the maximum capacity of the system under specific load and any
issues that cause software performance degradation. Load testing is performed using tools
like JMeter, LoadRunner, WebLoad, Silk performer, etc.
Regression Testing

▪ Regression Testing is defined as a type of software testing to confirm that a recent program
or code change has not adversely affected existing features. Regression Testing is nothing
but a full or partial selection of already executed test cases that are re-executed to ensure
existing functionalities work fine.
▪ This testing is done to ensure that new code changes do not have side effects on the existing
functionalities. It ensures that the old code still works once the latest code changes are done.
.
Smoke Testing

▪ Smoke Testing is a software testing process that determines whether the deployed software
build is stable or not. Smoke testing is a confirmation for QA team to proceed with further
software testing. It consists of a minimal set of tests run on each build to test software
functionalities. Smoke testing is also known as “Build Verification Testing” or “Confidence
Testing.”

▪ In simple terms, smoke tests means verifying the important features are working and there
are no showstoppers in the build that is under testing. It is a mini and rapid regression test of
major functionality. It is a simple test that shows the product is ready for testing. This
helps determine if the build is flawed as to make any further testing a waste of time and
resources.
Performance Testing
▪ Stress Testing
▪ Stress limits of system (maximum # of users, peak demands, extended operation)
▪ Volume testing
▪ Test what happens if large amounts of data are handled
▪ Configuration testing
▪ Test the various software and hardware configurations
▪ Compatibility test
▪ Test backward compatibility with existing systems
▪ Security testing
▪ Try to violate security requirements
Performance Testing
▪ Stress Testing
▪ Stress limits of system (maximum # of users, peak demands, extended operation)
▪ Volume testing
▪ Test what happens if large amounts of data are handled
▪ Configuration testing
▪ Test the various software and hardware configurations
▪ Compatibility test
▪ Test backward compatibility with existing systems
▪ Security testing
▪ Try to violate security requirements
Test Cases for Performance Testing
▪ Push the (integrated) system to its limits.
▪ Goal: Try to break the subsystem
▪ Test how the system behaves when overloaded.
▪ Can bottlenecks be identified? (First candidates for redesign in the next iteration
▪ Try unusual orders of execution
▪ Call a receive() before send()
▪ Check the system’s response to large volumes of data
▪ If the system is supposed to handle 1000 items, try it with 1001 items.
▪ What is the amount of time spent in different use cases?
▪ Are typical cases executed in a timely fashion?
Automation Testing

▪ Automation testing is a process of converting any manual test cases into the test scripts
with the help of automation tools, or any programming language is known as automation
testing.
Best Automation Testing Tools

▪ LambdaTest
▪ TestComplete
▪ QMetry Automation Studio
▪ TestProject
▪ Katalon Studio
▪ Testsigma
▪ Qualibrate
Testing Has Its Own Life Cycle
Test Team
The END

You might also like