Considering all of its shortcomings, we are lucky that testing existing functionality isn’t really testing. As we said before, real testing is questioning each and every aspect and underlying assumption of the product. Existing functionality has already endured that sort of testing. Although it might be necessary to re-evaluate assumptions that were considered valid at the time of testing, this is typically not necessary before every release and certainly not continuously. Testing existing functionality is not really testing. It is called regression testing, and although it sounds the same, regression testing is to testing like pet is to carpet—not at all related. The goal of regression testing is merely to recheck that existing functionality still works as it did at the time of the actual testing. So regression testing is about controlling the changes of the behaviour of the software. In that regard it has more to do with version control than with testing. In fact, one could say that regression testing is the missing link between controlling changes of the static properties of the software (configuration and code) and controlling changes of the dynamic properties of the software (the look and behaviour). Automated tests simply pin those dynamic properties down and transform them to a static artefact (e.g. a test script), which again can be governed by current version control systems.
This book describes how to build and implement an automated testing regime for software development. It presents a detailed account of the principles of automated testing, practical techniques for designing a good automated testing regime, and advice on choosing and applying off-the-shelf testing tools to specific needs. This sound and practical introduction to automated testing comes from two authors well known for their seminars, consultancy and training in the field.
Jones defines BDD as the process where teams use domain-specific language to express the expected behavior of an application through scenarios. She points out that this is not magic - there is automation code involved in the process - but that BDD is ideal for developers and testers sharing automation work. Specialized tools like Cucumber, the most popular open source tool for automation code integration, executes this work and is the tool of choice for Jones.
“While using and teaching Agile practices like test-driven development (TDD) on projects in different environments, I kept coming across the same confusion and misunderstandings. Programmers wanted to know where to start, what to test and what not to test, how much to test in one go, what to call their tests, and how to understand why a test fails. [….] My response is BDD.”
Tipalti is a cloud-based payment automation and management software that is known for helping businesses accurately meet deadlines. The solution helps solve problems that include non-compliance, late payments, administrative overload and complications arising from human error. Time spent on financial management is significantly decreased, solving one of the biggest problems facing accounting teams.
“There are millions of regression tests for a Windows 10 release. For example, if you plan 10 new features, five [of those 10] are critical and a priority. These test cases will be the criteria used to release the software. You build from that progress. So on the next release, you have new features, 10 are determined critical for testing. So it keeps adding, now you have 15 regression tests being automated to keep up with the release schedules.”
This article uses the term “tester” to refer to the person involved in testing software with automation tools. It is not meant to distinguish by job title or technical proficiency. Jim Hazen describes himself as a hybrid, or “technical tester,” because he can write test scripts and develop what he refers to as “testware.” The trend is to hire for multiple skillsets, but that does not mean the non-technical stakeholders involved in software development don’t benefit from automation testing.