Software is literally carrying our modern world. They are so deeply entrenched in our life that a single bug is enough to cause rippling damage. I mean, who can possibly forget the unprecedented 8.5 million blue-screens-of-death around the globe in Jul 2024 that caused a loss of $10 billion? That's the power of a bug.
That’s when software testing, and more specifically automation testing, comes to the rescue. If software testing is simply checking bugs then automation testing is checking-bugs-on-steroid. It significantly speeds up testing while freeing up bandwidth for testers to focus on strategic tasks.
Want to learn more about automation testing? This article’s got you covered!
Automation testing is the practice of using scripts and specialized tools to automate the execution of tests to check for issues in the system and ensure that it is working as expected. Those automation scripts and tools directly command the Application Under Test (AUT) to perform all actions on behalf of the tester.
Thanks to automation testing, testers don’t have to manually interact with the system over and over, which is a time-consuming process. All they have to do is click the “Run” button, sit back, and let the script do the work.
Source: r/ProgrammerHumour
Is automation worth it? Yes, if the specific test case you are automating is highly repetitive. You’d be better off spending 1 hour scripting for a test that can then be automatically run hundreds of times than manually executing it hundreds of times all by yourself.
Automation testing is the best way to enhance effectiveness, broaden test coverage, and improve execution speed. Here are some of the obvious benefits you can get from automation testing:
If you're a software business or an individual working in the digital industry, investing in automation testing will surely bring immense benefits to your product development process.
Learn More: Benefits of Automation Testing You Should Know
Yes, automation testing is awesome, but not all tests can be automated. It’s all about “automation feasibility”.
So, what makes a test case feasible for automation? There are several:
Before starting automation, make sure to go through this step. Striking a nice balance between manual tests for ad-hoc, non-repetitive test cases and automated tests for time-consuming, repetitive test cases is how you maximize test coverage.
Testing, in general, follows the Software Testing Life Cycle, which consists of 6 stages:
No matter if you’re doing manual testing or automation testing, these steps are always followed in one way or another. What sets automation testing apart is at the Test case development stage.
For manual testing, you list down the test steps and then manually execute it step-by-step. For automation testing, you go the extra mile of writing the test script, but only have to click the “Run” button to execute.
Of course, there are so many more nuances in-between of this process, so let’s dive in to understand it in more detail!
To do automation testing, you have 2 approaches:
What’s the pros and cons of each? Here is a comparison table for you:
Aspect |
Test Automation Tool |
Test Automation Framework |
Level of Abstraction |
Offers a higher level of abstraction, allowing users to automate tests without extensive programming knowledge. |
Requires a certain level of programming expertise and understanding of coding principles. |
Learning Curve |
Typically has a lower learning curve, making it accessible to individuals with limited programming skills. |
May have a steeper learning curve, as it requires a deeper understanding of automation principles and programming concepts. |
Customization |
Provides limited customization options, as users are bound by the features provided by the tool. However, many tools do offer Scripting mode along with low-code mode to increase customization level |
Offers extensive customization and flexibility, allowing users to tailor the framework to specific project needs. |
Ease of Initial Setup |
Generally easier to set up, with user-friendly interfaces and wizards guiding users through the configuration process. |
May involve a more complex initial setup, requiring expertise in designing and structuring the framework. |
Resource Efficiency |
Tends to be more resource-efficient, making it suitable for smaller projects with limited resources. |
May be resource-intensive, requiring time, effort, and expertise. |
Maintenance |
Easier to maintain, as updates and changes are typically managed by the tool provider. |
Requires regular maintenance |
Integration with CI/CD |
Often provides built-in integration capabilities with Continuous Integration/Continuous Deployment (CI/CD) systems. |
Facilitates seamless integration with CI/CD systems but may require additional configurations and setup. |
Community Support |
Depending on the popularity of the tool, there may be a supportive community providing resources and assistance. |
Frameworks usually have a robust community, offering resources, forums, and support for users. |
In other words:
If this is the first time you do automation testing for a certain system, you should first perform some exploratory testing to understand its features, so that you know what and where to test.
There is really no rule to exploratory testing. It all depends on your intuition, domain knowledge, and experience. Target high-risk areas such as complex features with intricate workflows, recently modified code, integration points, etc.
Ask yourself:
Let’s Game It Out is a let’s play YouTube channel by a guy named Josh with chaotic evil energy. He embodies the exploratory testing spirit. Josh sets out to push every game he plays to its absolute limit and breaks the system. If you’re doing exploratory testing, do it like Josh.
Here's a fun video of how he breaks the game:
Once you have understood the system, you can start defining where to automate.
Here comes the fun part (yay).
Selenium and Cypress are two of the most popular automation testing frameworks out there. They support a wide variety of languages, so you can write in the one you feel the most comfortable with. Here’s a simple Selenium script written in Python to launch a browser, navigate to a website, click a button, and check if a certain result appear.
from selenium import webdriver
# Set up WebDriver (e.g., Chrome)
driver = webdriver.Chrome(executable_path='path_to_chromedriver')
# Navigate to a website
driver.get("https://testwebsite.com")
# Interact with elements (find a button and click it)
button = driver.find_element_by_id("myButton")
button.click()
# Check the result
assert "Expected Result" in driver.page_source
# Close the browser
driver.quit()
To familiarize with the commands, simply go through their documentation.
With automation testing tools, you usually get a host of features to support your test creation activity. For example, in Katalon Studio, you can leverage the Record-and-playback feature to record on-screen actions and turn them into an automation test script.
You can also use the Built-in keywords from the Keyword Library. These keywords are basically just pre-written code snippets to automate specific actions. String these keywords together and you should have a full test script ready to be executed across any environment.
For example, for the same test script above, you can piece these keywords together:
Start Automation Testing With Katalon For Free
There will be clear hardware-software specifications for any testing projects, and that includes requirements on servers, databases, OS, browsers, and any third-party tools needed to perform the test.
For example, if you want to test a Login page, you need to prepare the browsers (Chrome, Safari, Edge), devices in a wide variety of versions (desktop, tablet, laptop, mobile), Operating system with suitable versions, and even suitable network conditions.
There are 3 types of environment you can go with:
Test management is the glue that ties all testing activities together. It provides the much-needed structure and visibility to ensure a successful testing process.
It is about building a Testing Center of Excellence. This center is the central governing body that manages a shared pool of testing resources. For example, you can leverage Katalon TestOps to plan tests, schedule test runs, organize test suites, manage test data/artifacts/objects, and centralize test reporting.
Thanks to this unification, stakeholders from QA teams, devs, and PMs can gain a shared visibility on the testing process, which improves overall efficiency.
With all that ready, you can start test execution and gather results.
Read more: Steps To Build A Good Automation Test Report
Of course, automation testing is not without its challenges. There is usually some compromise to be made when you want to increase testing speed. What’s important is whether that compromise is worth it or not.
According to the State of Quality Report 2024, the most prevalent challenge to automation testing is the team's lack of skills and experience in test automation, with up to 45% of respondents agreeing, followed by 38% thinking that requirements change too often, and another 26% claiming that test maintenance is costly.
→ Download the State of Quality Report 2024 to get the latest industry insights
In conclusion, automation testing is a critical component of any software development process. With the right tools and approach, organizations can improve the speed and accuracy of their testing, catch bugs earlier in the development cycle, and ultimately deliver better products to their customers.
If you don't know which test cases to start with, here’s a list of popular test cases for you. They should give you a good foundation of how to approach a system as a tester.