SpecFlow.Assist.Dynamic - What Is It?
October 31, 2011
I’m excited to share a new NuGet package I’ve been working on: SpecFlow.Assist.Dynamic. This extension builds on SpecFlow and the fantastic Assist helpers created by Darren Cauthon.
In this post, I’ll cover what SpecFlow.Assist.Dynamic is, the problem it solves, and how it was developed. Future posts will delve into its usage and how it integrates with Simple.Data to enhance the testing experience.
The Problem
One of the common issues with SpecFlow is the need to create simple data transfer classes just to move data around in your step definitions. For example, consider the following Gherkin step:
Given the following users exist in the database: | Name | Age | Birth date | Length in meters | | Marcus | 39 |...
Simple.Data–the testing story
October 14, 2011
Simple.Data–the testing story
I’ve fallen for Simple.Data big time. It’s so terse and concise that you almost lose the need for data access abstractions altogether. It’s just … there for you. Just see for yourself here. And when you have this power at your fingertips, it’s easy to forget the testing story. How should I use Simple.Data so that I can still write unit and acceptance tests with code using it?
In my unit tests, I do not want to call the database, of course, because that would slow my unit-level tests down. Also, if I do automated acceptance testing, I want to go end-to-end, testing the full stack of the application. But there the database access will slow me down, often in the form of a network hop as well.
Have no fear! Mr. Rendle has set us up with a couple of ways to...
Is Scrum a –ism that doesn’t work for real?
October 7, 2011
The other day I got my hands on the Scrum Guide 2011. It’s a updated version of how Ken Schwaber and Jeff Sutherland looks at Scrum, it’s practices and state today. It’s well worth a read – especially if you haven’t read up on Scrum in a while.
And let me here in the outset of this post also state that I have use Scrum a lot and it helped me and my teams a lot as well. I like Scrum to be short – but (had to be one right) I think that some situations doesn’t fit perfectly with Scrum.
After that short side note, let’s get back to the real thing. After I read the article I had an opportunity to sit down with Morgan Ahlström, a fellow lean / agile coach here at Avega Group. We started to discuss about the...
Kanban-inzg the Avega Group Office–reflections
September 26, 2011
This is the third post in a short series on how Morgan and me went about to introduce Kanban and some Lean thinking to two support teams of the Avega Group office. You can read post 1 and post 2 before this to get the complete picture.
With this post I wanted to do some reflections on how the introduction of Kanban took hold for the teams and also what Morgan and me learned in the process. We are used to do this for IT-projects and teams working with system development or maintenance.
Reflection on the result for the teams
First week
The immediate and positive responses from the group was reactions like:
- “This is very clear and shows us what we are doing”
- “I can see dependencies between our tasks. And on the ones where we wait for...
Executable specification - the whole stack or not
September 26, 2011
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...
Kanban-inizing the Avega Group Office – Getting the Show on the Road
September 19, 2011
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...
Kanban-inizing the Avega Group office–setting the stage
September 16, 2011
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...
Who Writes the Specification, Now Again?
September 13, 2011
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:
- Deriving Scope from Goals – Establishing the scope of a feature or iteration based on...
Twitter for Beginners
September 13, 2011
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 micro blogging 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 dynamic keyword, ExpandoObject–a short intro for me
September 5, 2011
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. If you read the MSDN documentation you’ll learn that:
The dynamic type enables the operations in which it occurs to bypass compile-time type checking. Instead, these operations are resolved at run time.
Ok, but what useful is that? I mean you could write this, you probably shouldn’t but you could: