Modular Testing Framework: A Detailed Guide
The concept of modularity is near and dear to software engineering. Through the decades, we've collectively come to appreciate that dividing a system into many small and focused modules leads to greater code reuse, better maintainability, better deployability, and more. So it's not shockingly surprising that the concept of modularity also manifests itself in the world of testing, in the form of a concept called a modular testing framework.
That's what this post is all about: explaining what a modular testing framework is and why it matters.
We'll start with some fundamentals of test automation itself. You'll learn about the importance of test automation, especially in the context of web and mobile applications that are continuously delivered and deployed. Following that, you'll learn the definition of a testing framework, and what the motivations are behind using one.
Finally, we'll get to the meat of the post, where we'll define what a modular testing framework is, walk through the advantages and disadvantages of modular testing, and cover some examples.
Let's dig in.
Modular Testing Framework 101
As promised, let's begin with some general fundamentals about testing frameworks and software testing.
Importance of Test Automation
Manual testing is important and still has valid uses. However, test automation is essential nowadays, particularly for organizations that produce web and/or mobile apps. Why is that so?
It all boils down to the competitive nature of those scenarios. Users and customers have come to expect new features to be delivered at a maddeningly fast pace. When the competition is just a few clicks away, market forces pressure organizations into delivering software quicker and quicker while keeping the quality high.
It's just not feasible to rely 100% on manual testing in such a scenario. Adopting a CI/CD pipeline that includes a comprehensive test suite is vital for organizations that really want to remain competitive.
What Is a Testing Framework?
Once an organization accepts the need for automated testing, it must decide how it's going to implement it. And that's where a testing framework comes in handy.
While it's possible to use homemade scripts for testing, the maintenance burden can quickly become overwhelming, threatening the whole enterprise. A testing framework already has a built-in infrastructure, so you don't have to waste time reinventing the wheel.
But what exactly is a testing framework?
Though there are conflicting definitions out there, it's useful to think of a framework as a tool along with a set of useful rules and guidelines. So, a test automation framework is a tool that comes pre-packaged with useful functionality for creating automated tests, but it also offers a structure that restricts and guides the way you're supposed to create such tests.
Why Adopt a Testing Framework?
Why is adopting a framework for test automation a good idea? First, a framework ensures consistency, since it imposes structure on how you create tests. Also, frameworks usually save you time because they already have many pieces of useful functionality.
Additionally, there are testing frameworks that often don't require coding. That frees software engineers from having to write test scripts, while at the same time enabling people with no coding skills to chime in, generating a more collaborative approach to testing.
What Is a Modular Testing Framework?
A modular testing framework is a test automation framework that enables the creation of small test cases/scripts that target specific portions of the system under test. Then those modular tests are coordinated to create a unified approach.
This approach differs from what you'd find in most standard testing frameworks, which generally favor an end-to-end approach to testing—that is, the entire application, or at least a complete "vertical slice" of it, is tested from the user interface (one end) to the database (the other end) and back. Such an approach is very realistic, since it reproduces what a real user would be doing in the application. At the same time, it isn't as easily scalable as a modular approach.
Advantages of a Modular Testing Framework
The benefits of modularity have long been known in the software development community. As such, the benefits of modular testing shouldn't come as a surprise. They are:
- Reuse. Like LEGO blocks, small, super-focused test cases can be reused to compose larger tests.
- Independence. Different professionals or teams can work simultaneously and independently on test cases.
- Robustness. A problem in a given module only affects the tests that target that module, bringing down the cost of test maintenance.
Disadvantages of a Modular Testing Framework
There's no silver bullet in software testing, so let's quickly review some of the main disadvantages of a modular testing framework:
- It requires time to analyze the application so you can understand which scenarios lead to reuse and modularization.
- Test data might be embedded into the test case/test script for each module, making it harder to update or add different data sets when needed.
Modular Testing Example
Let's walk through a brief example of what modular testing might look like in practice. First, let's choose a target for our testing: the demo e-commerce site called DemoBlaze. Here's what it looks like:
First Test Case
Now, let's imagine a test case that verifies the scenario of deleting a product from the shopping cart:
Step
- Go to the site's URL.
- Click on the first product (Samsung Galaxy S6).
- Click on Add To Cart.
- Close the pop-up by clicking on OK.
- Click on Cart on the navigation bar.
- Click on the delete link next to the product.
Expected Behavior
- The homepage appears.
- You're taken to the product's page.
- A pop-up saying product added appears.
- The pop-up is closed.
- You're taken to the cart's page. The product is there.
- The cart no longer contains the product.
Although you could perform the test case above manually, a better solution would be to use a test automation tool to automate this workflow.
Second Test Case
Now, consider the next test case, which tests the scenario of adding a product to the cart and then proceeding to conclude the purchase:
Step
- Go to the site's URL.
- Click on the first product (Samsung Galaxy S6).
- Click on Add To Cart.
- Close the pop-up clicking on OK.
- Click on Cart on the navigation bar.
- Click on Place Holder.
- Add the information asked and click on Purchase.
Expected Behavior
- The homepage appears.
- You're taken to the product's page.
- A pop-up saying product added appears.
- The pop-up is closed.
- You're taken to the cart's page. The product is listed there.
- A hovering form appears, prompting for some information.
- A pop-up with a thanks note and a summary of the purchase appears.
As you can see, the first five steps from both test cases are the same. There is an opportunity for modularity right there. Using a modular test automation framework, the solution here would be to turn those five first steps into a script of their own, and then include/call that script from the larger tests. This significantly helps with reuse and flexibility since you don't have to create common from scratch whenever you need them.
Conclusion
Nowadays, not many software professionals would question the importance of testing. Think about it: The notion of software engineers writing automated tests—such as unit tests—was once highly controversial. Today, despite unit testing not being as universal as it should be, the concept itself is much more familiar to most development teams.
However, getting into software testing isn't the easiest of tasks. Just keeping up with the enormous and always-growing lexicon of software testing is already enough to cause many developers a serious headache. For instance, the list of types of software testing is dizzying.
Luckily, you don't have to learn all of that at once. You can go at your own pace, absorbing one concept at a time. Today, we've covered the concept of a modular testing framework, as well as its benefits and disadvantages.
Keep in mind that many—if not most—test automation frameworks today take a hybrid approach: They incorporate characteristics from data-driven, modular, linear, and other types of testing frameworks, hoping to achieve the best of all worlds and offer their users a great testing experience. So that's something to remember when shopping for a test automation framework.
We invite you to take a look at Waldo. Start your free trial today.
This post was written by Carlos Schults. Carlos is a consultant and software engineer with experience in desktop, web, and mobile development. Though his primary language is C#, he has experience with a number of languages and platforms. His main interests include automated testing, version control, and code quality.