You are on page 1of 24

To err is human.

No matter how much of a perfectionist you are, we’re all bound to


make mistakes. Every organization has an end goal that comes with its own set of
expectations. For some businesses, success is indicated by a high frequency of real
outcomes matching expected results. But before reaching their end goal, every firm
has to face the consequences of human errors.

No enterprise can use manual error as an excuse for delivering a compromised


product. To ensure a high-quality product, there has to be something in place to pick
out errors. Software testing is an essential solution to this problem for software
development companies. In this post, I’m going to cover some software testing basics
that you need to know.

What Is Software Testing?


Software testing is the process of finding errors in the developed product. It also
checks whether the real outcomes can match expected results, as well as aids in the
identification of defects, missing requirements, or gaps.

Testing is the penultimate step before the launch of the product to the market. It
includes examination, analysis, observation, and evaluation of different aspects of a
product.

Professional software testers use a combination of manual testing with automated


tools. After conducting tests, the testers report the results to the development team.
The end goal is to deliver a quality product to the customer, which is why software
testing is so important.
Importance of Software Testing
It’s common for many startups to skip testing. They might say that their budget is the
reason why they overlook such an important step. They think it would lead to no
major consequences. But to make a strong and positive first impression, it needs to be
top-notch. And for that, testing the product for bugs is a must.

Similarly, established organizations need to maintain their client base and their
impression. So they have to ensure the delivery of flawless products to the end-user.
Let’s take a look at some points and see why software testing is vital to good software
development.

Enhance Product Quality

An enterprise can bring value to their customers only when the product delivered is
ideal. And to achieve that, organizations have to make sure that users don’t face any
issues while using their product. The fool-proof way of doing it is by making your
product bug-free. Organizations have to focus on testing applications and fix the bugs
that testing reveals before releasing the product. When the team resolves issues before
the product reaches the customer, the quality of the deliverable increases.

Improve Security

When customers use the product, they are bound to reveal some sort of personal
information. To prevent hackers from getting hold of this data, security testing is a
must before the software is released. When an organization follows a proper testing
process, it ensures a secure product that in turn makes customers feel safe while using
the product. For instance, banking applications or e-commerce stores need payment
information. If the developers don’t fix security-related bugs, it can cause massive
financial loss.

The other part of security is not losing your data. It’s common today for people to
store data in cloud storage. You also probably have your photos and files stored on
iCloud or Google drive. What if something goes wrong and you lose all your data?
One of your nightmares isn’t it? Security of a product not only protects information
from hackers but also makes sure it’s not lost or gets corrupted. 

Detect Compatibility With Different Devices and Platforms


The days are gone when customers worked exclusively on hefty desktops. In the
mobile-first age, testing a product’s device compatibility is a must. For instance, let’s
say your organization developed a website. The tester must check whether the website
runs on different device resolutions. Additionally, it should also run on different
browsers.

Another reason why testing is gaining more importance is ever-increasing browser


options. What works fine on Chrome may not run well on Safari or Internet Explorer.
This gives rise to the need for cross-browser testing, which includes checking the
compatibility of the application on different browsers.

Types of Software Testing


According to the nature and scope of an application, there are different types of
software testing. This is because not all testing procedures suit all products. And every
type has its pros and cons. There are two basic types of testing: functional and non-
function

The font file in this archive was created by Joanne Taylor in Knysna, South Africa,
using Font Creator 5.6.

By using or installing this font data, you implicitly agree to certain conditions:

It can be used for any commercial or personal work.

It must not be altered or modified without my consent.

It may not be sold.


I cannot be held liable for any damage arising out of the use of this font.

Please send a thumnail of any design work using this font to me,

qabbojo@gmail.com

Thank you for liking this font!

Enjoyal.

Functional Testing

Functional testing verifies each function of an application or software. The tester


verifies functionality with a specified set of requirements. So the source code of a
software or an application doesn’t play a major role in this case. Testing the behavior
of the software is the main concern.

The different types of functional testing include:

 Unit testing. In unit testing, the tester checks individual software components. The aim is
to test whether the components behave according to the requirements.
 Integration testing. Integration testing deals with testing individual components or
modules after they are combined in a group.
 System testing. Here, the tester executes test cases for verifying the compliance of
integrated and completed software along with specifications.
 Sanity testing. This tests logical reasoning related to the working of the program.
 Smoke testing. Smoke testing tests simple and basic functionalities, such as if the user is
able to log in or log out.
 Interface testing. These tests check whether the communication between two software
systems is correctly carried out.
 Regression testing. This is probably one of the most important testing phases. Here, the
old test cases of the entire application are executed after a new functionality has been
implemented.
 Beta/acceptance testing. Here, the intended users try the product and report bugs.

Non-Functional Testing

Non-functional testing considers parameters such as reliability, usability, and


performance. A non-functional test might be checking how many users can log in to
the system at the same time.

Non-functional testing types include:

 Performance testing. The performance or speed of the application is tested under the


required workload.
 Load testing. This tests an application’s behavior under a huge workload. So, if you’re
testing a website, load testing checks the site’s functionality and performance under high
traffic.
 Stress testing. Stress testing determines software robustness by assessing whether it’s
working beyond regular operation.
 Volume testing. This tests the performance of the system by loading the database to an
increased volume of data.
 Security testing. Here, test cases are executed to check whether the system is safeguarded
against sudden or deliberate attacks from internal and external sources.
 Compatibility testing. Test cases are executed to check whether the application is
compatible with varying environments. For example, if you’re testing a web application,
compatibility testing deals with how the website works on different browsers or devices.
 Install testing. These tests check if a product works according to expectations after
installation.
 Recovery testing. Here, testers determine an application’s capacity to recover from
hardware crashes and failures.
 Reliability testing. This procedure checks where an application can perform a particular
task without failure within a specific timeframe. For example, suppose you’re testing a
cryptocurrency mining application. The scenario where the application can mine
continuously for eight hours without crashing might be something you look for during
reliability testing.
 Usability testing. Usability testing explores the end-user’s ease of use in terms of
learning, operating, and preparing inputs and outputs.
 Compliance testing. This determines the system’s compliance with external and internal
standards.
 Localization testing. Here, testers check the behavior of a product according to local or
cultural settings and environment.

Based on the amount of information you know about the product to test it, software
testing can be divided into different types: Black-box testing, White-box testing, and
Grey-box testing. 

Black-box Testing 

In this type of testing, you have the least amount of information on how the product is
built. You don’t know about the structure of the product, its code, or logic. You would
use the product as an end user would. Because in black-box testing, you’d have the
same amount of information as your customer, it is used for functional testing. 

This type of testing can only happen when the code is executed. Hence, dynamic
testing is used. Dynamic testing is the type where you have to execute the code and
test the product while the code execution is in process. It is mostly done to check how
the would be when it’s up and running and how the user would experience it. 

White-box Testing

In white-box testing, you have most of the information about the product. White-box
testing is mostly used to make the code better. Finding inefficiencies in code, poor
coding practices, unnecessary lines of code are identified in this type of testing. Most
of the code optimization and security fixes happen as a result of this testing. 

White-box testing doesn’t mainly focus on how the web application is working. It
rather focuses on how it can be made better. You can make a lot of improvements to
your product but the last few steps to make it perfect is difficult. And it can’t be
perfect until it has no issues whatsoever. Making it perfect requires a thorough
inspection. Because a product in execution can’t give you all the insights, you’ll have
to check the code without execution. This is known as static testing. Static testing is
also used in the early stages of development when it’s simple and you needn’t wait for
product deployment.

Grey-box Testing
In this type of testing, you have partial information about the product. This type of
testing is helpful to find out bugs that the user wouldn’t know about. To give you a
very simple example, if you’ve designed an element to have a blue shade but it has a
green shade. The user wouldn’t know that it’s a bug because they’d think that’s how
it’s supposed to be. But your partial knowledge of the product would help you identify
such bugs. 

Now that you understand what testing’s all about, it’s time you know how to go about
the software testing process.

Software Testing Process


Like any other process, software testing can also be divided into different phases.
Let’s look at them in brief.

Planning

Every process starts with planning. In this phase, you collect all the required details
about the product. You collect a list of tasks that has to be tested first. If you’re testing
after a bug fix, then you’d want to know what the bug was and what’s the ideal
behavior. Then you have the prioritize your checklist of tasks. If a complete team is
involved, then division of tasks can also be done in this phase. 

Preparation

Once you know what you have to do, you have to build the foundation for testing.
This includes preparing the test environment, collecting test-cases, researching
product features and test-cases. Gathering tools and techniques for testing and getting
familiar with them should also be done here.

Execution

This is when you actually run tests on the product. You execute test-cases and collect
the results. Then you compare the results with the expected result and see if the
product is working as expected or not. You make a note of all the successful and
failed tests and test-cases.

Reporting
This is the last phase of software testing where you have to document all your
findings and submit it to the concerned personnel. Test-case failures are of most
interest here. A proper and clear explanation of tests run and outputs should be
mentioned. For complex tests, steps to reproduce the error, screenshots, and whatever
is helpful should be mentioned.

Two Ways to Test

As we know, in the current age of machines, everything that involves manual effort is
slowly automated. And the same thing is happening in the testing domain. There are
two different ways of performing software testing—manual and automation.

Manual labor in any field requires a lot of time and effort. Manual testing is a process
in which testers examine different features of an application. Here, the tester performs
the process without using any tools or test scripts. Without using any automated tools,
testers perform execution of different test cases. Finally, they generate a test report.

Quality assurance analysts test the software under development for bugs. They do so
by writing scenarios in an excel file or QA tool and testing each scenario manually.

But in automated testing, testers use scripts for testing (thus automating the process).
The pre-scripted tests run automatically to compare actual and expected outcomes.
With test automation, when constant human intervention is not necessary, things like
regression testing and execution of repetitive tasks don’t seem like much effort.

Is Automated Testing Making Manual Testing Obsolete?

Now that you’ve got the gist of what manual and automated testing are, we need to
clarify an important question.

Is automation testing making manual testing obsolete? No.

Even though the automatic performance of most processes takes place in automation
testing, some manual labor is still a must. Generating the initial script for testing
requires human efforts. Also, in any automated process, human supervision is
mandatory. Automation simply makes the testing process easier. However, it doesn’t
make manual testing obsolete. You only get the best result by combining both manual
and automated tests.
Why Is There Such a Huge Demand for Test Automation?

Since testing is more efficient and speedy, there’s a huge demand for automation
testing compared to manual testing. And the reason is that it helps find more bugs in
less time. By checking every single unit, automated testing also increases test
coverage. As a result, an organization’s productivity increases.

Testing Is Software’s Lifeline


No company can underestimate the importance of delivering the best possible product
to customers. And the types of testing keep evolving and the list keeps going on.
Depending on the nature and scope of your products, you can run different testing
procedures.

Once the testing team gives the green signal, the deliverable is ready to go out into the
market. But enterprises still need to keep in mind that customer trust doesn’t come
easily. To help earn customer trust, you need to provide consistent, reliable products.
That’s why testing is an integral part of the software development life cycle.

 This post was written by Arnab Roy Chowdhury. Arnab is a UI developer by


profession and a blogging enthusiast. He has strong expertise in the latest UI/UX
trends, project methodologies, testing, and scripting.

What to read next

What Is End To End Testing? A Helpful Introductory Guide

GUI Testing in Depth: Everything You Need to Understand


To err is human. No matter how much of a perfectionist you are, we’re all bound to
make mistakes. Every organization has an end goal that comes with its own set of
expectations. For some businesses, success is indicated by a high frequency of real
outcomes matching expected results. But before reaching their end goal, every firm
has to face the consequences of human errors.

No enterprise can use manual error as an excuse for delivering a compromised


product. To ensure a high-quality product, there has to be something in place to pick
out errors. Software testing is an essential solution to this problem for software
development companies. In this post, I’m going to cover some software testing basics
that you need to know.

What Is Software Testing?


Software testing is the process of finding errors in the developed product. It also
checks whether the real outcomes can match expected results, as well as aids in the
identification of defects, missing requirements, or gaps.

Testing is the penultimate step before the launch of the product to the market. It
includes examination, analysis, observation, and evaluation of different aspects of a
product.

Professional software testers use a combination of manual testing with automated


tools. After conducting tests, the testers report the results to the development team.
The end goal is to deliver a quality product to the customer, which is why software
testing is so important.

Importance of Software Testing


It’s common for many startups to skip testing. They might say that their budget is the
reason why they overlook such an important step. They think it would lead to no
major consequences. But to make a strong and positive first impression, it needs to be
top-notch. And for that, testing the product for bugs is a must.

Similarly, established organizations need to maintain their client base and their
impression. So they have to ensure the delivery of flawless products to the end-user.
Let’s take a look at some points and see why software testing is vital to good software
development.

Enhance Product Quality

An enterprise can bring value to their customers only when the product delivered is
ideal. And to achieve that, organizations have to make sure that users don’t face any
issues while using their product. The fool-proof way of doing it is by making your
product bug-free. Organizations have to focus on testing applications and fix the bugs
that testing reveals before releasing the product. When the team resolves issues before
the product reaches the customer, the quality of the deliverable increases.

Improve Security

When customers use the product, they are bound to reveal some sort of personal
information. To prevent hackers from getting hold of this data, security testing is a
must before the software is released. When an organization follows a proper testing
process, it ensures a secure product that in turn makes customers feel safe while using
the product. For instance, banking applications or e-commerce stores need payment
information. If the developers don’t fix security-related bugs, it can cause massive
financial loss.

The other part of security is not losing your data. It’s common today for people to
store data in cloud storage. You also probably have your photos and files stored on
iCloud or Google drive. What if something goes wrong and you lose all your data?
One of your nightmares isn’t it? Security of a product not only protects information
from hackers but also makes sure it’s not lost or gets corrupted. 

Detect Compatibility With Different Devices and Platforms

The days are gone when customers worked exclusively on hefty desktops. In the
mobile-first age, testing a product’s device compatibility is a must. For instance, let’s
say your organization developed a website. The tester must check whether the website
runs on different device resolutions. Additionally, it should also run on different
browsers.

Another reason why testing is gaining more importance is ever-increasing browser


options. What works fine on Chrome may not run well on Safari or Internet Explorer.
This gives rise to the need for cross-browser testing, which includes checking the
compatibility of the application on different browsers.

Types of Software Testing


According to the nature and scope of an application, there are different types of
software testing. This is because not all testing procedures suit all products. And every
type has its pros and cons. There are two basic types of testing: functional and non-
functional.

Functional Testing

Functional testing verifies each function of an application or software. The tester


verifies functionality with a specified set of requirements. So the source code of a
software or an application doesn’t play a major role in this case. Testing the behavior
of the software is the main concern.

The different types of functional testing include:

 Unit testing. In unit testing, the tester checks individual software components. The aim is
to test whether the components behave according to the requirements.
 Integration testing. Integration testing deals with testing individual components or
modules after they are combined in a group.
 System testing. Here, the tester executes test cases for verifying the compliance of
integrated and completed software along with specifications.
 Sanity testing. This tests logical reasoning related to the working of the program.
 Smoke testing. Smoke testing tests simple and basic functionalities, such as if the user is
able to log in or log out.
 Interface testing. These tests check whether the communication between two software
systems is correctly carried out.
 Regression testing. This is probably one of the most important testing phases. Here, the
old test cases of the entire application are executed after a new functionality has been
implemented.
 Beta/acceptance testing. Here, the intended users try the product and report bugs.

Non-Functional Testing

Non-functional testing considers parameters such as reliability, usability, and


performance. A non-functional test might be checking how many users can log in to
the system at the same time.

Non-functional testing types include:

 Performance testing. The performance or speed of the application is tested under the


required workload.
 Load testing. This tests an application’s behavior under a huge workload. So, if you’re
testing a website, load testing checks the site’s functionality and performance under high
traffic.
 Stress testing. Stress testing determines software robustness by assessing whether it’s
working beyond regular operation.
 Volume testing. This tests the performance of the system by loading the database to an
increased volume of data.
 Security testing. Here, test cases are executed to check whether the system is safeguarded
against sudden or deliberate attacks from internal and external sources.
 Compatibility testing. Test cases are executed to check whether the application is
compatible with varying environments. For example, if you’re testing a web application,
compatibility testing deals with how the website works on different browsers or devices.
 Install testing. These tests check if a product works according to expectations after
installation.
 Recovery testing. Here, testers determine an application’s capacity to recover from
hardware crashes and failures.
 Reliability testing. This procedure checks where an application can perform a particular
task without failure within a specific timeframe. For example, suppose you’re testing a
cryptocurrency mining application. The scenario where the application can mine
continuously for eight hours without crashing might be something you look for during
reliability testing.
 Usability testing. Usability testing explores the end-user’s ease of use in terms of
learning, operating, and preparing inputs and outputs.
 Compliance testing. This determines the system’s compliance with external and internal
standards.
 Localization testing. Here, testers check the behavior of a product according to local or
cultural settings and environment.

Based on the amount of information you know about the product to test it, software
testing can be divided into different types: Black-box testing, White-box testing, and
Grey-box testing. 

Black-box Testing 

In this type of testing, you have the least amount of information on how the product is
built. You don’t know about the structure of the product, its code, or logic. You would
use the product as an end user would. Because in black-box testing, you’d have the
same amount of information as your customer, it is used for functional testing. 

This type of testing can only happen when the code is executed. Hence, dynamic
testing is used. Dynamic testing is the type where you have to execute the code and
test the product while the code execution is in process. It is mostly done to check how
the would be when it’s up and running and how the user would experience it. 

White-box Testing

In white-box testing, you have most of the information about the product. White-box
testing is mostly used to make the code better. Finding inefficiencies in code, poor
coding practices, unnecessary lines of code are identified in this type of testing. Most
of the code optimization and security fixes happen as a result of this testing. 

White-box testing doesn’t mainly focus on how the web application is working. It
rather focuses on how it can be made better. You can make a lot of improvements to
your product but the last few steps to make it perfect is difficult. And it can’t be
perfect until it has no issues whatsoever. Making it perfect requires a thorough
inspection. Because a product in execution can’t give you all the insights, you’ll have
to check the code without execution. This is known as static testing. Static testing is
also used in the early stages of development when it’s simple and you needn’t wait for
product deployment.

Grey-box Testing
In this type of testing, you have partial information about the product. This type of
testing is helpful to find out bugs that the user wouldn’t know about. To give you a
very simple example, if you’ve designed an element to have a blue shade but it has a
green shade. The user wouldn’t know that it’s a bug because they’d think that’s how
it’s supposed to be. But your partial knowledge of the product would help you identify
such bugs. 

Now that you understand what testing’s all about, it’s time you know how to go about
the software testing process.

Software Testing Process


Like any other process, software testing can also be divided into different phases.
Let’s look at them in brief.

Planning

Every process starts with planning. In this phase, you collect all the required details
about the product. You collect a list of tasks that has to be tested first. If you’re testing
after a bug fix, then you’d want to know what the bug was and what’s the ideal
behavior. Then you have the prioritize your checklist of tasks. If a complete team is
involved, then division of tasks can also be done in this phase. 

Preparation

Once you know what you have to do, you have to build the foundation for testing.
This includes preparing the test environment, collecting test-cases, researching
product features and test-cases. Gathering tools and techniques for testing and getting
familiar with them should also be done here.

Execution

This is when you actually run tests on the product. You execute test-cases and collect
the results. Then you compare the results with the expected result and see if the
product is working as expected or not. You make a note of all the successful and
failed tests and test-cases.

Reporting
This is the last phase of software testing where you have to document all your
findings and submit it to the concerned personnel. Test-case failures are of most
interest here. A proper and clear explanation of tests run and outputs should be
mentioned. For complex tests, steps to reproduce the error, screenshots, and whatever
is helpful should be mentioned.

Two Ways to Test

As we know, in the current age of machines, everything that involves manual effort is
slowly automated. And the same thing is happening in the testing domain. There are
two different ways of performing software testing—manual and automation.

Manual labor in any field requires a lot of time and effort. Manual testing is a process
in which testers examine different features of an application. Here, the tester performs
the process without using any tools or test scripts. Without using any automated tools,
testers perform execution of different test cases. Finally, they generate a test report.

Quality assurance analysts test the software under development for bugs. They do so
by writing scenarios in an excel file or QA tool and testing each scenario manually.

But in automated testing, testers use scripts for testing (thus automating the process).
The pre-scripted tests run automatically to compare actual and expected outcomes.
With test automation, when constant human intervention is not necessary, things like
regression testing and execution of repetitive tasks don’t seem like much effort.

Is Automated Testing Making Manual Testing Obsolete?

Now that you’ve got the gist of what manual and automated testing are, we need to
clarify an important question.

Is automation testing making manual testing obsolete? No.

Even though the automatic performance of most processes takes place in automation
testing, some manual labor is still a must. Generating the initial script for testing
requires human efforts. Also, in any automated process, human supervision is
mandatory. Automation simply makes the testing process easier. However, it doesn’t
make manual testing obsolete. You only get the best result by combining both manual
and automated tests.
Why Is There Such a Huge Demand for Test Automation?

Since testing is more efficient and speedy, there’s a huge demand for automation
testing compared to manual testing. And the reason is that it helps find more bugs in
less time. By checking every single unit, automated testing also increases test
coverage. As a result, an organization’s productivity increases.

Testing Is Software’s Lifeline


No company can underestimate the importance of delivering the best possible product
to customers. And the types of testing keep evolving and the list keeps going on.
Depending on the nature and scope of your products, you can run different testing
procedures.

Once the testing team gives the green signal, the deliverable is ready to go out into the
market. But enterprises still need to keep in mind that customer trust doesn’t come
easily. To help earn customer trust, you need to provide consistent, reliable products.
That’s why testing is an integral part of the software development life cycle.

 This post was written by Arnab Roy Chowdhury. Arnab is a UI developer by


profession and a blogging enthusiast. He has strong expertise in the latest UI/UX
trends, project methodologies, testing, and scripting.

What to read next

What Is End To End Testing? A Helpful Introductory Guide

GUI Testing in Depth: Everything You Need to Understand


What is a defect?
The variation between the actual results and expected results is known as defect.

If a developer finds an issue and corrects it by himself in the development phase


then it’s called a defect.

What is a bug?
If testers find any mismatch in the application/system in testing phase then they
call it as Bug.

As I mentioned earlier, there is a contradiction in the usage of Bug and Defect.


People widely say the bug is an informal name for the defect.

What is an error?
We can’t compile or run a program due to coding mistake in a program. If a
developer unable to successfully compile or run a program then they call it as
an error.

What is a failure?
Once the product is deployed and customers find any issues then they call the
product as a failure product. After release, if an end user finds an issue then that
particular issue is called as failure

Points to know:

If a Quality Analyst (QA) finds a bug, he has to reproduce and record it using the
bug report template.

Earlier I have posted a detailed post on “Bug Report Template”. If you haven’t
gone through it, you can browse by clicking here.

STLC- Software Testing Life Cycle

Entry Criteria: -when can we started particular phase


Exit Criteria: -when phase is completed

Defect/Bug Life Cycle in Software Testing

What is Defect Life Cycle?


Defect Life Cycle or Bug Life Cycle in software testing is the specific set of states
that defect or bug goes through in its entire life. The purpose of Defect life cycle is to
easily coordinate and communicate current status of defect which changes to various
assignees and make the defect fixing process systematic and efficient.

Defect Status
Defect Status or Bug Status in defect life cycle is the present state from which the
defect or a bug is currently undergoing. The goal of defect status is to precisely
convey the current state or progress of a defect or bug in order to better track and
understand the actual progress of the defect life cycle.

The number of states that a defect goes through varies from project to project. Below
lifecycle diagram, covers all possible states

 New: When a new defect is logged and posted for the first time. It is assigned a
status as NEW.
 Assigned: Once the bug is posted by the tester, the lead of the tester approves
the bug and assigns the bug to the developer team
 Open: The developer starts analyzing and works on the defect fix
 Fixed: When a developer makes a necessary code change and verifies the
change, he or she can make bug status as "Fixed."
 Pending retest: Once the defect is fixed the developer gives a particular code
for retesting the code to the tester. Since the software testing remains pending
from the testers end, the status assigned is "pending retest."
 Retest: Tester does the retesting of the code at this stage to check whether the
defect is fixed by the developer or not and changes the status to "Re-test."
 Verified: The tester re-tests the bug after it got fixed by the developer. If there
is no bug detected in the software, then the bug is fixed and the status assigned
is "verified."
 Reopen: If the bug persists even after the developer has fixed the bug, the
tester changes the status to "reopened". Once again the bug goes through the
life cycle.
 Closed: If the bug is no longer exists then tester assigns the status "Closed." 
 Duplicate: If the defect is repeated twice or the defect corresponds to the same
concept of the bug, the status is changed to "duplicate."
 Rejected: If the developer feels the defect is not a genuine defect then it
changes the defect to "rejected."
 Deferred: If the present bug is not of a prime priority and if it is expected to
get fixed in the next release, then status "Deferred" is assigned to such bugs
 Not a bug:If it does not affect the functionality of the application then the
status assigned to a bug is "Not a bug".

Defect Life Cycle Explained

1. Tester finds the defect


2. Status assigned to defect- New
3. A defect is forwarded to Project Manager for analyze
4. Project Manager decides whether a defect is valid
5. Here the defect is not valid- a status is given "Rejected."
6. So, project manager assigns a status rejected. If the defect is not rejected
then the next step is to check whether it is in scope. Suppose we have
another function- email functionality for the same application, and you
find a problem with that. But it is not a part of the current release when
such defects are assigned as a postponed or deferred status.
7. Next, the manager verifies whether a similar defect was raised earlier. If
yes defect is assigned a status duplicate.
8. If no the defect is assigned to the developer who starts fixing the code.
During this stage, the defect is assigned a status in- progress.
9. Once the code is fixed. A defect is assigned a status fixed
10. Next, the tester will re-test the code. In case, the Test Case passes the
defect is closed. If the test cases fail again, the defect is re-opened and
assigned to the developer.
11.Consider a situation where during the 1st release of Flight Reservation a
defect was found in Fax order that was fixed and assigned a status
closed. During the second upgrade release the same defect again re-
surfaced. In such cases, a closed defect will be re-opened.

That's all to Bug Life Cycle

What is Priority?
Priority is defined as the order in which a defect should be fixed. Higher the priority
the sooner the defect should be resolved.

Defects that leave the software system unusable are given higher priority over defects
that cause a small functionality of the software to fail.

Bug Severity
Bug Severity or Defect Severity in testing is a degree of impact a bug or a Defect has
on the software application under test. A higher effect of bug/defect on system
functionality will lead to a higher severity level. A Quality Assurance engineer
usually determines the severity level of a bug/defect.

KEY DIFFERENCE
 Priority is the order in which the developer should resolve a defect whereas
Severity is the degree of impact that a defect has on the operation of the
product.
 Priority is categorized into three types : low, medium and high whereas
Severity is categorized into five types : critical. major, moderate, minor and
cosmetic.
 Priority is associated with scheduling while Severity is associated with
functionality or standards.
 Priority indicates how soon the bug should be fixed whereas Severity indicates
the seriousness of the defect on the product functionality.
 Priority of defects is decided in consultation with the manager/client while
Severity levels of the defects are determined by the QA engineer.
 Priority is driven by business value while Severity is driven by functionality.
 Priority value is subjective and can change over a period of time depending on
the change in the project situation whereas Severity value is objective and less
likely to change.
 High Priority and low severity status indicates, defect have to be fixed on
immediate bases but does not affect the application while High Severity and
low priority status indicates defect have to be fixed but not on immediate bases.
 Priority status is based on customer requirements whereas Severity status is
based on the technical aspect of the product.

Types of Severity
In Software Testing, Types of Severity of bug/defect can be categorized into four
parts :

 Critical: This defect indicates complete shut-down of the process, nothing can
proceed further
 Major: It is a highly severe defect and collapses the system. However, certain
parts of the system remain functional
 Medium: It causes some undesirable behavior, but the system is still functional
 Low: It won't cause any major break-down of the system

Priority Types
Types of Priority of bug/defect can be categorized into three parts :

 Low: The Defect is an irritant but repair can be done once the more serious
Defect has been fixed
 Medium: During the normal course of the development activities defect should
be resolved. It can wait until a new version is created
 High: The defect must be resolved as soon as possible as it affects the system
severely and cannot be used until it is fixed

You might also like