Testing
Testing
Testing is a process of evaluating a system to verify whether it satisfies the
specified requirement or identify the differences between expected and
actual result.
Forms of Testing
Manual Testing Automation Testing.
Eg -Selenium,QTP
Manual Testing & Automation Testing
Manual Testing is a type of software testing in which test cases are
executed manually by a tester without using any automated tools.
Software Test automation makes use of specialized tools to control the execution of
tests and compares the actual results against the expected result.
The purpose of both Testing is to identify the defects in the software application.
Why Software Testing Necessary
Software testing is required to find out the defects and errors that were made during
the development phase.
Software Testing is important as it may cause mission failure, impact on operational
performance
Impact on the reliability of the organization if software testing is not done properly.
Testing is required to delivery a quality product to the customer.
Who participates in testing ?
Software customer
Software user
Software developer
Software Tester
Testing Objectives
Prevent defects
Verify the requirements are fulfilled
Validate the system
Build confidence
Find defects and failures
Provide information to stakeholders
To comply with legal, regulatory requirements or standards
Testing Principles
Testing shows the presence of defects not their absence
Exhaustive testing is impossible
Early testing
Defect clustering
Repeating tests does not find new defects
Context dependent
Absence of errors is a fallacy
Software testing –Myths and Facts
Anyone can test a software application
Expensive
Time consuming
A tested software is bug free
Tester’s only task is to find bugs
Testing Types
Static Testing & Dynamic Testing
Black Box Testing
(Behavioural Testing)
Dynamic Testing
(Validation)
White Box Testing
(Glass box testing, clear
Testing box testing, Structural
Testing(Logic of the
program))
Static Testing(Verification)
Static testing
Not executing the code,rather it manually checks the code, requirement
documents and design documents to find errors.
This is also called non execution technique or verification testing.
Dynamic testing
Executing the code either manually or automatically.
The main aim is to confirm that,the software products works in conformance
with the requirements.
This is also called execution technique or validation testing.
White Box Testing - White Box Testing is a software testing method
in which the internal structure/ design is known to the tester. It is mainly
performed by the Developers or Whit
White Box Testers who has knowledge on the programming. Also known as
Glass box Testing. Tests are based on coverage of code statements, branches,
paths, conditions.
Unit Testing
Unit testing is a type of software testing where individual units or components of a
software are tested.
The purpose is to validate that each unit of the software code performs as expected.
Unit Testing is done during the development of an application by the developers.
Integration Testing
In Integration Testing software modules are integrated logically and tested as a group.
A typical software project consists of multiple software modules, coded by different
programmers. The purpose of this level of testing is to find defects in the interaction
between these modules when they are integrated
Black Box Testing
Black Box Testing - Black Box Testing is a method of testing in which the
internal structure/ code/design is NOT known to the tester. The main aim of
this testing to verify the functionality of the system and is mainly performed
by the Testers, and there is no need of any programming knowledge.
Functional testing is performed to verify that all the features developed are
according to specifications, and it is performed by executing the test cases ,
in functional testing phase, system is tested by providing input, verifying the
output and comparing the actual results with the expected results.
System Testing
System Testing means testing the system as a whole.
All the modules/components are integrated in order to verify if the system works as
expected or not.
System Testing is done after Integration Testing.
Done to check whether the software or product meets the specified requirement.
System Testing plays an important role in delivering a high-quality product.
Acceptance Testing
Acceptance testing is the type of testing which is used to check whether the software
meets the customer requirement or not.
Application should be flawless in meeting both the critical and major Business
requirements.
User/customer do this testing to determine whether to accept the application.
Alpha Testing & Beta Testing
Alpha testing : Pre-release testing by end user representaives at the developers site.
Still minor changes will be made as a result of testing.
Beta Testing is performed by "real users" of the software application in "real
environment“.Final testing before releasing application for commercial purpose.
eg:trial versions
Direct feedback from customers is a major advantage of Beta Testing. This testing helps
to test products in customer's environment.
End to end testing
Similar to system testing.
Involves testing of a complete application environment in a situation that
mimics real world use
Interacting with a database using network communications or interacting with
other hardware applications.
Smoke Testing
Testing the basic and critical functionality of application.
Testing to determine if a new software version is performing well enough to accept it
for major testing effort.
If the application is crashing for initial use, then system is not stable enough for further
testing and the build or application is assigned to fix.
Eg: login a page
Sanity Testing
Testing the changed feature and its impacted areas to see that the flow of the
application doesn’t get misbehaved.
It is a subset of regression testing.
Performed after smoke testing.
Performance Testing
Performance Testing is a type of testing performed to check how application or
software performs under workload.
Performance Test goal is to identify and remove performance bottlenecks from an
application.
Mainly performed to check whether the software meets the expected requirements for
application speed and stability.
Performance Testing
Load Testing
Performance Testing
Stress Testing
Load Testing & Stress Testing
It’s a performance testing to check system behavior under load.
Testing an application under heavy loads, such as testing of a website under a range of
load to determine at what point the system response time degrades or fails.
Stress testing
System is stressed beyond its specifications to check how and when it fails. Performed
under heavy load like putting large number beyond storage capacity, complex database
query, continuous input to system or database load
Recovery Testing
Recovery testing is performed in order to determine how quickly the
system can recover after it has gone through system crash or hardware
failure.
Recovery testing is the forced failure of the software to verify if the
recovery is successful.
Compatibility Testing
Compatibility Testing is a type of Software testing to check
whether your software is capable of running on different
hardware, operating systems, applications, network environments
or Mobile devices.
Comparison Testing
Comparison of product strength and weakness with
previous versions or other similar product
Install/Uninstall Testing
Tested for install/uninstall process on different operating
system under different hardware ,software environment.
Security Testing
Can system be penetrated by any hacker.
Testing how well the system protects against unauthorised
internal or external access.
Checking if the system database is safe from external attack
Usability Testing
Usability Testing method is used for measuring how easy and user-friendly a software
application is.
Can new customer understand the application easily proper help documented
whenever user stuck at any point.
Basically system navigation is checked in this testing.
Monkey Testing
Monkey testing is performed randomly with no specifically predefined test
cases
In monkey testing testers may not know what the system is all about and its
purpose
The objective of monkey testing is to check for system crash
Gorilla Testing
Gorilla Testing is a Software testing technique wherein a
module of the program is repeatedly tested to ensure that
it is working correctly and there is no bug in that module.
Ad hoc Testing
Ad hoc testing is performed without planning and documentation.
In Ad hoc testing testers must understand the system significantly before
performing testing
Objective of ad hoc testing is to divide the system randomly into sub part and
check its functionality
Change -related testing
Confirmation testing - After a defect is fixed ,the software may be tested
with all test cases that failed due to the defect.
Regression testing - It is possible that a change made in one part of the code,
whether a fix or another type of change, may accidentally affect the behavior
of other parts of the code. Regression testing is done to find these unintended
side effects
Non Functional Testing
Non-Functional testing is a testing technique which does not focus on
functional aspects and mainly concentrates on the nonfunctional attributes
of the system such as usability, performance of the system ,security.
Performance Testing
Recovery Testing
Compatibility Testing
Security testing
Usability testing