Skip to main content

Types of Software Testing


Different types of Software Testing:


Functional Testing types:

  • Unit Testing: Individual units or components of the software are tested. A unit is the smallest testable part of the software. This is usually not manual and mostly done by developers as they write code.
  • Integration Testing: Testing of all integrated modules of the software to make sure modules once combines works as expected or not. The best example would be FE and BE integration testing.
  • System Testing: The entire system is tested as per the defined requirements. Black box testing performed by QA.
  • End to End Testing: Same as System testing but mimics more real-world use cases and interactions with network, databases and real users. Most companies combine system testing and end-to-end testing as there is a very thin line between both.
  • Sanity Testing: Sanity testing is performed by the QA team to determine SW which is released is ready to do a full round of testing or not. This is usually quick and covers basic functionalities. Sanity should be quick and automated, so that build can be rejected if it fails.
  • Smoke Testing: Smoke testing is the same as sanity but very small. This is very quick to check software crashes so that the QA team can quickly proceed. 
  • Regression Testing: Regression testing is to uncover bugs and to make sure software is working as expected after the new release or changes to the system. This is usually automated as its a huge set.
  • User Acceptance Testing: This is done by end-users or clients to determine if the software meets all business requirements and to evaluate if it can go to production. Alpha and beta testing is part of UAT.
  • Database Testing: This testing checks database operations, tables, schemas and triggers. It also checks for the integrity and consistency of the data. It can also involve performing complex queries. Stress and load testing also should be performed on the database.
  • Availability Testing: Software under test is run continuously for a long time and data is collected and analyzed for failure rates and their repair time. High availability testing is the testing of the availability of backup servers when the actual server fails. 
  • SEO Testing: SEO testing is the process of evaluating the best steps to optimize your pages for the search engine results pages (SERPs). SEO tester software is generally used to track the distinct actions of users in each version, but Google Optimize offers free, accessible SEO testing. A/B testing (also known as split testing or bucket testing) is a method of comparing two versions of a webpage or app against each other to determine which one performs better.
  • Functional: It is a type of software testing whereby the system is tested against the functional requirements/specifications. Functions (or features) are tested by feeding them input and examining the output based on the function's specifications. 
  • UX/UI Testing: User interface (UI) is a component of user experience (UX). Think of UX as the user's entire experience from first landing on a website to leaving it for the last time. Testers verify various UI elements against UX specification document check if the size, alignment, color, font, etc is according to the spec
  • API Testing: It is a software testing type that validates Application Programming Interfaces (APIs). The purpose of API Testing is to check the functionality, reliability, performance, and security of the programming interfaces. This is usually performed using tools.
  • Positive/Negative/Edge/Corner/Boundary: Positive testing verifies application or system under test what it is supposed to do. The system is tested for a positive set of test data. Negative testing is a testing type in which the system under test is tested for unexpected input data and conditions. An edge case is a problem or situation that occurs only at an extreme (minimum or maximum) operating parameter. A corner case occurs outside of normal operating parameters, specifically when multiple environmental variables or conditions are simultaneously at extreme levels. You are still within the valid parameter space but near its corner. Boundary case occurs when one of the inputs is at or just beyond maximum or minimum limits.


Non-functional Testing types:

  • Performance Testing: A testing practice to determine how a system performs in terms of speed, responsiveness and stability under a particular workload. Load, stress, endurance, spike, volume and scalability testing comes under performance testing. Load vs stress - The load test measures the performance of the system under an expected load wherein stress tests overload a system in order to find a breaking point. 
  • Load Testing: A testing practice to determine a system's performance under a specific load. For e.x. Web application load testing is done by measuring how a system performs when a large number of users access it. 
  • Stress Testing: Pushing the system for a failure under heavy load. It verifies the system's reliability and stability under heavy load.
  • Volume Testing: Software is flooded with high volume of data. The performance of the system is analyzed by increasing the data load in the database. 
  • Security Testing: This testing is done to uncover vulnerabilities and risks in the software to protect the software from malicious attacks.
  • Compatibility Testing: This testing is to check whether your software can be run on different operating systems, browsers and devices.
  • Recovery Testing: This testing is to check how well software can recover from failures or crashes. The system is force for failures to check for recovery. 
  • Reliability Testing: Reliability and stability are different. The reliability of the software is determined by repeating the same tests certain number of times in the same environment.  
  • Usability Testing: This is a measure of how easily a system can be used by end-users.
  • Compliance/Conformance/Regulation/Standards Testing: Type of software testing to determine compliance of a system is according to the organization standards and also to external standards.
  • Localization Testing: This testing is performed to verify the quality of the software for a specific culture or locale. It ensures software can be used in that particular region. It tests user interface, language, vocabulary, currency format, time & date format.
  • Accessibility Testing: This is a subset of usability testing where the users under consideration are people with disabilities. 

Comments

Popular posts from this blog

Coding solutions - Amazon card, Data structure, Search and Sort

  Amazon card, Data structure, search and sort Hashmap # HASH MAP implementation in python class Node :     def __init__ (self, key, value) :         self.key = key         self.value = value         self.next = None class HashMap :     def __init__ (self) :         self.store = [ None for _ in range( 16 )]     def get (self, key) :         index = hash(key) & 15         if self.store[index] is None :             return None         n = self.store[index]         while True :             if n.key == key:                 return n.value             else :                 if n.next:         ...

Debugging round interview questions

Debugging round interview questions with answers. These are real questions asked in real interviews.  1. When you come in the morning, SLA has increased for the job searching portal (website). It was fine till today morning. How are you going to debug it? There is a matrix that shows service and it’s SLA. What are the steps you are going to take to debug this problem? Answer : If the SLA has gone up suddenly it's definitely a critical issue. I will first report this problem to all stakeholders. I will check listed points to debug the problem - 1. Check what went in the latest release if that is one  2. Check for nodes that are down. If there is an unusual number of nodes that are not reachable then report it to the infrastructure team. 3. Check for database repair which can cause slowness 4. Check its client-side delay or server-side delay to narrow down the issue 5. Check the geolocation of where the website is slow in order to narrow down 6. Check network bandwidth in the da...

Coding round interview questions tips

Tips from the google coding interview video https://www.youtube.com/watch?v=XKu_SEDAykw Always ask for clarifications - some tips below Think out loud Talk about all the solutions before you code out Test a few inputs after writing code by tracing it before saying I am done Talk while coding Talk about time and space complexity at the end to get bonus points Read out the problem loud in a way you understood - Do not code out the wrong solution Clarifying questions Clarify the input & output. E.x. This function accepts 2 arrays and returns an integer, Am I right? Sorting - array already sorted, reverse sorted or not sorted? Can there be -ve elements? Can there be only integers or other types? String - other than English? Can it contain special chars, Unicode, upper case and lower case letters? https://medium.com/@mgtei/how-why-to-ask-clarifying-questions-at-a-whiteboard-interview-for-junior-devs-97571fdc629e Key point to succeed in this round is just don't give up on the problem...