Validation v/s Verification

Verification and validation model are also known as V-model. V-model is the software development based on understanding the requirement specifications and testing. It focuses equally on the process and implementation of application development.
In V and V model, in first phase , verification part is introduced in which verification of the document is done through a process like management review, walk through etc. and in the second part validation testing process is done with the help of various testing strategies like unit testing, Integration testing, System testing and acceptance testing.
Validation process is basically a quality assurance process in which validation of the application is done through testing strategies

Verification is a process where preventive actions are taken before the software development gets complete to ensure all the requirements have been taken care and have been understood properly by implementation team. It is a quality control process.
Validation is the process where developed module or system is tested against the expected outcomes. Let us understand validation and verification in detail.

What do you mean by Verification in software testing?

  1. Verification means “Are we building the system right”.
  2. Verification is finding whether the product is meeting the requirements mentioned in the software requirement specifications document.
  3. Verification is basically to ensure that product is developed as per the requirement and design.
  4. Execution of the code is not required while carrying out verification process.
  5. Verification is carried before validation is done.
  6. Cost of the errors caught in the verification phase is always less than in validation phase.
  7. It is basically manual checking of the requirement specification, specification design, architecture design and module design.
  8. Ways through which verification can be done is Management review, walk through and audit.

What is Validation in software testing?

  1. Validation means “Are we building the right system”?
  2. Validation is the process of evaluating the products with the help of testing strategies.
  3. Validation is carried out by the testing team.
  4. Execution of the code is done in validation testing.
  5. Validation is carried out after the verification has been done successfully.
  6. Cost of error caught in validation is more than that in verification.
  7. It involves checking the code based on the requirement specification and design document.
  8. Ways through which validation is done is unit testing, integration testing, system testing and acceptance testing.
Read More :
Functional and Non-functional Testing Techniques
Difference between Prototype and Spiral Model
Uses of Proxy Servers

Copyright ©

Ad-hoc Testing, Monkey Testing & Exploratory Testing

What do you mean by Exploratory Testing?

There is no defined procedure or scenario through which exploratory testing is done .It gives power to the tester to perform testing in their own way. In this testing, the tester understands the application and then generates the test cases based on his understanding.

Key points that have to be remembered while doing exploratory testing are:
  • Preparation of test cases should be done in such a way that it should validate the software stability.
  • Exhaustively testing the test scenarios based on specific requirements.
  • The functionalities and the application of the software have to be ascertained by the tester.
  • Tester has to determine the limitation of the software
  • Tester has to determine the scope of the software.

Exploratory testing saves time as no advance preparation (preparation of test cases, test plan and test scenarios) has to be done for the testing. Other advantage is that the tester can report issues related with the missing requirement as he is kind of reviewing the requirement document.

What is meant by Monkey Testing?

This type of testing is performed at a random basis and does not require the tester to prepare the test cases or test plans. The input data which is used is also randomly generated and is used to test the software.
Monkey testing needs an expert tester who has domain expertise and is able to test valid scenarios. Monkey testing is done at random so test result cannot be replicated as the test scenarios are not documented.
There are some advantages of monkey testing. The system is checked randomly with help of monkey testing that can even check hidden bugs.

Types of monkey testing
  1. Monkey Button Push Testing : Here repetitive execution of the test cases is required. It is similar to the monkey pushing the red button repetitively to get the banana.
  2. Smart Monkey Testing : In this the input data is generated from statistics and not from probability distribution. So it is accurate.
  3. Brilliant Monkey testing : The inputs are created from a random regular expression or random finite-state machine model of user behavior
  4. Dumb Monkey Testing : Inputs are generated from the uniform probability distribution rather than from statistics.

What is meant by Ad hoc testing in Software testing?

Ad-hoc testing is carried out without any formal documentation or planning .It is just checked to uncover the defects with might have not been tested by the users. It is generally done after planned testing has been performed.
Tester should have in depth knowledge of the system. Then only the ad-hoc testing can be successfully performed.

Various ways this can make ad-hoc testing more effective.
  • Preparation : Proper preparation can make the ad-hoc testing more effective as requirement will be clearer to the tester
  • Knowledge of exact requirements : Tester should know the requirements thoroughly. Then only he can successfully test the system
  • Targeting critical functionalities : The probability of getting bugs is more in the critical functionalities. So tester can target those functionalities.
  • Documenting the findings : Documenting the finding of the ad-hoc testing can help in creating the test cases and correspondingly the defect can be raised.

Difference between ad hoc testing and exploratory testing

Ad-hoc testing
  1. Ad-hoc testing means learn the application and then test it.
  2. It is always recommended to test the application with detailed set of documents.
  3. Ad-hoc tester should have complete knowledge about the requirements of the system.
  4. Before going for ad-hoc testing, the tester should have done sufficient testing of the system.
  5. It is not considered as type of any of the test strategies or an approach of testing.
  6. Here the tester does not participate actively in the testing.
Exploratory testing
  1. In exploratory testing, the application is tested while learning it.
  2. In this, no documentation of application is required.
  3. In exploratory testing, testers can increase their knowledge by testing and exploring.
  4. It is an approach, not a technique.
  5. It is not required that tester should have complete knowledge about the requirements.
  6. Exploratory testing is the type of ad-hoc test strategies.
  7. In exploratory testing the tester should actively control the testing.

Read More
Pros and Cons of Manual Testing
Benefits of Unit Testing
Advantages of Beta Testing

Copyright ©

Manual Testing: Advantages and Disadvantages of Manual Software Testing

In the earlier post we saw what is meant by manual and automates testing and various automated testing tools. Today we will see difference between manual and automation testing and will try to ascertain which testing is best manual or automation.
Just to brush up testing is a process of finding bugs in the application before it is released for production. For testing the quality of software we create various test cases which try to evaluate various functionalities which application provides.
A software tester can run these test cases manually or can automate the process depending on the complexity of the process and time available with him.

Benefits of manual testing over Automation testing

  1. If the test cases have to be run a small number of times then manual testing is more likely to be performed.
  2. The more time the tester spends on testing, the more is the chances of finding bugs because no machine or tool can match the power of human brain and experience.
  3. It allows the tester to do more ad-hoc testing.
  4. Trainers are required to give training on automation tools but manual testing can be done by any tester.
  5. Proficiency is required to write script for automation tools but in manual testing nothing of this sort is required.
  6. GUI testing can be done accurately with the help of manual testing as visual accessibility and preferences are difficult to automate.
  7. Automation testing cannot replace human intuitions, inferences and reasoning.
  8. Automation testing cannot be stopped in between, in case any analysis required.

Drawbacks of manual testing over Automation testing

  1. Manual testing can be very time consuming
  2. For same release, we may need to run same test cases which can be sometimes tiring, this process can be automated with automation tools.
  3. Manual testing have high risk of error and mistakes as it is done manually by testers
  4. It is not possible to test the entire module manually.
  5. Manual testing requires the presence of tester but automated testing can be done 24x7 without any intervention.
  6. Automated testing generates logs and repositories automatically but in manual testing we need to create the test cases manually.
  7. Scope of manual testing is very limited but if it is automation testing then the scope is very broad.
  8. Manual testing is not suitable in very large organizations and time bounded projects
  9. Performance testing is impossible with the help of manual testing.
  10. Batch testing cannot be done manually as it is not possible for a human tester to give output of each and every batch at regular intervals of time.
  11. Comparing large amount of data in case of manual testing is difficult.

Read More :
Exhaustive Testing in Software Testing
Qualities of a good Software

Copyright ©

Manual testing V/s Automated testing

What do you mean by Manual Testing?
Manual Testing is basically testing the test cases without use of any of the automation tools. It is a primitive method of testing which helps in identifying any type of bugs in the software application.
Manual testing is laborious activity which involves tester to perform the job accurately. Also, in order to successfully test the test cases the tester should be:
  • Patient
  • Observant
  • Speculative
  • Creative
  • Innovative
  • Skilful
  • Quick Decision maker

Manual testing is useful when we are doing usability testing and GUI testing. With the help of manual testing only the exact standard definition for effective usage and accessibility can be identified.

Example of manual software testing:
While testing the webpage, if the “OK” and “CANCEL” buttons are not on right location, through manual testing, we can easily catch such bugs. In same way, there are many bugs in GUI which can never be identified through automation testing only manual testing is effective in such cases.

Following steps are to be followed while carrying out manual testing
  1. Understand the functionality of the program
  2. Prepare a test environment
  3. Execute the test cases manually.
  4. Verify with actual results
  5. Record the Result as pass or Fail

What do you mean by automated testing?
Automated testing is performed by automation tools to execute test suites before the module is released into production. Automated tools are designed in such a way that they are capable of executing tests, reporting outcomes and comparing result with other test cases. Testing tools can carry out testing at any time and for any number of test cases.

The goal of the automation testing is to reduce number of test cases to be run manually and not eliminate manual testing all together.

Which test cases need automation testing?
  • Test cases which are critical
  • Test cases that are executed repeatedly
  • Test cases which are very time consuming

Which test cases do not need automation testing?
  • Test cases which are newly designed and manual testing has not been done on it.
  • Test cases which are executed on ad-hoc basis.
  • Test cases for which requirements changes frequently.

Examples of Automation tools used automation testing
  • HP unified Functional testing software
  • Test Complete
  • Watir
  • Telerik Test studio

Next up we will see the advantages and disadvantages of manual testing over automation testing.

Read More:
Drivers and Stubs in Software Testing
What do you mean by Exhaustive Testing

Copyright ©

Testing and Debugging : What, Who does it, Differences

What do you mean by Software Testing?
Tester tests the AUT (application under testing) and if the output deviates from the expected output then the tester raises the defect and passes it back to the development team.
Along with the nature of defect, testers also have to report the point at which the defect occurred and what happened due the occurrence of that defect. All this information will be used by development team to DEBUG the defect.
Testing can be done by a tester, programmer or developer who has developed the application. Sometimes testing is done through testing automation tools which saves time and provide accurate results.
Testing can be done once the partial development or complete development has been done.

There are different stages in which testing can be done:
  • Unit testing: Small modules of the application can be tested, once it is completely developed by the development team.
  • Integration testing: Integration testing is used to check whether the different modules are compatible to get integrated and form complete application
  • System testing: System testing is used to check whether the system is working properly once the complete application has been developed.
  • User Acceptance testing: In user acceptance testing, the testing of the application is done in live environment with the help of friendly customers or business customers.

Testing can be done either manually or by automation testing. It is generally preferred to use manual testing if a small application is there and rigorous testing is required but if the application is large and the organization is time bounded then automation testing is preferred.

What do you mean by Debugging?
Debugging is the activity carried out by the development team when the tester gives them a report about the defects. The developer tries to find the reason behind the defect with the help of debugging. With the help of debugging, the developer tries to examine line of code of the module to identify the cause of the defect. Once the root cause for the defect has been identified, developers fix it and send the software back to tester for retesting.
Debugging is done by the programmers or developers. It is done to identify the root cause of any defect by examining the code suspected. Debugging can be done with help of debugger tools. When a program crashes, the debuggers show the exact position of error in the target program. Most debuggers are capable of running the programs step by step. They can even modify the state of the program while execution. The execution of the debugger is basically handled by the simulator which is used to achieve a higher degree of control over the execution of the debugging process. This allows the debugger to halt or stop the program according to defined pre conditions

Difference between debugging and testing

  1. Testing starts with known conditions, user defined procedures and predictable outcomes.
  2. Testing is usually planned, designed and scheduled
  3. Testing can be done without having the design knowledge
  4. It can be done by outsiders who do not have any functional knowledge of the application
  5. Test design and execution can be automated
  6. Procedure or way through which testing is done is available.
  7. The aim is to find as many defects as possible
  8. It is done by testing team.

  1. Through debugging, the initial condition or end condition cannot be known
  2. Debugging cannot be constrained i.e. it cannot be designed, planned or scheduled.
  3. Through debugging , programmers identifies the cause of the bug
  4. Debugging is impossible, if we don’t have functional knowledge.
  5. Debugging is done by a person who has complete knowledge of the application and has experience in the development also.
  6. Debugging can never be automated.
  7. There is no fixed procedure to do debugging.
  8. Intention is to remove as many as defects as possible.
  9. It is done by programmers.

Copyright ©