Professional Documents
Culture Documents
Stqa Unit 2
Stqa Unit 2
Stqa Unit 2
• Error :
• an error is usually a programmer action or omission that results in a fault.
• Refers to difference between Actual Output and Expected output.
• Fault :
• A fault is a software defect that causes a failure.
• It is a condition that causes the software to fail to perform its required
function.
Failure
• A failure is the unacceptable departure of a program operation from program
requirements.
• It is the inability of a system or component to perform required function
according to its specification.
Error, Fault, Failure,
• IEEE Definitions
• Error: Human mistake that caused fault
• Fault: Discrepancy in code that causes a failure.
• Failure: External behavior is incorrect
• Note:
• DEFECT:
• It can be simply defined as a variance between expected and actual. The defect is an error found AFTER
the application goes into production. It commonly refers to several troubles with the software products, with
their external behavior or with its internal features. In other words, a Defect is a difference between
expected and actual results in the context of testing. It is the deviation of the customer requirement.
• BUG:
• A bug is the result of a coding error. An Error found in the development environment before the product is
shipped to the customer. A programming error that causes a program to work poorly, produce incorrect
results or crash. An error in software or hardware that causes a program to malfunction. A bug is the
terminology of Tester.
Defect, Error, Bug, Failure and Fault!
• FAILURE:
• A failure is the inability of a software system or component to perform its required functions within specified
performance requirements. When a defect reaches the end customer it is called a Failure. During
development, Failures are usually observed by testers.
• FAULT:
• An incorrect step, process or data definition in a computer program that causes the program to perform in
an unintended or unanticipated manner. A fault is introduced into the software as the result of an error. It is
an anomaly in the software that may cause it to behave incorrectly, and not according to its specification. It
is the result of the error.
• The software industry can still not agree on the definitions for all the above. In essence, if you use the term
to mean one specific thing, it may not be understood to be that thing by your audience.
Fault/Failure Model
• To understand why faults hide during testing, it is necessary to know the sequence of
events that must occur in order to observe incorrect output :
An input must cause a defect to be executed.
Once the defect is executed, the succeeding data state must become corrupted. This
data state is hence referred to as containing a data state error.
After a data state error is created, the data state error must propagate to an output
state, meaning that incorrect output exits the software.
This sequence of events is called the “fault/failure” model, because it relates
faults, data state errors and failures.
• A test case is a defined format for software testing required to check if a particular
application/software is working or not.
• A test case consists of a certain set of conditions that need to be checked to test an
application or software i.e. in more simple terms when conditions are checked it
checks if the resultant output meets with the expected output or not.
• A test case consists of various parameters such as Id, condition, steps, input,
expected result, result, status, and remarks.
TEST CASE
• A test case is a defined format for software testing required to check if a particular
application/software is working or not.
• A test case consists of a certain set of conditions that need to be checked to test an
application or software i.e. in more simple terms when conditions are checked it
checks if the resultant output meets with the expected output or not.
• A test case consists of various parameters such as Id, condition, steps, input,
expected result, result, status, and remarks.
TEST CASE
• Software testing is the process of executing a program with the aim of finding the
error.
• To make our software perform well it should be error-free.
• If testing is done successfully it will remove all the errors from the software.
• Software testing is an activity which aims at evaluating the quality of a software
product and also to improve it by identifying defects.
• Software testing strives to achieve its objectives but has certain limitations.
However, adherence to the established objectives ensures effective testing.
Testing - Objectives
Testing Objectives
1. To evaluate the work products such as requirements, design, user stories, and code: ...
2. To verify the fulfillment of all specified requirements: ...
3. To validate if the test object is complete and works as per the expectation of the users and the stakeholders:
4. To build confidence in the quality level of the test object:
5. To prevent defects in the software product:
6. To find defects in the software product:
7. To provide sufficient information to stakeholders to allow them to make informed decisions, especially regarding the
level of quality of the test object:
8. To reduce the level of risk of insufficient software quality:
Testing Principles
Testing is the process of executing a program with the aim of finding errors. To make our software perform well it
should be error-free. If testing is done successfully it will remove all the errors from the software.
Principles of Testing:-
(i) All the test should meet the customer requirements
(ii) To make our software testing should be performed by a third party
(iii) Exhaustive testing is not possible. As we need the optimal amount of testing based on the risk assessment of
the application.
(iv) All the test to be conducted should be planned before implementing it
(v) It follows the Pareto rule(80/20 rule) which states that 80% of errors come from 20% of program components.
(vi) Start testing with small parts and extend it to large parts.
Testing Principles
3. Early Testing:
To find the defect in the software, early test activity shall be started. The defect detected in the early phases of
SDLC will be very less expensive. For better performance of software, software testing will start at the initial
phase i.e. testing will perform at the requirement analysis phase.
4. Defect clustering:
In a project, a small number of modules can contain most of the defects. Pareto Principle to software testing
state that 80% of software defect comes from 20% of modules.
Testing Principles
5. Pesticide paradox:
Repeating the same test cases, again and again, will not find new bugs. So it is necessary to review the test
cases and add or update test cases to find new bugs.
6. Testing is context-dependent:
The testing approach depends on the context of the software developed. Different types of software need to
perform different types of testing. For example, The testing of the e-commerce site is different from the testing of
the Android application.
2. Validation: it refers to a different set of tasks that ensure that the software that has
been built is traceable to customer requirements.
For example, a line of code in a “calculator software” can have the function of
implementing “addition,” while another line of code implements “multiplication,” etc.
These addition and multiplication functions and other functions of the calculator
software must be individually tested to ensure that the calculator operates flawlessly.
You do not want to start a calculator that implements a division when users click on
the add sign.
Unit testing is a process that mostly involves testing the internal workings of the
software. It’s easy and quick to do because it deals with the software unit by unit, not
as a whole.
Level of Software Testing - Integration Testing
• This testing level involves combining all the components that make up the software and testing
everything as a whole instead of individually as done during unit testing.
• Why is integration testing needed?
• First, the integrated codes could have been written by different developers, and need to be
tested to ensure their correctness.
• By testing, we can identify and correct inter-working defects, simultaneous operation defects,
parallel operation defects, etc.
Level of Software Testing - Integration Testing
• For example, we could verify if the following conditions from the checklist were met:
• If communication between the systems is carried out correctly
• If linked documents can run smoothly on all platforms
• Whether security specifications work during communication between systems
• Whether the software can withstand network breakdowns between the web servers and app
servers
Level of Software Testing - Integration Testing
• Integration testing can be done in two ways: Bottom-up integration testing and Top-down integration
testing.
• Bottom-up integration
• This testing begins with unit testing, followed by tests of progressively higher-level combinations
of units called modules or builds.
• Top-down integration
• In this testing, the highest-level modules are tested first and progressively, lower-level modules
are tested thereafter.
Level of Software Testing - System Testing
• System testing has to do with verifying the required operations of the software and its compatibility
with operating systems.
• In other words, we test both the technicalities and the business logic of the software;
• we run functional tests to check what the various functions of a system do, and non-functional tests
to check how those functions work.
• For instance, in functional testing, we check if a login feature responds when the user enters a
password. But in non-functional testing, we check how long it takes the user to log in after password
entry.
Level of Software Testing - System Testing
This level of software testing is similar to the system testing, but here, the test is carried out by some selected end-
users. This is the only software testing stage that is carried out by users. This stage determines if the software is
finally ready to be launched to the general public.
All the selected users give their various opinions about the operation of the software; they let the organization
know whether the software meets their diverse requirements, and recommend areas that may need to be
improved upon. Acceptance testing can also be referred to as User Acceptance Testing.
Though each organization may conduct acceptance testing using its own specifics — who and where to test — it is
vital that we select users with different demographics, operating systems, and unique past experiences of using
similar software.
Level of Software Testing - Acceptance Testing
Beta Testing
• This test is performed after alpha testing has been successfully performed. In beta testing, a sample of the
intended audience tests the application. Beta testing is also known as pre-release testing.
• Beta test versions of software are ideally distributed to a wide audience on the Web, partly to give the program a
"real-world" test and partly to provide a preview of the next release.
• In this phase, the audience will be testing the following −
• Users will install, run the application and send their feedback to the project team.
• Typographical errors, confusing application flow, and even crashes.
• Getting the feedback, the project team can fix the problems before releasing the software to the actual users.
• The more issues you fix that solve real user problems, the higher the quality of your application will be.
• Having a higher-quality application when you release it to the general public will increase customer satisfaction.
Verification and Validations
Verification testing
Verification testing includes different activities such as
business requirements, system requirements, design
review, and code walkthrough while developing a
product.
It is also known as static testing, where we are
ensuring that "we are developing the right product or
not".
And it also checks that the developed application
fulfilling all the requirements given by the client.
Verification and Validations
Validation testing
• Validation testing is testing where tester performed functional and non-functional testing.
• Here functional testing includes Unit Testing (UT), Integration Testing (IT) and System Testing (ST),
and non-functional testing includes User acceptance testing (UAT).
• Validation testing is also known as dynamic testing, where we are ensuring that "we have developed
the product right." And it also checks that the software meets the business needs of the client.
Debugging
Debugging Tools:
Here is a list of some of the widely used debuggers:
• Radare2
• WinDbg
• Valgrind
Level of Software Testing
The activities of testing can be divided into the following basic steps:
In this section, we are going to understand the various types of software testing,
which can be used at the time of the Software Development Life Cycle.
If we want to ensure that our software is bug-free or stable, we must perform the
various types of software testing because testing is the only method that makes our
application bug-free.
Types of Software Testing
Types of Software Testing
THANK YOU