Better Software Magazine Articles

Testing the Contract Metaphor

A contract represents a service agreement between two parties, the bounded provision of service by one party to the other. This metaphor also applies to how we can think about the relationship between unit tests and code. A contractual mindset encourages test names and partitioning based on clear propositions, backed up with executable examples.

Kevlin Henney's picture Kevlin Henney
Crash Course in Proficient Presenting

Ben has to make a presentation at the next all-hands meeting. It'll be his very first presentation, and just thinking about it has sent him into a panic. Fortunately, he has the support of an experienced speaker and coach who offers advice and encouragement to help him become a proficient, panic-free presenter.

Naomi Karten's picture Naomi Karten
GUT Instinct

Whether or not a unit test is considered good is not simply about what it tests: It is also very much about "how" it tests. Is the test readable and maintainable? Does it define the expected behavior or merely assume it? To be sustainable, the style of a unit test is just as important as the style of any other code. Perhaps a little surprisingly, the most commonly favored test partitioning style does not meet these expectations.

Kevlin Henney's picture Kevlin Henney
Virtual Realities: Best Practices and Common Pitfalls of Adopting Virtual Lab Automation

Virtual Lab Automation (VLA) is a ground-breaking technology that promises quantifiable benefits for application development and test organizations, including faster lab deployment, less manual setup work, greater resource flexibility and utilization, and easier reproduction of defects. In this article, Skytap's Ian Knox discusses the best practices and common pitfalls associated with adopting a VLA solution. In addition, he outlines the steps to evaluate a virtualization solution for your test organization and provides further resources to help you get started.

Ian Knox's picture Ian Knox
The Trouble with Derivation

This article discusses the dark underbelly of derivation: the fragile base class. It's possible to modify a base class in such a way that, even though you've improved its implementation and all your tests work just fine, you've nonetheless damaged the derived classes, perhaps fatally.

Allen I. Holub's picture Allen I. Holub
Resistance Is Futile

Why do so many people resist change, even when that change will be for the better? It's simple, really. Every change ends something, and endings mean loss. People don't like loss. Even the best changes mean something familiar will end.

Lee Copeland's picture Lee Copeland
Understanding Software Performance Testing Part 1

Most people don't fully understand the complexities and scope of a software performance test. Too often performance testing is assessed in the same manner as functional testing and, as a result, fails miserably. In this four-part series we will examine what it takes to properly plan, analyze, design, and implement a basic performance test. This is not a discussion of advanced performance techniques or analytical methods; these are the basic problems that must be addressed in software performance testing.

Dale Perry's picture Dale Perry
Reloadable Test Data-O-Matic

Reloadable test data takes more time up front (as compared to on-the-fly data creation), but saves blood, sweat, and tears in the long term. It also virtually eliminates "works on my machine" bugs, creates a more intricate and realistic environment, and is the first step on the road to test automation.

Tanya Dumaresq's picture Tanya Dumaresq
Off the Trails

A focused approach toward testing a product is important, but sometimes we discover information that we didn't anticipate at all. One of the key skills in testing is dynamically managing our focus; sharpening it sometimes and widening it at other times. If we vary our approaches, we might find something surprising and broaden our coverage.

Michael Bolton's picture Michael Bolton
Lean Portfolio Management: Guiding IT Projects with Business Value

Improving your software development process is only valuable if it fills the highest priority needs for your business clients with speed and quality. Lean principles provide guidance on how to create a structure that lets business priorities drive the selection of the right products for creation and enhancement.

Guy Beaver's picture Guy Beaver


AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.