I have been following verification and validation questions here with my colleagues, yet we are unable to see the slight differences, probably caused by language barrier in technical English.
User wants to control the lights in 4 rooms by remote command sent from the UI for each room separately.
The UI will contain 4 checkboxes labelled according to rooms they control.
When a checkbox is checked, the signal is sent to corresponding light. A green dot appears next to the checkbox
When a checkbox is unchecked, the signal (turn off) is sent to corresponding light. A red dot appears next to the checkbox.
Let me start with what I learned here:
Verification, according to many great answers here, ensures that product reflects specified requirements - as functional spec is done by a producer based on requirements from customer, this one will be verified for completeness, correctness). Then design document will be checked against functional spec (it should design 4 checkboxes..), and the source code against design (is there a code for 4 checkboxes, functions to send the signals etc. - is it traceable to requirements).
Okay, product is built and we need to test it, validate. Here comes our understanding trouble - validation should ensure the product meets requirements for its specific intended use which is basically business requirement (does it work? can I control the lights from the UI?) but testers will definitely work with the functional spec, making sure the checkboxes are there, working, labelled, etc. They are basically checking whether the requirements in functional spec were met in the final product, isn't that verification? (should not be, lets stick to ISO 12207 that only validation is the actual testing)