Top 11 #Agile Books and top 3 Information Technology books

I just finished presenting at SDEC and I realized that I did not have a Blog post on my Agile reading list. Many people asked about how to get started on Agile and a list of books that influenced me. In a future post, I will list the practices that I tried first and my success with them. (Somewhat of my personal Agile roadmap)

Without further ado here are my top 11 Agile books that have influenced me and helped me to learn about Agile.

And yes, they are in order! Not in the order they have to be read, but in how much I found them valuable.

1) User Stories Applied – Mike Cohn

2) Agile Estimating and Planning – Mike Cohn

3) Innovation Games – Luke Hohmann

4) Lean Software Development – Tom and Mary Poppendieck

5) Agile Database Techniques – Scott Ambler

6) Art of Lean Software Development – Curt Hibbs

7) Lean-Agile Software Development – Allan Shalloway

8) Test Driven Development – Kent Beck

9) Lean Architecture – James O. Coplien

10) Agile Testing – Lisa Crispin

11) The Art of Agile Development – James Shore

And the top three Information Technology books that EVERYONE should read in the industry regardless of their role or methodology:

1) Code Complete – McConnell

2) Beautiful Code – Oram & Wilson

3) Godel, Escher, Bach – Hofstadter

The Godel, Escher, Bach addition might surprise some people, but it was a book that profoundly influenced me and the way I think about problems, models, and solutions. Highly recommended.

Advertisement

#Selenium Tales from the road part 1 – Artifact Naming and Organization

How have people organized and structured the artifacts that Selenium uses? As a moderate user of Selenium, I wonder if I am doing this the recommended way or if there are better ways that I am unaware of. To this end I thought I would share the organization and structure I have used and see if anyone can provide suggestion on how to make it better.

Current State

I am using Selenium 2.1 and I am also creating Test Cases and Test Suites. I am using User Stories to capture my requirements and the Test Suites and then the Test Cases are based off of those requirements. The table below shows the naming standards and organization that I have used:

Artifact

Naming Standard

Conventions

User Story

[User Story #]-[User Story Description]

Documented in TargetProcess

Test Case

[User Story #]-[Test Case Description].tc

Multiple test cases per User Story

Test Suite

‘US'[User Story #’s (separated by ‘-‘)].ts

Multiple User Stories per Test Suite.

Why?

Why did I choose the following seemingly complex naming standards? Well I was having these problems:

  1. I could not tell which Test Cases where in which Test Suite
  2. I could not tell which Test Cases tested which User Story
  3. I could not tell which User Stories were tested by which Test Suite

By using the above naming standard and organization, I was able to answer all of these questions and also organize my Selenium artifacts relatively easily. I wrestled with possibly numbering the Test Cases and then referencing those Test Case # in the Test Suites. But I realized that the Test Case # was not that useful. What I really need to know was what User Story the Test Case and Test Suite exercised.

So far these naming standards and organization has worked quite well.

Suggestions?

What has everyone else found? Are there best practices I am not using? Any recommendations?

Next Steps

Over the next little while, I will publish three additional Blogs related to my Selenium experience. The Blog posts will address the following topics:

  • Selenium integration and reporting with TargetProcess
  • Selenium integration and automation with Maven (or possibly Fitnesse)
  • Selenium Test Case tips and tricks (I’ve already found a wealth of tips and tricks but I thought I would wait until I have automated all my tests)

Hopefully this will be of interest to others out there. Please let me know if there are certain topics people would like to see discussed.

Selenium or Fitnesse as an Acceptance testing Framework? Thoughts?

After trying to get both frameworks operational in my current project, I think I am going to take the leap and try Selenium first. After some research and trial and error, I have been able to get Selenium operational and found great resources on how I can automate the tests with Maven. (which is also currently used by our project)

I even located the Selenium Core add-on that allows for goto and while constructs in the Selenium tests that will allow for move control in my test suites. So I think there is enough critical mass to start with Selenium and see how successful the tests can be.

I’m curious as to other people’s experience and recommendation. I understand that Selenium and Fitnesse provide different benefits and that all projects probably require both. But it seems to me that a good percentage of test cases can really be tested in either. What tool have people chosen to host the tests that could be written in either?

I guess at the end I felt more comfortable writing tests that exercised the actual web pages. (even though I know it may take more work to create the test cases and to design them appropriately so they are not brittle.) Once those tests are created, I feel they I would have more confidence that the results will be valid. I still had a little concern about the problem I may introduce when creating tests in Fitnesse where I don’t have the proper context defined. I felt if I used the web application, the application will ensure I have the proper context.(or else I have correctly discovered a defect) I guess I also may be tainted with my recent experiences when I could not get Fitnesse to work even though the web application worked fine through the browser.

I’m still going to try to get Fitnesse to work, but I will initially start to create my test suite in Selenium. I’ll update future posts as to the progress I am making.

Looking forward to the green bars. So far I have one. đŸ™‚