Welcome to Software Testing Blog!

About Me

IT professional with 15+ Years of experience in Software testing field. Highly skilled in QA team management, Mentoring, QA processes, Agile Scrum methodology, API testing, Automation testing, and manual testing practices. Connect with me on LinkedIn for more articles and discussion related to Software testing.

Latest Articles

Software Testing Career Paths

Hello everyone! I’ve put together different job levels in software testing, starting with entry-level positions and going up to senior management. As you gain experience and develop specific skills, you can move up in your career. If you find the information helpful follow me on LinkedIn for latest posts.

www.linkedin.com/in/abhijeetshrotre

Checklist before joining Virtual training or workshop –

I have created a checklist that can help you before participating in any virtual training or workshop.

1] Check reviews about service provider.

2] Get information about experience and skill set of the instructor conducting the sessions.

3] Make sure it will be interactive session and not one way communication.

4] Get confirmation that all topics mentioned during enrollment will be covered in the training sessions.

5] Confirm the provision of digital notes and documents.

5] Determine if post-training help and support are available.

6] Check if interaction and networking among participants are permitted during and after the training.

7] Check if certification costs are included or excluded in the program fees.

8] Feel free to inquire about available discounts.

9] Understand the rules for cancellation or rescheduling from both sides.

If you find the information helpful follow me on LinkedIn for latest posts.

www.linkedin.com/in/abhijeetshrotre

What is difference between functional testing and non-functional testing?

Functional testing and non-functional testing are very important part of STLC. Both focuses on different aspects of quality and performance for software product. Let’s see the differences between these two types of testing.

Functional Testing-
Functional testing validates the software against it functional requirements. It verifies and confirm if application behaves as expected and meets the specified functional specifications.

See below for different types of functional testing with examples –

Integration Testing: Validates interactions between different modules.

Example: Integration Testing for E-Commerce website.
Test Scenario: Place a order on website.

Consider an e-commerce system with the following main components:

  1. Shopping Cart
  2. Payment Gateway
  3. Order Management

Steps to place order –

  1. Add products to the Cart – Open the website url in browser and navigate to the product catalog. Select a product and add them to the shopping cart.

  2. View Cart – Navigate to the shopping cart and verify the selected product is listed with correct price.

  3. Proceed to Checkout – Checkout from cart and proceed to the payment page.

  4. Make Payment -Make a payment using simulator/ payment gateway.

  5. On processing payment, verify the order details are correctly shown in the order management system.

Expected Results:
1.The shopping cart accurately displays the selected product and respective price.
2.The calculated total should match the sum of the product price.
3.The payment process should indicate a successful transaction.
4.The order details should be correctly recorded in the order management page.

System Testing: Validates the entire system end to end.
Acceptance Testing: Verifies if the software meets the requirements.

Example: Login and user profile management
Test Scenario: Login to website and update user profile information
Preconditions:

Steps:

  1. User logs into website

  2. Navigate to Profile Page

  3. Click on the user profile link and access the profile page.

  4. Edit profile information:

  5. Update fields First name, Last name, phone number, address.

  6. Save the updates.

  7. Verify updated information is shown on the profile page.

Expected Results:

  1. The user is able to access and edit their profile information.
  2. The changes made are saved successfully.
  3. The updated information is displayed on the profile page.

Non-Functional Testing:
Non-functional testing focuses on attributes like performance, security and usability. It checks how the system performs under specific conditions.

Load Testing: It evaluates how the system performs under expected load condition.

Example:
Example: Load Testing for e-commerce website during Diwali sale

Objective:
To identify how the e-commerce website handles traffic during Diwali sale.

Load Testing Steps:

  1. Define test Scenarios: Simulate real user behavior during a sale event which includes
  2. Login into the website
  3. Browsing product pages
  4. Adding products to the cart
  5. Checkout from cart and place order

  6. Identify Open source testing tool: Apache JMeter

  7. Configure the number of virtual users: Specify the number of virtual users that will be part of load test. Start with 100 virtual users and gradually increase load up to 1000 users.
    Simulate User Actions:

  8. Develop different set of test scenarios with different user interactions on the website.

  • Login into website
  • Browse products
  • Search products
  • Add products to the cart
  • Place order
  • Logout
  1. Define ramp-up period for increasing load: Start with 20 users and increase by 20 every minute.

  2. Execute the Load testing script using tool JMeter

  3. During execution monitor key parameters:

  • Response times for various pages
  • Transaction throughput (transactions per second)
  • Error occurred percentage (Page not found, transaction failed, payment gateway timeout)
  1. Analyze the test results: Review the reports and data generated by the load testing tool. It helps to find out performance bottlenecks/ issues.

Expected results:

  1. The e-commerce website should provide reasonable response times during increased load.
  2. End to end transactions should be completed without any errors or timeout.
  3. The system should be able to handle the load without affecting the user experience.

Usability Testing:

Assesses the user-friendliness of the software. This involves evaluating how easily users can navigate, understand, and interact with the application.

Example – Usability Testing for a Weather App
To evaluate the user-friendliness of a weather application.

Usability Testing steps:

  1. Check current location weather: Users open the app and find the current weather conditions for current location.
  2. View daily forecast: User navigates to the daily forecast section and checks the weather predictions for the next day.

Expected Results:
End user is able to easily find and understand the weather information for their current location.
App’s interface is intuitive, allowing users to navigate between different sections without any confusion.

Conclusion – Functional testing confirms that the software meets its defined functional requirements, while non-functional testing addresses quality attributes like performance, security, and usability. Using a combination of both testing methodologies, team can deliver high quality software product that meets user expectations.

Testing techniques with examples

Boundary Value Analysis [BVA]

Boundary Value Analysis [BVA]is a testing technique which focuses on testing the boundary values of different input ranges. These boundary value areas are most prone to errors.

See below example for the BVA –

Consider a system that accepts examination passing marks between 40 to 100. Using BVA, we can design below test cases for the boundary values:

Below Minimum Boundary 39 – Test with a value just below the passing criterion. Result failed.
Boundary value for Passing 40 – Test with the minimum passing marks. Passing grade.
Just above boundary for minimum Passing 41- Test with a value just above the passing criterion. Passing grade.
Just Below First Class 59 – Test with a value just below the first class criterion 60. Non first class grade.
First Class 60 – Test with the minimum marks for first class. This confirms first class passing marks.
Just Above First Class 61 – Test with a value just above the first class marks.
Just Below Distinction 69 – Test with a value just below the distinction marks 70. This verifies that the the non-distinction passing grade.
Distinction 70 – Test with the minimum marks for a distinction. This confirms a distinction grade.
Just Above Distinction 71 – Test with a value just above the distinction marks.
Maximum Boundary 100 – Test with the maximum possible marks.

Decision Table Testing
Decision Table Testing is a testing technique used to identify different combinations of inputs and their respective outputs in a system with large number of possible combinations.

Example-

Image description

In above example we have four possible combinations of inputs. By using Decision Table Testing, it can be ensured that every combination is tested.

Use Case Testing
Use Case Testing focuses on validation of the user interactions. It covers various scenarios to ensure that the system works as expected when a specific use case is executed.

Example -File Upload functionality

Use Case: User uploads a file as attachment.

Input: File selection.

Output: Success or failure error message on file upload.

Test Scenarios as a part of Use case testing –

  • Valid file upload with supported format.
  • Invalid file upload with unsupported format.
  • File upload which exceeds maximum size limit.

LCSAJ – Linear Code Sequence
‘Linear Code Sequence and Jump testing’ is a testing technique which ensures that every statement in a program is executed at least once. This technique helps to identify and test different paths through a programs control flows, loops and conditional branches.

Example – Loop Testing
Program in Python with for loop:
def exampleone(a):
for i in range(a):
print(f”Current value of i: {i}”)

Path 1: a = 4
Output: “Current value of i: 0”, “Current value of i: 1”, “Current value of i: 2”, “Current value of i: 3”

Path 2: a = 0
Output: Loop not executed

www.linkedin.com/in/abhijeetshrotre

What is Manual Testing. What are the benefits and drawbacks of manual testing.

 

Manual testing is a very important process in SDLC (Software Development Lifecycle), where testers execute test cases without any automated testing tools. Testers perform the tests manually, to verify end user behavior. It helps to identify defects in the software and gaps between user requirements and actual software developed. There are different types or techniques of manual testing like Regression Testing, Ad-hoc Testing, Exploratory Testing, Usability Testing, User Acceptance Testing (UAT) and Accessibility Testing.

Let’s see benefits of the manual testing with few examples.

  1. Manual testing can identify usability issues which is not possible using automation.
    e.g. Manual tester can identify adding products and checkout process is not user friendly for ecommerce website.

  2. Exploratory/ experienced based testing helps to identify defects based on human intuition and experience of the domain.
    e.g. Banking domain expert can identify the defects in banking software based on expertise without predefined test cases.

  3. Manual testing is cost effective for small Projects.
    e.g. Developing and testing simple static website with user contact information form. In this scenario, manual testing approach will be cost efficient with a limited budget and resources.

  4. Manual testing provides flexibility in rapid Changing environment.
    e.g. In an agile environment, requirements evolves rapidly. Manual testing approach can quickly adapt to the new changes and incorporate it into testing process.

  5. Manual testing enables Accessibility Testing.
    e.g. This involves manually validating whether the application is accessible to users with different disabilities to ensure global compliance with accessibility standards.

  6. Manual Testers can provide subjective evaluations/ judgments, which is critical for usability and end user experience.

We have gone through some of the benefits of manual testing. Now we will see what drawbacks of manual testing with respective examples are.

Drawbacks of manual testing –

  1. Manual testing is very time-consuming process.
    e.g. In case of regression testing for large complex applications like banking or ecommerce platform, executing a large set of test cases manually can be very time consuming and not practical.

  2. Repetitive tasks can lead to error due to human behavior.
    e.g. Regression testing, which involves repetitively running the same set of test cases is monotonous task which can lead to human error.

  3. Limitations/ inability in doing Performance and Load Testing.
    e.g. Simulating thousands of concurrent users to test large ecommerce website performance under load will not be possible using manual testing.

  4. Manual testing will be ineffective for Continuous Integration and Deployment (CI/CD)
    e.g. In a CI/CD pipeline code changes are deployed frequently. However manual testing will be a bottleneck in the rapid delivery of code deployments and delivery to production environment.

  5. Limited reusability in manual testing in multiple environments/ browsers.
    Test cases need to be manually executed each time for all different browsers supported which limits reusability of manual testing.

Conclusion – There are different benefits and drawbacks of using manual testing in software development lifecycle. Depending on budget and business requirements, manual testing techniques can be used with or without combination with automation testing to achieve the goal for delivering quality product.

Stay Connected