Performing software testing in production is not a taboo anymore in our era of cloud computing and DevOps. This article discusses different types and approaches to do software testing in production and associated contexts, during which one or another kind of functional testing is useful. Also, we will describe in detail about the effective organization of the safe testing of various services in production.
Running more than 5000 automated system tests on a deployed application with outgoing connections to about 25 other systems, each with their own dependencies, where test data is complex and needs to be in-sync, is a great challenge. Doing it every night, year after year, with the requirement to fail only on the event of actual errors in the application under test, is a nightmare.
Most of the time, software testing is based on comparing the actual behavior of a code or a system with its expected behavior. In his article “The Challenges of Testing in a Non-Deterministic World”, Donald Firesmith explains however that not all software and systems are deterministic, for instance an autonomous adaptive vehicle that uses machine learning software, and that software testing needs to adapt to this context.
Even the best software test suites can’t entirely prevent nasty surprises: race conditions, unexpected interactions, faults in distributed protocols and so on, still slip past them into production. Yet writing even more tests of the same kind quickly runs into diminishing returns. This talk presents new software testing automated techniques that can dramatically improve your software testing, letting you focus on what your code should do, rather than which cases should be tested.
Testcontainers is an open source Java 8 library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
This presentation explores the issues and controversy around integration testing efforts. Then it follows with a discussion of testing outcomes and explores some patterns and techniques to achieve appropriate test coverage to build confidence while releasing software.
Years after Kent Beck provided JUnit, unit testing is part of most developer teams tooling. However, there is a trend that tends to threaten unit testing, claiming only integration testing can truly detects defects in software. This presentation first defines what unit testing and integration testing are, and their respective pros, cons and uses. Then, it explores the unique challenges posed by integration testing. Finally, tools and techniques are presented so that integration testing can become a true asset in each software developer bag of tricks.