# Functional Testing-Part 1

Now its time to know something which belongs to Black box testing. Here we are going to throw some light on functional testing. Functional testing is a kind of Black box testing. In Functional testing, functions are tested by giving input and then observing the output.

As we know that in black box testing we are not supposed to go into the program's internal structure details. In Functional testing we just observe the output by feeding the input, the testers do not have to look into the coding of the software.

Software is tested for the functional requirements. This is a testing strategy where testing is based on the functionality of the function.

What are Functional Tests?
Functional Tests are actually programs which are configured to test the groups of classes. Functional Tests are programs or scripts configured to test that packages and include screen-driving programs that test GUIs.

View of VI Tester

Basic Steps of Functional Testing:

What we are supposed to do is just to analyze that application to be tested and then we have to develop a test plan which is listed with all the functions which is to be tested. Functional testing typically involves five steps:

• Identifying functions which have to be performed by the software.
• Providing the input.
• Determining the output which is considered on the basis of the function's specifications.
• Then we execute the test.
• The last step is about comparing the output with the output which is expected.

Designing Test Cases of Functional Testing:
Now we will see the techniques for designing Test cases of Functional Testing. We have so many techniques for designing test cases. These are Boundary Value Analysis, Equivalence Class Testing, Decision Table Based Testing etc.

There are other techniques which are also used to design cases. Here we are discussing only BVA (Boundary Value Analysis) and its extended form. The others will be discussed in the next article.

Boundary Value Analysis:
Boundary value analysis concentrates on the Input variables of the functions. This type of Analysis has no recognition of data or logical dependencies. Actually test cases which are close to boundary conditions have higher probability to detect bugs. Let us assume with two input variables x and y. These are confined within:

a<=x<=b
c<=y<=d

both x and y are bounded by two intervals [a, b] and [c, d]. For input x the test cases would be with values a and b just above "a" and another one is just below "b".

Similarly for input y, the values would be just below "c" and just below "d". We try to use the value of input variables at their minimum (just above minimum) and at their maximum (such that it lies just below the maximum).

Boundary Value analysis

Robustness Testing:
This testing is an extension of boundary value analysis. In Robustness testing the extreme values are exceeded with the value which is slightly greater than maximum and a value which must be slightly less than the minimum.

If one variable has an extreme value then in that case rejecting the "single fault" assumption theory of reliability is considered as a worst case analysis.

Power Curves for Robustness Testing

Limitations of Boundary Value Analysis:

Actually BVA works pretty well for those programs which contain independent input values. Input values which can not be taken as just below, nominant and just above boundary is not effectively done by Boundary Value Analysis (BVA).

Conclusion: Since it is a vast topic and we have many other functional techniques which cannot be discussed in a single article. So, the remaining scraps will be discussed in my next article.

Resources:

Basic Terms Related To Testing

Automated Testing

Few More in Testing: Installation and Database Testing