Everything you need as a full stack developer

Exploratory Testing Techniques

- Posted in Junior Developer by

TL;DR Exploratory testing is an unscripted approach to testing where you explore the application without preconceived notions or scripted tests, discovering defects and identifying areas for improvement. Techniques include charter-based testing, scenario-based testing, error guessing, and state transition testing, which help full-stack developers think like end-users and uncover hidden bugs in their applications.

Unleashing the Power of Exploratory Testing: Techniques for Fullstack Developers

As full-stack developers, we're no strangers to testing. We write unit tests, integration tests, and even dabble in UI automation. But there's a crucial aspect of testing that often gets overlooked – exploratory testing. In this article, we'll delve into the world of exploratory testing techniques, providing foundational content and hands-on examples to get you started.

What is Exploratory Testing?

Exploratory testing is an unscripted, flexible approach to testing where you, as a tester, explore the application without preconceived notions or scripted tests. It's about discovering defects, understanding the system, and identifying areas that need improvement. Think of it as a treasure hunt, where you uncover hidden gems (or bugs) in your application.

Technique 1: Charter-Based Testing

In charter-based testing, you define a specific goal or mission for your testing session. This could be as simple as "Explore the login functionality" or "Investigate the search feature." Having a clear charter helps focus your testing efforts and ensures you're not aimlessly wandering through the application.

Example:

Let's say we have an e-commerce website, and our charter is to explore the checkout process. We start by adding items to our cart, then proceed to the payment gateway. As we navigate through the process, we notice that the total amount doesn't update correctly when applying a coupon code. This observation sparks further investigation, leading us to uncover a bug in the discount calculation logic.

Technique 2: Scenario-Based Testing

Scenario-based testing involves creating hypothetical situations or user stories and testing the application's response. This technique helps you think like an end-user and identifies potential issues that might arise in real-world scenarios.

Example:

Imagine we're testing a mobile banking app, and our scenario is "A user wants to transfer money between accounts." We create a test account, add funds, and then attempt to transfer the amount. During this process, we discover that the app crashes when trying to authenticate with Touch ID. This failure prompts us to investigate the biometric authentication integration.

Technique 3: Error Guessing

Error guessing is a technique where you intentionally try to break the application by providing invalid or unexpected inputs. This approach helps identify defects that might not be caught through scripted testing.

Example:

Let's say we're testing a web application with a search feature. We try searching for a string of 10,000 characters, expecting the app to handle it gracefully. Instead, we receive an error message indicating that the query is too long. This observation leads us to investigate the input validation and character limits in place.

Technique 4: State Transition Testing

State transition testing involves examining how the application behaves as it moves from one state to another. This could be during user authentication, payment processing, or any other workflow.

Example:

We're testing a ride-hailing app, and our focus is on the booking process. We start by selecting a pickup location, then choose a driver, and finally confirm the ride. As we transition through each state, we notice that the estimated arrival time isn't updated correctly when the driver accepts the request. This discrepancy sparks further investigation into the real-time data synchronization.

Conclusion

Exploratory testing is an invaluable skill for full-stack developers, allowing us to uncover defects, improve application stability, and think like our end-users. By incorporating charter-based testing, scenario-based testing, error guessing, and state transition testing into your workflow, you'll be well-equipped to tackle even the most complex applications.

Remember, exploratory testing is not about following a script; it's about being curious, creative, and open-minded. So, take the leap, and start exploring your application today!

Key Use Case

Here is a workflow/use-case example:

E-commerce Website Testing

Goal: Explore the checkout process to identify defects and areas for improvement.

  1. Add items to cart, proceed to payment gateway.
  2. Observe total amount update when applying coupon code.
  3. Investigate discount calculation logic due to incorrect total amount update.
  4. Discover bug in discount calculation logic and report defect.

Next Steps:

  • Test alternative payment methods (e.g., PayPal, Apple Pay).
  • Explore error handling for invalid credit card information.
  • Investigate user experience during checkout process.

Finally

As we venture deeper into the realm of exploratory testing, it becomes clear that these techniques are not mutually exclusive. In fact, combining charter-based testing with scenario-based testing or error guessing can lead to a more comprehensive understanding of our application's strengths and weaknesses. By embracing this flexibility, we can adapt our approach mid-testing session, allowing us to pivot and explore new avenues as unexpected issues arise. This dynamic interplay between techniques is what makes exploratory testing such a powerful tool in the hands of full-stack developers.

Recommended Books

Here are some recommended books:

• "Exploratory Software Testing" by James Whittaker • "Testing Computer Software" by Cem Kaner, Jack Falk, and Hung Quoc Nguyen • "Lessons Learned in Software Testing" by Cem Kaner, Jack Falk, and Hung Quoc Nguyen

Fullstackist aims to provide immersive and explanatory content for full stack developers Fullstackist aims to provide immersive and explanatory content for full stack developers
Backend Developer 103 Being a Fullstack Developer 107 CSS 109 Devops and Cloud 70 Flask 108 Frontend Developer 357 Fullstack Testing 99 HTML 171 Intermediate Developer 105 JavaScript 206 Junior Developer 124 Laravel 221 React 110 Senior Lead Developer 124 VCS Version Control Systems 99 Vue.js 108

Recent Posts

Web development learning resources and communities for beginners...

TL;DR As a beginner in web development, navigating the vast expanse of online resources can be daunting but with the right resources and communities by your side, you'll be well-equipped to tackle any challenge that comes your way. Unlocking the World of Web Development: Essential Learning Resources and Communities for Beginners As a beginner in web development, navigating the vast expanse of online resources can be daunting. With so many tutorials, courses, and communities vying for attention, it's easy to get lost in the sea of information. But fear not! In this article, we'll guide you through the most valuable learning resources and communities that will help you kickstart your web development journey.

Read more

Understanding component-based architecture for UI development...

Component-based architecture breaks down complex user interfaces into smaller, reusable components, improving modularity, reusability, maintenance, and collaboration in UI development. It allows developers to build, maintain, and update large-scale applications more efficiently by creating independent units that can be used across multiple pages or even applications.

Read more

What is a Single Page Application (SPA) vs a multi-page site?...

Single Page Applications (SPAs) load a single HTML file initially, handling navigation and interactions dynamically with JavaScript, while Multi-Page Sites (MPS) load multiple pages in sequence from the server. SPAs are often preferred for complex applications requiring dynamic updates and real-time data exchange, but MPS may be suitable for simple websites with minimal user interactions.

Read more