System Testing Types

  1. GUI Testing:
    • What It Checks: Makes sure all buttons, icons, and screens in the software look and work as they should.
    • Example: Clicking buttons, checking if the layout is correct.
  2. Usability Testing:
    • What It Checks: Tests if the software is easy for people to use and understand.
    • Example: Checking if the menus are clear, and tasks are straightforward.
  3. Functional Testing:
    • What It Checks: Verifies that each part of the software performs its job correctly.
    • Example: Testing if login, search, and other functions work as intended.
  4. Non-Functional Testing:
    • What It Checks: Looks at aspects beyond specific functions, like performance, security, and how easy it is to recover from errors.
    • Example: Checking how many users the system can handle at once (performance testing), or testing how secure the system is against unauthorized access (security testing).

GUI testing, or Graphical User Interface testing, is a type of software testing that focuses on verifying the functionality and usability of the graphical elements of a software application. It involves testing the user interface components such as buttons, menus, icons, and any other visual elements to ensure they work as intended and provide a positive user experience.

GUI Testing Checklist:
  • Element Check:
    • Test if buttons, text boxes, and other elements are the right size and in the correct place on the screen.
  • Error Messages:
    • Check if error messages make sense and help users understand what went wrong.
  • Screen Sections:
    • Test different parts of the screen to make sure they all work as they should.
  • Readability Check:
    • Make sure the text on the screen is easy to read.
  • Resolution Test:
    • See if the web page looks good on different screens, especially when you zoom in or out.
  • Alignment Test:
    • Check if text, icons, buttons, and other things on the page line up correctly.
  • Font Color:
    • Test if the colors of the text look right.
  • Image Quality:
    • Make sure pictures are clear and look good.
  • Image Alignment:
    • Check if pictures are in the right place on the page.
  • Spelling Check:
    • Test for any spelling mistakes on the page.
  • User-Friendly Test:
    • Make sure the interface is easy for users to use, so they don't get frustrated.
  • Attractiveness Test:
    • Check if the web page looks nice and attracts users.
  • Scrollbar Test:
    • Test if the scrollbars work properly, especially on longer pages.
  • Disabled Fields Test:
    • Check if any grayed-out or disabled fields behave correctly.
  • Image Size Check:
    • Test if images are the right size.
  • Heading Alignment:
    • Make sure titles and headings are lined up correctly.
  • Hyperlink Color:
    • Test if the color of the links looks right.
  • UI Element Test:
    • Check if buttons, text boxes, checkboxes, radio buttons, drop-downs, and links all work as they should.

Usability testing is a type of testing that evaluates how easy and user-friendly a software application is. The focus is on understanding how well users can interact with the system, whether they can accomplish their tasks efficiently, and how satisfied they are with the overall user experience.


Functional Testing types:
  1. Object Properties Testing
  2. Database Testing
  3. Error Handling Testing
  4. Calculations/Manipulations Testing
  5. Links Testing
  6. Cookies & Sessions Testing
Object Properties Testing:

Object Properties Testing in functional testing ensures that visual elements (like buttons, text boxes) in the application have the right characteristics. It checks if these objects behave as expected based on their defined properties.

Example: Verifying that a "Submit" button is visible, clickable, and has the correct color according to the application's design.

Database Testing:

Database Testing for functional testing ensures that the application interacts correctly with its database. It checks if data is stored, retrieved, and manipulated accurately within the database.

Example: Confirming that user details entered through a registration form are correctly saved and can be retrieved when logging in.

Error Handling Testing:

Error Handling Testing focuses on functional aspects related to how the application deals with errors. It checks if the system shows appropriate error messages and handles unexpected situations gracefully without crashing.

Example: Testing the system's response when a user tries to submit a form with missing information, ensuring it displays a helpful error message.

Calculations/Manipulations Testing:

Calculations/Manipulations Testing in functional testing assesses the accuracy of numeric operations and data manipulations performed by the application. It ensures that calculations yield correct results.
Example: Testing an e-commerce application to ensure that the total price of items in a shopping cart is accurately calculated.

Links Testing:

Links Testing in functional testing verifies that hyperlinks within the application work as expected. It checks if users are directed to the correct pages, ensuring a smooth and functional navigation experience.
Example: Clicking on menu links in a website and confirming that each link leads to the intended page or performs the correct action.

Cookies & Sessions Testing:

Cookies & Sessions Testing in functional testing evaluates how well the application manages user-specific information. It checks if session-related functionalities, such as login persistence, work as intended.
Example: Logging into an online account, closing the browser, reopening it, and confirming that the user remains logged in due to the correct handling of cookies or session data.


Non-Functional Testing types:
  1. Performance Testing
    • Load Testing
    • Stress Testing
    • Volume Testing
  2. Security Testing
  3. Recovery Testing
  4. Compatibility Testing
  5. Configuration Testing
  6. Installation Testing
  7. Sanitation/Garbage Testing
Performance Testing:

a) Load Testing:

Description: Load Testing checks how well a software application performs when many users or transactions are happening simultaneously. It helps ensure that the system can handle the expected load without slowing down or crashing.
Example: Imagine many people trying to access an online shopping website during a big sale. Load Testing checks if the website can handle all those users at once without issues.

b) Stress Testing:

Description: Stress Testing pushes a system to its limits to see how it behaves under extreme conditions. It helps identify the breaking point of the software and how well it recovers from stressful situations.
Example: Testing a messaging app with a much higher number of messages being sent simultaneously than it would normally handle to see if it can still function without crashing.

c) Volume Testing:

Description: Volume Testing checks how well a system handles a large amount of data. It ensures that the software remains efficient and responsive even when dealing with a massive amount of information.
Example: Testing a database with a huge number of records to see if it can still retrieve and process data quickly without slowing down.

Security Testing:

Description: Security Testing checks if the software is secure and protects sensitive information. It aims to find and fix vulnerabilities that could be exploited by hackers.
Example: Testing an online banking application to make sure that user account information is protected from unauthorized access.

Recovery Testing:

Description: Recovery Testing assesses how well a system can recover after a failure or crash. It checks if the software can resume normal operation without losing data.
Example: Simulating a sudden power outage and checking if a word processing software can recover the document being edited when power is restored.

Compatibility Testing:

Description: Compatibility Testing ensures that the software works well on different devices, browsers, and operating systems. It verifies that the application is compatible with a variety of environments.
Example: Testing a mobile app on different smartphones and ensuring it functions correctly on various screen sizes and resolutions.

Configuration Testing:

Description: Configuration Testing checks if the software works correctly with different configurations or settings. It ensures that the application adapts well to various setups.
Example: Testing a video game on different computers with varied hardware configurations to ensure smooth gameplay on various setups.

Installation Testing:

Description: Installation Testing assesses the process of installing and uninstalling the software. It checks if the installation is smooth and if the software can be removed without causing issues.
Example: Installing a new software version and checking if it sets up properly without errors or conflicts with existing installations.

Sanitation/Garbage Testing:

Description: Sanitation/Garbage Testing involves checking for unnecessary or leftover data in the system. It ensures that the software cleans up after itself and doesn't leave unused or "garbage" data behind.
Example: Testing a messaging app to make sure that deleted messages are completely removed from the system and don't linger in the background.

Functional Testing vs. Non-Functional Testing

Functional Testing:

Focus: Ensures that the software functions as expected, performing its intended tasks.
What It Checks: Specific features, actions, and behaviors outlined in the requirements.

Non-Functional Testing:

Focus: Evaluates how well the software performs under various conditions and assesses aspects beyond specific functionalities.
What It Checks: Performance, security, usability, and other aspects related to the user experience.

Major Difference:

Functional Testing is about WHAT the software does, ensuring individual features work correctly.
Non-Functional Testing is about HOW WELL the software performs, assessing aspects like speed, security, and overall user experience.