Executable specification - the whole stack or not

This is really an age-old BDD question that pops up from time to time. Just now I got a question from an ex-colleague about it. A bit rephrased it something like this:

Should I test through the GUI all the way down to the database? How do you handle test-data in and test executing speed in those cases?

Many of us first got exposed to BDD tests through web applications and the way that we could test through the actual web page. We use tools like Watin, Selenium and other automation tools to accomplish that. We structure our automation code with page wrappers to get manageable automation code that can be re-used in our step definitions. For some BDD even implies automation (which is not at all the case).

On the “other” side we try to go through the whole stack and go through all the...

Read More

Kanban-inizing the Avega Group Office – Getting the Show on the Road

This is the second post in a series detailing how we assisted some teams at the Avega Group office in implementing Kanban to manage their workflow. In the first post, we introduced the teams to the basics of Kanban and Lean, emphasizing the importance of limiting work-in-process and the benefits it could bring.

In this post, we’ll cover the initial implementation of Kanban boards for the teams and the early reactions to this new workflow system.

Setting Up the Kanban Boards

Together with the teams, we created simple Kanban boards tailored to their needs. We stressed that these boards were not final and should evolve over time. Here’s what we set up:

  • Inbox – This column acts as the team’s to-do list for a comfortable horizon. We didn’t impose a limit on the number of items here but suggested they consider it. Items in this column...
Read More

Kanban-inizing the Avega Group office–setting the stage

I have recently returned from parental leave and got to experience office tempo first-hand. Was not prepared for that, but it also had me look around and I saw two teams at Avega Group that were under a lot of stress (they said) and seemed to handle a lot of tasks simultaneously.

Being dunked deeply in the Kanban-pool, it made the hair on my neck stand up and I shivered to my bones. WIP is bad you know

Being an Avega Coach, I have some time to spend at the office, so I teamed up with Morgan, a fellow Lean/Agile coach here at Avega Group – and we decided to see if we could do anything about it.

In doing so, we had to sharpen our arguments and think a bit differently. They are not creating systems, you know. Both Morgan and I have experiences mostly...

Read More

Who Writes the Specification, Now Again?

There’s been a lot of buzz around Specification by Example lately, especially in my circles. Recently, I was asked to introduce the topic to a group of interested individuals. Interestingly, the conversations I encounter are predominantly among business analysts, testers, and not just developers.

A common question that often comes up is:

Who writes the specifications? Business people, developers, or testers?

The underlying intent behind this question seems to touch on issues of ownership and collaboration. Drawing from my experience in a recent project and insights from Gojko Adzic’s book, I’d like to share my perspective on this.

Key Process Patterns

Gojko Adzic outlines seven “key process patterns” in his book on Specification by Example. These patterns are essential practices that contribute to successful implementations of Specification by Example:

  1. Deriving Scope from Goals – Establishing the scope of a feature or iteration based on...
Read More

Twitter for Beginners

I received a question from three colleagues about what Twitter is and how to use it. While I don’t consider myself an expert, I use Twitter frequently and have compiled an introductory guide with my own tips on how to navigate it. There are other resources available, such as this one by Scott Hanselmann, but here’s my take on it.

What is Twitter?

According to Wikipedia:

Twitter is an online social networking and microblogging service that enables its users to send and read text-based posts of up to 140 characters, informally known as “tweets.”

You send short messages (tweets) that are visible to anyone who follows you. You can also follow other users to receive their updates. Most of the content is public (with some exceptions like direct messages) and can be viewed by visiting your Twitter page. That’s the...

Read More

Dynamic Keyword Expandoobjecta Short

--- layout: post title: The dynamic keyword, ExpandoObject–a short intro for me date: 2011-09-05T13:08:00.001Z author: Marcus Hammarberg tags: - Tools - .NET modified_time: 2011-09-05T13:52:44.514Z blogger_id: tag:blogger.com,1999:blog-36533086.post-8903492296720178197 blogger_orig_url: http://www.marcusoft.net/2011/09/dynamic-keyword-expandoobjecta-short.html --- Right away – this blog post is mostly for me. I have not been dabbling enough with the “dynamic” keyword to say that I know it. This is what and how I understand it now. So, if you care to read this… please be gentle with your comments. I love to see them and learn that I was wrong – I’m most certainly am. #### dynamic keyword Since .NET 4.0 we have a new keyword – [dynamic](http://msdn.microsoft.com/en-us/library/dd264741.aspx). If you read the 

      Read More
    

Creating a Local NuGet Repository with Dependency Bundles

I’m loving NuGet and it’s totally changed the way I look at bringing in external dependencies to my projects. I’ve written about that before.

Sometimes, you need to install several packages into a project. For example, when installing SpecFlow, you might also need a test framework like NUnit or MsTest, and perhaps an assertion or mocking framework.

If you want a package that includes your or your company’s preferences, and is not necessarily suitable for publishing to NuGet.org, here’s how to create a local package with dependencies only.

Strategy

Our approach is to create a package that contains only dependencies—no code—and store it in a local NuGet Repository.

Install NuGet Package Explorer

Most of the work will be done in the .nuspec file, an XML file that you can edit with any text editor or use the excellent NuGet Package...

Read More

My Mouse Pointer Disappeared in Visual Studio When Using a Dark Theme

I recently started using a dark theme for Visual Studio. For those who haven’t checked out Studio Styles, it’s a fantastic site for finding great themes. I’m currently using the Son of Obsidian theme, but I also recommend checking out the Coding Instinct Theme created by my colleague Torkel.

However, I ran into an issue where the mouse pointer became almost invisible when editing text in the code editor with the dark theme. The pointer turned a dark gray, blending into the dark background, which was extremely frustrating.

After some digging, I found a solution in an old discussion. The fix involves changing the mouse pointer scheme in the Windows Control Panel. Here’s how you can do it:

  1. Open Control Panel
  2. Navigate to Appearance and Personalization
  3. Go to Personalization
  4. Click on Change Mouse Pointers

This will open the Mouse Properties window:

Read More

BDD on .NET Framework and Where I Learned About It

I recently received an insightful email from Jose Samonte asking for resources on Behavior-Driven Development (BDD) and where to start learning about it. Given the depth of my own journey with BDD, I thought I’d share my experiences and recommendations publicly.

Start Here

My introduction to BDD began with a blog post by Dan North: Introducing BDD. This post provides a solid foundation on the origins and principles of BDD. For further reading, Dan’s article “What’s in a Story” is also highly recommended as it delves into the concept of user stories in BDD.

Learn from Others

Much of the early work in BDD was done on platforms other than .NET, particularly in the Ruby and Java communities. Here are some key resources that have been instrumental in my understanding:

  • The RSpec Book: This book offers an introduction to BDD within the...
Read More

Theory of Constraints and Specification by Example Part II

Following up on my previous post about Specification by Example and Theory of Constraints, I’ve received insightful feedback from colleagues, particularly Håkan Forss, whom I greatly respect.

The Five Focusing Steps

Håkan pointed out some valuable perspectives on the Theory of Constraints’ five focusing steps:

  1. Identify the Constraint
  2. Decide How to Exploit the Constraint
  3. Subordinate All Other Processes to the Above Decision
  4. Elevate the Constraint
  5. If the Constraint Moves, Return to Step 1

Assuming the Goal of the Organization

The first step is to articulate the goal. In system development, this might be phrased as:

Develop a system that meets the needs of the users

Understanding the goal of your project can help direct the focus of improvement efforts and influence how trade-offs are managed throughout the process.

Identify the Constraint

In physical systems, identifying constraints is often straightforward—like observing...

Read More