Testing, in general, is a judgmental and investigative process in ordinary human life. Validation reflects correctness, aptness, purity etc. of things in our lives. The need for testing and validating things comes from the general human nature of making mistakes, the tendency to find them, and to want to fix them. As humans, we are bound to make mistakes. And being human, we are also inherently driven to keep finding mistakes in our, and especially, in others’ works. So, every person has a tester within. The need is simply to identify it, put one through a structured and well defined process, and there you have it – a qualified tester is now ready.
Testing is an everyday affair
In our daily routines, we identify odd combinations and point out mismatches. E.g. in our everyday lives, we match what color of clothing to wear. We ask ourselves questions like: “is this the right combination of clothes and shoes?”, “will it look good on me?” and so forth. In a tester’s world, this is User Interface testing.
It’s our nature to verify things to own satisfaction. E.g. we lock our car with a remote key, and yet can’t help but double check and verify it “manually” by pulling the door handle just to make sure it is locked. This is a simple example of doing last minute Manual testing after running your Automation suite! Here’s another example: when we’re looking to buy new items, especially electronic devices, we expect to see a working demo of the device. Once satisfied, we make our purchase. But as soon as we bring it home, we verify the features/functionality again. This is an example of Regression testing.
Next comes safety. We should not ignore safety – a key component in any testing process. When we purchase an electronic device or equipment, we always look for a safety mark. We expect the manufacturer to have already done safety testing on the physical device. However, we still perform a Device testing to ensure that it is safe for use.
Testing in a software development scenario
When we talk about testing in an SDLC (software development life cycle), it is the process of finding bugs or defects in a software application program or code. The important thing to notice here is that the expected results are always based on our knowledge or some sort of predefined criteria. Our knowledge is nothing but day to day experiences and actions — which become process when performed in a formal, sequential manner with the objective to achieve certain quality goals.
Software testing is the process through which a tester performs a set of positive and negative actions with the intent to achieve a negative result, so that the resultant defect can be rectified. This might seem negative in terms of development, but it’s nothing but positive from the point of view of end-users.
So a tester needs to investigate, at all times, according the internal and external working functionality of an object with some defined criterion based on which it is implemented. That is why, according to me, software testing is a judgmental process — because a tester has to verify all areas, good and bad, of a software application.
At the end of the day, if one simply applies the natural traits of our human psychology to a software testing process, a tester’s job would become a lot more fun and productive.