E-Book, Englisch, 276 Seiten
Sambamurthy Test Automation Engineering Handbook
1. Auflage 2024
ISBN: 978-1-80461-967-4
Verlag: De Gruyter
Format: EPUB
Kopierschutz: 0 - No protection
Learn and implement techniques for building robust test automation frameworks
E-Book, Englisch, 276 Seiten
ISBN: 978-1-80461-967-4
Verlag: De Gruyter
Format: EPUB
Kopierschutz: 0 - No protection
This book helps you build a better understanding of test automation and aids in bridging the gap between testing and test automation.
The book has been divided into three sections with the first section focusing on preparing you for testing and test automation fundamentals. By the end of this section, you'll have an understanding of some common automation terms, definitions, and roles. The second section covers the practical implementation of test automation for mobile, web, API and performance. The third section will help you understand how test automation works with CI/CD, and explore the common issues and pitfalls when executing test automation.
By the end of this book, you'll have a better understanding of automation, addressing the common pain points and best practices around test automation.
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
Table of Contents - Introduction to Test Automation
- Test Automation Strategy
- Common Tools and Frameworks
- Getting Started
- Test Automation for Web
- Test Automation for Mobile
- Test Automation for API
- Test Automation for Performance
- CI/CD and Test Automation
- Common Issues and Pitfalls
- Appendix
1
Introduction to Test Automation
One of the indisputable things when building and delivering any product is its quality. End users of a product will not settle for anything less than superior when it comes to product quality. In this chapter, we will dive deep into how testing and test automation help achieve this level of quality in a software product. The first few pages will introduce the reader to testing and test automation. Later in the chapter, we will dive deeper into the subject of test automation.
Quality is everyone’s responsibility in a team, and this chapter provides various practical pointers to help establish that collaboration. Additionally, we will see how automated tests add another layer of complexity to a project and help understand the best practices to accomplish coherent test automation. We will also look at the lineup of development and test automation processes to provide a reliable and bug-free product experience for customers.
Here are the key topics that you will learn by the end of this chapter:
- Getting familiar with software testing
- Introducing test automation
- Exploring the roles in quality engineering
- Familiarizing yourself with common terminologies and definitions
Getting familiar with software testing
Testing as an activity is critical to delivering a trustworthy product and forms a strong foundation for building reliable test automation. So, being a good tester makes you a more effective test automation engineer.
Software testing is an indispensable task in any software development project that is mainly done with the goals of validating the specified product requirements and finding bugs. These bugs can be functional or non-functional in nature. Functional bugs include deviations from the specified requirements or product specifications. Usually, non-functional issues are performance-based or security-based. The primary goals of testing are usually interwoven at multiple levels but can be broken down at a high level as follows:
- Functional: Checking the business functionalities of the software system:
- Compliance: Regulator agencies, government agencies, and more
- Portability: Cross-browser testing, mobile support, and more
- Usability: Support for disabled users
- Maintainability: Vendor support
- Non-functional: Checking the non-functional aspects of the software system, which are never tackled by functional testing:
- Reliability: Operational up time, failovers, business continuity, and more
- Security: Vulnerability, penetration testing, and more
- Performance: Load, stress testing, and more
Now that we have seen a quick introduction to testing, let us understand why testing is so critical.
Knowing the importance of testing
Even though software’s quality is initially laid out by the design and architecture, testing is the core activity that gives stakeholders much-needed confidence in the product. By verifying the behavior of the product against documented test cases, the activity of testing helps uncover bugs and address other design issues promptly. By preventing and identifying bugs early in the software development life cycle, testing helps both the engineering and business teams to increase customer satisfaction and reduce overall operating costs. The valuable insights that the team derives from the repeated testing of the product can be further used to improve the efficiency of the software development process. Therefore, it is imperative to conduct testing for achieving the established goals of a successful product launch.
Tasks involved in testing
Testing is not just executing the documented test cases. There are a multitude of tasks involved in testing, as follows:
- Discussion with product and business about the acceptance criteria
- Creation of a test plan and strategy
- Review of the test plan with the engineering and product teams
- Cross-team collaboration for the test environment setup
- Creation of test cases and test data
- Execution of test cases
- Reporting of test results and associated quality metrics
Depending on the team size, capacity, and structure, some or all of these activities must be performed for a successful release of a software product.
In the following diagram, we get a comprehensive view of all the deliverables involved in software testing:
Figure 1.1 – Testing deliverables
As you can see in the preceding diagram, testing encompasses a wide variety of deliverables resulting from many cross-functional activities. Next, let’s look at some unique demands for testing in the world.
Testing in an world
Unlike a traditional waterfall model, in the Agile world, it is recommended that each user story or feature has the right balance of manual and automated tests before calling it . This arguably slows down the team, but it also drastically reduces the technical debt and improves code quality. You will notice that scaling the software becomes easy, and there is a significant decrease in reworking as the automated tests increase. This saves huge amounts of time for the engineering team in the long run. Another common occurrence in an Agile setup is developers writing automated tests. Usually, developers own unit tests, and quality engineers write other types of tests. Sometimes, it is productive for the developers to write automated test code while the quality engineers focus on other testing tasks. One of the most important takeaways from the Agile world is that quality is everyone’s responsibility on the team. Test engineers keep the communication and feedback going constantly between the product and the software engineers, which, in turn, results in an excellent team culture. This also opens up early discussions on the necessary tools and infrastructure needed for testing.
Since the Agile environment aims to deliver the simplest possible product to the customer as quickly as possible, the test engineers focus on the most necessary set of test cases for that product to be functionally correct. In each increment, the test engineers create and execute a basic set of test cases for the features being delivered to the customer. Test engineers are constantly working with the product, developers, and in some cases, with customers to keep the stories as simple and concise as feasible. Additionally, the Agile landscape opens doors to automating the entire software development life cycle using the principles of continuous integration, which demands a major shift in the test engineer’s mindset. This demands excellent communication skills and fluent collaboration from the test engineers.
Often, a test engineer’s output is measured by the number and quality of defects they find in the software application. Let us examine some key aspects of defect management next.
Defect management in testing
A defect is primarily a deviation from the business requirement, and it does not necessarily mean there is an error in the code. The analyzing, documenting, and reporting of defects in the product is a core activity for the testing team. It is essential to set and follow standard templates for reporting defects. There are a variety of tools in the market that help with test case and defect management. Maintaining a good rapport with all the engineers on the team goes a long way in making the defect reporting and resolving process much smoother. Usually, testers have to put in as much information as possible in the defect log to assist developers in reproducing the defects in various environments as needed. This also helps in categorizing the defects correctly. There are cases when the defect still cannot be reproduced consistently, and the engineer and tester have to pair up in order to spot the failure in the application precisely. It is important to file high-quality functional defects and follow up when necessary to get them fixed on time. So, the testing team is primarily responsible for the defect management process and keeping the higher management updated on any high-severity defects that might affect the product release.
Defect versus bug
A defect is a deviation from the expected behavior. It can be a missing, incorrect, or extra implementation. In comparison, a bug is a programming error that causes the software to crash, produce incorrect results, or perform badly.
Besides the number of bugs being identified, it is also crucial to know when a defect is identified in the project. Next, let’s explore the effects of shifting testing early or late in the development life cycle.
Shift-Right and Shift-Left propositions
It is evident that there are a lot of benefits that can be reaped by shifting the testing and quality efforts, in general, earlier on in the development life cycle. This is termed the Shift-Left approach. In this approach, quality engineers are involved right from the inception of the project in early discussions about the design and architecture. They start working on deliverables such as the test plan and test cases in parallel with developers. This approach builds a quality-first mindset for the entire team and ensures quality is built right into...




