The explicit role of testing and testers in agile projects

Not all agile processes and approaches recognize the role of testing explicitly, other than stressing the importance of unit testing. However in short iterative projects, testing is key from day one.

On of the agile approaches that does explicitly describes the role of testing – and of having testers on-board – is the agile process Smart. One of the characteristics of this process is that its main unit of work is the smart use case. Smart specifies the life-cycle of a smart use case. By default it includes design, test design, development, testing, rework and acceptance.

Smart use cases versus user stories

In many projects additional stages are introduced. In my current project the explicit importance of testing is easily visualized in the following dashboard.

image
Dashboard from my current Smart project

All smart use cases go through this life cycle. This is a rather different approach than working with user stories. At the start of an iteration in Scrum (yes, I know iterations in Scrum are often referred to as sprints) each chosen user story needs to be split up in individual tasks. Due to the heterogeneous character of user stories, this is a repetitive activity. Smart use cases are a much more standardized unit of work, and thus can go through a standardized life cycle, without the need to split them up further.

Test stages in implementing smart use cases

From the picture it might not be all that clear, but in our current project our smart use cases go through 5 testing stages:

  • Unit testing. A developer implements (in stage Working) the code for a particular smart use case. Next to developing the code, the developer also implements the unit test for the smart use case. These unit tests are vital for regression testing the use cases (at each build).
  • Developer testing. Right after the developer finishes working on a particular smart use case, he moves the post-it to the stage developer testing. Here another developer picks it up and runs the use case to avoid basic mistakes.
  • Testing. Next the smart use case is moved to the Testing stage. Here a tester compares the smart use case implementation to the design. In most cases the tester will use a process cycle test, or a use case test to identify test scenarios and write test cases.
  • Acceptance testing. When the tester has declared the use case ok, acceptance testing is performed by the domain experts in the project. Due to the limited availability of the domain experts in most agile projects, it’s the tester who does most of the work. Acceptance testing becomes a lightweight black box test.
  • Approval testing. Last but not least, twice per iteration the newly accepted use cases are presented to the end users. The end users approve the smart use cases as soon as possible.

When an anomaly is found during either one of these stages, the smart use cases are moved to rework, validate the possible change. After that the smart use case re-enters the regular cycle.

This approach ensures high quality code and totally removes the need for extensive user acceptance testing at the end of a project.

November 12, 2010 – Microsoft TechEd Europe. How smart use cases can drive web development

[Session ARC205 at Microsoft TechEd Europe 2010 in Berlin]

Use cases have been around for many years describing the requirements of software development projects. From a developer’s point of view, use cases are often seen as too abstract and too complex to develop code from. Until now, that is.

IMAGE_004[5]

During this interactive talk, speaker Sander Hoogendoorn will demonstrate how to model, generate and build smart use cases.

image[8]_thumb[2]

This great technique allows you to model use cases at a much more pragmatic, low-granular level, enabling them to be implemented simply and directly into applications such as ASP.NET or Silverlight. Using many real-life code examples, the speaker will introduce both the positive impact that smart use cases have on your layered software architecture, as well as the design patterns required to implement them.

Being Smart in enterprise agile

As agile is becoming more and more mainstream, organization are starting to do enterprise software development project using well-known but fairly basic lightweight agile processes.

IMAGE_089 

In many projects this has lead to surprisingly bad result, baffling the agile Certified Pokémon Trainers who are coaching these projects. The presentation below shows a number of accelerators or technique that projects can apply to tackle the challenges of enterprise agile projects.

Would be happy to hear your comments!

Spring 2010 speaking engagements

Again doing a lot of talks this spring on a wide range of subjects, from new technology, via enterprise agile to model driven development, but also about smart use cases, domain driven design, UML, and software architectures, design patterns, frameworks and .NET.

This season’s highlights? Not a difficult choice: doing talks both at Microsoft DevDays and TechEd North America is great. But revisiting SET in Zurich is not bad either. And what about the Dutch Testing Conference?

 DSC_0058

Check out my spring talks below (with links and logo’s):

  • Around the world in 80 slides.
    February 9. Keynote at Capgemini TechEd, Utrecht.
  • Pragmatic modeling using UML and beyond
    March 3-4. Two-day workshop at IT Works, Antwerp, Belgium.
    www.itworks.be
  • We’re not in Kansas anymore. New trends in Microsoft technology
    March 8. Capgemini Micrsoft Practice Meeting. Utrecht.
  • Pragmatic modeling using UML and beyond
    March 10-11. Two-day workshop at Array Seminars, Hilversum.
    www.arrayseminars.nl
  • CIO challenges. From enterprise agile to model driven development.
    March 16. Talk Capgemini customer event, Utrecht.
  • How smart use cases will change your life
    March 23. Guest lecture at Hogeschool Utrecht, Utrecht. .
  • Agile development in everyday practice
    March 24. Seminar at Array Seminars,  Nieuwegein.
    www.arrayseminars.nl
  • Do’s and don’ts in implementing extension methods
    March 30-31. Talk at Microsoft DevDays 2010. Den Haag
    www.devdays.nl 
    .
    image
  • Beyond agile testing
    April 7. Talk at Capgemini Testing Community Event, Utrecht.
  • Beyond agile testing
    Arpil 21. Talk at Dutch Testing Conference 2010, Nieuwegein.
    www.dutchtestingconference.nl
    .
    image
  • Mission impossible? How to survice agile SAP SOA projects
    May 18-20. Talk at SET 2010. Zurich, Switzerland.
    http://www.sigs-datacom.de/set/set-2010
    .
    image
  • Estimating with smart use cases
    May 26. Seminar at Array Seminars, Nieuwegein.
    www.arrayseminars.nl
  • Software architectures and patterns in .NET.
    June 2. Seminar at Array Seminars, Hilversum.
    www.arrayseminars.nl
  • How frameworks can kill your project and how to avoid getting killed
    June 7-11. Talk at TechEd US 2010, New Orleans, USA.
    northamerica.msteched.com
    .
    image
  • Pragmatic modeling using UML and beyond
    June 23-24. Two-day workshop at IT Works, Antwerp, Belgium
    www.itworks.be

Beyond agile testing. Or: how to become a pro-active tester

Agile – in all it’s variations – becomes an increasingly popular process for realizing software. The roles testers and testing plays in these projects is challenging and new. Testers are no longer considered code-killers, but can play – and are expected to play – a  very pro-active role in agile projects.

Although all agile process agree on the importance of testing, unfortunately many of these agile processes do not elaborate much on the specific role testers have. Testing is often referred to in unit testing, which is really a developer technique. Much less attention is given to true functional testing, performance testing, integration testing and acceptance.

IMG_0219
Tester and developer closely collaborating

To investigate where testing and testers can play this vital new role you will need to see what it means for projects to be agile – beyond the scope of the processes available, such as XP, Scrum, Lean, Kanban and Smart. It’s about close collaboration of all different roles, finding the right unit of work (that also needs to be testable), defining short iterations, celebrating feedback and delivering fast and early.

Testing from day one

When introducting agile and testing to each orter, in short a number of questions pop up:

  • What is this agile stuff anyway? To traditionally organized projects and organizations it is not self-explinatory that testing and testers will be in the project from day one.
  • How does an (a)typical agile team look like? Many agile processs do not include the roles of testers, but rather stick to the traditional agile Bermuda triangle of coach-customer-developer.
  • What can be the role of testers in agile projects? In my personal experience, that comes from doing projects in all kinds of processes, testers do play a vital role in almost all activities in a project. Testers can influence projects positively during software estimation (test effort is always underestimated), requirements gathering (what scenarios apply to a use case?), (test) design, and even development in agile projects. There are very good reasons for have an explicit test role in agile projects, as the somewhat more structured agile process such as Smart and DSDM emphasize.
  • What’s a good unit of work in agile project when it comes to functional testing? Do we apply user stories, features or smart use cases? In my opinion, adding some structure is not too bad, especially when it comes to larger, more complicated projects such as service oriented or cloud oriented projects.  User stories will be a to adhoc techniques to deal with in such projects. Features, but especially smart use cases add this little bit of structure and reuse that make life easier.

New talk

This is why I created a new talk titled Beyond agile testing. Or: how to become a pro-active tester. The talk is aimed at audiences of testers, but even better would suit audiences of managers, developers and customers already in agile projects.

DSC_0058
Becoming a pro-active tester

It addresses a number of topics, including:

  • What is this agile stuff anyway?
  • How does an (a)typical agile team look like?
  • What can be the role of testers in agile projects?
  • It’s all in a day’s work – where does testing come into play?
  • User stories, features or smart use cases? Adding some structure is not too bad
  • Live examples of pro-active testing in agile projects – in estimation, design, build, test and acceptance.

During this talk, using many examples from everyday agile projects, I attempt to visualize how testers influence software estimation, requirements gathering, design, and development in agile projects. Then I will discuss how testers can deal with user stories and (smart) use cases in agile projects, and even how testers accept deliverables in complex service oriented agile projects. The presentation (of course) contains many photo’s taken in real-life situations.

December 10, 2009. “Agile development in everyday practice”

IT Works, Hotel Pullman Brussels Airport, Diegem, Belgium (www.itworks.be)

Although agile software development approaches, principles and techniques are slowly becoming more mainstream, it is still necessary to promote them for the larger part of the IT community and organizations. 

Together with my Belgian guest speaker Stefaan van Royen (now of BoonDoggle), who can talk very lively on implementing Scrum and Smart, I’ve put together a series of subjects that can assist organizations and projects to commence on agile. We’ve been running this show for some time, both in the Netherlands and in Belgium, and it’s noticable that the program keeps evolving from our personal experiences – mine recently in doing agile service oriented SAP projects.

 IMAG0041

Tasteful diner at previous edition of this highly interactive seminar

Agile anti-patterns

New! The program now  also includes the topic of agile anti-patterns – what can go wrong when implementing an agile approach to your projects. Think of Scrumdamentalists, huge cases, guesstimation, user stories (which I consider to be an anti-patterns in most organizations, due to lack of repeatability and structure).

Agile software development

The IT Works website states the following on our seminar (in Dutch).

Tweederde van alle software development projecten falen. Projecten zijn duurder dan oorspronkelijk gepland, halen deadlines niet, leveren vaak niet de door de klant gewenste functionaliteit of worden gestopt ver voordat er wordt opgeleverd. Een belangrijk deel van deze problematiek is direct toe te wijzen aan het toepassen van traditionele, lineaire software development methodieken.

Agile development lijkt hiervoor de oplossing. De term agile duidt een generatie van nieuwe software development methodieken aan die zich kenmerkt door een nauwe samenwerking tussen business en IT, korte iteraties en het kunnen omgaan met veranderingen in projecten. Bekende methodieken zijn Scrum, extreme programming (XP), Smart, DSDM en Lean. Agile methodieken en technieken worden inmiddels succesvol toegepast in grote en kleinere organisaties, waaronder financiële instellingen zoals KBC Bank, software development huizen zoals Cegeka, RealDolmen, Capgemini, maar natuurlijk ook Microsoft, IBM Rational en vele anderen. Zij hebben de grote voordelen van agile software development ingezien, zowel voor opdrachtgever als opdrachtnemer. De bedoeling van dit seminar is om u uit te leggen welke voordelen dit zijn, hoe u deze bereikt, en wat de best practices zijn in agile development.

Dit seminar laat zien hoe agile software development bijdraagt aan het succesvol uitvoeren van software development projecten. Tijdens dit seminar bespreekt Sander Hoogendoorn, agile thought leader bij Capgemini, de nadelen van traditionele, lineaire methodieken, en gaat hij in op de karakteristieken van agile software development. Ook komen bekende misvattingen die rond agile de ronde doen aan bod. Het seminar geeft de overeenkomsten en verschillen tussen de belangrijkste agile methodieken, zoals Scrum, extreme programming, Smart, Lean en DSDM aan. Natuurlijk passeert ook een groot aantal best practices, tools en technieken uit de alledaagse praktijk de revue. Gastspreker Stefaan Van Royen toont de lessons learned bij de succesvolle invoering van agile software development in zijn vorig bedrijf. Het seminar geeft de deelnemers een helder inzicht in de positieve bijdrage die agile software development levert aan projecten, en toont een reeks van concrete en pragmatische handvatten, technieken en best practices voor het implementeren van agile software development in uw organisatie.

Welke vragen komen aan bod?

  • Wat is nu precies agile software development ?
  • Wat kenmerkt agile projecten ?
  • Welke agile methodieken zijn er eigenlijk en wat zijn hun overeenkomsten en verschillen ?
  • Welke methodiek past het best bij mijn organisatie ?
  • Welke agile best practices zijn er en welke kan ik al direct toepassen ?
  • Hoe verkoopt u agile software development aan uw klanten ?
  • Hoe implementeer ik dit in mijn business ?
  • Kan ik agile techieken toepassen in product development ?

Voor wie is dit seminar bestemd ?

Dit seminarie richt zich op iedereen die betrokken is bij de organisatie van het software development proces:

  • opdrachtgevers,
  • IT managers,
  • project managers,
  • software architecten,
  • senior software designers en developers,
  • testers, …

Check out this seminar at www.itworks.be.

Agile testen. Vloeken in de kerk? [in Dutch]

This post is published in Software Release Magazine, and in slightly adapted form as an expert opinion on the Computable website.

Al sinds jaar en dag houd ik mij bezig met het begrip agile. Mijn team en ik schreven de eerste versie van de agile-methodiek Smart bijvoorbeeld al in 1998, in eerste instantie als extensie voor DSDM. In het afgelopen decennium heb ik dan ook talrijke agile-projecten meegemaakt, uitgevoerd door uiteenlopende organisaties, van universiteiten en softwarehuizen, tot overheidsinstellingen, grote banken en verzekeraars. In de eerste jaren was het vooral zaak het agile-gedachtengoed te evangeliseren.

Op dit moment ruilen echter meer en meer organisaties hun klassieke aanpakken voor een agile-aanpak – al dan niet gedwongen door de economie. Scrum is daarbij veruit de favoriet. Doordat steeds meer projecten toch al starten met agile, kan ik mijn pijlen inmiddels richten op agile anti-patterns. De dingen die misgaan in agile-projecten. Ook een erg leuk onderwerp, want er gaat ook in agile projecten meer dan genoeg mis. Ook agile is geen silver bullet.

DE agile methodiek

Voorbeelden? Alhoewel je steeds meer mensen hoort zeggen dat ze DE agile-methodiek gebruiken, soms zelfs met een hoofdletter geschreven, bestaat er helemaal niet zoiets als DE agile-methodiek. Wel zijn er een heleboel agile werkwijzen, zoals Scrum, XP, Smart, FDD en Kanban. Elk met hun eigen voorgangers, en hun eigen discipelen en volgelingen, om in de evangelisatie-metafoor te blijven.

Helaas constateer ik dat de agile-comminity langzaam maar zeker dogmatischer wordt. Calvinistischer. Populariteit verstart nu eenmaal. Al meerdere malen heb ik discussies meegemaakt over dat ik geen smart use cases mag gebruiken in agile projecten of dat een stand-up meeting geen facilitator mag hebben. Zeggen dat er in de diverse agile werkwijzen elementen ontbreken die broodnodig zijn in projecten, is dan ook vloeken in de kerk.

De meeste agile-processen focussen namelijk maar op één klein deel van wat er in systeemontwikkelprojecten allemaal gebeurt. Er is terecht veel aandacht voor het schrijven van goede code, maar er is helaas veel minder aandacht voor toch ook tamelijk relevante zaken als software-architectuur, analyse, ontwerp en zeker voor testen. Alhoewel de meeste agile werkwijzen wel over unit testing spreken, onderscheiden ze geen aparte rol voor testers. En unit testing is toch nog altijd een techniek voor developers, waarbij kort gezegd testcode wordt geschreven voor de eigenlijke code.

Tussen hemel en aarde

Wanneer we echter grote agile projecten doen voor grote organisaties speelt in mijn optiek de tester een cruciale rol. Er is namelijk meer tussen hemel en aarde dan unit testing. Zo coachte ik recent een complex servicegeoriënteerd agile SAP-project. Een unieke aangelegenheid, waarschijnlijk het eerste in zijn soort in Nederland, maar als het aan het team ligt zeker niet het laatste. In dit project speelden de testers een cruciale rol. Omdat we in korte iteraties software analyseren, ontwerpen, bouwen, testen en opleveren, maken de testers vanaf dag één deel uit van het project. Dat biedt perspectieven!

Godgegeven talent

De unieke kijk op de wereld die testers namelijk aan de dag leggen, onderscheidt ze sterk van ontwikkelaars. Ontwikkelaars merken vaak niet of niet snel genoeg de uitzonderingen op die testers als het ware vanzelfsprekend wel herkennen. In complexe projecten maken we graag en dankbaar gebruik van dit godgegeven talent.

IMG_0219

Samenwerkende tester (links) en (ABAP) developer

Onze testers zijn dan met de ontwikkelaars medeverantwoordelijk voor het ontwerp van de software. Op deze manier voorkomen we veel fouten in het schrijven van de software nog voordat we ze maken. Eigenlijk een functionele vorm van unit testing.

Helaas focussen veel agile werkwijzen en agile projecten zich (voorlopig) vooral op het schrijven van de juiste code en is er, mede door het ontbreken van de rol tester in de meeste werkwijzen, nog onvoldoende aandacht van de positieve rol die testers in projecten kunnen spelen. En dat is, om in de evangelisatie-metafoor te blijven: zonde. Amen.

Read more: Computable website.

September 22, 2009. Workshop “Identifying, modeling and testing smart use cases”

Najaarsevent TestNet, NBC Nieuwegein (www.testnet.org)

And now for something completely different. I will be doing a talk – or rather a short workshop at a test event, the TestNet najaarsevent in Nieuwegein.

Many organizations rely on the concept of use cases to model and describe functional requirements. However, there are many different ways of identifying and modeling use cases. Use case documents range from a mere two-pager up to book-length. This obvious lack of standardization lead to great variation and difficulty in producing test scenario’s and test scripts. Use cases are hard to test.

During this talk speaker Sander Hoogendoorn, book author on the subject of UML, use cases and testing use cases, discusses a highly standardized approach to identifying and modeling use cases. This approach, named smart use cases, introduces smaller and equally granular use cases. Next, Sander will introduce a collection of standard types of smart use cases (stereotypes), that facilitate easier requirements gathering and that are traceable from requirements to tested software.

IMAG0107

As this talk will demonstrate, smart use cases also allow for an additional highly standardized approach to testing use cases. In this model based testing approach each of the smart use cases is modeled out further to identify test scenario’s and test scripts – using either flow charts, DFD’s or activity diagrams. With many standard types known, this approach can even be (partly ) automated, allowing testers to focus on the special cases and exceptions, rather than the regular cases.

As real-life examples show during this interactive presentation, projects also benefit from this smart testing approach when testers and developers join forces in (agile) projects to model these test scenario’s before the software is implemented, similar to unit testing approaches.

Key points

Key points for this workshop will be:

  • Experience a pragmatic approach to identifying, modeling and testing use cases
  • Learn how to apply standard types of smart use cases to simplify functional testing
  • Discover new, agile ways of collaboration between testers and developers.

Outline for new pragmatic book on smart use cases

We (my team and I and a lot of people that contributed from projects) have been working on the concept of smart use cases on and off over the last ten years. I think it was back in 1998 that we coincidentally started modeling use cases at bit different than was custom, in a workflow oriented project. We not only pictured a single use cases with one or more associated actors, but discovered ways to use the use case diagram in a much more visual way, adding supporting use cases and actors, and by using use case relationships to a greater extend. This eventually led to the definition of what we now refer to as smart use cases.

Finally .. the book?

After having trainer over 2.000 people in the past 6 to 7 years, and having seen a growing number of organizations and project use the techniques, it’s probably time to write the book (if I can find the time). Likely the book will cover the following subjects.

User-goal level and sub-function level

Over time we have seen all kinds of new ideas, and extensions to this core thoughts back in 1998. First of all Alistair Cockburn’s model gave the different levels a name; user-goal level use cases and sub-function level use cases. Then we discovered different approaches to identifying smart use cases, from business processes and project scope, but also from existing applications, or functional documentation.

image

Modeling smart use cases

We quickly gained on tips and tricks on modeling the smart use cases, including splitting diagrams into service consuming and service provision, modeling in colors, how to use include and extend, and when to model supporting actors, and when not. Even further we discovered a lot of patterns in how smart use cases work together.

Testing smart use cases

Testing was always high up on the agenda. During a project for a large pension fund it appeared that a test technique called a project cycle test worked very well on our smart use cases, so we elaborated on that further, and transformed the original technique using UML activity diagram and generated test scenario’s.

Stereotypes

Originally we were modeling smart use cases for “normal” types of projects, such .Net, web applications, PowerBuilder, Java. Later on we found out that modeling smart use cases also appeared to be useful in SharePoint, BI and even SAP projects. From all these projects a growing list of standard types of smart use cases evolved, containing standard types (which we refer to as stereotypes) for data manipulation, reporting, service orientation, BI (ETL), and much more.

Estimating smart use cases

Later on, we added a very useful an pragmatic estimation scale for estimating smart use cases. This scale has proven to be extremely efficient in a wide variety of project types. It was only last week that we have modeled out a service oriented SAP implementation and estimated the project at 276 smart use cases points (SUCP). We call this technique smart estimation. Of course, all of our stereotypes match the scale so we can estimate fairly quick.

We soon picked up agile estimation techniques like smart estimation poker to establish team estimates for smart use cases, but also use a quick estimate spread sheet, to gives reliable results in no-time.

Being smart at agile

Talking of agile, in the same period that smart use cases were defined, an agile methodology saw the light that embeds the above techniques in a mature agile process. This methodology is called Smart (not the acronym) – hence smart use cases. In it’s core the Smart process is smart use case driven.

Smart use cases in code

And last but not least, the most important step of all: transforming smart use cases to code. There are very sensible ways of mapping smart use cases to your software architecture, and we promote having a process layer in your architectures, that hosts your use cases. In our own software architectures and frameworks, we have elaborated on mechanisms and design patterns (more specific the task pattern) to implement our smart use cases directly in code.

Even further, the stereotypes we apply helps us to generate lots of code (and other deliverables) from the model, using a model driven code generator (in our case called Tobago MDA).

So .. next step is the book?

There is so much to tell about smart use cases, that I have to start writing it down, even if it is just to keep my head from exploding. Than there’s only one way to go forwards from here, and that’s to write a book. This blog post is a short outline on the contents of this book-to-be. I would love to receive your examples, thoughts, ideas, annotations and models (e.g. in Enterprise Architect’s EAP format). You will be mentioned.

Pleas e-mail me all your input at: smartusecases@gmail.com. Thanks! For more information check out www.smartusecase.com


Share this post :

Digg This

Identifying, modeling and testing smart use cases

This morning I proposed a second talk for the EuroSTAR 2009 Conference in Stockholm. Sounds ok, doesn’t it? See EuroSTAR Conference 2009.

Many organizations rely on the concept of use cases to model and describe functional requirements. However, there are many different ways of identifying and modeling use cases. Use case documents range from a mere two-pager up to book-length. This obvious lack of standardization leads to great variation and difficulty in producing test scenario’s and test scripts. Use cases are hard to test.

During this talk speaker Sander Hoogendoorn, book author on the subject of UML, use cases and testing use cases, discusses a highly standardized approach to identifying and modeling use cases. This approach, named smart use cases, introduces smaller and equally granular use cases. Next, Sander will introduce a collection of standard types of smart use cases (stereotypes), that facilitate easier requirements gathering and that are traceable from requirements to tested software.

image

As this talk will demonstrate, smart use cases also allow for an additional highly standardized approach to testing use cases. In this model based testing approach each of the smart use cases is modeled out further to identify test scenario’s and test scripts – using either flow charts, DFD’s or activity diagrams. With many standard types known, this approach can even be (partly ) automated, allowing testers to focus on the special cases and exceptions, rather than the regular cases.

As real-life examples show during this interactive presentation, projects also benefit from this smart testing approach when testers and developers join forces in (agile) projects to model these test scenario’s before the software is implemented, similar to unit testing approaches.

Key points

  • Experience a pragmatic approach to identifying, modeling and testing use cases
  • Learn how to apply standard types of smart use cases to simplify functional testing
  • Discover new, agile ways of collaboration between testers and developers