Better Software Magazine Articles

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's picture 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's picture Gil Zilberfeld
Mock Objects: From Concept to Code
Slideshow

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
Slideshow

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, AmiBug.com
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's picture 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's picture 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's picture 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's picture Tod Golding
STARWEST 2005: Interpersonal Skills for Working with Business Stakeholders

As a professional test manager or test engineer, you must keep up with the latest test techniques, management practices, and systems technologies. But that is not enough. You also must interact with-and more importantly learn to influence-executive managers and other non-technical project stakeholders. Even today in many companies, testing and test management are not well understood and are under-appreciated by non-technical people. Now is the time for you to take action and do more than simply "get along" in your organization. Join Robert Sabourin for a lively session on developing your interpersonal skills, including the skills of communication, persuasion, problem solving, and teamwork. Discover new ways to work harmoniously with non-technical people while efficiently and effectively getting your important testing job done.

Robert Sabourin, AmiBug.com Inc

Pages

AgileConnection is a TechWell community.

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