Lecture 08
Lecture 08
Lecture 08
ICT 3312
OSHADHI MUNASINGHE
Outline
Manual Testing
Automated Testing
Functional, Non-Functional Testing and Testing Types
Performance Testing
What is Manual Testing?
In this type, the tester takes over the role of an end-user and tests the
software to identify any unexpected behavior or bug.
Testers use test plans, test cases, or test scenarios to test a software to
ensure the completeness of testing.
Manual testing also includes exploratory testing, as testers explore the
software to identify errors in it.
What is Automated Testing?
Unit testing
Integration testing
System testing
Sanity testing
Smoke testing
Regression testing
Non Functional Testing
Functional Testing
-Checking the login functionality
Unit tests are very low level, close to the source of your application.
Unit tests are in general quite cheap to automate and can be run very
quickly by a continuous integration server.
Proper unit testing done during the development stage saves both time
and money in the longer term
Unit Tests fix bugs early in development cycle
Reduce cost.
Developers understand the code base, hence changes can be added
quickly
Aids the development of documentation
Unit Testing: Mock data
Unit testing relies on mock objects being created to test sections of code
that are not yet part of a complete application.
For example, you might have a function that needs variables or objects
that are not created yet.
In unit testing, those will be accounted for in the form of mock objects
created solely for the purpose of the unit testing done on that section of
code.
Unit Testing: Tools
Integration Test
Modules
Login
Current balance
Deposit
Withdraw,
Transfer
Unit Test vs Integration Test
Unit Tests are conducted by developers and test the unit of code( aka
module, component) he or she developed while Integration testing is
executed by testers and tests integration between software modules.
Unit Testing is a testing method by which individual units of source code
are tested to determine if they are ready to use while integration testing is
a software testing technique where individual units of a program are
combined and tested as a group.
They both help to reduce the cost of bug fixes
Regression Test
This is one of the methods for Regression Testing in which all the tests in the
existing test bucket or suite should be re- executed.
This is very expensive as it requires huge time and resources.
Regression Test: Retest prioritized test
cases
Prioritize the test cases depending on business impact, critical & frequently
used functionalities.
Selection of test cases based on priority will greatly reduce the regression
test suite.
Regression Testing Tools
Smoke Testing
This serves as confirmation whether the QA team can proceed with further
testing. Smoke tests are a minimal set of tests run on each build.
Smoke testing is a process where the software build is deployed to QA
environment and is verified to ensure the stability of the application. It is
also called as "Build verification Testing" or “Confidence Testing.”
Smoke testing is scripted
Smoke Testing
Quality assurance (QA) testers perform smoke testing after the developers
deliver every new build of an application.
If the code passes the smoke, the software build moves on to more
rigorous tests, such as unit and integration tests.
If the smoke test fails, then the testers have discovered a major flaw that
halts all further tests. QA then asks developers to send another build. This
one broad initial test is a more effective strategy to improve software
code than if the team conducted specific and rigorous tests this early in
the development process.
Smoke Testing Tools
Sanity Testing
Sanity testing, a software testing technique performed by the test team for
some basic tests.
The aim of basic test is to be conducted whenever a new build is received
for testing.
“sanity testing as a test execution which is done to touch each
implementation and its impact but not thoroughly or in-depth, it may
include functional, UI, version, etc. testing depending on the
implementation and its impact.”
Sanity test is usually unscripted, helps to identify the dependent missing
functionalities. It is used to determine if the section of the application is still
working after a minor change.
Sanity Testing
After receiving a Software build with the minor issues fixes in code or
functionality, Sanity testing is carry out to check whether the bugs
reported in previous build are fixed & there is regression introduced due to
these fixes i.e. not breaking any previously working functionality.
The main aim of Sanity testing to check the planned functionality is
working as expected. So instead of doing whole regression testing the
Sanity testing is carried out.
Sanity tests helps to avoid wasting time and cost involved in testing if the
build is failed. Tester should reject the build upon build failure.
Sanity Testing
Sanity testing follows narrow and deep approach with detailed testing of
some limited features.
Sanity testing is typically non-scripted.
Sanity testing is a sub-set of regression testing.
Sanity testing is cursory testing to prove software application is working as
mention in the specification documents & meets the user needs.
Sanity testing is used to verify the requirements of end users are meeting or
not.
Sanity testing to check the after minor fixes the small section of code or
functionality is working as expected & not breaking related functionality.
Smoke Testing vs Sanity Testing
Smoke Testing vs Sanity Test
In Smoke Testing, the test cases chose to cover the most important
functionality or component of the system. The objective is not to perform
exhaustive testing, but to verify that the critical functionalities of the
system are working fine.
For Example, a typical smoke test would be - Verify that the application
launches successfully, Check that the GUI is responsive ... etc.
Long Load time - this is the initial time it takes an application to start and it
should generally be kept to a minimum (a few seconds if possible).
Poor response time - Response time is the time it takes from when a user
inputs data into the application until the application outputs a response
to that input. Generally, this should be very quick. Again if a user has to
wait too long, they lose interest.
Poor scalability - A software product suffers from poor scalability when it
cannot handle the expected number of users or when it does not
accommodate a wide enough range of users. Load Testing should be
done to be certain the application can handle the anticipated number
of users.
Performance Issues
Load Testing
Stress testing
Endurance testing
Spike testing
Volume testing
Load Testing
During festival time, an online shopping site may witness a spike in traffic,
or when it announces a sale.
The main purpose of stress testing is to make sure that the system recovers
after failure which is called as recoverability.
Types of Stress Testing
Stress testing checks the system behaviour under extreme conditions while
load testing checks the system behaviour under normal workload
conditions
Stress Testing tries to break the system with large amount of data and
resources while Load testing does not try to break the software system.
Endurance Testing
This testing is done to check the data volume handled by the database.
Volume testing also called as flood testing is a non-functional testing that
is done to check the software or app for its performance against huge
data of the database.
With the help of Volume testing, the impact on response time and system
behavior can be studied when exposed to a high volume of data.
For example, testing the music site behavior when there are millions of
user to download the song.
Volume Testing: Purpose