So, functional testing is a quality assurance (QA) process according to wikipedia, and a type of black-box, so here the functionalities of the system are tested without thinking about the code or internal structures. According to this, wouldn't be the ideal that the functional tests were carried out by someone other than the developers?

What do you think?

4 Answers 4


In general I would say it is a good practise to have at least one person (tester/qa) in the team who is in the lead with regards to functional testing. By having this person constantly focus on tests and testability of end user functionality, this forces the whole team to also think about this (even when the tester is not there).

I've worked many years as a tester and initially I also had the opinion that EVERYTHING had to be tested by a tester. I have changed my opinion about this and I would now encourage most developers to also participate in functional testing (that does not mean that it will be successfull with any developer though).


  • As a tester you don't want to be the single point of failure of the team; if other team members that have some interest in taking responsibility for the quality are trained to get some basic testing skills, you at least have them execute the test cases that you wrote. On critical moments in a project or sprint, this is really valuable. It is also valuable that you can take a few days off without worry.
  • When working with Behavior Driven Development/Acceptance Test Driven Development, programmers are forced to get the functional tests to work themselves. They are basically executing the functional tests themselves and this makes sure that they implement a new features the right way the first time. This is a huge benefit obviously.
  • Functional tests are scenario's that can (or would be) executed by end users without any knowledge of the implementation. That doesn't mean that you can't use information about the impmentation to write these tests. Perhaps there is some need to refactor some code for technical reasons. As a tester I would be very interested in how that code relates to end user functionality, so I can choose which functional test cases I would execute to see that there is no regression.
  • When you are serious about test automation, you should consider using the Test Automation Pyramid model. This suggest that you try to minimize the amount of manual and automated functional tests and try to cover as much in unit and integration tests. A tester can only get confidence about the coverage of the technical tests if he/she knows what they are doing and why there is no need anymore to test the same functionality in (automated) functional tests. This thus requires the tester to know more about the code.

To me, the context where you are in is very relevant in the choices that are made about the distribution of testing work within the team.

If the skill level in the team is very low with regards to testing/quality process; it is probably a good idea to stick with the 'tester does everything himself' approach.

For teams that have high ambitions for quality AND delivery speed, it becomes increasingly important to adopt skills from other roles in the team ("T-shaped").


Yes, the Functional Testing is carried out by QA Team. The QA Team knows about the application's behavior and use but have little or almost no idea about the code.

The human behavior of thinking that whatever the work himself/herself have done is perfect and has no bugs. That is why Coders/developers do not test their own work and Testers/QA does that work.

However not all testing is done by QA. Unit Testing and Unit Integration Testing is done by Developers for their developed code. As QA are not supposed to know the code, they cannot do Unit and Integration White box Testing.

Moreover, User Acceptance Testing(UAT) is done by the Client side. Here the developers observes the client using the software and understand what are the difficulties faced by client while operating the application and how those can be reduced.


Knowledge of the internal workings of a system does not imply that you are inferior at functional testing, just as ignorance of the internal workings of a system does not grant you superior skills at functional testing.

Here are some reasons you might not be the best person for that task:

  • You have conflicting priorities, i.e. there are things besides functional testing that you are supposed to do.
  • You do not want to find bugs because it creates more work for you.
  • You think finding bugs is detrimental to how your co-workers or manager perceive you.
  • You enter functional testing with invalid assumptions that influence how you test.
  • You do not understand how the system needs to behave.

Yes, it is carried out by someone other than the developers- they are called QA or Testers or Testing team. These are a bunch of creatures who have a habit of nagging and pointing out issues/bugs/defects in developers code. A bunch of whiny people really. :D

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.