Do you giggle with glee when writing test cases in Excel for every new feature you develop or change? Does your QA team get a rush from going row by row, reading rote, repetitive instructions, while taking meticulous performance notes? Does your operations team love rolling back production changes after deployments?
I didn’t think so.
Don’t worry, you’re not alone. And if you’re reading this, there’s a better way.
It’s called automated testing.
With the right strategy, automated testing tools can save you and your team hours of manual labor, greatly reduce production bugs, enhance security, and free up valuable development time.
Automated testing tools have been around for a while now, and with advances in machine learning technology, they’re making a bigger splash than ever. If you’ve been wondering about automated testing, and automated test tools, here is everything you need to know to be dangerous.
What are automated test tools?
Automated test tools allow you to automate the execution of software testing. They do this by either running test code or recording and performing user actions and verifying the results with assertions. These tools can perform UI tests, unit tests, component tests, integration tests, security tests, regression testing, smoke testing, and more.
Chances are, if you’re manually testing functionality, a tool can write and execute it for you. With automated test tools, you can build testing seamlessly into your deployment lifecycle so that you’re always aware of any downstream effects of your changes.
Types of automated test tools
You probably have a lot of things that you need to test — from in-house backend applications to front-end CRMs, websites, and mobile apps — each with their own testing methods, test cases, and even test teams. Automated test tools allow you to simplify all of it.
Automated test tools tend to fall into one of the following high-level categories:
Graphical user interface testing (UI-driven testing) relies on emulating a testing subject, such as a browser or a mobile device, and recording user interactions within the application like clicks, drags, and keystrokes. The test can be configured to make assertions after interactions.
For example, you might fill out a form and provide a fake email address. You can then assert that the form renders a message like please enter a valid email address. After the actions are recorded, you can run them automatically before and after deployments, or along a predictable schedule to verify no unintended changes occur.
The test tool tracks passed and failed assertions, so you know what fails and can quickly address the issues.
API testing is a type of automated testing that involves executing code-based tests to validate application function and behavior. As opposed to UI-based tests, these tests can’t be asserted by something you see on screen. Code-based API tests will import a library, call a function, make an assertion, and evaluate the results.
For example, you may test that the addTwoNumbers(5,5) function returns a 10 or that a user authorization flow fails for an unauthorized user. API-driven tests can mock call outs or other dependencies. Tests can be grouped together, ordered, and executed through a CLI.
What is automated test case generation?
Put simply, automated test case generation is when a tool creates executable test cases without a user writing code. This can be done in a variety of ways and can involve recorders and machine learning.
Can we generate test cases automatically?
With automated test tools you can quickly generate test cases automatically. You can even take it a step further: With advances in machine learning and natural language processing, advanced automated testing platforms are able to take static documents, like test scripts or design documents, or other text-based files, and create executable test cases out of them. It does this by using Machine Learning and Natural Language Processing to take human readable syntax, such as click the ‘edit’ button and verify save is successful, and translate it into executable code-based test methods.
How do you generate test cases automatically by a tool?
Different tools use different methods for generating test cases. As mentioned previously, a common way to do this is by recording user interactions. For example, a browser plug-in can record you interacting with a web app, and watch you successfully complete an action (like logging in and opening your user profile or adding something to a shopping cart).
Tools like Selenium can log user interaction and generate Java, C#, Python, and Ruby-based test scripts. Testers can also playback their tests through a browser, so they can see any changes or errors when they run them in the future. The challenge with recording-based tests is that you’re relying on a lot of variables that you may not control, specifically browser behavior and the DOM, which may change at any time and break your test case.
Advanced tools like Sofy can actually be made aware of context rather than just recording actions. For example, you can indicate that you’d like to add an item to a cart and enter a payment method. In this case, the automation tool knows what you’d like to do versus how you want to do it. So whether the item is added to the cart from a button at the top right of the screen or from an icon near the item, the tool knows the desired outcome.
Furthermore, automated test tools can learn from your collection of existing tests, and then recommend and automatically create new test cases. As your application changes, the testing tool will recommend tests based on added or updated functionality. This allows for extensive and robust app testing without much human input.
Applications like Sofy can even track popular user interactions and suggest tests based on them, allowing you to identify important test cases you never even thought about.
If you’re looking to increase your test coverage, make it easier to produce robust test cases, and continuously ensure the health of your environments, I’ve got good news for you: You don’t have to choose one over the others. Automated testing tools are already making developer’s lives much easier while strengthening and speeding up the development cycle. We recommend taking stock of your testing strategy and tools to see where automated test tools can help.
Disclaimer: The views and opinions expressed above are those of the contributor and do not necessarily represent or reflect the official beliefs or positions of Sofy.