What Is Testing
What Is Testing
What Is Testing
The process of testing the application to make sure that the application is working
according to the requirements.
Specification
Functionality
Performance
Why Software Testing ?
Software Testing is important as it may cause mission failure, impact on operational
performance and reliability if not done properly.
The planning and execution of the project to ensure the success of a project
minimizing risk throughout the lifetime of the project.
Responsible for writing the product specification, managing the schedule and
making the critical decisions and trade-offs.
QA Lead
To err is human. No matter how much of a perfectionist you are, we’re all bound to make mistakes.
Every…
SHARE ON
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Now that you’ve got the gist of what manual and automated testing are, we need to clarify an important
question.
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 the process of evaluating a system or its component(s) with the intent to find
whether it satisfies the specified requirements or not.
This tutorial will give you a basic understanding on software testing, its types, methods,
levels, and other related terminologies.
Software Tester
Software Developer
Project Lead/Manager
End User
Different companies have different designations for people who test the software on
the basis of their experience and knowledge such as Software Tester, Software Quality
Assurance Engineer, QA Analyst, etc.
Test Automation - Test Automation reduces the testing time, but it is not
possible to start test automation at any time during software development. Test
automaton should be started when the software has been manually tested and
is stable to some extent. Moreover, test automation can never be used if
requirements keep changing.
o Reliability
o Usability
o Efficiency
o Maintainability
o Portability
Audience
This tutorial is designed for software testing professionals who would like to understand
the Testing Framework in detail along with its types, methods, and levels. This tutorial
provides enough ingredients to start with the software testing process from where you
can take yourself to higher levels of expertise.
Prerequisites
Before proceeding with this tutorial, you should have a basic understanding of the
software development life cycle (SDLC). In addition, you should have a basic
understanding of software programming using any programming language.
common software testing activities you should know before you start
According to State of Testing report, software testing industry is growing like never before. It’s not
surprising that more and more people want to become a tester too. Testers also often send me emails
sharing how much they are enjoying their journeys.
Unfortunately, I also see complaints from people that how much they don’t like software testing. They
feel like they chose the wrong path and that they wasted their time with testing after doing testing for a
few months.
Why did that happen? Aren’t those people who used to be very interested in and excited about software
testing in the first place?
There are several reasons to explain why that happened, but there’s one big reason to me is this:
disillusion
They thought software testing is easy, now they see it’s not
They thought software testing is about finding bugs, now they realize there are more involved activities
that they simply don’t enjoy doing every day.
They get confused and uncertain if testing is the right career paths to follow or not.
It’s bad when that happened. However, you can avoid such situation by knowing what software testing
looks like, what testing activities are waiting for you ahead so you can decide if you want to get along
with it…well from the first place.
That’s exactly what I’d like to share with you in today’s post
Note: Before start reading those testing activities, please note that software testing activities are not
limited to what I mentioned in this post. Based on my experience, I’ll try to list some but I’m sure it’s not
the ultimate list. Also, at the same, please be aware that some companies use different terms to refer to
the same things that I provide on this list.
1) Read documents
Finally, you made it. You’re hired after several rounds of interview with some tough and good questions
(some are stupid too) but it’s not important anymore. Now you’re qualified for the position and now
you’re a tester.
Imagine this is your first day at work. Your manager/leader will introduce you to the team members. If
you’re lucky, your team is co-located and you are introduced your team member names and faces. After
getting to know each others, you’re very excited right now for the first tasks assigned to you.
“Here are documents of the project, start reading them” your manager says.
Okay, I’m exaggerating a little bit but basically, you will be assigned a task to read some documents like
specification, guide, help, etc so you know more about the system you’ll test.
While you’re eager to expect to be a rock star where you find a lot of bugs that wow your manager or hit
the ground and run, I have to say that reading the documents to know the system under test is one of
the very first things you do in the project.
So take this opportunity to read and ask as many questions as possible about the system you gonna test.
If your project does not have any document, ask your manager about how to know more about the
system.
After you finish a reading document session, you may have to present what you’ve read and how you
understand things to team members/leader. You may also use the knowledge you get to start other
testing activities like design test cases which I’ll talk about it then
It depends on how your project is doing. Some projects are small so you make need take 1-2 days to
read. Some projects are big, it may take you more days.
How interesting is this activity? Boring. I’ve never seen any testers claim that they love reading the
specification. It’s even more boring in some cases when you do not have access to the system while
reading documents. It means that you may read the document and image how the system and
components will work together.
How important is this activity? Very Important. Even though document reading is boring in its nature,
this activity is very important. The more you know about the system under test, the better you can write
test cases or find bugs.
If your project is a classic project following a traditional software development life cycle and you’re at
the beginning of the project, you will surely do this activity.
I assume you already knew what I mean when I say test case design. If you don’t, you may want to take
a look at my free course on how to design test case (it’s free by the way)
Please note that there are various ways to write or present your test cases. They can be building a
checklist, building a mindmap or scripting a detailed step-by-step test case like the one I share in my
course.
That sounds overwhelmed but don’t worry for now. More often, your manager will provide you some
kind of instruction on how to design test case so you can follow easily.
Since you’re new, you’re often well taken care of. It means that things you do often are reviewed by
your test leader or your peer.
Once you’re done with your test cases, your leader/peer will sit back with you to verify and validate your
test cases to make sure you do the right things and you do it right. If you make it right right the first
time, it’s great, but more often you have to go back and modify your test case here and there a little bit.
Don’t take this as a bad thing. It’s always good to have someone review things you do, give their opinion
and make you better. This is also a great opportunity for you to ask questions and clarify things so you
know more about the system.
Even though designing test case is not something super fun, it’s not too boring either. Some testers I
know do like this activity because they have a chance to be creative in how they want to test the system.
3) Test execution/regression
Once you have a new build to test, you need to re-run test cases that have been written. We call it
regression testing activities.
I talked about regression testing here, but basically, regression testing is:
If you have 10 test cases for a feature, you need to re-run all those 10 cases
If you have 100 test cases for your system, you need to re-run those 100 cases
Regression testing is very beneficial for testing but you may face another problem: test case updating
When you re-run your test cases against the new build, you realize that some functions in your system
have been changed and now your scripted test cases become obsolete. Now you need to go back to
your test cases, modify to make them up-to-date and run them. It’s not a big deal if the change is minor
and there are just a few test cases need to be updated. However, it would become a pain in the @ss if
it’s a major change happening across functions and you have a few hundred test cases to update…and
that’s not fun at all.
But don’t worry, your system is not always changing. Some good days, your test cases do their jobs and
you can even find some important defects by running your test cases too.
So-so
If you just have to run a few rounds of regression, you’re okay but if your regression cycle is short and
you need to repeatedly re-run your whole test suite, this can become boring. However, like I said before
regression testing is really important, so like it or not, sooner or later, you’ll have to do it.
4) Exploratory testing
Most of the testing activities are quite boring so far but as a tester I’m sure you will love this activity:
exploratory testing (or ad-hoc testing if you’d like to call)
This is now time for you to rise and shine. This is an opportunity for you to use all your knowledge of the
system, your bug finding skills to find bugs in the system.
Disregard if you’re following session-based technique to explore or you just do a free test session, I have
to admit it’s fun to do this activity. You will find bugs that not covered in your scripted test cases. You
will unleash your creativity and imagination to think of scenarios where the end users will use the
system and how things may go wrong.
Since exploratory testing is an important activity and it’s fun to do, I do always recommend we should
schedule a good amount of time for this type of testing in the project. It’s really helpful.
5) Bug reporting
If you’re a tester, sooner or later you’ll find a bug and you need to report it. Basically, it’s just an activity
for you tell people what problem you found, bring them to attention and have them fixed.
I wrote a blog post and put everything a tester needs to know how to write good bug report here, so
take a look.
Is it difficult?
More often, your team also has a set of guideline or the format for you to follow. Stick to it and you’ll
be fine then.
Is it boring?
Not really. I don’t know you but writing bug report is quite interesting to me. It’s not only because it’s a
way to “show off” my testing output but also it helps me practice writing skills. If I can write a good bug
report, people can understand the problem quickly and how critical the problem is.
Is it important? Very important. Please note that when you do testing, you’re not only testing but also
you’re providing services and your job is to provide as much information about the system under test as
possible and bug reporting is one of them. Do it right, people will see your value.
Avoid missing important information in the bugs like titles, descriptions, step-to-reproduce, etc
6) Meetings
(Image credit: http://dilbert.com/strip/2016-01-25)
“Oh well meeting”…there’s a ugly truth about meetings, but like it or not, meeting is unavoidable in
projects.
There are different types of meetings happening throughout project lifetime. Here are some common
ones:
Daily meeting:
If your team is working following Scrum framework, daily meeting is considered a must. In this meeting,
each team member will take turn to update the working progress by answering these three questions:
What you did yesterday?
If you’re not following Scrum, daily meeting is also important very important in cases where you have a
large team and team members do not have frequent communication.
In this meeting, team members, team leader and/or manager will review bugs reported by test team
(mean: you) and discuss them in order to:
Clarify some unclear points of bugs or ask for more information from testers
People don’t like meeting in general. However, if the project is large, complicated or your team is not co-
located, a frequent meeting may enhance team communication. So take this opportunity to ask good
questions to know more about the project, the system under test, the plan of the project. The more you
know the better you can test the system.
If your team does not often have daily meeting or you’re part of outsourcing team, you may need to
report your testing progress, test result. You can report your testing progress via email or meeting or …
both. This can be done on daily or weekly basis depending on your team and your role.
Don’t under-estimate the value of test reporting. Sharing your testing progress, your test result or
blocking issues you observe will help managers have information and data to make decision accordingly.
So, there you have it. I’ve shared with you some common testing activities that you should know in
advance as a tester.
I told before and I’d like to stress it again, these are activities I experienced not all activities out there.
Also, what I shared here based on my view, my feeling and my projects. However, knowing this can give
you a heads-up on what may be waiting for you ahead. Knowing this can help you answer the question if
these are activities you’re okay to do…sometimes every day. In fact, you would or would not do the
exact same activities I share here. Just take it as a reference. Sometimes, you need to experiment and
see things through your lens.
Sharing is caring:
Click to share on Facebook (Opens in new window)Click to share on Twitter (Opens in new window)Click
to share on LinkedIn (Opens in new window)
Related Posts
How Software Testing Life Cycle (STLC) works in Waterfall, V-model and Agile?
Comment ( 1 )