What is Software Testing

What is Software Testing/ QA?

Software Testing/ QA is a process to find whether the application/ software is working as per the requirements or not.  Software Testing is an integral part of any web development organization and is one of the most crucial stages in the Software Development Life Cycle. 

Why Software Testing 

  1. Software Testing gives confidence in the quality of final product. 
  2. It confirms that the application has no errors in the code. 
  3. It verifies how the user can work with the application and ensure that the end product is user friendly. 
  4. Software Testing ensures that the software can work in desirable as well as in undesirable conditions.

Types of Testing

As of now, we know about what is software testing and now in this blog, we will talk about the types of testing.  There are generally two types of testing.

  1. Static Testing –  In Static Testing, we manually verify the documentation involved in all phases.  It is also known as ‘Verification’.  In this testing, code is not executed.  If we are preparing documentation for the testing, that comes under Static Testing.  For example, if we are writing test cases from SRS Document, that comes under static testing.  We are not actually executing the code,we are just writing about it.  For example, let’s say we got some requirements and we are writing all the possible scenarios on it, so that comes under static testing.   Static Testing involves in all the phases.For example, In requirement gathering, SRS and BRD documents is static testing,  In design phase, HLD and LLD is static testing, In development phase, writing the code is static testing, and In testing phase, preparing the documentation like preparing test case, defect sheet and reviewing them, all come under Static Testing.
  • Dynamic Testing–             In Dynamic Testing, code is executed to check whether the software is working as per the client’s requirements or not.  It is also known as ‘Validation’.  Now Dynamic Testing means we are executing your scenarios on actual software.  We are checking whether your actual software is matching the client’s requirement or not.

So, Static Testing is called Verification because it verifies that we are going the right direction or not, while Dynamic Testing does validation, where it executes the code and validates whether it’s working fine or not.

Now we discuss Static Testing in detail

In Static Testing, we can check the defects in software without actually executing it.  It involves documentation verification and helps to find defects in the early stage.  Yes, Static Testing is the first thing we do when we start with the testing.  With Static Testing, you can find out the defects very early.  You are preparing all the documentation about it.  Let’s say, if I talk about the design phase, you can easily find out whether this design is fine or not, so you are preparing the documentation.  Right now, you have not executed it on the software, you are preparing the documentation.  Like, if I cover all the scenarios, for me it’s going to be very easy for me to find the defects at an early stage.

Static Testing is of two types.

  1. Static Analysis– Static Analysis is the method of computer program debugging that is done by examining the code without executing the program.  It is performed by developers to check code structure and helps to find errors early.  Static Testing is done by developers.  They debug the code without executing it.  Developers write the code, so they check whether the syntax of code is OK and there is no semantic problem in the code.
  2. Reviews– Reviews are of three types, i.e. Walkthrough, Technical Review, and Inspection

First, we understand the roles and responsibilities involved in Reviews.

  1. Moderator –  Moderator is the person who leads the review process.  His role is to determine the type of review, scheduling meetings, distribution of documents to other participants. 
  2. Author :-      Author is the person who is the writer of the ‘document under review’.  His job is to understand improvements required.  For example, let’s say I have written the test cases, so I will be Author of that documentation.
  3. Scriber/ Recorder:- He is responsible to record each defect found and any suggestions given in the meeting for process improvement.  Recorder is someone who writes the Minutes of the Meeting.  He writes what points we discussed in the meeting and when we have to follow up for the improvement.
  4. Reviewer:-  Reviewers are actually the participants of the meeting who are reviewing the document.  They check the defects and suggest the further improvements.

Now, let’s discuss the types of reviews.

Walkthrough:-  It is the informal review in which the author reads the document or code and discusses it with peers so that they note out the defects and suggestions.  It’s not pre-planned and can be done whenever required. 

Technical Review–  It is led by the trained moderator and technical reviewers will read the documents before meeting for better understanding and to suggest improvements to the author.  Documentation is provided to them prior to the meeting.

Inspection:-  It is the most formal review type in which a trained moderator will lead the meeting.  Also, reviewers could be different stakeholders and they prepare and understand author documents before the meeting.  A formal follow-up is carried out by the moderator after the inspection.  In this, participants or reviewers can be BA, designers, developers, or different stakeholders.

Goals of Reviews:

  • It helps the author to improve the quality of the document.
  • It improves product quality.
  • It is to ensure that at an early stage the technical concepts are used correctly.
  • To achieve a common understanding and gather feedback.
  • It will also make all the participants or all the team members to understand the product more clearly.

Now, let’s discuss Dynamic Testing.  Dynamic Testing is of three types.

  1. Black Box – Black box testing is done by testers who have no coding knowledge.
  2. Grey Box – Grey Box is done by someone who have testing and some coding knowledge.
  3. White Box –White Box Testing is done by Developers who have expertise in code.

So, we clearly understand that traditional QA/ Software Tester falls under the Black box testing category.

Black Box Testing is of two types

  1. Functional Testing – It is performed to check or validate the functionality of an application.  So, let’s say we are checking functionality of each and every object whether it’s meeting the clients requirement or not.
  2. Non Functional Testing – It is performed to check the overall performance of an application if accepted to undesirable conditions.

Let’s take an example, client says that the application can hold only 100 users at a time but what if there are 110 users accessing the application at a time.  How the application will perform with increased users at a time (undesirable condition).  We are not checking single functionality in it rather checking overall application performance.

Now discuss Functional Testing in detail.

  1. Unit Testing – Testing an individual unit/ module of the software.  If, we are checking the single module of an application, that comes under unit testing. 
  2. Integration Testing – Testing multiple individuals of an application and tests them as a group to make sure they interact appropriately.
  3. Positive Testing–Positive Testing is testing application with valid data.
  4. Negative Testing – Negative Testing is testing application with invalid data.
  5. Smoke Testing –       Testing the major functionalities of the software in a non-comprehensive manner to ensure the software works well.  It is mainly performed by someone who has expertise in testing, it can be QA Lead or Senior QA Analyst.
  6. Retesting – Testing previously found defects again is called Retesting.
  7. Regression Testing–Regression Testing is performed to test the entire module again to make sure that while fixing previous defects, developer has not broken defects.
  8. Accessibility Testing–It measures how well system can serve people with special needs.
  9. Exploratory Testing–Exploratory Testing is performed when there are no clear set of requirements, so you are just exploring the software and out of your expertise you are just writing the test cases and requirements.
  10. GUI Testing–Under GUI Testing, QA Analyst checks the Graphical User Interface of the application under test and to ensure UI functionality works as per the specification.  GUI is very important part because that’s how user interact with the application.
  11. Adhoc Testing – Adhoc Testing is the most informal testing which is performed without test cases.  So, randomly out of the expertise, Senior Test Lead or QA Lead perform testing on the application without test cases.
  12. Back end Testing–Whenever an input or data is entered on front end of an application, it get stored in the database and testing of such database is known as Database Testing.
  13. System Testing–  To test entire system as per the requirement of the client is called System Testing.
  14. Alpha Testing – Alpha testing is the first testing of a product in the production environment before going live.
  15. Acceptance Testing–Acceptance Testing is the type of testing performed either by the client or end user to make sure  that it’s meeting the requirement or not.  This testing is done with real time data and real scenarios.
  16. Beta Testing – Beta Testing is done when the project is live and it is performed by people who are supposed to use the application.
  17. Risk based Testing–is the testing of highly critical functionality.  Risk based testing is to find out the risk in the application, which functionalities are most important and we can not afford it to get failed.  For example, banking login module.
  18. Recovery Testing –  determines if the system is able to continue the operation after a disaster.  Let’s say, if we have a downtime or system got crashed, then how long it takes to recover.
  19. End to End Testing–In this QA tests the application environment in a situation that mimics real world.

Non Functional Testing

  1. Performance Testing–  Testingoverall performance of an application. 
  2. Compatibility Testing :-        Compatibility Testing is performed to check whether software is capable of running on difference hardware, operating systems, network environments or mobile devices.
  3. Load Testing :-          Load Testing is performed to check whether the system can sustain the pressure or load of many users accessing the application at a time.
  4. Volume Testing: –    To check the storage requirements and capabilities of the application.
  5. Stress Testing:-         Stress Testing is performed where the load which is generated is more than the application can manage.
  6. Failover Testing:- To check how the redundancy mechanism works when the system encounter heavy load or unexpected failure.
  7. Security Testing :-   Security Testing is performed to test how well the application can preserve itself and the data it holds in situations of malicious attacks.
  8. Usability Testing:-   Usability Testing is performed to verify the ease of usage of an interface within an application.
  9. Scalability Testing:-                It is performed to check the ability of an application to increase and scale up on any of its non-functionality requirements such as load, number of transactions, number of servers, volume of data etc.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top
Quote Form
Enquire From Popup