Home Core Java Overview Maven Tutorials

Complete Software Testing Definitions

What is Software Testing ???

Many books have many different answer.....
Core and simple answer is :  'Testing is just an activity to find the Bugs in associated software or Application under test'.

What is manual testing ?

Manual Testing is just an activity to check the application manually without using any tool and try to cover most of the possible scenarios. Key & Benefits :
  • It covers most of the possible scenario with respect to user & business both .

  • It covers scenario in permutation and combination way.

  • It case of mathematics  calculations it is best to check manually.

  • A less programming skill & good logical mind can be utilized to find good bugs.


What is Smoke testing ?

To check major functionalities that build/application cab be accepted for further testing or not.
Name Smoke is given based on a strategy, which used  to check a long gas pipe line by passing a solid smoke  to find the leakage in gas pipe line.
Bugs erupted in smoke testing falls in critical severity & high priority.

What is Test Cases ?

How the application will be tested, to write these things in document is known as test cases

How to write the test cases?

Test cases are written based on documents(adopted by the organization) like Business Requirement Specification(BRS) , Functional Specification(FS) or any other document which functionally describe the application.
It is good practice to write the test cases in early phase of development.
An ideal Test cases cover three section
  1. History of Test cases (Written by, Reviewed by, Approved by).

  2. Scenarios

  3. Scenario description & steps to achieve that scenario.

And the possible result of scenario/test steps execution can be : PASS, FAIL & PENDING(Due to defect, due to environment, Due to query etc.)

When to start test case execution ?

Execution of test cases can be started after successful completion of Smoke test.
Key Points :
  1. Every Test cases must be discrete.

  2. Test cases must be tune with the flow of application & should be in simple language.

  3. Test case should cover most of the functionality.

Test Management tools:

  1. QTest

  2. PractiTest


  4. Test collab

  5. Xqual

  6. Test Rail

  7. Test Lodge

  8. Jira (Also a bug tracking tool)

  9. IBM Rational Quality Manager

  10. HP Quality Center


How much negative test cases should write?

The answer is, for one functionality there should be one and/or two negative test cases.

What is Retesting?

After Execution of the test cases , an updated build with fixed bugs will be deployed on the testing server, Now assigned tester/QE is required to Retest the bug.
If they are fixed then status will be pass and if they are failed then status will be fail and after that it will again get assigned.
Normally an Iteration have two Re-Testing round after execution.
Key Points : 
It is good practice to take Screen shot of failed Bugs.
Old data can be used to retest the bug.

Exploratory Testing?

As the Name Says "Explo" means explore the application.
It is basically used to learn and get more familiar with the application.
It is good to have an exploratory testing round after the test case execution because in test cases each and every thing can't be written, so uncovered part from test cases can be covered & tested through it and good bugs can be logged.
It should be limited to a certain planned area which falls under scope  in application.
For example: If your application is fetching the data from other resource(Like facebook, Gmail, Social Tracking etc) Then just check that data is getting fetched or not instead of checking source application's functionality.

Regression Testing?

Regress Means "to ​return to a ​previous"
Means after making the changes(due to bug fix or some updation) in application whether the surrounding are effected or not to ensure this we do regression testing.
The main theme behind this testing is "Previously working things are still working well or not".
And the test case for regression testing is fetched from Previously written test cases.
and to make your regression Suite(Regression Test cases) more robust and reliable add some test cases from bugs.
In most of the time , some bugs will come which do not fall in test cases(Initially written) so derive scenario from these bugs and add the test case in your regression suite.
"How much area should  cover?" it is most valuable base of regression testing.

What is Ad-hoc Testing?

Adhoc : for a particular purpose or need, especially for an immediate need  OR without a formal structure
As name (said above) Adhoc testing can start & finish at any stage of testing.
> It needs experience
> It do not follow any flow of application
> Generally started just before the delivery of project
Main disadvantage of this testing is that
> Bug leakage will be the most
> Less probability to re-produce the bugs

Unit testing :

A software development process in which the smallest part known as Unit is tested as individually and independently for proper operation. Unit testing is often automated but it can be done manually also. This testing mode is a component of Extreme Programming (XP), a pragmatic method of software development that takes a meticulous approach to building a product by means of continual testing and revision. That is to say that for any function and given a set of inputs, we can determine if the function is returning the proper values and will gracefully handle failures during the course of execution should invalid input be provided.

Smoke test/Build Verification Test :

 Smoke test is a set of tests run on every new build to verify that build is testable or not, here only major functionalities are tested.

Sanity Testing :  

When build with minor issues fixes in code received then sanity testing is performed to test whether bugs are fixed & effect of these fixes i.e. not breaking any previously functionality. That is the reason Sanity is called Narrow Regression testing or Subset of regression performed within short time. Generally it is done after the Regression testing means it is done nearing end of SDLC.

Difference between smoke and sanity testing : 

  1. Smoke test is a wide approach where all major areas of the software application are tested without getting into too deep. However a sanity testing performed with a focus on one or small set of area of functionality of the software applications.
  2. The test cases for the smoke test can be either manual or automated, however sanity test is generally without test scripts or test cases.
  3. Smoke test of the software application is done to check whether the build can be accepted for further testing or not, however sanity testing is to ensure whether the requirement are meet or not.


 Types of Software Testing :

 In Software world there are more than 100 type of testing bug i have mentioned only important & organizations familiar also in a proper hierarchy manner :
  1. Black Box Testing
  2. White Box testing
  3. Smoke Testing
  4. Unit testing
  5. Incremental Integration Testing
  6. Integration testing
  7. Functional Testing
  8. System testing
  9. End to end testing
  10. Retesting
  11. Regression Testing
  12. Sanity Testing
  13. Globalization and localization testing
  14. Acceptance Testing                            a. Alpha Testing      b. Beta Testing
  15. Non Functional Testing
  16. Performance Testing (Load Testing, Stress testing, Strain testing & Volume testing).
  17. Compatibility testing
  18. Security testing
  19. Installation/installation testing
  20. Usability Testing
  21. Recovery Testing