Continuous testing is the process of executing
automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate.
[Part of the Pipeline: Why Continuous Testing Is Essential](_blank)
by Adam Auerbach, TechWell Insights August 2015[The Relationship between Risk and Continuous Testing: An Interview with Wayne Ariola](_blank)
by Cameron Philipp-Edmonds, Stickyminds December 2015 Continuous testing was originally proposed as a way of reducing waiting time for feedback to developers by introducing development environment-triggered tests as well as more traditional developer/tester-triggered tests.
For Continuous testing, the scope of testing extends from validating bottom-up
requirements
In product development and process optimization, a requirement is a singular documented physical or functional need that a particular design, product or process aims to satisfy. It is commonly used in a formal sense in engineering design, includi ...
or
user stories
In software development and product management, a user story is an informal, natural language description of features of a software system. They are written from the perspective of an end user
In product development, an end user (sometimes e ...
to assessing the
system requirements associated with overarching business goals.
[DevOps: Are You Pushing Bugs to Clients Faster](_blank)
by Wayne Ariola and Cynthia Dunlop, PNSQC October 2015
Adoption drivers
In the 2010s, software has become a key business differentiator.
[DevOps and QA: What’s the real cost of quality?](_blank)
by Ericka Chickowski, DevOps.com June 2015 As a result, organizations now expect software development teams to deliver more, and more innovative, software within shorter delivery cycles.
[Kinks persist in Continuous Workflows](_blank)
by Lisa Morgan, SD Times September 2014 To meet these demands, teams have turned to
lean
Lean, leaning or LEAN may refer to:
Business practices
* Lean thinking, a business methodology adopted in various fields
** Lean construction, an adaption of lean manufacturing principles to the design and construction process
** Lean governm ...
approaches, such as
Agile,
DevOps
DevOps is a set of practices that combines software development (''Dev'') and IT operations (''Ops''). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary to a ...
, and
Continuous Delivery
Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time and, following a pipeline through a "production-like environment", withou ...
, to try to speed up the
systems development life cycle
In systems engineering, information systems and software engineering, the systems development life cycle (SDLC), also referred to as the application development life cycle, is a process for planning, creating, testing, and deploying an informa ...
(SDLC).
[Continuous Testing: Think Different](_blank)
by Ian Davis, Visual Studio Magazine September 2011 After accelerating other aspects of the delivery pipeline, teams typically find that their testing process is preventing them from achieving the expected benefits of their SDLC acceleration initiative.
Testing and the overall quality process remain problematic for several key reasons.
* Traditional testing processes are too slow. Iteration length has changed from months to weeks or days with the rising popularity of Agile, DevOps, and Continuous Delivery. Traditional methods of testing, which rely heavily on manual testing and automated GUI tests that require frequent updating, cannot keep pace.
[The Forrester Wave™ Evaluation Of Functional Test Automation (FTA) Is Out And It's All About Going Beyond GUI Testing](_blank)
by Diego Lo Giudice, Forrester Research
Forrester is a research and advisory company that offers a variety of services including research, consulting, and events.
Forrester has nine North America locations: Cambridge, Massachusetts; New York, New York; San Francisco, California; McL ...
April 23, 2015 At this point, organizations tend to recognize the need to extend their test automation efforts.
[Continuous Development Brings Changes for Software Testers](_blank)
by Amy Reichert, SearchSoftwareQuality September 2014
* Even after more automation is added to the existing test process, managers still lack adequate insight into the level of risk associated with an application at any given point in time.
Understanding these risks is critical for making the rapid go/no go decisions involved in Continuous Delivery processes.
[Zeichick’s Take: Forget 'Continuous Integration'—the Buzzword is now 'Continuous Testing'](_blank)
by Alan Zeichick, SD Times February 2014 If tests are developed without an understanding of what the business considers to be an acceptable level of risk, it is possible to have a release candidate that passes all the available tests, but which the business leaders would not consider to be ready for release.
[Buy the Wrong Software? A Fix Can Cost $700,000 A Conversation with voke’s Theresa Lanowitz](_blank)
by Dom Nicastro , CMS Wire October 2014 For the test results to accurately indicate whether each release candidate meets business expectations, the approach to designing tests must be based on the business's tolerance for risks related to security, performance, reliability, and compliance.
In addition to having unit tests that check code at a very granular bottom-up level, there is a need for a broader suite of tests to provide a top-down assessment of the release candidate's business risk.
* Even if testing is automated and tests effectively measure the level of business risk, teams without a coordinated end-to-end quality process tend to have trouble satisfying the business expectations within today's compressed delivery cycles.
Trying to remove risks at the end of each iteration has been shown to be significantly slower and more resource-intensive than building quality into the product through defect prevention strategies such as
development testing.
Organizations adopt Continuous Testing because they recognize that these problems are preventing them from delivering quality software at the desired speed. They recognize the growing importance of software as well as the rising cost of software failure, and they are no longer willing to make a tradeoff between time, scope, and quality.
[Theresa Lanowitz Talks Extreme Test Automation at STAREAST 2014](_blank)
by Beth Romanik, TechWell Insights May 2014[Guest View: What’s keeping you from Continuous?](_blank)
by Noel Wurst, SD Times November 2015
Goals and benefits
The goal of continuous testing is to provide fast and continuous feedback regarding the level of business risk in the latest build or release candidate.
This information can then be used to determine if the software is ready to progress through the delivery pipeline at any given time.
[Manage the Business Risks of Application Development with Continuous Testing](_blank)
by Wayne Ariola, CM Crossroads September 2014
Since testing begins early and is executed continuously, application risks are exposed soon after they are introduced.
Development teams can then prevent those problems from progressing to the next stage of the SDLC. This reduces the time and effort that need to be spent finding and fixing defects. As a result, it is possible to increase the speed and frequency at which quality software (software that meets expectations for an acceptable level of risk) is delivered, as well as decrease
technical debt
In software development, technical debt (also known as design debt or code debt) is the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.
Analogous with ...
.
[Shift Left and Put Quality First](_blank)
by Adam Auerbach, TechWell Insights October 2014
Moreover, when software quality efforts and testing are aligned with business expectations, test execution produces a prioritized list of actionable tasks (rather than a potentially overwhelming number of findings that require manual review). This helps teams focus their efforts on the quality tasks that will have the greatest impact, based on their organization's goals and priorities.
Additionally, when teams are continuously executing a broad set of continuous tests throughout the SDLC, they amass metrics regarding the quality of the process as well as the state of the software. The resulting metrics can be used to re-examine and optimize the process itself, including the effectiveness of those tests. This information can be used to establish a feedback loop that helps teams incrementally improve the process.
Frequent measurement, tight feedback loops, and continuous improvement are key principles of
DevOps
DevOps is a set of practices that combines software development (''Dev'') and IT operations (''Ops''). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary to a ...
.
[Practices for DevOps and Continuous Delivery](_blank)
by Ben Linders, InfoQ July 2015
Scope of testing
Continuous testing includes the validation of both
functional requirements
In software engineering and systems engineering, a functional requirement defines a function of a system or its component, where a function is described as a specification of behavior between inputs and outputs.
Functional requirements may invol ...
and
non-functional requirements
In systems engineering and requirements engineering, a non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. They are contrasted with functi ...
.
For testing functional requirements (
functional testing
Functional testing is a quality assurance (QA) processPrasad, Dr. K.V.K.K. (2008) ''ISTQB Certification Study Guide'', Wiley, , p. vi and a type of black-box testing that bases its test cases on the specifications of the software component unde ...
), Continuous Testing often involves
unit tests
In computer programming, unit testing is a software testing method by which individual units of source code—sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures&mda ...
,
API testing,
integration testing
Integration testing (sometimes called integration and testing, abbreviated I&T) is the phase in software testing in which individual software modules are combined and tested as a group. Integration testing is conducted to evaluate the complianc ...
, and
system testing
System testing is testing conducted on a complete integrated system to evaluate the system's compliance with its specified requirements.
System testing takes, as its input, all of the integrated components that have passed integration testing. ...
. For testing non-functional requirements (
non-functional testing - to determine if the application meets expectations around performance, security, compliance, etc.), it involves practices such as
static code analysis
In computer science, static program analysis (or static analysis) is the analysis of computer programs performed without executing them, in contrast with dynamic program analysis, which is performed on programs during their execution.
The term i ...
,
security testing
Security testing is a process intended to reveal flaws in the security mechanisms of an information system that protect data and maintain functionality as intended. Due to the logical limitations of security testing, passing the security testing ...
,
performance testing, etc.
[The Power of Continuous Performance Testing](_blank)
by Don Prather, Stickyminds August 2015 Tests should be designed to provide the earliest possible detection (or prevention) of the risks that are most critical for the business or organization that is releasing the software.
[The Importance of Shifting Right in DevOps](_blank)
by Bob Aiello, CM Crossroads December 2014
Teams often find that in order to ensure that test suite can run continuously and effectively assesses the level of risk, it's necessary to shift focus from GUI testing to API testing because 1) APIs (the "transaction layer") are considered the most stable interface to the system under test, and 2) GUI tests require considerable rework to keep pace with the frequent changes typical of accelerated release processes; tests at the API layer are less brittle and easier to maintain.
[Produce Better Software by Using a Layered Testing Strategy](_blank)
by Sean Kenefick, Gartner
Gartner, Inc is a technological research and consulting firm based in Stamford, Connecticut that conducts research on technology and shares this research both through private consulting as well as executive programs and conferences. Its clients ...
January 7, 2014
Tests are executed during or alongside
continuous integration—at least daily.
[Experiences from Continuous Testing at Siemens Healthcare](_blank)
by Ben Linders, InfoQ February 2015 For teams practicing
continuous delivery
Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time and, following a pipeline through a "production-like environment", withou ...
, tests are commonly executed many times a day, every time that the application is updated in to the
version control
In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
system.
[Testing in a Continuous Delivery World](_blank)
by Rob Marvin, SD Times June 2014
Ideally, all tests are executed across all non-production
test environment
In software deployment, an environment or tier is a computer system or set of systems in which a computer program or software component is deployed and executed. In simple cases, such as developing and immediately executing a program on the same m ...
s. To ensure accuracy and consistency, testing should be performed in the most complete, production-like environment possible. Strategies for increasing test environment stability include virtualization software (for dependencies your organization can control and image) service virtualization (for dependencies beyond your scope of control or unsuitable for imaging), and test data management.
DevOps- Not a Market, but a Tool-Centric Philosophy That Supports a Continuous Delivery Value Chain
by Laurie F. Wurster, Ronni J. Colville, Jim Duggan, Gartner
Gartner, Inc is a technological research and consulting firm based in Stamford, Connecticut that conducts research on technology and shares this research both through private consulting as well as executive programs and conferences. Its clients ...
February, 2015
Common practices
* Testing should be a collaboration of Development, QA, and Operations—aligned with the priorities of the line of business—within a coordinated, end-to-end quality process.[Keep your Software Healthy During Agile Development](_blank)
by Adrian Bridgwater, ComputerWeekly November 2013
* Tests should be logically-componentized, incremental, and repeatable; results must be deterministic and meaningful.
* All tests need to be run at some point in the build pipeline, but not all tests need to be run all the time since some tests are more resource expensive ( integration tests) than other (unit tests).
* Eliminate test data and environment constraints so that tests can run constantly and consistently in production-like environments.
* To minimize false positives, minimize test maintenance, and more effectively validate use cases across modern systems with multitier architectures, teams should emphasize API testing over GUI testing.
Challenges/roadblocks
Since modern applications are highly distributed, test suites that exercise them typically require access to dependencies that are not readily available for testing (e.g., third-party services, mainframes that are available for testing only in limited capacity or at inconvenient times, etc.) Moreover, with the growing adoption of Agile and parallel development processes, it is common for end-to-end functional tests to require access to dependencies that are still evolving or not yet implemented. This problem can be addressed by using service virtualization
Service may refer to:
Activities
* Administrative service, a required part of the workload of university faculty
* Civil service, the body of employees of a government
* Community service, volunteer service for the benefit of a community or a p ...
to simulate the application under test's (AUT's) interactions with the missing or unavailable dependencies. It can also be used to ensure that data, performance, and behavior is consistent across the various test runs.
One reason teams avoid continuous testing is that their infrastructure is not scalable enough to continuously execute the test suite. This problem can be addressed by focusing the tests on the business's priorities, splitting the test base, and parallelizing the testing with application release automation
Application-release automation (ARA) refers to the process of packaging and deploying an application or update of an application from development, across various environments, and ultimately to production. ARA solutions must combine the capabilitie ...
tools.
Continuous testing vs automated testing
The goal of Continuous Testing is to apply "extreme automation" to stable, production-like test environments. Automation is essential for Continuous Testing.[Extreme automation, meet the pre-production life cycle](_blank)
by Alexandra Weber Morales, SD Times January 2014 But automated testing is not the same as Continuous Testing.
Automated testing involves automated, CI-driven execution of whatever set of tests the team has accumulated. Moving from automated testing to continuous testing involves executing a set of tests that is specifically designed to assess the business risks associated with a release candidate, and to regularly execute these tests in the context of stable, production-like test environments. Some differences between automated and continuous testing:
* With automated testing, a test failure may indicate anything from a critical issue to a violation of a trivial naming standard. With continuous testing, a test failure always indicates a critical business risk.
* With continuous testing, a test failure is addressed via a clear workflow for prioritizing defects vs. business risks and addressing the most critical ones first.
* With continuous testing, each time a risk is identified, there is a process for exposing all similar defects that might already have been introduced, as well as preventing this same problem from recurring in the future.
Predecessors
Since the 1990s, Continuous test-driven development
Continuous test-driven development (CTDD)Madeyski, L. and Kawalerowicz, M. ''Continuous Test-Driven Development - A Novel Agile Software Development Practice and Supporting Tool'', Proceedings of the 8th International Conference on Evaluation of No ...
has been used to provide programmers rapid feedback on whether the code they added a) functioned properly and b) unintentionally changed or broke existing functionality. This testing, which was a key component of Extreme Programming
Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development,"Human Centred Technology Workshop 2006 ", 2006, PD ...
, involves automatically executing unit tests (and sometimes acceptance tests or smoke tests) as part of the automated build, often many times a day. These tests are written prior to implementation; passing tests indicate that implementation is successful.[Continuous Integration (original version)](_blank)
by Martin Fowler, DevOps.com September 2000
Continuous testing tools
Research firms Forrester Research
Forrester is a research and advisory company that offers a variety of services including research, consulting, and events.
Forrester has nine North America locations: Cambridge, Massachusetts; New York, New York; San Francisco, California; McL ...
and Gartner
Gartner, Inc is a technological research and consulting firm based in Stamford, Connecticut that conducts research on technology and shares this research both through private consulting as well as executive programs and conferences. Its clients ...
made Continuous Testing a primary consideration in their annual evaluations of test automation tools. Gartner published an updated version of the research in 2019.
Gartner evaluated 10 tools that met their criteria for enterprise-grade test automation tools. The evaluation involved inquiries with Gartner clients, surveys of tool users, vendor responses to Gartner questions, vendor product demonstrations. Gartner required tools to support native Windows desktop application testing and Android or iOS testing support as well as support 3 of the following: responsive web applications, mobile applications, package applications, API/web services. The results of the 2019 Magic Quadrant research are:[Magic Quadrant for Software Test Automation](_blank)
Gartner, November 25, 2019
* Leaders: Eggplant
Eggplant ( US, Canada), aubergine ( UK, Ireland) or brinjal (Indian subcontinent, Singapore, Malaysia, South Africa) is a plant species in the nightshade family Solanaceae. ''Solanum melongena'' is grown worldwide for its edible fruit.
Mos ...
, SmartBear Software
SmartBear Software is an American privately-held information technology company that delivers tools for application performance monitoring (APM), software development, software testing, API testing and API management. The company is based in ...
, Tricentis
Tricentis is a software testing company founded in 2007 and headquartered in Austin, Texas. It provides software testing automation and software quality assurance products for enterprise software.
History
Tricentis was founded in 2007 by Wolfga ...
* Challengers: IBM, Micro Focus
Micro Focus International plc is a British multinational software and information technology business based in Newbury, Berkshire, England. The firm provides software and consultancy. The company is listed on the London Stock Exchange and is ...
* Visionaries: Broadcom
Broadcom Inc. is an American designer, developer, manufacturer and global supplier of a wide range of semiconductor and infrastructure software products. Broadcom's product offerings serve the data center, networking, software, broadband, wirel ...
, Parasoft
Parasoft (officially Parasoft Corporation) is an independent software vendor specializing in automated software testing and application security with headquarters in Monrovia, California. It was founded in 1987 by four graduates of the Californ ...
* Niche players: froglogic, Ranorex
Ranorex Inc is a US information technology company that produces test automation software. Initially located in Graz, Austria, as of September 2021 the company headquarters was in Austin, Texas. Ranorex Studio is Ranorex Inc's flagship product. ...
, Worksoft
In 2020, Forrester Research evaluated 15 tools that met their criteria for enterprise-grade test functional automation tools. Forrester determined 26 criteria based on past research, user needs, and expert interviews, then evaluated products versus that criteria based on vendor responses to Forrester questions, vendor product demonstrations, and customer interviews. Forrester required tools to have cross-browser, mobile, UI, and API testing capabilities. The results of the 2020 Forrester wave are:[
* Leaders: ACCELQ, Eggplant, Parasoft, Tricentis
* Strong performers: Broadcom, IBM, Mabl, Micro Focus, ]Perforce
Perforce, legally Perforce Software, Inc., is an American developer of software used for developing and running applications, including version control software, web-based repository management, developer collaboration, application lifecycle man ...
, Sauce Labs, SmartBear Software
* Contenders: Cyara, Expiretest, Worksoft
* Challengers: Ranorex
See also
* Continuous delivery
Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time and, following a pipeline through a "production-like environment", withou ...
* Continuous integration
* DevOps
DevOps is a set of practices that combines software development (''Dev'') and IT operations (''Ops''). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary to a ...
* Release management
Release management is the process of managing, planning, scheduling and controlling a software build through different stages and environments; it includes testing and deploying software releases.
Relationship with processes
Organizations that ...
* Service virtualization
Service may refer to:
Activities
* Administrative service, a required part of the workload of university faculty
* Civil service, the body of employees of a government
* Community service, volunteer service for the benefit of a community or a p ...
* Software testing
Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to apprecia ...
* Test automation
In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive bu ...
Further reading
*
*
*
*
*Rosalind Radcliffe (2021)
''Enterprise Bug Busting, From Testing through CI/CD to Deliver Business Results''
Accelerated Strategies Press. ISBN
The International Standard Book Number (ISBN) is a numeric commercial book identifier that is intended to be unique. Publishers purchase ISBNs from an affiliate of the International ISBN Agency.
An ISBN is assigned to each separate edition and ...
978-1-09838-149-3.
References
{{Authority control
Software testing