Software Testing Terminology

You will, of course, come across a lot of software testing terminology which can be quite daunting when you are new to the subject. Here is a brief overview of some of the terms that you are likely to come across.

Manual Testing
Manual testing is probably one of the commonest types of software testing. It involves using the application, sometimes in the same way as a user would, and sometimes in a way intended to flush out defects. It is generally, though not exclusively, done by following a test script.

For the uninitiated, it can seem to be very complex, but in reality, the complexity of the testing is dependent on a mixture of the quality and the stage of development of the product. For a mature and stable product, the testing can be extremely mundane and generally uneventful. For a product under development, on the other hand, the testing can change over a period of time as the development of the product advances.

In the initial stages of product development, manual testing is essential, whilst in the latter stages of development, automated testing should have been developed to replace manual testing.



Automated Testing
Sometimes there are tests that are repetitive. In these instances, automated software testing, in which a programme can run the tests for you is very useful. There are also occasions in which you need to quickly go through, say, points ABCD so that you can test around point E and F - an automated programme that can quickly get you to the point you want to be is helpful on these occasions.

There are a number of automated software testing tools that can be used. Some require technical and/or development knowledge, and some are record and playback models. The type that you use will depend on the needs of the project, and on your own level of technical and/or development knowledge.


Functional Testing (aka System Testing)
When a product is being developed, it is expected to perform certain functions. These are generally defined in a Requirements document. Functional testing is testing that the product carries out the functions that it is supposed to. Naturally, this is a major part of the testing effort. If the product doesn't do what it is supposed to do, then nothing else about it matters.


Non Functional Testing
This covers a lot of different types of testing, so it will be covered in a separate post.


Black Box Testing
This is testing an application where you have no knowledge of what is going on inside it, or of how it is doing what it does. All you know is that when you do A, then B happens. The application is a black box to you.


White Box Testing
When you know what the meaning of Black Box Testing is, then the meaning of White Box Testing is fairly self explanatory. It is testing an application when you know what is happening inside it, or what it is doing. If you are working in a very technical test role - which as a beginner, you won't be - then it can be quite common that you have a level of technical knowledge about the application. You would also be doing this if you were in a test automation role, where you would be testing your own automation scripts, generally by stepping through them with a tool, verifying that what is happening is what you expect to happen.


Grey Box Testing
Again, this is fairly self explanatory once you know the meaning of Black Box Testing and White Box Testing. It is somewhere in between black and white. In this type of testing, you have a general understanding about what is happening in the application. The level of your technical knowledge will determine how much understanding you have about the application. It can range from understanding some, if not all, of the code to simply understanding what passes from one black box to another. Because of this, Grey Box Testing is probably the most common type of testing, since you will normally at some stage have at minimum, one or more diagrams to show what is expected to happen inside the application.

Regardless of the names given to them, these are all software testing techniques that you should become familiar with. You don't necessarily have to be an expert in every one of them, but you should at least know about them.