Sometimes we’re a customer of our own solutions. We’re always trying to push our products forward to see what’s possible. And when we make progress, it’s exciting for us but more importantly, it represents important advantages for our clients.
Recently, we turned our attention to creating testing automation frameworks.
Together with two of our experienced QAs, Celeste Senoseain and Fernando Irahola, we share our newest inhouse-developed automation framework. Learn about its benefits, the different versions, and how it can benefit your projects, too.
The Challenge: Improving Quality Assurance at Making Sense
At Making Sense, we understand that quality is not just NICE TO HAVE in our projects, but a MUST. The challenges are:
- The software industry is continuously evolving
- The field of quality assurance (QA) is evolving, too
- Our QA Team must always be looking for opportunities to improve the way we do our job
- Enable an approach that is both scalable and functional.
Use Case: New Frameworks for Testing Automation
The Making Sense QA team has been working on the development of Testing Automation Frameworks. In our latest phase of this project, we’ve put together a set of QA Best Practices.
A Testing Automation Framework is a frame that provides a foundation, a structure, and guidelines to create automated test cases. Using a framework, QA Engineers can develop automated test cases quickly and efficiently using libraries, reusable code modules, and the test case syntax that the framework provides. The framework makes the automation process less difficult and more reliable because it follows standards and best practices.
The Solution at a Glance: Our 3 New Frameworks
Working on different projects for our clients, we had the opportunity to try out several different automation technologies, learning about the pros and cons of each one of them. Using what we learned, we created three Testing Automation Frameworks: Web, Mobile, and API. We’ll go over each one in more detail below but first, here’s what they have in common, and what makes these frameworks so useful.
All of them share the following main characteristics :
- Transparency. Easy lecture — you clearly see what the test does.
For example :
.VisitHomePage()
.GotoTalkToUs()
.ClickOnLetsConnect()
.EnterName()
.EnterEmail()
.EnterMessage()
.ClickOnSend()
.Verify().EmailConfirmation();
- Scalability. It’s easy to add more tests
- Modularity. The tests are easy to maintain and modify because all of them have similar architecture, where View, Tests, and verifications are separated.
- Standardization. All frameworks follow Making Sense quality standards and best practices.
“To reach our goals, we need to constantly be innovating and we must be creative, always thinking of ways that we can develop better tools and new frameworks. It’s how we ensure quality… with quality work!”
1. Mobile Framework
The Mobile Framework we developed is a UI Automation Framework for mobile applications. It allows automating both Android and iOS apps. It was developed using Xamarin UITest, C#, and NUnit technologies. It’s also worth mentioning that Xamarin UITest is a testing framework that enables Automated UI Acceptance Tests written in C# using the NUnit unit testing framework to be run against iOS and Android applications.
The structure of the framework consists of the following parts:
Mobile.UITests
- Tests: This folder contains the features from the application, written in C#.
- Views: This folder contains the screens from the application so that we’ll be able to navigate through the app.
- App.config: Application Configuration File
- AppInitializer.cs: Some startup code in order to load the APK and IPA/.app/appBundle.
This framework has integration capability with Genymotion, which means that Test Cases can be executed using this tool. It can be used to create automated testing suites for any kind of mobile applications, not just the ones that are developed using Xamarin.
It also includes data entry code so you can use a set of data as input for your tests, saving time and making execution cycles simpler.
2. Web Framework
Here, we have a Web Automation Framework for cross-browser testing. It supports the creation of test cases for Chrome, Firefox, Edge, and Internet Explorer Browsers. It uses Selenium, C#, and NUnit technologies.
The structure of the framework consists of these parts:
Web.UITests:
- Tests: This folder contains the features from the application, written in C#.
- Views: This folder contains the screens from the website so that we’ll be able to navigate through the web site
- App.config: Application Configuration File
- WebInitializer.cs: Some startup code in order to load the browser selected
This framework integrates with the BrowserStack emulator. You won’t need to install the app on each device to run the automated test suite Instead, you can run the tests directly in the cloud. It also includes data entry and step-by-step documentation to configure Jenkins to put Test Suite into Continuous Integration, allowing execution against every build.
3. API Framework
This is an API Automation Framework for Testing and validation of REST services. It was developed using Rest Assured, Java, and Maven technologies. REST Assured library brings the simplicity of using these languages into the Java domain.
The structure of the framework consists of these parts:
- Com.makingsense.data: a package containing all static data
- Com.makingsense.servicetesting: a package containing base classes to extend the functionality
- Com.makingsense.test: a package containing service tests
Our framework is put into action. Take a look at how it works!
The Result: 5 Benefits That Also Benefit Clients
Besides all the fun we had creating these three frameworks (we are QA people and we enjoy doing this!), there were also some clear advantages. The frameworks provide several benefits, including:
- QA teams don’t have to start from scratch every time. Save time at the beginning of an automation project by adapting an existing framework to the specific business needs. You can clone the repository and begin automating, avoiding the investment of time on configuration, setting, and research of tools.
- Frameworks simplify the automation process. Makes easier to have a regression automated suite ready to be used. Regression testing consumes a big part of the testing time, and if it is executed manually it is sensitive to human errors and error risk grows as the application grows.
- Frameworks help to ensure the quality of your test cases. You are using frameworks that follow good practices and standards of testing, that helps to ensure the quality of the final software product that you are testing
- QA teams get better testing coverage. Frameworks can be integrated with tools. These include BrowserStack, Genymotion, and Jenkins, bringing the possibility of Continuous Integration.
- They can be used as a training tool. They are available to everybody in the company, as well as their documentation.
If you’d like to see these frameworks in action with real clients, we’ve done up a few case studies you might want to check out. One such client is VAS, whose dairy management company saw a significant increase in productivity after our team modernized their applications.
—
Automation Testing is a challenging practice because each new project brings new business rules and scenarios. Finding the correct strategy to test every application effectively and efficiently can be streamlined with the use of frameworks like the ones we’ve described here. But the work never stops.
To reach our goals, we need to constantly be innovating and we must be creative, always thinking of ways that we can develop better tools and new frameworks. It’s how we ensure quality… with quality work!