Blog

Automated Testing versus Manual Testing: Everything You Need to Know

September 29, 2021 / Katarina Rudela

Reading Time: 12 minutes

Everything You Need To Know

Software development increasingly involves a range of testing processes to meet compliance standards while satisfying the expectations of the client and end user. Security protocols, performance and the overall quality of the product all rely on continual and varied testing processes in order to identify bugs and deliver solutions.

As Matthew Lodge observes in his article for the Harvard Business Review, “Writing software requires not just many hours of painstaking work handcrafting millions of lines of code, but also time to test that code. Developers surveyed in 2019 said they spend 35% of their time testing software.”

The testing life cycle, throughout which various testing methods will be deployed, goes through four basic steps:

  1. Test analysis. The initial phase of the testing life cycle determines functional and non-functional requirements, along with any business requirements and technical expectations. Usability, testability, performance and security issues are all outlined, as well as how the project can be scaled and maintained.

  2. Planning and preparation. During this stage, test data and cases, as well as test environment preparations, are conducted. The scope and goals are outlined in a test plan document, as well as the roles and responsibilities of the people involved in running and maintaining the tests.

  3. Executing the test. During this phase, all test cases previously outlined are executed, checking for expected results and iterating new versions to update for fixed bugs and additional features. All tests are tracked through bug reporting so issues are recorded and fixes can be signed off.

  4. Test Closure activities. Test reports encompassing the entire system are finally signed off once all known bugs have been fixed. Typically, a test manager will review these test closures and approve the product for release. Finally, a team review will take stock of what went well or badly, allowing future test cases and automated testing scenarios to be improved.

Software Testing Lifestyle
Figure 1: Software Testing Lifestyle

This testing can be broadly understood in terms of automated testing and manual testing. The former can draw upon an extensive range of tools and processes, each of which can be tailored to test all aspects of a website or application.

Let’s take a closer look at the pros and cons of manual testing and automated testing, as well as some of the key processes involved and the tools and best practices which make sure these tests deliver optimal results.

Manual testing — the traditional approach to testing

Manual testing is the process of testing whereby a human plays the role of the end user for a software product to make sure it performs correctly. Any faults or bugs which are identified during this process are then logged in reports. Usually, manual testing is conducted in line with test plans which are structured around test cases.

Manual Testing
Figure 2: Manual Testing

Advantages of manual testing

  • Better observation and judgement from humans

  • A good option for short life cycle products

  • Delivers a human perspective and feedback on aspects tools can’t analyze

  • Offers a broad perspective with more diverse step execution

  • Great for understanding product usability and assessing user-friendliness

  • Doesn’t require programming knowledge

Disadvantages of manual testing

  • Can be time-consuming, particularly when dealing with numerous tests

  • Can be prone to mistakes or errors

  • More costly than automated testing over time

  • Unsuitable for performance testing

  • Repeatedly executing tests manually is tedious

  • Not suitable for large scale projects


Automated testing — leveraging software for optimal results

Automated testing leverages the power of AI to run scripts and other processes to validate whether or not software is performing correctly. These scripted sequences are executed by testing tools which can be iterated and repeated, and can be set to run continuously. Subsequently, actual outcomes can be compared to predicted or expected outcomes to verify the software is functioning as intended.

Automated Testing
Figure 3: Automated Testing


Advantages of automated testing

  • Significantly faster than manual testing

  • Reduces costs and saves time

  • Can be run continually

  • Doesn’t require human intervention to operate

  • Delivers reliable results

  • Automated testing is more accurate, performing the same steps precisely

  • Allows for reusable test scripts, saving additional time and resources

  • A comprehensive test solution, allowing for a suite of test covering a range of application features

Disadvantages of automated testing

  • More expensive than manual testing in the short term

  • Requires maintenance of test data and scripts

  • Doesn’t deliver “out-of-the-box” feedback and insights gained from manual testing

  • Requires a degree of proficiency to write automation test scripts

  • Test scripts require debugging

How testing works — key processes of automated and manual testing

Custom app and website development requires testing throughout the full development cycle. These tests check for and eliminate errors while allowing developers to improve functionality and fix any bugs.

Testing processes vary throughout, so let’s take a closer look at some of the key processes which incorporate both automated and manual testing.

The test automation pyramid

Test Automation Figure
Figure 4: The Test Automation Figure


Here’s an overview of the three core elements of the test automation pyramid:

Unit testing/component testing

Unit testing is a process typically conducted by the developer of an application which focuses on a specific component or function. Such testing is used to make sure that code is fit for purpose before being deployed while helping the developer to further refine and improve their code. Since unit testing involves small units of code, it saves time and money while making sure any bugs are found quickly, resulting in high quality software and applications.

Acceptance tests (API)

Acceptance testing is a process in which application programming interfaces (APIs) are tested to make sure they satisfy expectations. Functionality, reliability, security and overall performance are all analyzed and validated so the developer knows the application is working as it is intended.

Graphical User Interface (GUI) tests

The final phase of the test automation pyramid involves testing of the graphical user interface (GUI). A series of test cases are automated to make sure the GUI is performing in accordance with its requirements, as well as making sure the application works across a range of devices without any issues. Automated testing tools are capable of capturing mouse clicks and keyboard presses and store them for playback when conducting additional tests.

Other forms of automated testing are also implemented to ensure the overall testing process is as thorough as possible. This additional testing includes:

Static application security testing (SAST)

Static application security testing (SAST) is a method of testing application security which seeks to identify vulnerabilities which render the application susceptible to attack. This is achieved by examining the code to discover software flaws such as broken authentication, cross site scripting and other critical application security risks. You can find detailed resources regarding security risks from the Open Web Application Security Project.

Test-driven development

Test-driven development draws upon unit test cases which are created before developing the actual application code. These test cases then allow the developer to modify or write new code should the tests fail, which prevents the duplication of test scripts. Typically, such tests are precise and made to determine the functionality of specific features and help optimize code to ensure it is resilient.

Built-in testing

Built-in testing is another excellent method of using automated testing to save valuable time and money. Sometimes referred to as a built-in self-test (BIST), such tests allow developers to reduce the test-cycle duration as well as the complexity of the test setup. Built-in testing is self-contained within the software or application being tested, delivering a granular diagnosis and allowing developers to isolate faults.

Integrating manual testing and automated testing into full stack web development

Whether it’s manual testing or automated testing, the test process is an integral aspect of full stack web development. A full stack web development consultant can help businesses to deliver the full process for software and application development, from the design of the user interface to the essential front- and back-end coding. They also bring to the table experience in server, hosting and network environments, delivering a comprehensive package which brings in a variety of manual and automated testing methods to deliver the final product.

​​
Project Management and Fullstack Web Development
Figure 5: Project Management and Fullstack Web Development



Project Management

Full stack web development requires complex coordination of a range of processes, and a consultant will be intimately involved throughout each of these steps. A range of specialists and coders are involved in full stack web development, so project management is crucial to ensure these various roles are coordinated.

Project management also involves setting up schedules and milestones, monitoring timelines and making infrastructure decisions. Other essential skills include making sure everything is compliant before rolling out the website, with testing an integral aspect of this process.

UI/UX Design

An application or website’s end-user experience is defined by the overall user experience design and user interface design (UI/UX), and is a core competency of the full stack web development process. As the UI/UX design is iterated and improved during the course of development, both manual and automated testing is drawn upon to make sure its design represents the end user’s needs.

All interactions between a potential or active customer are thoroughly tested, for instance through task analyses which monitor how users complete a given task in the user flow, or through split testing to ascertain which visual assets (for instance Calls to Action) generate the highest level of responses.

Front-End Development

The development of the graphical user interface (GPI) of a website or application is handled through the front-end development. Here, HTML, CSS and JavaScript coders create the mechanisms through which users interact with the website. Easy accessibility and optimal performance are two of the key factors in front-end development, which can be tested manually to make sure elements such as links and drop down menus are behaving correctly.

A front-end consulting full stack developer will offer full web designing services and work in close contact with the client to assist in the development and offer the necessary support. They will also test the website or application to make sure they function as intended across a range of web browsers and mobile devices.

Back-end Development

Whereas front-end development sits in plain view for the users to experience directly, back-end development relates to the hidden code which drives the engine of the website or application. This is where databases are stored and connected to the web, user connections are managed, and where you’ll find the code which powers the site.

A range of programming languages including Python, Java and Ruby can be drawn upon for back-end development, as well as SQL to run the servers the site operates from. Databases, APIs and servers are all subjected to rigorous testing throughout development, monitoring performance benchmarks and verifying security standards.

Maintaining automated testing — tools and best practices

There are also a range of automated testing tools which can be utilized during development, each of which covers various aspects of the development cycle.

Some examples of automated testing tools include:

  • Test launchers. A tool which eases the configuration and usage of JavaScript API.

  • Structure providers. This tool helps with arranging test files.

  • Display test progress. Testers can use the display test progress to check the progress of a given test and take further action when necessary.

  • Code coverage. With each test covering a portion of code, generating code coverage reports helps to determine how much code a given test covers.

  • Browser controllers. Simulating user actions within a website or application can be achieved through browser controller tools.

  • Visual regression. If developers need to compare a website to previous versions, while also drawing upon image comparison tools and techniques, they can make use of visual regression tools.

  • pHpMyAdmin. This open source tool is used to connect and run queries against databases.

  • HammerDB. Another open source tool used for back-end testing, this allows developers to check load and performance benchmarking to optimize performance.

Automated testing allows developers to make a wide range of assessments throughout the development of a website or application. But failure to maintain automated testing can lead to additional unnecessary work, especially when dealing with an extensive suite of automated tests.

There are a range of practices which help ensure automated testing doesn’t break or otherwise fail to deliver the intended results which developers draw upon for maintenance. For example:

  • Reducing the number of test scripts. It stands to reason: the fewer automated testing scripts there are running, the less likely errors are going to occur. Testing should be prioritized around the most important user paths to make sure they are working correctly. Automated test scripts should represent these critical user paths, which for applications and websites in development can be derived from the user flow outlined by the design team.

  • Omitting tests for features still in beta phase. New features which have been released to limited customers but remain in the beta phase should be restricted to unit testing and integration testing only. Avoid automated regression testing and end-to-end testing as these are likely to break frequently since the product is changing too frequently.

  • Prioritizing embedded tests. Embedded test features allow developers to save time with both test creation and test maintenance, avoiding the need to write repetitive test sequences. Embedded tests allow developers to fix issues in one place before it is applied across the board, saving effort and resources over time.

  • Choosing the right tests to automate. Automating all testing is often impractical and, in some instances, counterproductive, so choosing the right tests to automate is essential. Tests which are best suited to automation include:
    • Repetitive tests ran over multiple builds

    • Tests requiring multiple data sets

    • Tests where human error is more likely

    • Tests which cannot be performed manually

The full stack web development process draws upon these and many other automated testing tools, in conjunction with manual testing techniques, to deliver a product which satisfies both the client and the end user.

About Baytech

Baytech is passionate about the technology we use to build custom business applications, especially enterprise solutions that optimize business processes. We’ve been delivering software solutions in a variety of technologies such as Event Sourcing since 1997. Our success is due to the skill and efficiency of our senior staff, which includes software engineers, project managers and DevOps experts. All of our engineers are onshore, salaried staff members.

We focus on the quality, usability and scalability of our software, and don’t believe in mitigating cost at the risk of quality. We manage project costs by implementing an efficient development process that’s completely transparent and uses the latest standards and practices to build software right the first time. Contact us today to learn more about Event Sourcing and how it can help your business. Find us online at https://www.baytechconsulting.com/contact.