Today we are going to return back to basics of software
testing and discuss the 7 most popular test types that are being used in
every software testing effort. Those different test types cover all the levels
of the software to make sure that the final result matching the expectations
from every possible angle. Here is our list:
- Unit testing
- Smoke testing
- Regression testing
- Functional testing
- Integration testing
- User Acceptance Testing
- Performance Testing
Now let’s have a deeper dive into each one of those by using
a simple example of an imaginary system that was created in order to manage warehouse
activity including shipments, inventory and goods receptions from suppliers.
Unit Testing
This type of testing is usually performed by the developers
and is covering the very basic development component. In this test developers
are testing the straight forward functionality of a functional piece of code to
make sure that it is performing according to their expectations.
In our example:
This test will cover the function that is getting the list
of all available suppliers, or a function that updates order status, or a
function that updates goods amount in the warehouse.
Smoke Testing:
This type of testing is usually performed by the QA team just
after delivery of a new piece of software for testing. There are to main goals
for this type of testing: Quick and All inclusive.
This test needs to touch all parts of the delivered
functionality without going to deeply in anyone of them. It gives a good understanding
of how stable the system is without spending too much time testing. Some
testers call it “play with the system a bit”. Mostly it’s all about quick test
of straight forward functionality.
In our example:
If the orders piece was ready for testing, this test will
include creating new order, deleting an order, accepting an order without going
into details of accepting partial order, modifying an order on delivery, or
accepting early or late orders.
Regression Testing:
This type of testing is usually performed by QA team to make
sure that everything that used to work in the past is still working. This test
does not include newly delivered functionality but rather concentrates that none
of features that used to work in the past are broken.
In our example:
If we had the inventory piece working in the past and just
got for testing the orders piece, this testing will include inventory
functionality to make sure that everything is still working and no new issues
were introduced because of the orders related changes.
Functional Testing:
This type of testing is usually performed by QA team to test
all aspects of the functionality of the newly created piece of software. It
will include all the straight forward functionality as well as “edge cases” -
situations that are less likely to happen but still a possibility with-in the
system functionality
In our example:
If the orders piece was ready for testing, this test will
include testing of accepting orders, creating orders, deleting orders, modifying
orders, but also modifying accepted or deleted orders, recreating deleted
orders, duplicating orders and so on
Integration testing:
This type of testing is usually performed by a sub-group in
a QA team to test how the new software is working with other existing systems.
This usually includes verifications that the new piece of software can get and
send data to other systems according to pre-defined set of rules. This type of
test is also called sometimes ‘API testing’ or ‘System Integration Testing’ or
SIT
In our example:
If the orders piece was ready for testing and part of our
system functionality is to order a shipment once the order is in status ‘ready’.
Our test will be to verifying that external shipment company can accept a shipment
request, and will send a confirmation back that is captured by our system, and
that our system will generate the proper shipment slip.
User Accepting testing (a.k.a UAT):
This type of testing is usually performed by a Business
representative group to test how the system performing in real business scenarios.
This when we will be concentrating on real life cases of the day to day
functionality to verify the the system can handle those as expected, and to the
satisfaction of the end users that are going to be using the system. This is
also the type when the system users have the opportunity to see the system for
the first time. For systems that are being eventually release to the public this
is the phase when Alpha and Beta testing might be introduced as a possible
extension of UAT to increase the exposure of the system and gather more
feedback on the possible issues in the real life environment.
In our example:
The business will creating orders of several products,
increasing and decreasing inventory ordering shipments and so on.
Performance Testing:
This type of testing is usually performed by a sub-group in
a QA team to test how the system is performing under expected work amount, this
test will verify the system response, and processing times and will evaluate in
possible performance issues.
In our example:
The test will measure the time it takes the system to create
an order with 1000 of items (if that’s an expected order volume for the system)
and the time it takes the system to apply modification for such order
Comments
Post a Comment