STLH:

"THE BEST WAY TO MAKE YOUR DREAMS COME TRUE IS TO WAKE UP..."

Search This Blog

Fundamental of Testing - What is Software Testing?

 

 
 

Few popular definitions of Software Testing

  • Software Testing definition according to ANSI/IEEE 1059 standard – A process of analyzing a software item to detect the differences between existing and required conditions and to evaluate the features of the software item.
 
  • Definition as  per ISTQB (International Software Testing Qualification Board) - The process consisting of all life cycle activities, both static and dynamic, concerned with planning, preparation and evaluation of a component or system and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects.
 
  • As defined in Wikipedia, the free encyclopedia - Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.


Whats is Software Testing?

"Testing is a process to check whether the software meets the user requirements or not". In SDLC process, developers make many mistakes at different stages of development and testing helps in correcting those mistakes. We can also say that testing is an integral part of all phases in development process of the product..   

For example, in the requirements stage, the SRS document is written and tested to check whether it captured all the user requirements or not.

Various tests or checks carried out at different phases of development are more commonly referred as Quality Assurance. Generally testing is considered as a separate phase after the implementation/ coding phase. 

During the implementation/coding phase, very commonly developers make many mistakes while writing code. As a result the code will have lot of errors. An error is a human action that causes the software to fail. The software is said to fail if the actual results do not match with the expected results. A flaw in a software unit/ component that causes the failure is called a defect. Software engineers or Testers refer to a defect as a bug.

The objective of testing is to find the defects. Once the testing is done the reasons failures are identified and the defects are found. Then defects are corrected and this is an iterative process, testers need to test the software, find defects, correct the code and test the software again. 

When you do the testing your objective is to find defects....


Psychology of Testing

It is difficult to understand software testing psychology into single category because it varies person to person who's working on this development life cycle. 

  • From a developer's point of view the definition of testing is : "testing is the process to prove that the software works correctly"
  • Now consider the same from quality assurance/ test engineer's point of view: "testing is the process to prove that the software does not work".
  • And form manager's point of view the definition of testing is: "testing is the process to detect the defects and minimize the risk associated with the residual defects".

Quality is viewed differently by the customer, developer and tester. The difference definitions result in what is known as quality gap.

 

Who does the Testing?

As discussed in psychology of testing section, the development team tries to prove that the software works correctly. To overcome the difficulty in many  organizations the development team will be different from the testing team. This ensures that testing is done without any bias and maximum possible defects are found before the release of the software. 

Depending on the complexity of the project and criticality of the application, test team size will be different. Large organizations can afford to have dedicated test teams for each project. However in small organizations it is very difficult to have such dedicated teams.

    Developers as Testers:

If developers carry out the testing, there are some advantages. Developers are in a better position to do the testing because they are familiar with the code and the functionality. Their involvement is a must for unit/component testing and integration testing.

 

However they also know the limitations/defects  of  their  software  but  because  of  psychology  of testing, only developers doing the testing is not advisable, system testing is done by an independent testing team. 

 

   Independent Testing Team:

If an independent testing team does the testing they can do an impartial testing without any bias. The test engineers can objectively do the system testing by studying the work products; such as SRS document, design document, etc. The test engineers need to communicate test results in such a way that the sentiments of the developers are not hurt.

   Buddy Testing:

When two people sit together and do the testing, it is called buddy testing. If a developer and a tester works together at unit level testing and test code is written while the actual code is being developed, then it leads to better product. But in real time scenario it is difficult to implement this method because the tester needs to get familiar with the code. Note that buddy testing is a concept similar to eXtreme Programming (XP) concept where engineers works in pairs to do the development. 

Buddy testing claim good results but these concepts are yet to be widely accepted.

No comments:

Post a Comment