Better Software Magazine Articles

Building Mobile Apps the User Can Trust

It seems like every week there's a new security disaster impacting millions of users worldwide. With the acceptance of mobile apps providing timely data at your fingertips, users are becoming very concerned about security. Philip gives you some impactful tips for developing apps that create trust with end-users.

Philip Lew
Should QA Perform Unit Testing?

In this FAQ column, Linda Hayes addresses the question: "Should QA Perform Unit Testng?"  Detailing why and who should perform unit testing to ensure the best possible outcome.

Linda Hayes
You Can't Be Agile without Automated Unit Testing

Agile projects assume that test planning, test creation, and test execution take place throughout a project's lifecycle. So the need for unit testing (and especially automated unit testing) can't be ignored and should be considered as a key responsibility of the entire team—not just the software developers.

Gil Zilberfeld
Mock Objects: From Concept to Code

Mock objects are simulated objects that mimic the behavior of real objects in controlled ways. Because many code modules interact with external entities-things like databases, networks, file systems, third-party frameworks, and even the clock-these entities often cause us big-time trouble during unit testing. These entities can slow down our unit tests, produce unpredictable results, and have dangerous side effects. The best unit tests are decoupled from these external entities. Rather than try to control the entities, you can create mock objects to simulate their functionality. With a tangible example in the form of a short play, Rob Myers introduces mock objects and provides a brief history of their "relatives"-stubs and fakes. Then, with an animated, nearly-worst-case example, Rob presents code he developed to "mock out" nasty dependencies and create safe, predictable unit tests.

Rob Myers, Agile Institute
Back to the Basics: Principles for Constructing Quality Software

Using an analogy to the building codes followed by architects and contractors in the construction of buildings, Rick Spiewak explores the fundamental principles for developing and delivering high quality, mission-critical systems. Just as buildings are constructed using different materials and techniques, we use a variety of languages, methodologies, and tools to develop software. Although there is no formal "building code" for software, software projects should consider-and judiciously apply-the recognized "best" practices of static analysis, automated unit testing, code re-use, and peer reviews. Rick takes you on a deep dive into each of these techniques where you'll learn about their advantages, disadvantages, costs, challenges, and more.

Rick Spiewak, The MITRE Corporation
Chartering the Course: Guiding Exploratory Testing

Charters help you guide and focus exploratory testing. Well-formed charters help testers find defects that matter and provide vital information to stakeholders about the quality and state of the software under test. Rob Sabourin shares his experiences defining different exploratory testing charters for a diverse group of test projects. For example, reconnaissance charters focus on discovering application features, functions, and capabilities; failure mode charters explore what happens to applications when something goes wrong. In addition, you can base charters on what systems do for users, what users do with systems, or simply the requirements, design, or code. Rob reviews key elements of a well-formed testing charter-its mission, purpose, focus, understanding, and scope. Learn how to evolve a test idea into an exploratory charter using examples from systems testing, Scrum story testing, and developer unit testing.

Robert Sabourin,
Unit vs. System Testing-It's OK to be Different

There are two distinct roles in many software projects that are involved with testing: developers and testers. Should they take the same approach to testing, or are there some principles that apply to only one of the roles? What should they do to coordinate their work? Danny Faught went through an exercise to compare and contrast and found that the questions he couldn't answer were as interesting as the questions he could answers.

Danny R. Faught
Developing Your Sense of Smell

With all of the resources available these days—books, blogs, Webcasts, training,—that aid us in our design, are you one of those programmers who lacks the "olfactory gene" needed to detect refactoring odors in your code? Unit testing helps you refine your sense of smell and improve your code design.

Tod Golding
One Step Back ... Two Steps Forward

A change to code that previously was working may introduce new failures. Testing for regression can catch these failures, find new problems, and identify opportunities to improve your test design.

Michael Bolton
Tapping into Testing Nirvana

As the initial, positive vibes of unit testing begin to fade, Tod Golding goes in search of whatever it is that sends some developers into a seemingly ongoing state of unit-testing nirvana. Respect your unit tests, Grasshopper, and find your testing center.

Tod Golding


AgileConnection is a TechWell community.

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