<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oswin Losper</title>
    <description>The latest articles on DEV Community by Oswin Losper (@oswinlosper).</description>
    <link>https://dev.to/oswinlosper</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F707167%2Fbf2d7c5c-653b-423d-9826-8307cc1c9650.jpeg</url>
      <title>DEV Community: Oswin Losper</title>
      <link>https://dev.to/oswinlosper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oswinlosper"/>
    <language>en</language>
    <item>
      <title>CROSS BROWSER TESTING</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Tue, 16 Aug 2022 17:20:35 +0000</pubDate>
      <link>https://dev.to/oswinlosper/cross-browser-testing-46m7</link>
      <guid>https://dev.to/oswinlosper/cross-browser-testing-46m7</guid>
      <description>&lt;p&gt;Browsers today have become much more consistent in how they render web applications. The days where developers had to almost to double the amount of work, thanks to the sometimes contradicting behaviour between web browsers, is a thing of the past. However, still different devices and different browsers versions can cause your app not work consistently well or not work in certain parts at all for some users.&lt;/p&gt;

&lt;p&gt;Web developers must ensure that their application work well for all user that access the app. This is where cross browser testing comes into play.&lt;/p&gt;

&lt;h4&gt;
  
  
  WHAT IS CROSS BROWSING TESTING?
&lt;/h4&gt;

&lt;p&gt;Safe to say that the name kind of gives it away. Cross browser is testing of websites or web application (yes, there is a BIG difference) that take place across various browsers to ensure the behaviour and functionality works as intended.&lt;/p&gt;

&lt;p&gt;Cross browser testing is more then simply open us a website or web app in different browsers. This testing includes validating the functionality with the devices and operating systems and verifying how a website or application work under different scenarios that a user can come across in the real world.&lt;/p&gt;

&lt;p&gt;Different version of a browser, device or operating system can expose inconsistencies in your app. Some issues are very small inconveniences, like a misaligned text field, styling seems different, but also, some issues can make your app unusable, like a JavaScript error that prevents the site from loading altogether.&lt;/p&gt;

&lt;p&gt;It’s impossible to test every possible combination of browser, operating system, device and scenario, it’s still worth the time to validate your web app across the most commonly used web browsers and devices like PCs and smartphones.&lt;/p&gt;

&lt;h4&gt;
  
  
  HOW TO PERFORM CROSS BROWSING TESTING?
&lt;/h4&gt;

&lt;p&gt;As with most testing strategies, most business handle cross browser testing in two ways: with manual testing and automated tests.&lt;/p&gt;

&lt;h4&gt;
  
  
  CAN CROSS BROWSING TESTING BE DONE MANUALLY?
&lt;/h4&gt;

&lt;p&gt;The short answer to this is yes. Organisations can have a few members of a QA team load up their web applications on different operating systems and browsers. They go through various test scenarios to verify that the app works as intended no matter where or under which conditions it’s accessed. Some teams follow a script or have a series of test cases that they go through, while others do more exploratory testing without a set plan. &lt;/p&gt;

&lt;p&gt;Keeping in mind that manual testing only keeps high level of quality for your web applications. As with all manual testing, it can take a lot of time to complete and can be prone to human error. Plus, no one wants to perform the same mundane, repetitive tasks over and over every single day. After a while, this work takes a mental toll on testers, leading to bugs slipping through the cracks.&lt;/p&gt;

&lt;h4&gt;
  
  
  AUTOMATE CROSS BROWSING TESTING.
&lt;/h4&gt;

&lt;p&gt;With automated testing, teams can eliminate the boring parts of manual testing. By using tools that automatically go through the same scenarios, automated cross browser testing bypasses the repetitious work of manual testing and free up QA to perform other kinds of high-value work to get the most out of your team’s testing time.&lt;/p&gt;

&lt;p&gt;The downside of automated testing is that the scripts can only reveal issues in their area of coverage. If your web application doesn’t have any automated tests going through certain parts of the application, bugs can remain uncovered in those sections until someone stumbles upon them. &lt;/p&gt;

&lt;p&gt;Automated tests also usually do only what they’re told, eliminating the benefits of exploratory testing that a human tester brings to the table.&lt;/p&gt;

&lt;h4&gt;
  
  
  THE BEST APPROACH IS BOTH.
&lt;/h4&gt;

&lt;p&gt;Some teams prefer going all in either manual or automated testing but the ideal approach is a mix of both. Start with manual, like mentioned above exploratory testing to determine the sections with high risk and importance to the business - the areas where your organisation stands to lose customers or money if they stop working. &lt;/p&gt;

&lt;p&gt;With a list of test scenarios to guide you, begin sprinkling in automated tests to handle the most critical and tedious test cases. This balanced plan will give you the best of both worlds.&lt;/p&gt;

&lt;h4&gt;
  
  
  WAYS TO BUILD A CROSS BROWSER TEST SUITE.
&lt;/h4&gt;

&lt;p&gt;Testers have a lot options for creating cross browser test suites.&lt;/p&gt;

&lt;p&gt;Documenting scenarios can help QA establish the various test cases needed for manual testing purposes and which browsers to target. The documentation can be as formal as a test plan defined at the start of a new project or as informal as a shared spreadsheet that anyone can modify.&lt;/p&gt;

&lt;p&gt;For teams going the automated route, software developers and QA engineers can code a fully functional cross browser test suite, provided the team has the technical ability to do this.&lt;/p&gt;

&lt;p&gt;Teams with limited programming knowledge aren’t left behind when it comes to automating tests. A growing segment of the QA world is the rise of low-code or codeless testing tools. These tools allow anyone to easily create automated tests without any coding experience, like recording the steps taken in a web application and replaying it in the future.&lt;/p&gt;

&lt;h4&gt;
  
  
  TOP 5 CROSS BROWSER TESTING TOOLS
&lt;/h4&gt;

&lt;p&gt;These days, there’s no shortage of excellent tools to get started with cross browser testing. Just to list a few great choices if you’re looking to get started on a low-code/codeless testing environment:&lt;/p&gt;

&lt;h5&gt;
  
  
  TESTCAFE STUDIO
&lt;/h5&gt;

&lt;p&gt;My personal favourite, TestCafe Studio by DevExpress is a cross platform tool powered by TestCafe, an open-source framework focused on end-to-end testing for web applications. It supports most major browsers, including browsers for mobile devices, with almost no configuration required.&lt;/p&gt;

&lt;h5&gt;
  
  
  TEST STUDIO
&lt;/h5&gt;

&lt;p&gt;Test Studio by Telerik is a Windows-based testing application covering desktop and web applications. It provides a full suite of tools with different kinds of automated testing, including web application test recording, cross browser testing and automating test.&lt;/p&gt;

&lt;h5&gt;
  
  
  GHOST INSPECTOR
&lt;/h5&gt;

&lt;p&gt;Ghost Inspector is an online service that captures recorded actions and assertions of a web application through a browser extension, which it then executes on its servers. One issue with this is, the service is currently, available only for Chrome and Firefox.&lt;/p&gt;

&lt;h5&gt;
  
  
  SELENIUM IDE
&lt;/h5&gt;

&lt;p&gt;Selenium IDE is a recording and playback tool based on the widely used Selenium testing framework. Like Ghost Inspector, Selenium IDE works as a browser extension for Chrome or Firefox and provides a ready-to-use IDE to test your web application.&lt;/p&gt;

&lt;h5&gt;
  
  
  KATALON STUDIO
&lt;/h5&gt;

&lt;p&gt;Katalon Studio is a cross platform testing tool that uses Selenium under the hood for executing web application tests. Out of the box, it supports test recording functionality across most major browsers.&lt;/p&gt;

&lt;h4&gt;
  
  
  SHOULD CROSS BROWSER TESTS ALWAYS BE RECORDED?
&lt;/h4&gt;

&lt;p&gt;A lot of organisations have concerns about whether they should rely on low-code/codeless testing tools to record their cross browser tests or if they should code them from the ground up. Both options work well, depending on your team and business needs.&lt;/p&gt;

&lt;p&gt;As mentioned earlier, teams with fewer technical resources on hand can get started quickly with a low-code or codeless solution. The benefit of this strategy is that anyone can fire up the web browser and record a helpful test that the tool can replay to ensure the application behaves as expected.&lt;/p&gt;

&lt;p&gt;Keeping in mind that your web application and cross browser test suite will expand, these tools might start to show signs of growing pains. Depending on the low-code/codeless service used, you might start to get limited as to what the tool can do. For instance, it may become challenging to reuse components or handle complex UIs or find specific selectors on a page. In those cases, coding will often improve the testing experience by allowing testers to refactor and organise test cases in more efficient ways then low-code/codeless testing tools will be able to do.&lt;/p&gt;

&lt;p&gt;With that said, it doesn’t mean that low-code and codeless tools will always hit these kinds of limitations. Most modern low-code/codeless testing tools allow editing the tests in different ways, letting testers record their tests and access the underlying code for any necessary modifications. When seeking a low-code or codeless testing tool, the ability to switch between both modes effortlessly should be a key factor to guide your decision.&lt;/p&gt;

&lt;p&gt;Regardless of the tool of choice, the most important thing is to have coverage of cross browser testing. It will make development easier by detecting issues quicker and making sure your customers have a smooth experience.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>crossbrowsertesting</category>
    </item>
    <item>
      <title>The Importance Of CI In Your Project</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Fri, 22 Apr 2022 07:13:42 +0000</pubDate>
      <link>https://dev.to/oswinlosper/the-importance-of-ci-in-your-project-1i55</link>
      <guid>https://dev.to/oswinlosper/the-importance-of-ci-in-your-project-1i55</guid>
      <description>&lt;p&gt;In our ever changing world we live in today, when you take on a new project, a new hobby or just even when you enjoy something, you would want to get the most out of it. It’s the same with automation testing. If you do have an automation suite in your project and you don't have continuous integration (CI) on it, then you not getting the most value out of your automation testing.&lt;/p&gt;

&lt;h3&gt;
  
  
  LEARN WHY IT IS IMPORTANT FOR YOU AND YOUR BUSINESS TO IMPLEMENT CI IN YOUR PROJECT.
&lt;/h3&gt;

&lt;p&gt;A lot of businesses these days are embracing automation testing, and with good reason, I might add. Automation testing help developers and testers to be more effective during the software development process. With automation, teams don’t have to spend their days going through testcases manually, this can lead to quicker turn around times and also help catching issues quickly before the project reach the customers.&lt;/p&gt;

&lt;p&gt;However, some companies does have access to an automated test suite, but don’t run them as frequently as they should. They only use the automation test suite on occasions, then on the other occasions they still execute tests manually. These companies are missing out on a big opportunity to get the most value out of their automation test suite. &lt;/p&gt;

&lt;p&gt;Automation can be a very valuable tool that can validate the state of your application at any given time. But if these tests don’t run continuously, their value diminishes rapidly, especially at companies where automation engineers needs to proof the value of automation.&lt;/p&gt;

&lt;p&gt;In order to get the most value our of your automation test suite, you will need run them regularly. Ideally, you want to use your automated test suite to ensure that your application still behaves as expected when changes were made to it. And like mentioned above, in the ever changing world we live in today, applications changes occurs frequently. To get the most value, your team can get this automation up and running with a continuous integration system in place.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT IS CONTINUOUS INTEGRATION?
&lt;/h3&gt;

&lt;p&gt;Continuous Integration is a development practice to help manage and automate workflows when changes occur in a project. Typical uses for continuous integration environments is building software application, deploying new change and of course running automated tests.&lt;/p&gt;

&lt;p&gt;Continuous integration system plays an important part of a healthy software development pipeline, saving teams a lot of time and effort through the development cycle. Like most things today, there  are plenty of CI services available, from environments you can host on your own to cloud systems.&lt;/p&gt;

&lt;p&gt;Most of them are easy to start up and do not require a full time devops team. Most testing tools today can integrate fairly easy with most CI systems, helping you go from local testing to continuous integration testing seamlessly. &lt;/p&gt;

&lt;p&gt;If for some reason your company are still unsure about continuous integration, here are some reasons why may want to consider implementing a CI pipeline in your project.&lt;/p&gt;

&lt;h5&gt;
  
  
  YOU WILL GET FASTER FEEDBACK LOOPS
&lt;/h5&gt;

&lt;p&gt;Doesn't matter the size of your project, you will inevitable get bugs. As a project gets bigger, you will add more complexity to it, ever changing requirements and many other issues that increases the probability of errors. It's impossible to avoid mistakes all the time. As good software developers and testers know that the key isn't preventing errors but the time you take to recover from them quickly and efficiently as possible.&lt;/p&gt;

&lt;p&gt;When bugs are discovered, it's cheaper to fix to them right away rather than waiting to fix them months down the line. No matter where you are in a project, fixing bugs quickly makes a huge difference in time and money wasted.&lt;/p&gt;

&lt;p&gt;The reason being why it's cheaper to fix bug straight away, is that the more time passes between code changes and discovering a bug, the more difficult it is for the developer to go back and find the root cause of it. The work wont be fresh in their mind, so they will have to spend time remembering what they did before.&lt;/p&gt;

&lt;p&gt;Also, adding to this, other developers might have worked on the same section in the codebase at a later stage, so on top of the above, the developer will also have to figure out additional changes to the code in an attempt to fix the bug. &lt;/p&gt;

&lt;p&gt;This might seem like a small thing, but I have seen companies ignore bugs until a later stage than months down the line, business justifies the bugs in the project.&lt;/p&gt;

&lt;p&gt;By using continuous integration with a well-built automated test suite, this will eliminate most of these issues, because the team will quickly see how a recent change in the project has cause a defect and investigate to fix it quickly. &lt;/p&gt;

&lt;p&gt;If an issue has been found using an automated test suite with continuous integration, an alert can be send to the developer and they can take much more quicker to fix the bug rather than the bug being discovered later down the line. Early detection can help reduce how much effort your developer and tester spend on issues.&lt;/p&gt;

&lt;h4&gt;
  
  
  YOU'LL INCREASE ACCOUNTABILITY WITH YOUR TEAM
&lt;/h4&gt;

&lt;p&gt;Let's be honest, I'm sure all automated testers would love to have an automation test suite that just works, that doesn’t have failing tests, but realistically at some point you will get tests that fail. The failure can be due to recent changes in the code base or it can be a intermittent failure that no one can track down, regardless of the reason, its good to notify the team immediately and in a prominent place, if you don't have reporting in place so that the whole team can see it.&lt;/p&gt;

&lt;p&gt;Unfortunately, a lot testers prefer to take the easy way out and push failing tests one side to silent the failure alerts. They either mark the failing tests as pending, delete the result or even silence the notifications. It begins with what seems to be a justifiable moment, like we need to get this build out to the client or management want to see visibility on tests. These decisions usually goes with 'I will fix that next week when I have time’. Then the inevitable happens, you never get time to fix it and before you know your whole automation test suite losses value.&lt;/p&gt;

&lt;p&gt;I hear a lot and have experienced where the health of a project is the sole responsibility of the QA team, in order to have a successfull project all stakeholder within the team has a responsibility to the health of a project. It might be easier for developers and testers to check the state of an application because they are hands on with the project, but for designers and project managers, it might be more difficult for them. If you don't have a way to make the projects health visible to these team members you missing out on a good opportunity to have other contribute with a fresh set of eyes.&lt;/p&gt;

&lt;p&gt;You can avoid this problem my using continuous integration to run your test automatically for you. Most continuous integration systems allows you to send alerts when an issue arises. Your continuous integration can send a messages to Slack when a test fails. You can also add additional service to generate reports on a test run, this will help the non technical people in the team to understand the status of the project. This can allow everybody in the team to contribute to the project.&lt;/p&gt;

&lt;h4&gt;
  
  
  YOU'LL GIVE TESTERS MORE TIME FOR HIGH-VALUE TASKS.
&lt;/h4&gt;

&lt;p&gt;For many testers, they're consist of doing a lot of repetitive tasks daily. Everyday they open up the application they are responsible to test, doing the same steps, clicking buttons, filling in the same forms and checking validations, the same did the day before.&lt;/p&gt;

&lt;p&gt;This can become a dull routine. Automated tests can free them up form this cycle, letting continuous integration take care of the repetition. &lt;/p&gt;

&lt;p&gt;The main benefit of having automated tests and setting up a CI service isn't to liberate testers from tedious work, its to free them up to spend more of there work day to do more higher value testing tasks, like more exploratory testing, which can pick up bugs that automated testing wont find and also documentation of testing procedures, test cases and test plans.&lt;/p&gt;

&lt;p&gt;Automated tests are very good tool to handle regression testing, ensuring new changes don't break the application, but this will only be able to cover the areas you have planned or wrote scripts for. If there is new features, that was done by the developer and no automation tests for the new feature there will be a gap that is not checked. Continuous integration wont cover for those scenarios, therefor testers time is best spend on the new features that has not automation tests and not the old features. No continuous integration system can go beyond what's defined in the test suite.&lt;/p&gt;

&lt;p&gt;A common mistake a lot of companies make, is ‘they want to automate everything’ . They switch all they focus onto automation and ignore all types of other testing. Automation testing wont solve all testing problems teams have. As a project gets bigger and bigger, automation coverage wont cover everything. Freeing up the team to go beyond what continuous integration does will undoubtedly improve the health of your project.&lt;/p&gt;

&lt;h4&gt;
  
  
  YOU CAN AUTOMATE MORE THE JUST TESTS
&lt;/h4&gt;

&lt;p&gt;Yes, this article is mainly focussed on implementing continuous integration to handle the repetitive testing work that most companies are facing with todays software development. &lt;/p&gt;

&lt;p&gt;The most common use case for a continuous integration service is to set up automation testing. However, with that said, if you only using continuous integration for your automation tests, you are only touching the surface.&lt;/p&gt;

&lt;p&gt;In modern software development projects, teams have plenty of workflows that can take advantage of continuous integration. These are a few tasks that continuous integration can handle automatically for teams:&lt;/p&gt;

&lt;p&gt;Building binaries for mobile applications on different platforms like iOS and Android and send it to beta testers.&lt;/p&gt;

&lt;p&gt;Package web application to docker images, ready to distribute internally or in a public container registry.&lt;/p&gt;

&lt;p&gt;Run a complete set of tests and, on success, automatically deploy the latest code changes to production.&lt;/p&gt;

&lt;p&gt;Continuous integration can help your company perform repetitive tasks that computers can handle better and quicker.&lt;/p&gt;

&lt;h3&gt;
  
  
  CONCLUSION
&lt;/h3&gt;

&lt;p&gt;A well set up continuous integration environment plays an important part of the modern testing teams. It can help eliminate the repetitive aspects of manual testing and ensure you get the most value out of your automation testing.&lt;/p&gt;

&lt;p&gt;Continuous integration can also help the whole teams including the business to get better insight of the project health status and valuable metrics, like graphs and statistics. (We all know business people like graphs).&lt;/p&gt;

&lt;p&gt;Developers can also get much more quicker feedback on their new commits and thus reducing tons of effort and time in the development process. Tester will have more time to work on more high value testing scenarios. &lt;/p&gt;

&lt;p&gt;With a continuous integration process in place your entire team will benefit. This will go onto and benefit your customers as well with faster updates, fewer bugs.&lt;/p&gt;

&lt;p&gt;At the end of the day continuous integration wil result in a beter product for everyone.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Challenges Of Automation Testing</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Wed, 13 Apr 2022 06:03:36 +0000</pubDate>
      <link>https://dev.to/oswinlosper/challenges-of-automation-testing-45jc</link>
      <guid>https://dev.to/oswinlosper/challenges-of-automation-testing-45jc</guid>
      <description>&lt;p&gt;I think it's safe to say that in todays world, client and stakeholders expect software application they use everyday to provide them with rich experiences. The days of simple applications with a few form fields and store basic data are gone. We live in a world where we have real-time applications with nice designs and multiple services on the cloud.&lt;/p&gt;

&lt;p&gt;Because of this applications can become very complex with a lot of moving parts. With this, testing has also become much more complex, with multiple pieces of functionality working  differently and stores information in different locations.&lt;/p&gt;

&lt;p&gt;Developers and tester needs to make sure that all of the pieces of the puzzle of their applications works well together. Usually these complicated applications are being tested manually, but let's be honest we are humans after all and we do get tired and this is prone to mistakes. One way to get over this mistake is to implement automated end-to-end testing. Along side other automated tests like unit and API testing, end-to-end tests are essential part of the software development lifecycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is end-to-end testing
&lt;/h3&gt;

&lt;p&gt;End-to-end testing, or E2E testing, is to make sure the  whole work flow on an entire application works from start to finish. Unlike other kinds of testing, end-to-end testing goes through the whole functionality, not just a certain part. Applications that interact with different services or require complex actions, this type of testing simulates real world scenarios and validates what your customers see.&lt;/p&gt;

&lt;h3&gt;
  
  
  Benefits of end-to-end testing and Automation
&lt;/h3&gt;

&lt;p&gt;End-to-end tests provide a few benefits over other forms of testing. These tests will simulate a real word scenario that your customers will also experience under normal circumstances. Other tests do not simulate a real world scenario but only a section of the functionality that a user experiences. This kind of coverage helps to ensure that third-party services that aren't in your control work as intended. And thanks to the rise of low-code or code-less testing tools, the barrier to entry for creating end-to-end testing is much lower.&lt;/p&gt;

&lt;p&gt;Some teams perform these complex tests manually, going through each step to cover their acceptance criteria. As mentioned earlier, this process take time and this can lead to tiredness and mistakes set to creep in and can even rush to tick all the boxes on the acceptance criteria and just forget to do their work, however more and more businesses are now leveraging the power of automation testing to free them from doing the same stuff over and over again.&lt;/p&gt;

&lt;p&gt;Because automated tests does simulate real world scenarios quicker then a human would perform these steps, the entire team can get quicker feedback if something went wrong in there application.&lt;/p&gt;

&lt;p&gt;This is just a few benefits of end-to-end automation. For more on this, few my blog post on &lt;a href="https://dev.to/oswinlosper/the-benefits-of-automation-testing-47n1"&gt;benefits of automation testing&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Challenges of end-to-end testing
&lt;/h3&gt;

&lt;p&gt;As saying the goes &lt;em&gt;in the perfect world&lt;/em&gt;, I think we all want that, but we do live in the real world. With that everything that sounds good also does have its flaws, and its no different for automation testing either, as much as we want it to solve all our testing problems, it doesn’t come with its own sets of challenges. It's important that, when you do start your automation journey that you understand the challenges and have plans in place to fix them.&lt;/p&gt;

&lt;p&gt;I have worked with companies that told me, &lt;em&gt;they want to automate everything&lt;/em&gt; without thinking of the challenges that lays ahead and if these challenges are not planned for, your automation dream wil soon turn into a nightmare. &lt;br&gt;
Below are challenges most testers face with end-to-end testing and also a few tips on how to overcome each to make you turn into an E2E testing hero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge #1: Flaky Tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;End-to-end testing has an earned reputation for unstable, flaky tests that fail irregularly. It’s very frustrating, if you run your test suite and everything passes, only to see a test fail for no reason the next day but they passed yesterday and there were no code changes.&lt;/p&gt;

&lt;p&gt;End-to-end testing does consist of a lot of moving parts and needs to validate different components through a test run, it is difficult to isolate whats causing the issue. This inconsistency leads to a lot of lost time trying to figure out the root cause of the flakiness since it’s nearly impossible to replicate the failing scenario. And worse of all, flaky tests leads to teams accepting them, ignoring potential issues and decreasing the value of automation tests.&lt;/p&gt;

&lt;p&gt;The main challenge of tackling an unstable test suite is to find a solution. You can take a few steps to minimise inconsistent tests. Keep in mind there is no &lt;em&gt;one-size-fits all&lt;/em&gt; quick fix for this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep track of test failures:&lt;/strong&gt; On most automated test suites with flaky tests, you’ll often see the same test cases fail. The tests will give you ideas or clues that can help you iron out the instabilities in the application or the test suite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make the most of your testing tools:&lt;/strong&gt; Most end-to-end tools has build in features that can re-run failing tests. For instance, if you run your test against a live API, you will most probably get time-outs, and you don't want these to be marked as failed. For example, TestCafe has a build in feature called quarantine mode, if a test fails it will run the test again and if it passes on the second attempt it will mark it pass or unstable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don’t ignore flaky tests:&lt;/strong&gt; Ignoring a flaky test will not make the problem go away, it will lead to acceptance of flaky tests and this can lead to actual problems being ignored as well. We all would like to have more time in the day, but set time aside for investigate flaky tests before the problem gets worse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge #2: Slow Tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Besides flaky tests, another top complaint is that end-to-end tests are slow and will slow down building times. As mentioned before end-to-end test goes through the entire stack and test every component, both internal and third party. Its just plain unfair to compare end-to-end testing with the speedy unit tests that only test a partial section of your application.&lt;br&gt;
Even with saying that it doesn't make the end-to-end tests go faster, because a slow test suite can drastically slow down the effectiveness of software development and testing teams.&lt;/p&gt;

&lt;p&gt;For instance, a lot teams now rely on successful test runs in the continuous integration system before merging code or deploying new features. Having to wait for these build can grind your work to a stand still.&lt;/p&gt;

&lt;p&gt;Speeding up your tests can rely on different factors, your architecture of your application, any dependencies or third party services and network connectivity to mention a few. Your strategy will vary according to the application. The following are some steps you can follow to speed up your tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mocking and stubbing functionality:&lt;/strong&gt; Most applications these days connect to multiple external services or have to perform complex calculations. You can avoid the overhead of these time consuming functions by using mocks to simulate the behaviour of the functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set up the correct data as needed:&lt;/strong&gt; Your tests can spend too much time setting up the applications initial state and cleaning things up after a test run. Take time to review the best way to ensure your test has what it needs - nothing more and nothing less.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build your test to run concurrently:&lt;/strong&gt; Most end-to-end testing tools like TestCafe, allow you your tests in parallel with one another or use multiple browsers. Your test scenario have to run independently from one another.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge #3: Long-Term Maintenance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One very important aspect of end-to-end testing, is that businesses under estimate the amount of maintenance goes into end-to-end testing. Lot of businesses think, that once you are done with an application feature, the end-to-end testing doesn’t need maintenance, very easy mistake to make but its wrong.&lt;/p&gt;

&lt;p&gt;As you add more testcases to your test suite, over time your team may will begin to struggle to keep the test under control. It will become very difficult to add new test cases without effecting existing ones.&lt;/p&gt;

&lt;p&gt;A mistake many testing teams make is to automate everything and not thinking about the management of the tests down the road. The focus to automate everything, this mindset leads them down a road where the tests become more detrimental than helpful. To avoid falling into this trap, here a few thing to consider before you begin your end-to-end tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Define your test suite structure from the start:&lt;/strong&gt; At the start of your end-to-end journey take the time to plan test suite structure, for example: you directory structure, helper files, page object models and so on. The time you spend in setting these up will pay of in the long run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reorganise as soon as the opportunity presents itself:&lt;/strong&gt; When you feel some of your files or code could be organised in a better way, do it as soon as you can to keep your test suite tidy at all times. It's quicker to refactor and rearrange your tests while you're working on them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Know your tools:&lt;/strong&gt; Knowing what your testing tools can and can't do, this will help shape your decisions on how to write your tests in the best way possible for long-term use.&lt;/p&gt;

&lt;h4&gt;
  
  
  Challenge #4: Demonstrating Value
&lt;/h4&gt;

&lt;p&gt;Like mentioned above, companies under estimate the amount of time and effort needed to implement end-to-end automation testing. Yes, we do have advanced automated testing tools these days. Each project has its own set of needs, so it's not as simple as deciding to build an automated test suite. Teams need to plan their strategies, choose how to allocate resources and find time to start.&lt;/p&gt;

&lt;p&gt;Sadly, many organisations are unaware of how automated testing can help the long term health of their projects. These companies look primarily for a return on their investment. &lt;br&gt;
Since it's difficult to immediately see value of end-to-end testing at the start of a project, it can lead to the organisation abandoning its efforts too quickly without anything to show for it. Also the primary focus is making management loose focus on the long term of their project that they don’t take the time to understand what end-to-end testing is. This leads to management question end-to-end testing value.&lt;/p&gt;

&lt;p&gt;With some early preparation work you can begin to show the benefits of what you creating. If you're in a situation where you feel like you need to produce results and demonstrate the value of end-to-end testing, you can take a few measures to show that your work is helping everyone involved in the project:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make your results visible to the teams:&lt;/strong&gt; Show the entire team that your end-to-end test suite is working by displaying test run results using tools like Slack, emails, dashboards or any other place the team can see them quickly and effortlessly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Make your results visible to the teams:&lt;/strong&gt; Almost all testing tools can generate a well organised report that show how your tests performs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep track of how your tests improve your project:&lt;/strong&gt; Come up with a list of valuable metrics you can measure for the project, like defects found before a release, development velocity and so on. Once you have a list of metrics, take a baseline measurement and see how they improve over time as your end-to-end test suite expands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;End-to-end testing is a vital part of an application. It complements other forms of testing, such as unit testing or functional testing, by providing additional coverage and exercising the system as a whole. An end-to-end test can uncover issues that other isolated tests might not expose and works best if you have an application with different services interacting with each other.&lt;/p&gt;

&lt;p&gt;However, the total amount of coverage provided by end-to-end tests also means increased complexity in managing them. The tests can be unstable and slow, requiring extra attention to keep them running smoothly. It's also challenging to demonstrate immediate value since they take longer to put into action. By following the tips listed in this article, you'll reduce these issues and provide a boost in quality across the entire project. &lt;/p&gt;

&lt;p&gt;Automating end-to-end tests can be tricky and hard to show your organisation that they're working. You'll need more time to plan, implement and execute. Once running, you'll also have to ensure they're working for your needs instead of slowing everyone down. But when done right, these tests will save your team countless hours of manual testing and make your application and team better for it.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Maintaining Automation Tests</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Fri, 28 Jan 2022 05:19:17 +0000</pubDate>
      <link>https://dev.to/oswinlosper/maintaining-automation-tests-3bi0</link>
      <guid>https://dev.to/oswinlosper/maintaining-automation-tests-3bi0</guid>
      <description>&lt;p&gt;By now most companies (hopefully) must have automation testing or is in the progress to implement automation testing to their project. The benefits of automation testing is clear, refer to my article about, Benefits of Automation Testing. &lt;/p&gt;

&lt;p&gt;Automation testing testing will help your organisation build better software quickly and efficiently, regression bugs will be found quickly. If automation testing is implemented correctly, it will allow companies to ship new features or new products to clients much more frequently and with more confidence.&lt;/p&gt;

&lt;p&gt;However, most of those benefits rapidly decrease or even goes away if you don’t take the time to maintain your tests.&lt;/p&gt;

&lt;p&gt;Maintenance has to be part of your automation suite, unless your codebase never changes you will have to keep on working and maintain your automation tests, in order for it to keep up with latest code as you applications evolves. Work that is been done during the software development process, will effect your existing tests in one way or another. Automation engineers might have to adjust existing ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why maintaining your Automated Tests is important
&lt;/h3&gt;

&lt;p&gt;If you do maintain your automation tests, it will reduce the risks and difficulties for everyone involve on the project. Tests that are not kept up to date increase the possibility of false positives, flakiness and slow test runs. These problems will slowly compound until it eventually reaches a point that its so much and no one either has the time to fix them or no one wants to deal with them. This is where a lot of companies lose trust in automation testing and test become a lot less valuable and is more of burden.&lt;/p&gt;

&lt;p&gt;Flipping the switch to a well-maintained test suite. It can help developers and testers to deal with inevitable test automation issues that pop up. Tests will be easier to follow, update and to expand. If tests does fail due to a false positive or because of flakiness, it will take much less time to fix the problem. Well maintained test suites can also have additional benefits across a company. Tests can become a good source of documentation about the project self. New developers and testers can see how the project is supposed to run and behave, help with onboarding quicker.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy ways to maintain your automated tests
&lt;/h3&gt;

&lt;p&gt;Maintaining your automated test suite doesn’t have to be an endless and exhausting task. &lt;/p&gt;

&lt;p&gt;The best way to keep a high level of quality in your automation strategy is to have a mindset of maintainability while working on the tests. You might get away with building your test suite fast and deal with maintenance later, but it’s always more manageable while you’re in the middle of the work. &lt;/p&gt;

&lt;p&gt;Creating an organised test suite from the start will save countless hours and plenty of frustration in the future. The following tips will help you keep your testing work organised and tidy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Only test what is needed
&lt;/h3&gt;

&lt;p&gt;The most common mistake made by companies is that they try to replace manual testers and therefor try to automate every possible thing. As good of an idea it might sound like, its not. It doesn't mean because you can automate most of your testcases, you should.  Some test cases don’t provide enough value to invest the time needed to write and maintain.&lt;/p&gt;

&lt;p&gt;Every test that is added to a test suite, requires additional time and resources and the more tests you add the more additional risk and maintenance are required. When new test are added it will also add to total execution time of test runs.&lt;/p&gt;

&lt;p&gt;The more tests your have, the more you and your team will need to maintain your test suite. Best is to keep your automate test suite lean to get the most out of each test run&lt;/p&gt;

&lt;p&gt;If you’re not clear about what your team should focus on testing, be on the lookout for these places in the application under test:&lt;/p&gt;

&lt;p&gt;Features or parts of an application that often break for users: Focus on parts of your application that have a high defect rate, this can increase your applications quality.&lt;/p&gt;

&lt;p&gt;Journeys that are difficult to test manually: Test cases sometimes can have very long journey and this can be 'boring' for manual testers and things might slip through. Automate long journeys to avoid human error.&lt;/p&gt;

&lt;p&gt;Features that is critical for business rules: It’s very important for areas that contain high value business logic and values to work reliable, to automate these and set up alerts or reports to notify if something goes wrong.&lt;br&gt;
Split your test journeys in to small test cases.&lt;/p&gt;

&lt;p&gt;Testing like integration or end-to-end testing, allows you to automate long test journeys with steps from start to finish, and we all know we want to automate everything or as much as we can. &lt;/p&gt;

&lt;p&gt;And it is a good idea to cover as much as you can, but also keep in mind, to many long test will make your test suite unreliable and difficult to fix.&lt;/p&gt;

&lt;p&gt;In automation all steps you take to run a test has the potential to fail, whether is because of a timeout (if you run against a live api), a change in the application or a unexpected problem. The more steps in a single test makes it more likely to fail. You might regret writing a test that has to many checks at certain spots and figuring out what went wrong becomes a time-consuming process.&lt;/p&gt;

&lt;p&gt;Instead of trying to long tests, focus on keeping your test small and specific to what you want to test. If you have shorter tests, it will be easier to debug and fix if needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't repeat yourself
&lt;/h3&gt;

&lt;p&gt;A very important skill for test automation engineers is to to minimise and eliminate any redundancy throughout the codebase&lt;/p&gt;

&lt;p&gt;Most developers are familiar with the Don't Repeat Yourself concept, that states, duplication in logic should be eliminated. I am a believer that this concept should be applied to automation testing as well. However a lot of companies are not taking up this approach because automation testing code is not treated as production code because its not client-facing.&lt;/p&gt;

&lt;p&gt;If you have the same set of code twice in your suite, it will slow your team a lot, especially if changes are required on all of those lines. This is a also one of the main reasons that tests can be unreliable and that your test suite is not scalable. So the more re-usbale code you have - you can make a change in one spot and it will fix the issue through out your suite.&lt;/p&gt;

&lt;p&gt;To avoid the headaches and hassles caused by code duplication, you should build your test suite keeping the DRY Principle in mind.&lt;/p&gt;

&lt;h3&gt;
  
  
  Remove test that are doesn't bring any value
&lt;/h3&gt;

&lt;p&gt;Software applications and test suites are living, breathing system. The codebase changes frequently and many reasons, like new feature getting implemented and older feature are being removed, to mention a few. &lt;br&gt;
Changes in an application wont live forever, and it’s the same for test automation. Test can eventually outlive their usefulness and weigh down the rest of the tests, often showing up in the form of a sluggish and broken test suite.&lt;/p&gt;

&lt;p&gt;Many automation testers dislike deleting tests from their codebase, especially tests that they’ve written and business also plays a part in this. Sometimes they focus more on test coverage rather than the value of the tests.&lt;/p&gt;

&lt;p&gt;Test automation engineers feels a certain closeness to the thing they created and don't want to let go, even when its clear a test doesn't bring value anymore. Instead of removing the test they prefer to comment it out or mark it as pending, hoping the test will somehow make a return and bring value to the test suite in future again.&lt;/p&gt;

&lt;p&gt;Below are a few good test that qualify for removal from your test suite&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test that is covering redundant scenarios:&lt;/strong&gt; If you have test cases that does have long flows to complete, you may not need dedicated test cases for them. For example, if you user journeys included authentication with a login page, there is no need for specific login test case&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tests that cover soon-to-be deprecated functionality:&lt;/strong&gt; If there are plans to remove certain functionality within a system, it's a good idea to begin removing test cases that is related to that functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Low-value functionality that can be tested manually:&lt;/strong&gt; Many applications have sections that, while necessary to verify occasionally, aren't as essential to ensure they work at all times. Some examples are submitting "Contact Us" forms, ensuring static pages load properly, and checking content for localisation.&lt;/p&gt;

&lt;p&gt;Deleting old test doesn’t mean that you work was not helpful to a project. It means that the project has evolved (which is good) and that the test suite should also evolve with the project. If you notice at anytime that automated test is no longer helpful or doesn’t bring any value, delete it and do not look back, it will improve the performance of your test suite and keep your test suite is good spot and maintenance will also be much more easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fix Broken Tests, don’t delay
&lt;/h3&gt;

&lt;p&gt;Im sure this goes for every daily activity out in the world, delaying until you get time to fix something, however, in the real world, you will never get time.&lt;/p&gt;

&lt;p&gt;Ignoring broken test and to continue adding new test cases on top of them is one of the biggest mistakes teams make with their automatic efforts.&lt;/p&gt;

&lt;p&gt;When deadlines are coming into the discussion, companies prefer to stay on course to meet the deadline to complete their milestones rather than taking the extra time to fix the broken tests. While the team might think they are speeding up their workflow, they are actually doing the opposite.&lt;/p&gt;

&lt;p&gt;Poor code begins to slide into the code base and then the quality starting to slip, slowing down their future efforts for automation more than if they had taken the extra time to fixes the issues promptly. &lt;/p&gt;

&lt;p&gt;One of the important keys to a highly maintainable test suite is to fix any problems quick instead of dragging the issue out. Fixing a flaky test quickly that someone pushed into the code base is much more easier than fixing a flaky test six months down. &lt;/p&gt;

&lt;p&gt;You will most probably forget about details of that test case and spend a few hours just trying research what the test case was about, then you have to switch context back to your current work flow. It can leads to laziness once a team decide to live with flaky tests in their test suite and it almost impossible to change that state of mind once you start.&lt;/p&gt;

&lt;p&gt;If your team is in the habit of ignoring issues in your test suite while adding new functionality, even if there is flaky tests, put a stop to it immediately and change the mentality as soon as possible. Try to establish a work flow cycle where fixing current flaky tests is a priority over adding new ones just for the sake to increase visibility.&lt;/p&gt;

&lt;p&gt;This doesn’t mean that if a test breaks, the whole team needs to switch focus and fix the broken tests, make sure some is taking responsibility to get the the build back to a stable state quickly and not ignoring or delaying the problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;A successful automation suite, starts with long term maintenance in mind. No matter how much time you invest in automation testing, you and your team needs to plans proper maintenance for your test suite. And as in life doing the small stuff like organising and refactor or cleaning up tests feels like a waste of time but will pay off in the long run. &lt;/p&gt;

&lt;p&gt;Teams that don’t pay attention to writing maintainable tests from the start will soon find out that fixing broken tests six months down the line will waste a lot of time and the wisely leads to companies abandoning the automation project, saying it doesn’t work.&lt;/p&gt;

&lt;p&gt;Maintaining you automated test suite doesn’t have to be a time-consuming process. You can keep your test suite in good condition by planing maintenance and establishing good practices as you go forward with your automation strategy. &lt;/p&gt;

&lt;p&gt;Focus on testing only what’s essential and removing tests when they’re no longer valuable. Organise your tests into logical groups and avoid unnecessary duplication with patterns and techniques like the Page Object Model. If your test suite breaks, fix it before proceeding to prevent the situation from getting worse.&lt;/p&gt;

&lt;p&gt;Keeping your tests lean and tidy will give you the speed and flexibility to tackle problems and improve your test suite with little to no friction. No one is immune to getting test failures due to always-changing applications. But with a bit of care from the start, a well-maintained test suite can help your organisation develop and deliver high-quality applications with ease for years to come.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>testing</category>
      <category>autotest</category>
    </item>
    <item>
      <title>What you need to know to become an automation test engineer</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Fri, 19 Nov 2021 06:45:17 +0000</pubDate>
      <link>https://dev.to/oswinlosper/what-you-need-to-know-to-become-an-automation-test-engineer-52e1</link>
      <guid>https://dev.to/oswinlosper/what-you-need-to-know-to-become-an-automation-test-engineer-52e1</guid>
      <description>&lt;p&gt;QA used to consist of two types of testing, namely, manual testing and automation testing.&lt;/p&gt;

&lt;p&gt;Manual testers main task was to do regression testing while automation tester was only focussed on writing code and scripts.&lt;/p&gt;

&lt;p&gt;The connection between the two was a rare thing, expect when the automation engineers wanted to explore additional test cases to automate.&lt;/p&gt;

&lt;p&gt;However in the world we live today, its different. Yes, both manual and automation testing is still important, I am still of the believe that automation is not there to replace manual testing, however the gap between manual and the automation world is getting smaller and smaller.&lt;/p&gt;

&lt;p&gt;Its important for manual and automation to work together, but most importantly, to make sure that both sides understands each other tasks. This is a strategy we implement at my current workplace, Wyzetalk, ever since we switched to this approach, workflow has been much more beneficial for all parties involved.&lt;/p&gt;

&lt;p&gt;When applying for new jobs, some companies requires that candidates to have experience in both manual and automation testing. This leaves the questions, where do I start to become a automation tester? What skills do I need for this?&lt;/p&gt;

&lt;p&gt;I was in the same boat years ago. I started of as a web designer, had no experience in automation testing. Thankfully, like all problems, it not a hard problem to solve, however it requires action on your part.&lt;/p&gt;

&lt;p&gt;There are 2 main focus areas to become a successful automation engineer. Keep in mind that requirements can depend on the role and can have additional requirements, but below is a list of basic requirements.&lt;/p&gt;

&lt;h4&gt;
  
  
  Development Languages
&lt;/h4&gt;

&lt;p&gt;Number one, you need to know a specific language. Like mentioned above, this can depend on the role you are applying for, but most of the time when you know the popular languages like Java or Javascript, it should be enough&lt;/p&gt;

&lt;p&gt;You dont have to be a experienced developer but it would be good if you have enough knowledge to write automation tests and scripts. I would recommend the basic fundamentals.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Classes, objects, and methods&lt;/li&gt;
&lt;li&gt;Inheritance&lt;/li&gt;
&lt;li&gt;Strings, Integers&lt;/li&gt;
&lt;li&gt;Interface concept and how to use it&lt;/li&gt;
&lt;li&gt;Polymorphism&lt;/li&gt;
&lt;li&gt;Arrays (single and multi-dimensional)&lt;/li&gt;
&lt;li&gt;Override and overload&lt;/li&gt;
&lt;li&gt;Access modifiers&lt;/li&gt;
&lt;li&gt;Date class&lt;/li&gt;
&lt;li&gt;Role of constructors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These should be enough to start writing automation code.&lt;/p&gt;

&lt;h4&gt;
  
  
  Framework for UI Automation testing
&lt;/h4&gt;

&lt;p&gt;Unit testing allows us to verify that different modules of our application are operating in the correct manner, but we also need to test applications from a UI end-to-end point.&lt;/p&gt;

&lt;p&gt;In a previous article I wrote about, I dive deeper into what you must consider in selecting a automation tool, below is a brief breakdown of breakdown in performing tests on a UI framework:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a new project in your favorite IDE&lt;/li&gt;
&lt;li&gt;Setting up dependencies in a build management system&lt;/li&gt;
&lt;li&gt;Creating a base class for the framework&lt;/li&gt;
&lt;li&gt;Setting up global properties for your project&lt;/li&gt;
&lt;li&gt;Implementing the page-object model for your project&lt;/li&gt;
&lt;li&gt;Writing test cases for your project&lt;/li&gt;
&lt;li&gt;Grouping your test cases&lt;/li&gt;
&lt;li&gt;Wiring up a tool for generating reports and screenshots for failed test cases&lt;/li&gt;
&lt;li&gt;Running your test cases efficiently by using an automation tool&lt;/li&gt;
&lt;li&gt;Analyzing the result of executed test cases&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;After you finished the framework, one important thing that people are not doing in the automation testing world, is to manage the automation suite, this must to be done in order for the automation tests to bring value and longevity to the quality of your project&lt;/p&gt;

&lt;p&gt;The specifics of writing UI automation code would depend on a platform (e.g mobile or desktop) and other factors, but this is basically what you need to focus your attention to.&lt;/p&gt;

&lt;p&gt;In a nut shell, write test and report on results of test cases.&lt;/p&gt;

&lt;p&gt;I hope this article will give you a better understand of what you need to do to make the switch to be a automation test engineer.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>testing</category>
      <category>beginners</category>
      <category>automationengineer</category>
    </item>
    <item>
      <title>Automation Testing Types</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Fri, 29 Oct 2021 10:19:24 +0000</pubDate>
      <link>https://dev.to/oswinlosper/automation-testing-types-328h</link>
      <guid>https://dev.to/oswinlosper/automation-testing-types-328h</guid>
      <description>&lt;p&gt;In the software testing world, there are two types of testing — manual and automated testing.&lt;/p&gt;

&lt;p&gt;The aim for both is to execute test cases and take the outcome and compare with them expected results.&lt;/p&gt;

&lt;p&gt;Manual testing is the type of testing that requires more human interactions to make sure is doing what it is supposed to do&lt;/p&gt;

&lt;p&gt;Manual testing works very good for specific tests cases, but using manual testing takes up a lot of time and has proved to be ineffective over time when a human needs to do the same stuff over and over again.&lt;/p&gt;

&lt;p&gt;In the software development world we life in today there are consistent and successive delve-meant cycle and deployments going out, all of this requires a repetitive tests that needs to run to ensure new updates doesn’t break the system.&lt;/p&gt;

&lt;p&gt;This is where automation testing comes in. It takes the repetitive side away from the human. Since automation has became a very important step in the development life cycle, many different types of automation has been introduced and with this many robust testing tools have allowed automation testers to simply write new scripts and replay test-suites over and over. &lt;/p&gt;

&lt;p&gt;This goes with saying, it frees up a lot of time, valuable resources and boost business productivity.&lt;/p&gt;

&lt;p&gt;Below is a list of the most popular types of automation tester that any testers should know and be well prepared for it before starting your automation journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  Different Types of Automation Tests
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Type of testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are 2 main types, functional and non-functional:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Functional:&lt;/strong&gt; is a type of software testing that validates the software system against the functional requirements/specifications. The purpose of Functional tests is to test each function of the software application, by providing appropriate input, verifying the output against the Functional requirements&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-functional:&lt;/strong&gt; is defined as a type of Software testing to check non-functional aspects (performance, usability, reliability, etc) of a software application. It is designed to test the readiness of a system as per nonfunctional parameters which are never addressed by functional testing. A good example of non-functional test would be to check how many people can simultaneously login into a software.&lt;/p&gt;

&lt;p&gt;Below is a list of the most popular types of automation tester that any tester should know and be well prepared for it before starting your automation journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smoke Tests:&lt;/strong&gt; Smoke tests are a type of Functional test that only covers the most important features of software to ensure that it could be further tested without “catching fire,” hence the name Smoke Tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integration Tests:&lt;/strong&gt; Integration tests take all the individual pieces and functionalities of software and test them together as a whole to guarantee smooth operation between all of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regression Tests:&lt;/strong&gt; Regression tests run a combination of Functional and Non-functional tests to check if the software has “regressed” after changes has been made&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Tests:&lt;/strong&gt; Security tests cover Functional and Non-functional tests that screen the software for any vulnerabilities. They reveal weaknesses and any potential exploit in a system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Tests:&lt;/strong&gt; Performance tests are often Non-functional tests that help testers evaluate criteria like responsiveness and stability as the software handles load and stress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Acceptance Tests:&lt;/strong&gt; Acceptance tests are Functional tests that determine how acceptable the software is to the end users. This is the final test a solution must pass before it could be released.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase of testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unit:&lt;/strong&gt; As the name implies, this phase the individual components of a software. Unit testing is the very first phase of testing, usually done by developers before handing the software off to testers, but it could also be automated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API:&lt;/strong&gt; Application Programming Interface (or API for short) acts as the “middleman” between all of the systems that your software uses, and thus, is then tested after the development process to ensure smooth integration between systems and software. This phase of testing is fairly flexible; it could be conducted either before or after the UI phase, this can be done by either the development or the testing team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI:&lt;/strong&gt; Last but not least, User Interface (UI testing) is what the end users see and interact with and, this is usually tested at the very end of the process. This phase of testing is run by testers after the UI of the application has been drafted for the most authentic replication of user experience possible. This is where the business logic of the software is examined and optimised.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Selecting a automation tool</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Fri, 22 Oct 2021 07:16:26 +0000</pubDate>
      <link>https://dev.to/oswinlosper/selecting-a-automation-tool-4l46</link>
      <guid>https://dev.to/oswinlosper/selecting-a-automation-tool-4l46</guid>
      <description>&lt;p&gt;Today there are lots of different options to choose from, be it a laptop, phone or tablet. In the world we live in today, we have so many options that sometimes the choices we make are not necessarily the right ones but the popular ones. For automation tools it's no different.&lt;/p&gt;

&lt;p&gt;Depending on what your needs are, your automation testing tool must be compatible with many different aspects of your team and company.&lt;/p&gt;

&lt;p&gt;The best automation tool available on the market does not guarantee the best outcome for your team, it has to be the right one.&lt;br&gt;
Importance of Test Automation&lt;/p&gt;

&lt;p&gt;I'm seeing a lot of different opinions on whether automation testing is needed or whether manual testing is falling behind. Regardless of the opinions, I think the importance of automation testing is still sometimes overlooked because companies are not adopting proper procedures for it.&lt;/p&gt;

&lt;p&gt;In the world we live in, the software market demands good quality applications at speed. With that being said the application must reach production in a shorter time, but the quality needs to be better. The growing demand has added to the growth of automation tools by allowing QA teams to execute faster and more accurate test cases.&lt;/p&gt;

&lt;p&gt;Test types that require the same repetitive actions, like regression testing, need to be automated. &lt;/p&gt;

&lt;p&gt;Regular changes in software will increase the cost in terms of time and manual testers to run these tests manually all the time. Therefore, automating tests is the smarter and more efficient choice.&lt;/p&gt;

&lt;p&gt;Choose the right tool for you, not the best.&lt;/p&gt;

&lt;p&gt;Regardless of the advantages test automation has, they don't work the same for all companies or projects. Choosing the wrong tool might be detrimental for you in regards to the time, effort and financial resources wasted.&lt;/p&gt;

&lt;p&gt;Choosing the right tool takes time and effort at first, but it is a must for your team to automate tests efficiently in the long run. The success of automation testing lies in identifying the right tool for different needs and demands.&lt;/p&gt;

&lt;h4&gt;
  
  
  Types of Automation Testing Tools
&lt;/h4&gt;

&lt;h6&gt;
  
  
  Open-source automation tools
&lt;/h6&gt;

&lt;p&gt;These tools are free platforms that allow users to access and use their source code. Users can opt to fully adopt the code or modify it to suit their testing needs. This type of tool is free of charge and developed by the community. Open-source tools are the top choice for many automation testers with a programming background due to its free access and the ability to customize advanced test cases.&lt;/p&gt;

&lt;h6&gt;
  
  
  Commercial automation tools
&lt;/h6&gt;

&lt;p&gt;Commercial tools are produced to serve commercial purposes and usually distributed via subscription plans. Users must purchase a paid license to use the software. Compared with open source software, this kind of tool usually has more premium features and thorough customer service that completes the whole testing process for companies or enterprises.&lt;/p&gt;

&lt;h6&gt;
  
  
  Custom framework
&lt;/h6&gt;

&lt;p&gt;There are specialised projects that a single open-source software or fixed commercial testing tool cannot fulfill the requirements. They are mainly due to differences in their testing processes and testing environments. In such cases, teams need to develop customized software on their own. The custom framework is much more complicated than the two other solutions and can be deployed by technical experts.&lt;/p&gt;

&lt;h4&gt;
  
  
  How to Select the Right Automation Tool for Your Project?
&lt;/h4&gt;

&lt;h6&gt;
  
  
  Get to know your needs.
&lt;/h6&gt;

&lt;p&gt;Before you proceed with the selection process, consider whether test automation is the right direction for your team.&lt;/p&gt;

&lt;h6&gt;
  
  
  So when is Test Automation necessary?
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;When there are a lot of repetitive test cases to be done.&lt;/li&gt;
&lt;li&gt;When there are frequent regression testing&lt;/li&gt;
&lt;li&gt;When the team has to simulate a vast number of test cases in a quick time frame.&lt;/li&gt;
&lt;li&gt;When the UI is stable&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  The criteria for Automation Testing Tool
&lt;/h4&gt;

&lt;h6&gt;
  
  
  Does your team possess the necessary skills to use the tool?
&lt;/h6&gt;

&lt;p&gt;Automation testing is much more technical than manual testing. Many of the automation tools, especially the open-source types, does require some level of coding knowledge to write and execute test scripts.&lt;/p&gt;

&lt;h6&gt;
  
  
  What features to look for?
&lt;/h6&gt;

&lt;p&gt;Requirements will vary from team to team, there are some key factors that you should always take into consideration when choosing a suitable automation tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Supported platforms&lt;/li&gt;
&lt;li&gt;Applied application under tests&lt;/li&gt;
&lt;li&gt;Development languages&lt;/li&gt;
&lt;li&gt;CI/CD integration capabilities&lt;/li&gt;
&lt;li&gt;Reporting functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  How difficult is script maintenance and re-usability?
&lt;/h6&gt;

&lt;p&gt;A significant factor that escalates the total cost for test automation is script maintenance. Pre-written scripts in automation testing are fragile by nature. The ideal automation tool should come with capabilities to reduce such effort. On the other hand, script re-usability saves you and the team a great deal of time for similar test cases as you can reuse test scripts.&lt;/p&gt;

&lt;h6&gt;
  
  
  How are the integration capabilities?
&lt;/h6&gt;

&lt;p&gt;The selected automation tool must be able to integrate to CI/CD pipelines and external platforms to ensure the testing continuity.&lt;/p&gt;

&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;The process of selecting an automation tool can be challenging but rewarding in the end. Once you get the right tool that fits your teams, you will be able to use test automation and get the best results with less resources needed. And Remember, Choose the right tool for you, not the best or popular one. &lt;/p&gt;

</description>
      <category>testing</category>
      <category>automation</category>
      <category>tools</category>
      <category>automationtools</category>
    </item>
    <item>
      <title>Why I Chose testCafe</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Tue, 28 Sep 2021 05:34:09 +0000</pubDate>
      <link>https://dev.to/oswinlosper/why-i-chose-testcafe-4l3c</link>
      <guid>https://dev.to/oswinlosper/why-i-chose-testcafe-4l3c</guid>
      <description>&lt;p&gt;Choosing a framework to run your automation test against can be tricky. This can cause a lot of uncertainty. There are a lot of good tools out there to write and run end-to-end tests.&lt;/p&gt;

&lt;p&gt;Choosing your automation tool does depend on your product or project and what you want to get out of automation testing.&lt;/p&gt;

&lt;p&gt;When I started at Wyzetalk, it was no different. I had to go through the same as a lot of automation testers, R&amp;amp;D, the right approach for automation testing and which tool will bring the most value.&lt;/p&gt;

&lt;p&gt;One of our main goals for choosing a tool was for everybody in QA and in the Dev team to pick and run tests in multiple browsers and had to be open source.&lt;/p&gt;

&lt;p&gt;One of the challenges we faced was, Wyzetalk offers a white label product, meaning the same set automation tests need to run for all versions of our products.&lt;/p&gt;

&lt;p&gt;The tool I found that checked all the boxes was TestCafe&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v-YuvJ_U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4m7uozb3fx4u91utmls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v-YuvJ_U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z4m7uozb3fx4u91utmls.png" alt="why is chose testCafe"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During the time using TestCafe, it has proven to be a great addition to our testing. Below are a few reasons why I chose TestCafe as our end-to-end testing framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Free and open-source&lt;/strong&gt;&lt;br&gt;
testCafe is an open-sources project that is owned by DevExpress and its free (Let's be honest, business would like that)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Selenium WebDriver needed&lt;/strong&gt;&lt;br&gt;
Selenium is the standard when it comes to testing automation for web apps. However , it does come with issues. It lacks necessary features like automatic waits for dynamic content or needs extra set up for mobile browser testing. TestCafe runs its tests via a web proxy, and the tool contains tons of features out of the box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tests are written in JavaScript&lt;/strong&gt;&lt;br&gt;
If you're building a modern web application, your team is most probably familiar with JavaScript. With TestCafe, your entire team can write and maintain the end-to-end test suite without having to learn a new programming language.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lots of built-in functionality&lt;/strong&gt;&lt;br&gt;
As mentioned, TestCafe has a ton of features ready to use without additional setup. Among the main features it includes are the ability to test with different browsers and configurations, run tests concurrently, and independently manage user roles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser Support&lt;/strong&gt; &lt;br&gt;
TestCafe detects all browsers running on your machine and provides the option for to use all browsers to run your tests on, because of this, no needs to install and manage web drivers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging&lt;/strong&gt;&lt;br&gt;
UI tests are not easy to create. You have to pick the exact elements to interact with, run the test multiple times, and make changes until you have a reliable test. This means that whatever tool you use should support good debugging methods. TestCafe has you covered in this department.  It has a debug mode where you can continue execution step-by-step to see what happens at each point of the test. You can also open the developer tools to investigate during the test run. There’s also a live mode where browsers remain active while you work on tests. They’ll automatically rerun once you make code changes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reliability&lt;/strong&gt;&lt;br&gt;
If you ask any automation tester who has had experience using Selenium, they will tell you how much time they spent carefully placing the right waiting mechanism in place to ensure tests don’t break. TestCafe has mechanisms for automatic waits for actions, selectors, assertions, page loads and redirects. This leads to more reliable tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running test concurrently&lt;/strong&gt;&lt;br&gt;
Running your test suite concurrently using different browsers. For instance, you can tell TestCafe to run the tests in Chrome and MS Edge at the same time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous integration pipeline integration&lt;/strong&gt;&lt;br&gt;
TestCafe integrates easily with CI providers. Since it doesn’t need you to configure any external web drivers or libraries like Selenium does, the only prerequisite is to have the required browsers installed in the CI server.&lt;/p&gt;

&lt;p&gt;There are other tools out there with these features e.g, the Cypress framework and Nightwatch. It all depends on what you need for your company or project so take the time to explore alternatives.&lt;/p&gt;

&lt;p&gt;Below is a demonstration on how easy it is to get testcafe up and running&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TestCafe is using javascript for its primary language. I would recommend taking a basic javascript course before starting.&lt;/p&gt;

&lt;p&gt;Before we start, you do need to have a few prerequisites. Your dev environment must have node.js and npm.&lt;/p&gt;

&lt;p&gt;Before beginning your end-to-end testing journey, you need to decide where you want your source code to be, you can either choose to have it in the same repo as your project or inside a separate repo. There is no right or wrong answer here, it all depends on how your team works.&lt;/p&gt;

&lt;p&gt;So, to get started you run, npm install testcafe (please note, node.js and npm must be installed). This command will install testcafe inside the directory of your choice. &lt;/p&gt;

&lt;p&gt;You can install testcafe globally by running npm install -g testcafe&lt;/p&gt;

&lt;p&gt;And there you go testCafe is installed, now we can start writing tests&lt;/p&gt;

&lt;p&gt;To start, let's do a basic test, we will load &lt;a href="http://www.oswinlosper.co.za"&gt;www.oswinlosper.co.za&lt;/a&gt; and see if an element exists on the website. &lt;/p&gt;

&lt;p&gt;Open the file, and inside we'll write our first test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Selector } from 'testcafe';

fixture `Oswin Home Page`
   .page `https://wwww.oswinlosper.co.za`;

test('Check if main page loads', async t =&amp;gt; {
   const header = Selector('header')
       .withText('Why I Chose TestCafe.')
   await t

   .expect(header.exists).ok();
});

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Let's break the test down:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;import { Selector } from "testcafe": In the first line of our test, we're importing the Selector function provided by TestCafe. This function is one of the main functions you'll use for identifying elements on the current page. You can use the Selector function to get the value of an element, check its current state, and more. &lt;/p&gt;

&lt;p&gt;fixture("Oswin Home Page"): TestCafe organizes its tests with fixtures. This function, automatically imported when running the test, returns an object used to configure the tests in the file. The object is used to set the URL where the tests begin, run hooks for test initialisation and teardown, and set optional metadata. Here, we're setting a descriptive name for the tests to help identify the group during test execution.&lt;/p&gt;

&lt;p&gt;page("&lt;a href="https://www.oswinlosper.co.za/%22):"&gt;https://www.oswinlosper.co.za/"):&lt;/a&gt; The page function allows you to specify the URL that loads when each test run starts. &lt;/p&gt;

&lt;p&gt;test("Check if main page loads", async t =&amp;gt; { ... }): The test function provided by TestCafe is a function that has two main parameters - the name of the test, and an async function where we'll write our test code. The async function from the parameters includes a test controller object, which exposes the TestCafe Test API.&lt;/p&gt;

&lt;p&gt;const subtitle = Selector("header").withText(...): Here we're using the Selector function previously mentioned. We're using the function to tell TestCafe to look for an 'header' element on the page that contains specific text. In this example, this is the heading of this article. We'll store this select in a variable to use it later in our assertion.&lt;/p&gt;

&lt;p&gt;await t.expect(header.exists).ok(): Finally, we have our assertion for the test. This assertion checks that the selector we specified previously exists on the page using the exists function on the selector. We verify that the test passes with the ok() function, which is part of TestCafe's Assertion API.&lt;/p&gt;

&lt;p&gt;It's important to have an async function for the test. This allows TestCafe to execute its test functions without having to wait for a page to load or an element to appear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run the test&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can run the test from a terminal by calling a single command where you specify the target browser and file path.&lt;br&gt;
TestCafe allows you to run the tests on more than one browser, we'll just run it on Chrome. All you need to do to run the test is use the following command:&lt;/p&gt;

&lt;p&gt;testcafe chrome test.js&lt;/p&gt;

&lt;p&gt;When you run the command, TestCafe will open up your browser and set up the web proxy for the test to run. It will open up the website and execute the steps inside the test. The results will then be displayed in the terminal&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aXzkXUZG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnaefmb4aduf4pta3byw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aXzkXUZG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qnaefmb4aduf4pta3byw.png" alt="result display in terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cleaning up test by re-using code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With time, as your test suite grows bigger and bigger, selectors will take up a large amount of space in your tests.&lt;/p&gt;

&lt;p&gt;The example above is fairly simple, so keeping selectors inside the test won't be a problem, but as the tests get bigger with more features this can become a hindrance.&lt;/p&gt;

&lt;p&gt;Another issue with Selectors, you have to use them in multiple places. For example, if the front end devs make a change to an element, you will have to change selectors everywhere, even if the selectors are used in different files and that can be a very painful process.&lt;/p&gt;

&lt;p&gt;To handle these issues, TestCafe recommends using the Page Model pattern.&lt;/p&gt;

&lt;p&gt;The Page Model pattern allows you to abstract the selectors from the tests. Instead of writing the selector in the test, you define the selector separately and refer to it when needed. This way, you can keep all of your selectors in one place. If the element changes in the application, you only need to update it in a single place.&lt;/p&gt;

&lt;p&gt;It also helps improve the readability of your tests. For example, instead of writing a selector for an input field like input[type='text'], you write a more descriptive name like loginPageModel.emailInput. Anyone reading the test should have a clear idea about that element immediately without having to look it up.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Selector } from "testcafe";
class HomePageModel {
  constructor() {
    this.header = Selector("header").withText(
      "Why I chose TestCafe"
    );
  }
}

export default new HomePageModel();

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code is a plain JavaScript class. Inside the class constructor, we'll create class properties for each element selector that we want to use. These properties are what we'll access inside our tests, as we'll see soon. Finally, after defining our class, we export a new instance of the class, so it's ready to use in our tests.&lt;/p&gt;

&lt;p&gt;Once we create our page model class, let's put it to use in the home page test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
import homePageModel from "./page_models/home_page_model";

fixture("Oswin Losper Home Page")
.page(
  "https://www.oswinlosper.co.za/"
);

test("Check if main page loads", async t =&amp;gt; {
  await t.expect(homePageModel.header.exists).ok();

});

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There was a bit of cleanup that happened in this test. The main change was importing our newly created page model class, creating a new instance set as homePageModel.&lt;/p&gt;

&lt;p&gt;With this in place, we can access our selectors through the page model's properties. The code where the selector was previously specified is gone, and replaced, we call the selector with homePageModel.header. Since we're no longer calling the Selector function,  the import function that we had previously is gone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article is a quick summary of how easy and useful it is to install TestCafe and to run end-to-end tests using TestCafe. No need to install multiple dependencies.&lt;/p&gt;

&lt;p&gt;As for writing tests, it's straightforward. The example above barely scratches the surface of what TestCafe can do. It's a powerful tool that has a lot more functionality. Some of the more useful functions are below:&lt;/p&gt;

&lt;p&gt;Running your tests in headless mode (when running in a pipeline). Chrome and Firefox allow you to run TestCafe tests in headless mode, meaning that the browser runs without any UI. This functionality is crucial for running tests on a continuous integration service, where there's no graphical interface.&lt;/p&gt;

&lt;p&gt;Lots of different actions for interacting with your application&lt;/p&gt;

&lt;p&gt;TestCafe has many useful ways to debug tests, like taking screenshots and videos, client-side debugging using the browser's developer tools, and pausing tests when they fail so you can interact with the page for investigation.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>automationtesting</category>
      <category>testing</category>
      <category>testcafe</category>
    </item>
    <item>
      <title>The Benefits of Automation Testing</title>
      <dc:creator>Oswin Losper</dc:creator>
      <pubDate>Thu, 16 Sep 2021 12:28:17 +0000</pubDate>
      <link>https://dev.to/oswinlosper/the-benefits-of-automation-testing-47n1</link>
      <guid>https://dev.to/oswinlosper/the-benefits-of-automation-testing-47n1</guid>
      <description>&lt;p&gt;The Benefits of Automation Testing.&lt;/p&gt;

&lt;p&gt;Web applications today are getting more complex on a day to day basis. Stakeholders and clients have much bigger expectations of what web applications need to do these days. The days are gone having simple informative websites. Today a much more complex page with real time responses seems the new normal.&lt;/p&gt;

&lt;p&gt;With that being said, web pages today consist of a lot of moving parts therefore testing needs to be up to date all the time, and this makes end-to-end testing more valuable than ever.&lt;/p&gt;

&lt;p&gt;Bigger web applications means developers  also need to work on test coverage but this mostly takes shape in the form of unit and functional tests, but unit and functional tests usually check certain parts of code in isolated instances. &lt;/p&gt;

&lt;p&gt;But these parts often have to interact with other areas of an application. These kinds of tests won't point out if there's an issue with how two or more parts of the system work together.&lt;/p&gt;

&lt;p&gt;This is where end-to-end testing comes in, they give the confidence that the entire application is functioning and working well together, with all these moving parts, not to mention end-to-end testing can also check that all your third party services are working.&lt;/p&gt;

&lt;p&gt;Usually, manual testers will test the entire application and if any, third party services. But like most applications today, they are big and very complicated and it takes up a lot of time and resources for manual testers, this is where automation testing comes in.&lt;/p&gt;

&lt;p&gt;Keep in mind that automation testing should not replace manual testing, but just regression testing. It's very important to find a balanced testing approach. A balance automation testing approach can free up the manual tester and they can focus and spend their time on other high-value work like exploratory testing.&lt;/p&gt;

&lt;p&gt;Manual testing should be minimized at all costs. Test automation increases overall software development efficiency. I thought I would share some benefits I have picked up along the way in the years of doing automation testing.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Faster Feedback Cycle&lt;br&gt;
With manual testing, feedback on new features can take a while. Automation helps to reduce the feedback cycle. Test automation is very useful because it helps you identify problems or bugs early in the development phase, which increases the team’s efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Team Saves Time&lt;br&gt;
By automating your test it  also improves communication with other departments and product owners who rely on the results of these tests. These departments can easily check reports generated of the automated tests and see what’s happening, and let's be honest, business like to see green on charts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Higher Test Coverage&lt;br&gt;
Manual testing puts a limit on how many tests they can do on a daily basis. Automation allows you to spend time writing new tests and adding them to your automated test suite. This increases your test coverage, so that more features can tested and therefore you will get a higher test coverage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reusability of Test Suite&lt;br&gt;
To start, building your automated test suite is a challenge. But, once you have figured out your suite, it’s very easy thereafter to reuse tests for other use cases or even other projects. The advantage is that you can easily hook up another project or app to your automated test suite.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Faster Time to Market&lt;br&gt;
Newly developed features can be continuously tested and validated with test automation. This reduces the feedback and testing cycle and allows your business to bring products to the market faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Less Stress on QA Team&lt;br&gt;
By implementing an automated testing strategy, you allow your QA team to spend time on tasks other than manual testing. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quickly Determine the Stability of Your Build&lt;br&gt;
Test automation helps you to determine the stability of your build. Often, smoke testing is used to validate stability, but smoke testing is slow and requires manual input from the testing engineer such as setting up databases with test data. The goal is to be able to release a build as fast as possible and automatically validate its stability.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Human Error&lt;br&gt;
Manual testing opens up the opportunity for humans to make mistakes. Especially for complex scenarios, it makes sense to use test automation to avoid mistakes. You can still make mistakes, even with test automation. However, the rate of mistakes is significantly lower when using test automation for your test suite.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>automation</category>
      <category>testing</category>
      <category>automationtesting</category>
    </item>
  </channel>
</rss>
