Methodology

Measure the right coverage

Arjan Molenaar

I’ve found many people to care for a high unit test coverage. It tells you something about how well your code is tested. Or does it?

Unit tests typically test the smallest piece of code. It is an excellent strategy to write your tests in conjunction with the production code. The tests help you shape the interfaces and help explore the problem domain.

Big question is: does the business/product owner care? What do those tests tell him (or her) about the actual functionality delivered? Fairly little really, if any at all. This boils down to the next question: why care about unit test coverage then?

 Read more

Performance testing with Selenium and JMeter

Mark Bakker

In this blog I will show a way to do performance testing with Selenium. The reason I use Selenium for performance testing is that some applications use proprietary protocols between the application layer in the browser and the server.

So just capturing the traffic between the server and replaying modified traffic is not that simple.

An example is testing GWT applications. In a previous blog I wrote why this is difficult.

To create a test script in Selenium the first thing I do is record a test with Selenium IDE
After recording a script I export the script to JUnit3 (Remote Control). This will generate a JUnit test script which can be run to test the application.

The next thing you need is a solution to run a lot of JUnit test cases at the same moment.

Here you see a visual representation of the whole test chain.

 Read more

The “Performance Series” Part 1. Test Driven Performance.

Wilco Koorn

A number of my colleagues and myself recently decided to share our knowledge regarding “performance” on this medium. You are now reading the first blog in a series in which I present a test-driven approach to ensuring proper performance when we deliver our project.

Test driven

First of all note that “test-driven” is (or should be ;-) common in the java coding world. It is, however, applied to the unit-test level only: one writes a unit test that shows a particular feature is not (properly) implemented yet. The test result is “red”. Then one writes the code that “fixes” the test, so now the test succeeds and shows “green”. Finally, one looks at the code and “refactors” the code to ensure aspects like maintainability and readability are met. This software development approach is known as “test driven development” and is sometimes also referred to as “red-green-refactor”. Read more

The "Performance Series" Part 1. Test Driven Performance.

Thijs Vermeer

A number of my colleagues and myself recently decided to share our knowledge regarding “performance” on this medium. You are now reading the first blog in a series in which I present a test-driven approach to ensuring proper performance when we deliver our project.

Test driven

First of all note that “test-driven” is (or should be ;-) common in the java coding world. It is, however, applied to the unit-test level only: one writes a unit test that shows a particular feature is not (properly) implemented yet. The test result is “red”. Then one writes the code that “fixes” the test, so now the test succeeds and shows “green”. Finally, one looks at the code and “refactors” the code to ensure aspects like maintainability and readability are met. This software development approach is known as “test driven development” and is sometimes also referred to as “red-green-refactor”. Read more

Series: How to kill the Architecture Department? Part 3

Herbert Schuurmans

Part 3: The Technical Product Owner

Retrospective

In the previous 2 posts we described the agile organization model and a couple of technical roles in this model. In this post we will dive into the role of Technical Product Owner. I will compare it with what we have started to call the “classic architect”.

The classic architect

Many architects are not involved in the process of writing software. Typically they are standing on the sideline, watching the game. Their way of communicating is through documents. Read more

Series: How to Kill the Architecture Department? Part 2

Herbert Schuurmans

Part 2: Where is the employee formerly known as Architect?

The agile organization model

In the first blog post in this series Adriaan described a reference model for agile organizations. In other words: how an idea can be transformed into cash. An idea is prioritized together with all other ideas. It then gets planned, after which the idea is broken down into epics, user stories and tasks. At the end working software is deployed to production. In this process Product Owners play a key role. They coordinate the process to get ideas prioritized and user stories ready. Their main focus is business value. But, how about all those technical features and aspects? These technical features and aspects are the subject of this blog post.
 Read more

Use-case slice based Product Backlog – An Example

Richard Schaaf

As explained in the previous blog, use-case slices are a great way of structuring your Product Backlog. This blog picks up where I previously left of by looking at a more concrete example. We will create the Product Backlog for a system for a library point-of-sales terminal.

 Read more

Series: How to Kill the Architecture Department? Part 1

adejonge

Part 1: The Employee Formerly Known As Architect

Every system has an architecture, but it is not necessarily designed by an architect. This post sketches a reference model for agile organizations without the role of Architect. Next posts in this series will provide best practices on how to improve architecture within this architect-less agile reference model.

Classic IT Architects do not fit in agile organizations

Agile organizations seem hostile environments to classic architects. The DONE-teams are encouraged to Do The Simplest Thing That Could Possibly Work (DTSTTCPW) and avoid Big Design Up Front (BDUF). In addition, teams are encouraged to be self-organizing and make their own decisions.

With a classic architectural mind frame, it is easy to feel left out in an agile organization. If you keep writing Project Start Architecture documents, it seems like the documents are never read. Or worse: you never get the chance to write the document properly, because the DONE-team has already started developing.

Architecture remains important

This blog post is the start of a series introducing best practices for architecture in an agile organization. In this new organization, there is a good chance that nobody has the title Architect anymore. Yet, the architecture of the system remains of vital importance to your long-term success.

The process for creating and maintaining architecture in an agile organization is different! Architecture becomes a team responsibility. So how can you make sure the teams make the right decisions?

Introducing an agile organization model

This first post introduces a reference model of a typical agile organization. The following parts in this series will build on this reference model to introduce the technical roles in all phases of the software lifecycle.

Getting it DONE

Agile is a container term for a number of processes: SCRUM, eXtreme Programming, RUP, DSDM and possibly others. The most popular agile process is SCRUM. This series assumes a SCRUM process extended with principles and practices from the eXtreme Programming community.

Figure 1 provides an overview of the SCRUM process. In the To Do column, there is a backlog with User Stories that are iteratively implemented into Potentially Shippable Software (DONE) in 2-3 weeks sprints. During sprints, there are daily standup meetings facilitating team communication on progress and impediments.

SCRUM is a lightweight process. It provides a helpful structure, mind set and best practices for a single development team. However, it does not help you on how to create user stories, manage architecture and scale over multiple teams. It also does not tell you how to bake a cheese omelet, for that matter.

In a larger organization, you probably need user stories, architecture and multiple teams. And probably, at some point you need cheese omelets too. So, rather than switching to a heavyweight process that covers all of these, you should extend SCRUM with additional processes and best practices for the challenges at hand.

You can choose the additions that fit with your organization.

Getting it READY

In order to write user stories before a sprint starts, you can introduce iterations preceding the SCRUM sprints to get stories READY. Figure 2 illustrates the model of an agile organization and how the READY team relates to the DONE team.

In a READY team, product owners cooperate with stakeholders, analysts and consultants in order to write specific user stories for the next sprint.

A product owner may serve multiple DONE-teams. However, in a larger organization, there may also be multiple READY-teams. For good communication, it is important to communicate over teams. A Scrum of Scrums is one of the solutions to facilitate this kind of communication.

Getting it PRIORITIZED

It takes time to write good user stories. If the READY team is unable to deliver stories before the next sprint, a DONE-team cannot start developing on time. How do you know which stories to write first? For this, you need to have a good understanding of priorities.

Priorities depend on your company goals. In most companies, the demand for new software features is larger than the capacity of people to realize the software. So, choices need to be made.

The reference agile organization model recognizes a Chief Product Owner who decides the priorities of new initiatives before user stories are written.

In order to decide on priorities, even before writing the final user stories, you need high-level analysis and communication. For this purpose, there is a Getting it PRIORITIZED phase.

Getting it in PRODUCTION

The only valuable software is software in production. Traditionally, SCRUM aims to deliver Potentially Shippable Software. In the ideal case, the DONE team goes one step further. The definition of done should be: DONE = LIVE.

At some point, there is a transition of software from development into production. And in production, software needs to be maintained.

In an agile organization, the transition needs to be as smooth as possible. And transitions need to be made as often as possible because the more often you do it, the easier it gets. Best practices to support this are described in the Getting it in PRODUCTION phase.

So, where is the architect?

Over the four phases, you have met product owners, chief product owners, developers and operators. But none of the phases bothered to mention an architect. So, where is the architect?

Remember the introduction of this blog post? It said: “In this new organization, there is a good chance that nobody has the title Architect anymore.” The good news is that the introduction also said: “Every system has an architecture, but it is not necessarily designed by an architect.”

Stay tuned for the next episode of How to Kill the Architecture Department

The next posts will explain the new roles for The Employee Formerly Known As Architect in the agile organization. Each phase has its own architectural role. Below is a sneak preview of one of the new roles. Keep reading following parts of this series and find out what the other roles are.

What are the responsibilities of a Technical Product Owner? And how do these compare to the responsibilities of an Architect in a classic organization? Please share your opinion by commenting below!

To be continued in two weeks!

Improving User Stories with Use Cases

Richard Schaaf

One of the major issues in organisations adopting Scrum (or most other Agile methods)  is the quality of the items on the Product Backlog. Product Owners are struggling with defining the User Stories needed to drive the process forward. And their role is often nearly impossible. How does one generate great User Stories that deliver real value, have just-enough detail, but also end up generating the documentation that is needed later in the application lifecycle?

The issue here is not whether User Stories are inherently bad (they are not), but that it is really hard to write User Stories in such a way that they really help and are useful in the long term. What we need is not a replacement for User Stories, but a better way to come up with them.

So, how should you go about arriving at great User Stories? That is what the remainder of this blog will look at.

 Read more

NEW scrum process overview

Daniel Burm

Some of you may know that I like to add drawings to support my posts.
This time the drawing itself is the subject of the post and you can actually use it. So please take a look at it and put it to use as you see fit. If you like it (or hate it…) or if you want to share your experiences using it please leave a comment.

You can download it here (PDF):
Xebia Scrum Process Overview

Or copy it from here