DEV Community

Kritika Yadav
Kritika Yadav

Posted on

Getting Restarted With Software Testing: Part 2

This is Part 2 of our Software Testing series.
If you haven’t read Part 1 yet, you can read it here:
https://dev.to/software_testing_blog/getting-started-with-manual-testing-what-ive-learned-as-a-beginner-704

Define different types of testing

We follow different types of testing approach to deliver high quality product to the customer which will be free from any bugs or defects. And it is classified into functional testing and non-functional testing.

Functional Testing

Functional testing talks about the behavior of the application and how the features should work in the application. It is categorized into different types.

  • Smoke Testing

  • Sanity Testing

  • Regression Testing

  • Retesting Testing

  • Ad-hoc Testing

  • Exploratory Testing

  • User Interface Testing(UI)

  • End To End Testing

1. Smoke Testing

Smoke testing is performed by developer and the QA team and it is used to check the basic functionalities of the software after every release. Smoke testing is done on initial builds to check whether application is stable or not.
For example: User install a new version of a food delivery app.
User quickly check:
-App installs successfully
-App opens
-Login works
-Home screen loads
-User don’t place an order yet.
-If the app crashes on launch → testing stops
-If basics work → build is accepted
-User don't check main functionality user will only look for basic functionality here this is a smoke testing.

2. Sanity Testing

Sanity testing is only done by QA members and it is used to check the main functionality of the software once the software builds gets stable.
For example: A bug was fixed where orders were failing at checkout.
Tester Verifies:
-Add item to cart
-Checkout works
-Payment goes through
-Order confirmation is shown
-User don’t test login, profile, or notifications.
-User will only look for fixed bugs and main the functionality this is a sanity testing.

3. Regression Testing

This testing verifies there will be no impact on existing software while releasing the new builds for the given software.

For example: User has designed a piece of software where he can add/delete/modify customers.
Tester Verifies:
-Existing customers can still be viewed
-Customer details can be modified successfully
-Customers can be deleted without errors
-Search and filter functionality works
-Previously saved customer data is not affected

4. Retesting

In retesting whatever bugs will get in the previous builds that should be verify in the next build that is called retesting.
For example, in a cab booking app, users were not able to see the confirmation message after booking a ride.

The developers fixed the issue in the latest build. During retesting, the QA team verifies that:
-After booking a cab, the confirmation message is displayed correctly
-The message shows accurate ride details (pickup, drop, fare)
-No new issues are introduced in the booking process
-This ensures that the previously reported bug is completely resolved in the new build.

5. Ad-hoc Testing

Ad-hoc testing will be done without having any requirement or test design. Tester will randomly test the application.

For example: We have a web shop application.
Tester will randomly test:-
-Logs in with valid and invalid credentials
-Adds random products to the cart
-Refreshes the page during checkout
-Uses browser back and forward buttons

6. Exploratory Testing

In exploratory testing tester will explore the entire application. And identify all the possible scenarios and document it and use use it for testing.

For example: We have online shopping application.
Tester verifies:
-Browses product categories
-Searches products using different keywords
-Adds multiple products to the cart
-Applies filters and sorting options
-Proceeds to checkout and observes validations

7. User Interface Testing

User Interface testing test the basic functionalities of the software.
For example: Font size, Font color, Spell Mistakes, Buttons and alignment issues.

8. End To End Testing

Testing the overall functionalities of the software including the data integration among all the module is called end to end testing.

For example: E-Commerce Mobile App
-Tester will verify placing and tracking order:
-User browses products and adds items to cart.
-Proceeds to checkout and applies a discount coupon.
-Selects a payment method and completes payment.
-Order confirmation is displayed, and email notification is sent.
-User tracks order delivery status in the app.
-Admin system reflects the order accurately.

Validates the entire purchase workflow, including front-end, payment, notifications, and admin tracking.

Non-Functional Testing

Non-functional testing is used to verify the different aspects of the software such as performance, speed, response and compatibility to ensure that software perform well under expected condition. And it has various types.

  • Performance Testing(Load, Stress, Volume)

  • Security Testing

  • Recovery Testing

  • Compatibility Testing

  • Localization & Globalization Testing

1. Performance Testing

Performance testing is used to check the speed response and stability of the software while gradually increasing and decreasing the load at the application.

  • Load Testing: It checks the response of the software under expected user.
    For example: We have a demo web shop, and you want to check if it can handle 1000 simultaneous users browsing and placing orders without slowing down or failing.
    User will send the request to the server for 1000 users and will check the response of the software whether it is working or not.

  • Stress Testing: It checks the response of the software beyond expected user. To find the breaking point in a software.
    For example: Verify how the system performs when user load exceeds normal expectations, and check how it recovers.
    User will send the request to the server for 2000-3000 users and will check the stability of the software like software is working as expected or it is failing and slowing down, once user will decrease the load at the software, application should recover and start working as expected.

  • Volume Testing: It checks how much data is handled by the application.
    For example: Verify that the web shop can store, process, and retrieve large volumes of data without slowing down or crashing.
    Test Setup:
    -Insert 1 million product entries into the system.
    -Create 100,000 registered users in the database.
    -Simulate normal user actions:
    -Search products
    -View product details
    -Place orders

    Execution:
    -Monitor response time of queries and pages
    -Monitor database performance (CPU, memory, storage)
    -Check if search, filters, and reports are working correctly

2. Security Testing

It ensure that user data are protected from any unauthorized access and it can not be stolen or misused by any other users.

For example: We have web shop application, If user try to login it will check credentials or valid or not.

3. Recovery Testing

It checks how fast system data is getting recover after facing any kind of failure in our system.

For example: Network Failure & Power Failure

4.Compatibility Testing

It checks the compatibility of the designed software in different devices browser and in operating system.

For example: We have an web shop application so user will check it different browser and devices.

  • Browsers: Chrome, Edge, Firefox, Safari
  • Devices: Mobile, Laptop, Desktop, Tablet
  • Operating System: Android, iOS, Windows, macOS
5. Localization & Globalization

It checks our system is able to support different languages, currencies and date/time format.

For example:

  • The system should allow users to select different currencies: USD, EUR, INR
  • Language translation: English → French
  • Dates should adjust to regional formats (MM/DD/YYYY for USA, DD/MM/YYYY for UK).

What is test design techniques ?

This techniques is used to cover maximum test scenarios by creating less number of test cases. It is classified into different categories.

  • ECP[ Equivalence Class Partitioning ]

  • BVA[ Boundary Value Analysis ]

  • Decision Table

  • State Transition Table

1. Equivalence Class Partitioning

This techniques is used to divide the the input data into equal group called classes. Testing one value from each class is sufficient, instead of testing every possible value.

For example: We have a input data for form which accept 8-16 digit. User will divide the input into valid and invalid data and test it for a application.

Valid Input 8-16
Invalid Input Less than 8
Valid Input Less than 16
Invalid Input Greater than 16

Tester will take one input from each classes.
eg: 10, 7 , 18

2. Boundary Value Analysis

Boundary Value Analysis is used to test the data at boundary level. Because most of the time we get a error or defects at boundary level.

For example: If system accept ages from 18-60.

Min-1 = 17
Min = 18
Min+1 = 19
Ma-1 = 59
Max = 60
Max+1 = 61

So boundary value for 18 and 60 is 17, 19, 59, 61.
Tester will take one boundary value for each min and max value.

3. Decision Table

Decision table is used test and verify the software application when multiple condition are given in the designed software.

For example: We have a login page for a application.

Username Valid Password Valid Expected Result
Yes Yes Login Success
Yes No Error Message
No Yes Error Message
No No Error Message

4. State Transition Table

State transition table is used to test the software which provide the next data based on its previous events. It verifies whether the system behaves correctly when moving from one state to another.

For example: We have e-commerce website.

Order States:

  1. Login
  2. Search Product
  3. Add to Cart
  4. Payment
  5. Packed
  6. Shipped
  7. Delivered

So, in the above example every event is depend on its previous events. User can't do it Add to Cart-----> Delivered. User has to follow each and every steps to deliver the item.
Login-->Search Product-->Add to Cart-->Payment-->Packed-->Shipped-->

Up Next

This concludes Part 2 of the Software Testing series, where we covered
important testing types and test design techniques. In Part 3, we will continue with Test Cases, Test Scenarios & Defect Management.

Top comments (1)

Collapse
 
gaurav386i profile image
Gaurav Yadav

Good for a quick recap