testdriven.com Wrangling quality out of chaos

Archive for the ‘Links’ Category

Modifiability, or is there any design in Agility?

10.23.2007 · Posted in Links

Many people assume that agile methods mean an absence of design. Design still happens in agile projects, but it shifts from an up-front phase to a continual evolution. Design decisions should be left to the last responsible moment, but some design decisions do need to be made at the start of a project. At the last QCon, Martin Fowler explored this topic through a panel discussion of design in an agile context.

Presentator: Floyd Marinescu
Presented: QCon London, October 18, 2007
Duration: 58 mn
link

MSDN Architecture Center: Agile Development

10.23.2007 · Posted in Links

Agile methods are a set of development processes intended to create software in a lighter, faster, more people-centric way. You may have heard of Extreme Programming, Scrum, Dynamic Systems Development Method (DSDM), Adaptive Software Development, Crystal, Feature Driven Development and Pragmatic Programming that have been appearing since the mid nineties, many as a consequence of the need for alternatives to more traditional heavyweight methodologies. In 2001, several of the most prominent proponents of those "lightweight methodologies" started the Agile Alliance and released the Agile Manifesto, a statement of the values shared by them, for those contemplating new agile development processes.

Regardless of the chosen agile process, many teams can benefit by using some core practices (for example, frequent iterations, unit testing, and refactoring). In this set of pages you’ll find guidance and ideas on how to set up your agile environment using available Microsoft technologies.
link

Unit-Testing towards a Specification: A Systematic Approach [PDF]

10.23.2007 · Posted in Links

It is clear that normal unit-tests represent individual cases only. A specification presents a complete description of a unit’s behavior. Unlike unit-test, sequence diagrams are perfectly readable but unlike sequence diagrams, unit-tests can easily be executed over and over again. The question is whether we could in some way combine sequence diagrams and unit-tests so as to create both the specification and the tests which would help to verify that the implementation fulfills the specification. The rest of this thesis tries to provide an answer.

Author: Peter Dimov
Published: University of Duisburg-Essen Master Thesis, September 28, 2007
link

TDD with Acceptance Tests and Unit Tests

10.23.2007 · Posted in Links

There are two different kinds of automated tests recommended by the Agile disciplines. Unit tests, which are written by programmers, for programmers, in a programming language. And acceptance tests, which are written by business people (and QA), for business people, in a high level specification language (like FitNesse www.fitnesse.org).

The question is, how should developers treat these two streams of tests? What is the process? Should they write their unit tests and production code first, and then try to get the acceptance tests to pass? Or should they get the acceptance tests to pass and then backfill with unit tests?

Author: Uncle Bob
Published: Object Mentor, October 17, 2007
link

Tags:

Why you have time for TDD (but may not know it yet…)

10.23.2007 · Posted in Links

A common objection to TDD is this: "We don’t have time to write so many tests. We don’t even have enough time to write features!"

Here’s why people who say this probably already have enough time in the (real) schedule, they just don’t know it yet.

Author: Dean Wampler
Published: Object Mentor, September 2007
link

Tags:

A Tale of Two Epiphanies: TDD and Mocking

10.23.2007 · Posted in Links

I’ve been a big believer in unit testing for years now, but was never serious about test-driven development (TDD) until a few months ago. It sounded like an interesting idea, but I didn’t understand why TDD practitioner were so zealous about writing the tests first. Why did it matter? I thought it was to ensure that some project manager doesn’t try to shave some time off the project by cutting the unit tests. Then I started doing some reading about TDD, poking around, asking questions, and trying it out myself. I discovered the real reason for writing tests first is that TDD isn’t about testing code, it’s about designing code.

Author: James Kovacs
Blogged: September 9, 2006
link

CUTE: A Concolic Unit Testing Engine for C and Java

10.19.2007 · Posted in Links

CUTE (a Concolic Unit Testing Engine for C and Java) is a tool to systematically and automatically test sequential C programs (including pointers) and concurrent Java programs. CUTE combines concrete and symbolic execution in a way that avoids redundant test cases as well as false warnings. The tool also introduces a novel race-flipping technique to efficiently test and model-check concurrent programs with data inputs.
link

Test Driven: Practical TDD and Acceptance TDD for Java Developers

10.18.2007 · Posted in Links

Test Driven: Practical TDD and Acceptance TDD for Java DevelopersIn test-driven development, you first write an executable test of what your application code must do. Only then do you write the code itself and, with the test spurring you on, improve your design. In acceptance test-driven development (ATDD), you use the same technique to implement product features, benefiting from iterative development, rapid feedback cycles, and better-defined requirements. TDD and its supporting tools and techniques lead to better software faster.

Test Driven brings under one cover practical TDD techniques distilled from several years of community experience. With examples in Java and the Java EE environment, it explores both the techniques and the mindset of TDD and ATDD. It uses carefully chosen examples to illustrate TDD tools and design patterns, not in the abstract but concretely in the context of the technologies you face at work. It is accessible to TDD beginners, and it offers effective and less-well-known techniques to older TDD hands.

Author: Lasse Koskela
Published: Manning Publications, October 10, 2007
544 pages

Sample chapters:
Chapter 2: Beginning TDD
Chapter 9: Building products with Acceptance TDD
link

Tags:

XPairtise: distributed pair programming plug-in for Eclipse

09.21.2007 · Posted in Links

The Eclipse plug-in XPairtise provides a platform for distributed pair programming. The plug-in offers shared editing, project synchronization, shared program and test execution, user management, built-in chat communication and a shared whiteboard.

Pair programming is a key practice in Extreme Programming (XP) whereby two programmers share the same terminal and program together. Distributed pair programming is the practice of pair programming where the two programmers comprising the pair are in different locations.
link

Test Driven Thread Safety

09.20.2007 · Posted in Links

How do you write a test that fails because of lacking thread safety? Well, in this case I could start up some threads, make sure that they used the collection methods simultaneously and then assert that only one thread was allowed to do so at a time.

That turned out to be more easy to think than to code.

Introduces the two problems and their solution.

Author: The Vertical Slice
Published: September 14, 2007
link

Using testing frameworks with Groovy

09.19.2007 · Posted in Links

Groovy is great for Agile development in general and testing in particular because:

* it has built-in support for the JUnit testing framework
* it has built-in mocking capabilities
* it provides a very expressive language in which to write tests which can utilise Closure syntax and Groovy’s other features which support the creation of testing domain specific languages (DSLs)
* it can easily leverage Java testing frameworks and IDE support
* its built-in AntBuilder support makes it easy to set up integration tests

This page explores testing features of Groovy and some other testing frameworks that you may sometimes wish to use to complement Groovy’s built-in capabilities.
link

Spring Automock: expose mocked beans automatically

09.19.2007 · Posted in Links

Spring AutoMock is a test enabling framework to allow automatic exposure of Mocked beans for a Spring application. Used in conjunction with Spring autowiring of bean dependencies you can develop teired application contexts that represent the architectural tiers of your application, and thus you testing strategy. The simplest example is a separation of service beans and DAO beans into separate xml application contexts so that the services can be fully tested in isolation of the DAOs. The DAO beans are still required by the services typically as an injected property. Spring AutoMock can automatically register a Mock and a proxy of certain beans, so that the Mocks can be injected into your test cases and the matching proxy into the item under test. This reduces the need for repeated Spring test configuration.
link

JExplorer: wrap IE inside a Swing container

09.12.2007 · Posted in Links

JExplorer is a library that provides developers with an easy-to-use ability to integrate Microsoft Internet Explorer into Swing applications.

Standard version: the lightweight version containing only necessary JExplorer API. Does not even require JNIWrapper.

Professional version: useful for those who need to use JNIWrapper functionality in addition to JExplorer, who require a tight integration with MSHTML and DOM functionality, and intend to use low-level IE API.

(Commercial tool)
link

Objections to Agile Development [PDF]

09.12.2007 · Posted in Links

At the recent Agile Development Conference in Salt Lake City, Utah, USA, one presentation included a series of objections to agile development heard from senior executives (CIOs, CTOs, etc.) of large organizations. Whether these are valid objections or just misinterpretations of agile development, the fact that they originated with senior executives provides a view into the barriers that prevent the wider adoption of agile methods. Perhaps you are even hearing some of these same comments from your executives. So I thought I’d dedicate a White Paper to reviewing and responding to these objections.

Author: Jim Highsmith
Published: Agile Project Management, May 2004
(via Darrell Norton)
Requires a Cutter Consortium account.
link

Tags:

Craig Larman’s Applying Advanced Object Design with Patterns

09.12.2007 · Posted in Links

[img align=left]http://skillsmatter.com/images/misc/craiglarman.jpg[/img][img align=right]http://skillsmatter.com/images/system/logo.gif[/img]
This popular, high-impact, and hands-on course on mastering advanced object-oriented design (OOD) and design patterns is aimed at architects and developers of OO systems, and is based on acclaimed industry leader Craig Larman’s extensive experience coaching and applying OOD since the mid 1980s.

Object-oriented (OO) design patterns are a critical and fundamental skill of successful OO developers to support design agility. Most modern OO systems are designed with patterns, and mastery of design patterns is considered a basic criterion of mature developers—and an absolute necessity for architects.

Various studies indicate that after initial release of a software system, at least 50% of effort and cost is spent in modification. To save money, it is skillful and economic to take a long-term view of product development and invest in skillful designs that reduce these costs.

You will leave this workshop with deeper skill to apply patterns and create quality object-oriented designs that have agility – that support reduced modification costs and increased comprehensibility, and hence support business agility.

Craig Larman will be teaching this Design Patterns Course at Skills Matter in London on September 4th-7th
link

Tags:

DevCreek: metrics monitoring and analysis

08.21.2007 · Posted in Links

DevCreek provides an open, free service that helps software development teams monitor, analyze and learn from metrics collected by their ongoing project activities. By providing real-time feedback and aggregating historical project data, DevCreek aims to establish project and community-based metrics that encourage good software development practices.
link

Agile Development in Java Training – 5 days – London

08.21.2007 · Posted in Links

[img align=right]http://skillsmatter.com/images/system/logo.gif[/img]

Hands-on Agile Development from Requirements to Code

[img align=left]http://skillsmatter.com/images/misc/kevlinhenney.gif[/img]This highly practical 5-day Agile Development training workshop has been developed by Kevlin Henney, a regular columnist for various industry magazines and a well known and popular speaker on topics such OO Design, Patterns, Agile Development and Software architecture at conferences in Europe and North America.

This Agile development course introduces the Unified Process (RUP) as a suitable phase model for agile development, taken together with a number of best practices such as Test-Driven Development (TDD) and the description of object-oriented systems using the Unified Modeling Language (UML).

The workshop structure is based on the four basic RUP phases in a project lifecycle: inception, elaboration, construction and transition.

Following these phases, the training participants will work in groups on all project activities, from requirements capturing and high-level design , through to code and tests over four construction mini-iterations using UML and TDD. A balanced mix of lectures and practical exercises, enables participants to learn how all development and testing activities fit together in practice, consolidating their newly learned skills.
link

Tags:

An Agile Tool Selection Strategy for Web Testing Tools

07.27.2007 · Posted in Links

Selecting a test automation tool has always been a daunting task. Let’s face it, just the thought of automating tests can be daunting! To avoid that deer-in-the-headlights feeling, consider taking an ‘agile’ approach to selecting web testing tools. Plan an automation strategy before you consider the possible tool solutions. Start simple, and make changes based on your evolving situation. Here are some ideas based on experiences with different agile (and not so agile!) development teams. Even if your team doesn’t use agile development practices, you’ll get some useful tips.
link

What’s Wrong With Agile Methods

07.27.2007 · Posted in Links

Current agile methods could benefit from using a more quantified approach across the entire implementation process (that is, throughout development, production and delivery). The main benefits of adopting such an approach include improved communication of the requirements and, better support for feedback and progress tracking.

This article first discusses the benefits of quantification, then outlines a proposed approach (Planguage) and, finally describes an example of its successful use.
link