Software Testing Articles, Blog Posts, Books, Podcasts and Quotes
In this article, Cem Kaner discusses the usage of oracles when teaching software testing. In software testing, an oracle is the expected result of the test. It is an heuristic that should help you decide if the program passed your test. He ask the question: “If you don’t have authoritative oracles (“authoritative” = an oracle that is always correct), then how can you test? How can you specify a test in a way that a junior tester or a computer can run the test and correctly tell you whether the program passed it?”
This post by Chaitali Narla and Diego Salas on the Google Testing blog introduces the concept of hermetic servers in software testing. In a situation where the System Under Test (SUT) is composed of multiple servers, the notion of hermetic servers will help to solve the challenges of writing a fast and reliable end-to-end tests, avoiding network access. The hermetic server could be defined as a “server in a box”. Thus your testing could all be started on a single machine, physical or virtual, without the need for a network connection.
This article by Lasse Koskela, provides several tips on how to improve the speed of your Java unit tests. The strategy to improve the speed up test code is to find slow things and either make them run faster or not run them at all.
In this blog post, Nicolas Frankel explains how to perform unit testing on a database using DBUnit, Spring and TestNG. DbUnit is a JUnit extension for database-driven projects that, among other things, puts your database into a known state between test runs. This is an excellent tool to avoid the issues that can occur when one test case corrupts the database and causes subsequent tests to fail. DbUnit has also the ability to export and import your database data to and from XML datasets.
In this article, Brett Schuchert discusses how modern mocking tools affects positively our ability to work with legacy code and the possible negative implications of using mocking tools. These tools allow us to perform unit testing without actually changing the underlying code. He starts with a discussion about the challenges of unit testing and how mocking tools help to solve them; at least on the surface.
This article explains how Microsoft Fakes perform a similar role than mocking in unit testing, helping you to isolate the code you are testing in Visual Studio by replacing other parts of the application with stubs or shims. A stub replaces another class with a small substitute that implements the same interface. A shim modifies the compiled code of your application at run time so that instead of making a specified method call, it runs the shim code that your test provides.
Many software development projects struggle with creating and communicating a software testing culture that is appropriate for their needs, which might decrease software quality by leaving bugs undiscovered. Previous research suggests that social coding sites such as GitHub provide a collaborative environment with a high degree of social transparency. This makes developers’ actions and interactions more visible and trackable.