Our main focus is an introduction to Functional Testing. And surprisingly, there are many definitions of the words “functional testing”. Here is the definition we mean. We basically mean black box testing. The initial definition of functional testing said think of a program as a function, you give the program inputs, the program processes the inputs, it gives you outputs. Any aspect of the inputs and the outputs that you could study could be thought of as functional testing. If you treat the program as a function and look at all of its characteristics, you are doing functional testing.
Two things ended up making that definition too broad. First, people wanted to study the inside of the function and how it processes. That’s great but many testers don’t have access to the inside of the program. So I want to separate that off as something that is not part of this course it’s part of the study of what we at Rational call developer testing. The other issue is when you think of functional testing, if you are looking at any attributes of the function, you end up looking at things like security, performance, maintainability, and we have stopped thinking about those as attributes of functional testing.
So in this course, we want to narrow the scope of the class to is anything you can learn about the product without having to look at its code – is black box testing. It doesn’t involve performance testing. I say it doesn’t involve performance testing because there’s an entirely different set of tools and an entirely different set of skills that people should be learning who are performance testing. That’s covered in a separate Rational course. I’ve seen black box testing courses try to stretch to performance but all of them in my experience have failed because they get too broad.