Professional Documents
Culture Documents
So, in this article I will try to clear the concept of software testing, how
do they do it and if you are planning to start the career as a software
tester. After reading this article you will get clear idea of software
testing.
Software testing is done to ensure that all the functionality and the
features of the software is working as per the clients requirements in
simple word software testing is an activity to check that the software is
bug free. For example, there is a person who want its own e-commerce
site like amazon, eBay etc. So he will contact any software company and
he will explains his all the requirement like he wants customer login,
customer can add their favorite product to cart, customer should able
to pay via online banking, credit debit card etc.To the software
company. So Software Company will write down all clients requirement
and according to that requirement Software developer develop the ecommerce site.
Then that developed software comes to Software Tester who test all the
functionalities and feature means software testers ensure that all the
functions and feature of software is working fine with all the possible
conditions and all the requirement which is given by the client is
included in software and working properly.
But the main question is how does the Software Tester test the
software? There are different technique, different ways to test the
software. Basically Testing starts with understanding the software
requirement. First tester understand all the requirement of the
software and its output. Then he writes the test cases to test each
requirement. For example, suppose one of the requirement of client is,
he wants that the customer should able to add product to cart or
bucket. So to test this functionality of software tester will write
following test cases.
1.
Verify ability of user to add the product to cart.
2.
Verify the ability of the user to add multiple product to the
cart/bucket.
3.
Verify the ability of the user to add different product from
different categories.
4.
Verify the description, price and quantity of added product in the
cart
5.
User should not be able to add duplicate product in the cart
6.
User should able to remove the product from cart
7.
User should able the increase quantity of the cart product
8.
And many more
NASAs Mars Climate Orbiter was lost due to an issue in interfaces. The
communication with the spacecraft was lost as the spacecraft went into
orbital insertion. The issue was Ground based software was producing
This article will help you to understand what is bug and why do bug
arises in software. So First we are going to talks about bugs.
What is Bugs/ Defect?
For example : suppose you want to recharge your mobile so you goes
to a any recharge site and login your account and put your mobile
number , enters the recharge amount and clicks on next button. But
when you clicks on next button then nothing is happening you got stuck
on same page. So you will think why is this happening? This is because
of bugs in that software. Which is prevents you to go on to the next
page.
Suppose you are a Tester and your company is developing a software.
Before development they will finalize all the software requirement
Specifications. According to those requirement they developed a
software after development they sends this software with its
requirement document to you for testing. During testing you have
found that there is a functionality which is written in software
requirement specification but not present is software.at that time you
may think that is this a bug? Can we call a missing functionality as a
bug? Yes its a bug. a functionality which should be present in software
but actual not there is a bug. So you will might get one more question
Missing functionality.
Extra functionality.
Why Bugs arises in Software?
We are humans, we are not a machines. So the things which we are
going to build is not gonna be 100% perfect.
The bugs start coming from the initial stage of the software
development life cycle. Let discuss each factor that can cause a bug in
software.
Another main reason is less time for coding. This thing happens to
meet the dead line .this puts extra pressure on developer which can
effect on his productivity which result in poor coding and incorrect
coding output.
4) Testing : This is a phase where all the major bugs should be detected
by the testing team. Ideally there is not any software with 100% bug
free. But it is expected from testing team to find all the major bugs.
There are some factors which can effect on testing.
One of the reason is less knowledge about the software. When testing
team do not have good knowledge about software then they are unable
to write effective test cases which result in poor testing and will be
unable to detect bugs. This happen when there is not proper
documentation or very less documentation.
Another reason is less time for testing. When testing team do not have
needed time for testing they prioritize the test cases and leave some
part untested which ultimately leave some bugs detected?
gets biased to test their own code which result leaving major bugs
undetected
5) Deployment : Every software made by considering its hardware and
software requirement. if any software is installed on unsupported or
lesser hardware and software then that software behave unexpectedly
which causes failure.
(test cases may contains many other parameters apart from this there
are pre-requisite, test data, test step and remark etc.)
So to get this functionality fixed tester need to tell this bug ,defect to
the developer so developer can fix it, tester has to tell this in detail
under what scenario or under which situation software behaves
unexpected. Tester cant go to the developer and says that hey this is
not working properly, get this fixed for me. This is not proper way, then
what is the proper way to report the bug? Proper way is to write the
detail report about bug.
We Testers need to write detail description which should contain
needed information, using this information developer should be able to
re-create the bug. So how are we going to do that? Either we can use
defect management tools like BugZila , BugNetetc. or use can also use
Word or Excel file. This depends on the organization how are they
reporting their bug, most of the companies still prefer to use word or
excel file.
Severity bugs are those bugs like spelling mistake in text contain or
there is a wrong icon to any button.
Priority : Priority is related to the time.Means urgency of fixing
the bug and we also define the priority of the bug as High, medium and
low. If the severity of the bug is high and we cant continue our testing
without fixing this bug then the priority of that bug would be mark as
High. And in incremental and iterative type software development cycle
the requirements are divided into small builds, if we have found a bug
in module which is included current build release then that bug is
marked as High and suppose we have found the bug is a module which
is not the part current build release then that is marked as Low priority.
Summary : Summary means one line statement that gives basic
idea of the defect. Like login functionality is not working fine,
registration page is not opening etc. it is not an details description just
one line statements.
Description : In this field we need to give a detail explanation
about the defect. We need to give step by step process to reproduce
the bug and if need we can add screenshot. Developer should easily
understand what the bug is and how to reproduce it.
Status: this is the last field, here we need to write the status of
the bug. Bug goes through different status. Like when tester finds a bug
then that bugs status is new. When assigned to developer then its
status will be assigned. Other status are Duplicate, Deferred, Fixed,
Closed etc. You will get detailed knowledge about this status in Defect
life cycle.
Software testing is not like taking the software and start testing it,
Software testing is not just a single activity its set of activities which
need to be performed step by step to ensure that the software is Bug,
Defect free.
Software testing has six different phases, we can also called it as the six
task or six activity that need to be performed. And those six tasks
areRequirement analysis, test planning, test design, test
environment set up, test case execution and test closure.
We are going to look each phase step by step and you get know about
the Software testing process.
Requirement Analysis : Here from the phase name you might have
got some idea about this phase. Here testing team gathers as much as
possible information about the software which they are going to test.
Its obvious if the testing team have good knowledge about the
software then they can test it very well.
So testing team collect the information from software specification
document (SRS) , business document and if testing team requires more
information then they contact to developer, Technical leads, business
analyst and even client also. The main aim of this phase is to get clear
requirement of the software.
After executing each test cases tester verify the output and if that
output is not as expected then it means that the test case has failed and
a bug has found then tester report that bug to team lead. Then bugs
will be reported back to the development team for correction and
retesting will be performed.
Test Closure : this is the last phase of software testing life cycle. This
meeting is conducted after testing and releasing of the software.
Here during this phase, all the testing team meet and discuss about the
software and the issues those they faced during the testing. Also they
collect all the testing artifacts (documents). This meet up will help the
testing team to improve the testing process and if they get same kind of
software for testing then they may refer this artifacts which have
collected.
Requirements Gathering
Implementation
Testing
Deployment
Maintenance
Requirement Gathering :
Testing has its full life cycle which is known as Software Testing Life
Cycle (STLC).STCL has six phase, first is requirement, here they gathers
all the information about the software, then second phases is planning,
test team need to plan everything so that they will have a specific goal
to achieve, third phase is Test Design where test team writes the test
cases, fourth phases in Environment Set-Up, the hardware and software
on which test team is going to install Software for testing. Then fifth
phases in Test execution, test team execute written test cases, and the
last phase is Test Closure where all the document is collected for the
future reference.
Deployment :
Once the Software is developed and tested and found working as
expected then client check the software. Whether all the requirement is
implemented in software or not and it should fulfill all the business
requirement of the client. This thing is tested by client and real world
user. Basically this all happen in last phase of testing which is known as
User Acceptance Testing (UAT) then that software has to Deploy at the
clients side or need to release in market as per the type of the
Software. This deployment process is done in this phase.
Maintenance :
This Phases is for following purposes
Some extra feature that client wants in his software that is also
done in maintenance phase.
What is verification?
Verification is also known as static testing. General flow of software
development is, developer develop the software as per the requirement
document. But what if there is an ambiguities in requirement
documents? What if the requirement is not complete? There are many
possibilities. If by ignoring all the possibilities. And developer keeps on
developing the software according to these documents then more likely
there will be a lots of bugs in software. These bugs will be discovered
in testing phase and they report it to developer. As we know that bug
found is lateral phases is more costly to fix and more time consuming.
If we do verification early in development life cycle then it would not
bring so many bugs in software. It will reduce the number of bugs.
If there is a bug in requirement specification then that will definitely
bug reflects in developed software. likes its an cycle if there is
ambiguities in business requirement then that will come to
requirement specification then that will further come in developed
software. And there ambiguities may arise different issues in software.
So it is very needed to do verification testing / static testing.as I said if
there is an ambiguities in business requirement then that will come in
Static analysis
This is the first phase in the development cycle where the product
requirements are understood from the customer perspective.
Till this phase all the planning has been done. Here the developer
start building the application according to requirements.
Unit testing :
The unit test cases which are created during the low level design
is executed.
System Testing :
The actual and full fledge testing of the application takes place
here in system testing
In system testing the behavior of whole system/product is tested
and find out whether system is working as expected or not.
In this phase all the system test cases, functional test cases and
nonfunctional test cases are executed.
System testing is carried out by specialists testers or independent
testers.
System testing is most often the final test to verify that the system
to be delivered meets the specification and its purpose.
The system testing comes under black box software testing. So,
the knowledge of internal design or structure or code is not required
for this type of software testing.
There are different testing techniques are used in the System testing :
1.
Functional testing.
2.
GUI testing/Usability testing.
3.
Security testing.
4.
Performance testing.
User Acceptance Testing :
UAT testing is performed after the system testing and UAT testing
happens before releasing the software in a real environment.
User acceptance is a type of testing performed by the Client to
check if the system is built to match the business requirements of the
organization.
UAT testing is important Because, Developer read the
Requirement Document and based on his own understanding
developer develop the software which may not actually be what the
client needs from the software.
UAT testing happens before releasing the software in a real
environment.
There are two types of UAT testing - Alpha Testing and Beta
Testing.
Waterfall Model
Waterfall model was the first software development model. It was used
by many software organization to ensure the quality development of
software. Now a days not many companies use this model. It has its
own advantages and some disadvantages. There are many models
which is just improved version of the waterfall model.
Waterfall model has six phases and which should be followed in
sequential order means next phase cannot be started before current
phases is completed. This put the company in trouble if clients changes
his requirement in later phase. So they need to make change in each
phase to overcome this there are other client oriented Software
development models are there like iterative, incremental, agile etc.
those model are more client oriented and very compatible to
requirement changes.
Water fall model is as shown below:
It is good for little project but not good for bigger once.
Easy to manage.
Disadvantage :
done between software under test and external devices like printer, fax
machine etc.
System Testing
We know that in unit Testing a single program, single function, single
module is tested and after that a integration testing is comes where We
Testers test the integration between several modules and we need to
ensure that there is proper data transmission and proper
communication happening between the modules. And after integration
testing we performs System Testing.
When whole Software is ready and integrated together then we need to
perform the System Testing on the software and ensure that everything
is working as per the requirements. Here not only the functional
requirement is tested but also the non-functional requirements are
tested. System testing is carried out by the testing team and to test the
non-functional requirement testing a specialized testing team is
needed. For example to perform a performance testing then
performance testers are needed. Same with security testing, to perform
a security testing a security testers are needed.
also, to get the answer of all the queries. Once the Test cases writing
work is done then its time to execute them against the Software. Here
tester need to write the test cases for each and every requirement.
Here we are going to test whole software not a particular part like unit
or integration testing. And if there is a scope of automation testing then
that the test script is created as per the scenarios and requirements.
After writing the test cases to all test cases are executed against the
software. The bugs found during testing of whole software are reported
to developer. After bug fixing sanity, retesting and regression testing is
done.
There are also test cases written for the non-functional requirement
also .for example, for eCommerce site suppose there is one
requirement say software should able to handle 5000 concurrent user
simultaneously for 1 hour. So to evaluate this requirement testers need
to perform different performance testing type example:Load Testing :
here the software is subjected a 5000 concurrent user for an 1 hour,
and in Endurance Testing : the Software is subjected to the 5000
concurrent user but the time is extended form 1 hour to server hour
even whole day. And in Stress Testing : here the main aim is to break
the system, tester increase the user limit from 5000 to 7-8000 even till
the break point and time is also increased in this performance testing
type and lastlyVolume Testing : when the database is almost full or
have lot of data then that might affect the system and it make slow
down the system so that is also need to test how system performs
under the heavy data. With the similar way the security and other nonfunctional types of testing is conducted by the specialized Testers.
Based on the scope.
Main Points :
RETESTING :
Some of you may get confuse with the name Retesting. You may think
testing means testing the software first time and Retesting means
Testing same Software for second or multiple times. If you think in this
way then you are completely Wrong.
Performance enhancement.
On all above situations we need to perform integration testing.
In regression testing we know that we executed all passed test cases
but do we execute all the pass test cases? well there are many criterias
which help to decide the test cases means whether we have to execute
all the test cases or we are going to execute the test cases which are
related to core functionality or a test cases for a particular modules.
Retesting means checking affected part and Regression Testing means
checking unaffected part affected.
2.
Features not to be tested : here the features that is out of scope
is mentioned here means the feature which we need not to test is
mentioned here.
Roles and Responsibilities : here description about the tester
and their task is mentioned. So that each team member know what he
has to do.it makes clear vision.
Risk Analysis : Risk Analysis mean analyzing the future risks that
may occur and effect on testing activities.in simple word, while testing
which problems can occurs and how to face if any particular problem is
occurred. But it is not necessary that the problem will occur. Its just a
probability.
Test Strategy : Here which type of testing need to be performed
is mentioned here. Like which method is need to be used to test this
particular software whether it should be Black box testing or white box
testing or a combination testing required. Which level of testing is
required like unit, integration or system etc. this depends on software
completion. If software is partially completed then integration testing in
performed and if full software is ready then system testing is
performed.Other thing mentioned here is how many number of test
execution cycles need to be executed and data collection and creation.
Entry Criteria : When to start the testing is mentioned here, like
when the test data , test cases and test environment and software
under test is ready then we can start the testing. such a condition is
mentioned here.
Exit Criteria : When testing need to be stop is mentioned here.
Like when all the test cases is executed. Such a condition is mentioned
here.
Suspension Criteria : when a major bug is found and because of
that bug further testing cant be continued then testing activity need to
be stopped. so such a suspension criteria are mentioned here.
Resumption Criteria : Here after Suspension of Testing when we
need to resume testing is mentioned here. For example, if testing is
suspended because of the major bug was found while testing then
Resumption Criteria will be, Testing can start after fixing of the major
bug. In short when all the suspension criteria are resolved then we can
continue with testing process.
Under performing application can cost your business loss also, consider
a scenario, you want to buy a book which is available on X Website as
well as on Y Website with the same price so you visited X
Website first and searched the book and it taking so much time to show
the result. Meanwhile you opened Y Website and searched the book
name and it shown you result within the seconds and you added
the book in cart and purchased it whereas the X Website is still loading
the result. Here the person who thought to buy a book from the X
Website but because of the poor speed and response it forced him to
switch Y Website means there is a business loss for the X Website. This
tell us how important performance testing is.
In application not only the functions, UI and features are important but
also
the
other
aspect
like
Performance
has
equal
important.Performance testing the non-functional testing type. In
performance we do not find the bugs. We test the speed, response,
scalability and stability under changing workload.
Main focus of Performance Testing is on following aspects:
Speed of Application Under varying Workload : Traffic on Application
is some time low sometime high, under these changing workload
application should not get slow. On low traffic application may run fast
and on high traffic it may get slow.so this things are tested and try to
eliminate the causes.
These are the key aspect which need to consider while testing the
Application. There are many reasons which can make application slow
like badly written code, sometime developer user a heavy which are not
need that cause the time delay in producing the output and other
response are hard issues which can also effect on softwares
performance.
User Acceptance Testing is done at the last stage means it is done after
unit testing, integration testing, System Testing then User Acceptance
Testing is Performed. You may think that what is the need of the UAT
testing? If we have performing unit testing, integration testing, system
testing then why UAT testing is needed and one more thing we Testers
are professionals we know how to test the software. But the aim of UAT
testing is not to find the bugs but just check the software against the
business requirements, business flow. And who can tell us better than
the client itself.
Means the client and user check the software for Business flow. They
check whether all business requirements are satisfied or not. While
performing the UAT testing they neglect all small bug like UI bugs,
spelling mistakes.
cause
difference
in
business
flow/
business
At the last stage before the software goes live or made available
for users
UAT testing is performed when all the measure bugs are fixed
Types
of
User
Acceptance
Testing
1.
Alpha
Testing
2. Beta Testing
After the alpha testing beta testing is performed. Main difference
between the Alpha and Beta testing is Beta testing is performed at
clients side in clients environment (which is the real environment). Few
real user test the software in real environment without any help of
developer. Means there are not any developer or QA member involve in
Beta testing. It is fully performed by users. This testing is usefully to get
market response of the software. And the issues that the user faces
during beta testing is communicated with the developer and if needed
they make the changes in the software.
Severity :
Severity means the impact of particular bug on the software. Impact
may be small one or major one. How that particular bug, impacts on
the functionality of the Software is tells us the Severity of the bug. For
example. Lets say you are testing a social networking site and first is
login when you tries to login in by entering the password and username
then software crashes this mean the impact of bug is major on the
system so severity will be high and say you have found a spelling
mistake then severity of that bug will be low.
Critical
Major
Medium/Moderate
Low
Cosmetic
1.)
Critical
:
A bug can be marked as a critical when software is not installing or
software data is getting corrupted. Such a huge issue which has a very
critical
issue
in
software.
2.)
Major
:
A bug can be marked as Major when there are issues like majors part
showing issues because of that we are unable to proceed testing
further. Issues like login is not working, after doing anything we are
redirected to a blank page. Means an issue which has a major impact
on the software and normal working flow is getting interrupted be that
bug.
3.)
Medium/Moderate
:
We can mark a bug as a Medium or Moderate when a functionality of
the software is working but generating a wrong result, working but
working as unexpected. The output is not matching with the expected
input but system is generating some result.such a type of bug can have
Medium
/
Moderate
Severity.
4.)
Low/Minor
:
A bug which does not cause any termination of the system, which does
not cause any undesired or wrong result generation is called a low or
minor bug. Means bug is there but the impact of the bug on the system
is not high. Example of such a bug is a small spelling mistake in content
or any small UI mistake is there such a bug can be marked as low /
minor severity bug.
5.)
Cosmetic
:
Basically this is a part of enhancement where tester suggest the
enhancement needed in the software that too only related to UI ,
Graphical
and
Text
field
changes.
Priority :
As the Severity is related to impact but priority is all about time. A time
to fix a bug whether the bug is need to fix now or in future. In simple
word priority means deciding when to fix the bug. Priority decision
depends on many factors like impact of the bug, release build
requirements.
There are three levels of priority and those are High, Medium and Low.
This
High Priority :
Means the bug which has a high priority need to be fixed as soon as
possible. A bug without which we cannot proceed our testing further
such a type of bug can have high priority, and bug is a part of current
software release and software release or build release date is far closer
then it need to be fixed as soon as possible.
A bug which has very negligible impact on software, if its a not a part of
current release its a part of future release and does not affect any
feature of the software, like a bug which related to UI , small spelling
mistakes , grammatical mistakes.