Types of Software Testing
There are many, many types of software testing. Thousands of books, articles, and white papers have been written on the subject. Experts lecture and pontificate about the best types of testing for any given circumstance. I have no desire to rehash all of that rhetoric here
To give just the briefest list of types of software testing can make people feel overwhelmed. Do not fret. Each type of testing has a simple explanation the labels are what confuse most people. Just a small list of test types: Alpha testing Beta testing Black Box testing White Box testing Gray Box testing
End to End testing
Embedded software testing Game testing
GUI Testing
Software application testing Load testing Unit testing Functionality testing Variable event testing And the list goes on and on
Here I will explain the most basic test types to give you an idea of what each entail and how they can be successfully applied. This is a simple overview that will give you the information you need to further study the area(s) of your choice.
"Testing is a skill. While this may come as a surprise to some people it is a simple fact."
~ Graham Fewster: Software Test Automation
Black Box Testing
Wikipedia.com defines Black Box Testing as:
Black box testing takes an external perspective of the test object to derive test cases. These tests can be functional or non-functional, though usually functional. The test designer selects valid and invalid input and determines the correct output. There is no knowledge of the test object's internal structure. (emphasis mine)
As a Black Box tester, the idea is that you dont have to have an understanding of the program code. You dont have to be able to read code and you dont need to be able to write code. What you must be able to do is test the black box; the box being whatever program, widget, or doodad is placed in front of you.
What this means to you, as a tester, on a day-to-day basis is that even though you dont have all the details of each nook and cranny of the code, you must gain an understanding of how the program works. You must be able to exercise the code through the user interface (UI) as thoroughly as you could if you had access to the code.
This is a skill that takes time and effort to develop, but it can be developed. Through practice, observance, awareness, patience, improvement, and perseverance you can develop the necessary tools to excel at this skill. Even the greatest of testers have all had to learn and develop this skill, no matter how unnatural it felt the first time.
White Box Testing Wikipedia.com defines White Box Testing as:White box testing (a.k.a. clear box testing, glass box testing or structural testing) uses an internal perspective of the system to design test cases based on internal structure. It requires programming skills to identify all paths through the software. The tester chooses test case inputs to exercise paths through the code and determines the appropriate outputs. (emphasis mine)As a White Box tester, you will be expected to learn the parts of the code that you will be responsible for testing and the tools you will test with as soon as possible. Being able to read through the code well enough to spot weaknesses will allow you to quickly exploit the most vulnerable parts of the program.
Gray Box Testing
This type of software testing is exactly as it sounds: a mix of Black Box and White Box. It attempts to adapt the strengths of each type and meld them into a whole testing that is greater than the sum of its parts. Grey Box can take the ease-of-use, straightforward approach of Black Box testing and leverage it against the in-depth, code targeted testing of White Box.
Manual Testing
Manual testing requires a tester to execute each and every test step by hand. Every button to be pressed, each link to be selected, all assets to be verified are done by a human. Thus the term manual.
Manual types of software testing can be very time consuming and quite laborious. It is, however, where the Quality Assurance Professional can, and does, most effectively advocate for the end-user. By looking at every page, by reading every Help link, by analyzing every graphic, and by exercising all use paths available to the consumer, you will contribute your expertise to help create the highest quality product possible.
Manual testing is an absolute necessity if a human is necessary to judge whether or not the end-user experience is satisfactory. Certain types of software testing lend themselves more clearly to manual testing than others.
Types of Software Testing Manual testing focus:
Games Testing Where human evaluation of the user experience is valued
Internet testing Where CAPTCHA (Completely Automated Public Turing Test to tell Computers and Humans Apart) is used to prevent bots from attacking web sites
End-User testing When design and development are happening so quickly and speed of feedback from ad-hoc testing is at a premium
Automated Testing
Automated testing is testing that is executed using a tool (either off-the-shelf or created in-house) to exercise the code. The tests are set up by a QA tester or QA engineer using the tool so that in the future a battery of tests can be run by pressing a single button or entering a single command.
The tool may be complex or it may be a simple point-and-click interface that records the actions the tester takes. Once the test steps and actions to be performed are defined, they are recorded so that they can be executed any time in the future.
This takes more than a couple of minutes. Once you have defined and recorded the steps, you must run your automated test script and fix any issues that will produce a falsely negative result. What I mean by this is that you must ensure that all of the results your tests produce are reliable. Each failure your test script reports should be an actual failure not a false alarm. This is why you must take the time to adjust your test scripts.
After you have set up your Automated test scripts, they must be maintained to keep up with the changes that are made in the product you are testing. If, for instance, your scripts begin reporting that a link is not working, be sure that the link itself is bad. If the placement of the link on the page has changed, but your test script has not been updated to take this change into account, then you will see a failure. But this failure will be a false negative. If you report this false negative, you will appear to not know what you are doing.
Types of Software Testing Automated testing focus:
When stable, planned development provides times for implementation and adjustment
For long-term cost benefit In development of generational software
Long-term HW/SW compatibility testing
Click here for more information on Automated Software Testing
What Type of Testing Should You Choose?
No matter what types of software testing you employ, the principles remain the same. The
software testing techniques
that you use can be successful whether you are executing black box, white box, manual, or automated testing.The types of software testing that will be of most benefit to you will depend on your circumstances. There are many factors that will affect your ability to succeed.
When deciding on the types of software testing and which
techniques
you will use, take the following variables into consideration: What sort of team do you have What kind of testing do they execute best? What capacity does your team have to learn something new? How quickly can they incorporate it? How effective is your
lead tester?
What kind of
QA Manager
do you have (or what kind are you)? What type of development environment are you in? What are you testing? Etc. There are many types of software testing and many ways to employ them; many techniques to use and each with its own variations. What is most successful for you may not work in another environment.
Which types of software testing approaches you choose will depend heavily on what you are testing. Late phase
Beta Testing
of a web service or SAAS portal will be completely different than testing pre-Alpha builds as a
game tester.
You will have to consider the type of development, environment, and team you have to work with before deciding which path to follow. Consider wisely as it is much easier to alter your selection before you project begins than after everything is in motion.
For some fantastic additional information regarding types of testing and justification,
check out these articles
(opens in new window) written by James Bach and other true Quality Professionals.
Return from
Types of Software Testing
to
Successful Quality Assurance Home

|