Exhaustive testing is a type of software testing approach where all the behaviors of a system are explored during the tests. If this approach is good in theory, it is not feasible in most testing contexts where time and resources are limited. This article presents the distinguishing characteristics of exhaustive testing and explain how to perform it.
This talk will take you through the challenge of testing a cloud-native application that uses MQTT (a pub/sub protocol), webhooks and REST to interact with IoT devices on top of AWS. It uses services which cannot be run on a developers machine for testing, so it was needed to develop a test setup which enables us to continuously test against real services.
The TestContainers library facilitates simple start up of a service dependencies, i.e. Postgres, Redis in throwaway Docker containers. This open source library works over Docker API and has a list of features which significantly improve a software developer experience.
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.