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

Sotware Testing

Uploaded by

chabdulmanan8953
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Sotware Testing

Uploaded by

chabdulmanan8953
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 49

Software Engineering-I

SE-401

MUHAMMAD TALHA TAHIR BAJWA


Outline
 What is Software Testing?
 Principles of Testing
 Types of Software Testing
 Methods of Software Testing
 Testing Approaches
 Testing Levels
 Regression Testing
 Smoke Testing
 Stress Testing
 Load Testing
 Performance Testing
What is Software Testing?
 Software testing is a process, to evaluate the
functionality of a software application with an intent
to find whether the developed software met the
specified requirements or not.
 And to identify the defects to ensure that the
product is defect free in order to produce the quality
product.
What is Software Testing?
 Testing is a process of executing a program with the aim
of finding 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.
Why Software Testing?
Some of the reasons why software testing becomes very significant
and integral part in the field of information technology are as
follows:
 Cost effectiveness
 Customer Satisfaction
 Security
 Product Quality
Principles of Testing
 All the test should meet the customer requirements.
 To make our software effective testing should be performed by
third party.
 Exhaustive testing is not possible. As we need the optimal amount
of testing based on the risk assessment of the application.
 All the test to be conducted should be planned before
implementing it.
 Start testing with small parts and extend it to large parts.
Software Testing Types

There are two types of software testing:


1. Manual Testing
2. Automation Testing
Manual Testing
 Manual Testing is a process of finding out the defects or bugs in a
software program.
 In this method the tester plays an important role of end user and
verifies that all the features of the application are working correctly.
 The tester manually executes test cases without using any
automation tools.
 The tester prepares a test plan document which describes the
detailed and systematic approach to testing of software applications.
Manual Testing
 Test cases are planned to cover almost 100% of the software
application.
 As manual testing involves complete test cases it is a time
consuming test.
 The differences between actual and desired results are treated as
defects.
 The defects are then fixed by the developer of software
application.
Manual Testing
 The tester retests the defects to ensure that defects are fixed.
 The goal of Manual testing is to ensure that application is defect &
error free.
 And is working fine to provide good quality work to customers.
Procedure of Manual Testing
Automation Testing
 Automation testing is the process of testing the software using an
automation tool to find the defects.
 In this process, testers execute the test scripts and generate the
test results automatically by using automation tools.
 Automation Testing is used to re-run the test scenarios that were
performed manually, quickly, and repeatedly.
 Some of the famous automation testing tools for are Selenium,
Appium, Test Complete, Silk Test etc.
Automation Testing
What to Automate?

 It is not possible to automate everything in a software.


 The areas at which a user can make transactions such as
the login form or registration forms, any area where large
number of users can access the software simultaneously
should be automated.
 Furthermore, all GUI items, connections with databases,
field validations, etc. can be efficiently tested by automating
the manual process.
When to Automate?
Test Automation should be used by considering the following aspects
of a software:
 Large and critical projects
 Projects that require testing the same areas frequently
 Requirements not changing frequently
 Stable software with respect to manual testing
 Availability of time
Testing Methods

Two methods are used in software testing:


1. Static Testing
2. Dynamic Testing
Static Testing
 It is also known as Verification in Software Testing.
 Verification is a static method of checking documents and
files.
 Verification is the process, to ensure that whether we are
building the product right.
 i.e., to verify the requirements which we have and to verify
whether we are developing the product accordingly or not.
 Activities involved here are Inspections, Reviews, Walkthroughs.
Dynamic Testing

 It is also known as Validation in Software Testing.


 Validation is a dynamic process of testing the real product.
 Validation is the process, whether we are building the right
product.
 i.e., to validate the product which we have developed is
right or not.
 Activities involved in this is Testing the software application.
Testing Approaches

There are three types of software testing approaches:


1. White Box Testing
2. Black Box Testing
3. Grey Box Testing
White Box Testing
 It is also called as Glass Box, Clear Box, Structural Testing.
 White Box Testing is based on applications internal code
structure.
 In white-box testing, an internal perspective of the
system, as well as programming skills, are used to design
test cases.
 This testing is usually done at the unit level.
Black Box Testing
 It is also called as
Behavioral/Specification-Based/Input-Output Testing.
 Black Box Testing is a software testing method in
which testers evaluate the functionality of the
software under test without looking at the internal
code structure.
Types of Black Box Testing

Two types of Black Box Testing are given below:


1. Functional Testing
2. Non-functional Testing
Functional Testing
 In simple words, what the system actually does is functional
testing.
 To verify that each function of the software application behaves as
specified in the requirement document.
 Testing all the functionalities by providing appropriate input to
verify whether the actual output is matching the expected output or
not.
 It falls within the scope of black box testing and the testers need
not concern about the source code of the application.
Non-functional Testing
 In simple words, how well the system performs is non-
functionality testing.
 Non-functional testing refers to various aspects of the software
such as performance, load, stress, scalability, security, compatibility
etc.
 Main focus is to improve the user experience on how fast the
system responds to a request.
Gray 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.
Testing Levels

There are four levels of testing


1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing
Unit Testing
 Unit Testing is done to check whether the individual
modules of the source code are working properly.
 i.e. testing each and every unit of the application
separately by the developer in the developer’s environment.
 The goal of unit testing is to isolate each part of the
program and show that individual parts are correct in terms
of requirements and functionality.
Integration Testing
 Integration testing is defined as the testing of combined
parts of an application to determine if they function
correctly.
OR
 Integration testing is testing in which a group of
components are combined to produce output.
Approaches/Methodologies/Strategies of Integration
Testing

Software Engineering defines variety of strategies to


execute Integration testing.
1. Big Bang Approach
2. Incremental Approach: which is further divided into the
following
 Top Down Approach
 Bottom Up Approach
 Sandwich Approach - Combination of Top Down and Bottom Up
Big Bang Approach
 Here all component are integrated together at once and then tested.
 Convenient for small systems.
 Fault Localization is difficult.
 Given the sheer number of interfaces that need to be tested in this approach,
some interfaces link to be tested could be missed easily.
 Since the Integration testing can commence only after "all" the modules are
designed, the testing team will have less time for execution in the testing phase.
 Since all modules are tested at once, high-risk critical modules are not isolated
and tested on priority.
Incremental Approach
 In this approach, testing is done by joining two or more modules
that are logically related.
 Then the other related modules are added and tested for the
proper functioning.
 The process continues until all of the modules are joined and
tested successfully.
What is Stub and Driver?
 Incremental Approach is carried out by using dummy programs
called Stubs and Drivers.
 Stubs and Drivers do not implement the entire programming logic
of the software module but just simulate data communication with
the calling module.
Stub: Is called by the Module under Test.
Driver: Calls the Module to be tested.
Bottom-up Integration
 In the bottom-up strategy, each module at lower levels is tested with
higher modules until all modules are tested.
 It takes help of Drivers for testing.
 Fault localization is easier.
 No time is wasted waiting for all modules to be developed unlike
Big-bang approach.
 Critical modules (at the top level of software architecture) which
control the flow of application are tested last and may be prone to
defects.
Top-down Integration
 In Top to down approach, testing takes place from top to down
following the control flow of the software system.
 Takes help of stubs for testing.
 Fault Localization is easier.
 Critical Modules are tested on priority; major design flaws could
be found and fixed first.
Hybrid/Sandwich Integration

 In the sandwich/hybrid strategy is a combination of Top


Down and Bottom up approaches.
 Here, top modules are tested with lower modules at the
same time lower modules are integrated with top modules
and tested.
 This strategy makes use of stubs as well as drivers.
System Testing
 System testing tests the system as a whole.
 Once all the components are integrated, the application
as a whole is tested rigorously to see that it meets the
specified Quality Standards.
 This type of testing is performed by a specialized testing
team.
 System testing is important because of the following
reasons
System Testing
 System testing is the first step in the Software Development Life
Cycle, where the application is tested as a whole.
 The application is tested thoroughly to verify that it meets the
functional and technical specifications.
 The application is tested in an environment that is very close to the
production environment where the application will be deployed.
 System testing enables us to test, verify, and validate both the
business requirements as well as the application architecture.
Acceptance Testing
 To obtain customer sign-off so that software can be
delivered and payments received.
 Types of Acceptance Testing are:
1. Alpha Testing
2. Beta Testing
3. Gamma Testing
Alpha Testing
 This is a type of validation testing.
 It is a type of acceptance testing which is done before the
product is released to customers.
 It is typically done by QA people.
 Example: When software testing is performed internally
within the organization.
Beta Testing
 The beta test is conducted at one or more
customer sites by the end-user of the software.
 This version is released for the limited number of
users for testing in real time environment.
 Example: When software testing is performed for
limited number of peoples.
Gamma Testing
 Gamma Testing is done when software is ready for
release with specified requirements, this testing done
directly by skipping all the in-house testing activities.
 The software is almost ready for final release.
 Gamma testing is the third level of testing, generally for
safety.
Regression Testing
 Every time new module is added leads to changes in
program.
 This type of testing make sure that whole component
works properly even after adding components to the
complete program.
 Example: In school record suppose we have module staff,
students and finance combining these modules and
checking if on integration these module works fine is
regression testing
Smoke Testing
 This test is done to make sure that software
under testing is ready or stable for further
testing.
 Example: If project has 2 modules so before
going to module 2 make sure that module 1
works properly.
Stress Testing
 In this we gives unfavorable conditions to the system and
check how they perform in those condition.
 Example:
 Test cases that require maximum memory or other resources are
executed.
 Test cases that may cause excessive disk requirement.
Load Testing
 Load testing is the process that simulates actual
user load on any application or website.
 It checks how the application behaves during
normal and high loads.
 This type of testing is applied when a development
project nears to its completion.
Performance Testing

 Performance testing is a type of testing for


determining the speed of a computer, network or
device.
 It checks the performance of the components of a
system by passing different parameters in different
load scenarios.

You might also like