Software Development

WebTest Fixtures, FitNesse, Selenium and Integrated Windows Authentication

As part of one of the latests coaching on implementing Scrum in a software development team, it was decided to implement ATDD and we decided to use FitNesse for preparing and writing of the tests and Selenium to execute them.
In order to link both Selenium and FitNesse, we use WebTests Fixtures (Thanks Gojko et al.)

The surprise that awaited us was a web application developed in. NET with Windows Integrated Authentication. Anyone who has been through this, would know that there is not much information online that would solve the problem. Except for a couple of modifications to the core of WebTest and a few isolated posts, we were unable to find a unified source to solve this problem.

From the beginning, we knew we didn’t want to modify the code of the testing tools we decided to use, to enable them to be updated as new versions come out without major problems, therefore, that solution was discarded.

After researching a while, we decided the best option was to have Selenium running an instance of Firefox onfigured enough to set Integrated Windows Authentication with no problems.

Context

FitNesse and Selenium are both installed and running as services on a windows server. FitNesse version is the one that comes with the download of WebTests Fixtures, while the version of Selenium is the latest, since that comes with WT supports up to Firefox 2, not 3.

Solution

In principle, we must create a new Firefox profile with a given configuration for user credentials under which the service is running Selenium are sent to the Web application in a transparent manner, without popups or alerts that prevent Selenium do its job. Then we configure selenium to lift the specific profile of Firefox, and not another.

Creating the Profile in Firefox

To create a new profile for firefox it’s important to be logged with the user under which the service is running Selenium. Once inside the system you must follow these steps (Note: This assumes Windows):

1. Run:

firefox.exe -ProfileManager

2. Click “Create Profile”
3. Naming Your profile. In our case we use “WebTest-FFPROFILE-IWA”
4. Select a folder. In our case we use “C:\webtest\WebTest-FFPROFILE-IWA”
5. Click “Finish”
6. Select “Do not ask at startup”

Configuring Profile in Firefox

1. Continuing from the previous step, select the newly created profile and click on “Start Firefox”
2. Go to “View-> Toolbars” and uncheck “Bookmarks”
3. Right click on the toolbar and select “Customize”
4. Select “Use Small Icons” and accept
5. Go to “Tools-> Options
6. In the tab “Main” setear “about: blank” homepage and off as “Show Downloads”
7. In the Tab “Perstañas” select new window to new pages and disable all alerts
8. In the Tab “Content” Disabling Pop-Ups
9. Tab In the “Privacy” all options off History
10. In the Tab “Security” Security Options unselect and “Settings …” disable alerts
11. In the Tab “Advanced” deactivate “automatic transfer” of the subtab “General” and turn off alerts and search engines the tab “Updates”
12. Go to “Tools-> Extensions” and install Firebug, and ScreenGrab Selenium IDE
13. In the address bar type “about: config”
14. Create logic input (boolean) “extensions.update.notifyUser” -> false
15. Create logic input (boolean) “extensions.newAddons” -> false
16. Modify the entry “network.automatic-ntlm-auth.trusted-uris” and enter the domain of the server where we want to test the Web application
17. Modify the entry “network.ntlm.send-lm-response” and give it a value of “true”

At this point we have properly configured Firefox profile.

Selenium configuration to take your Firefox profile created

Modify the batch file that runs Selenium (in the root of WebTest) and include the following parameter after the call to the JAR file: “-firefoxProfileTemplate C:\webtest\WebTest-FFPROFILE-IWA” (change C:\webtest\WebTest-FFPROFILE-IWA with the foldername into which you saved the newly created Firefox profile.

Done, your tests now should run under Windows Integrated Authentication.

I hope to serve you at some point if you run into this problem. :)

Programmers are not Developers

I often find myself in situations where people mistakes “programmer” with “developer” or even “developer” with “programmer.”

Before proceeding, I should clarify that my position is to define the programmer as someone who does not specialize in something else other than coding new features based on designs received. Does not help to write or understand the specifications. Does not even occur to write automated tests. Doesn´t work to keep the build up to date. Not to mention the tests. He doesn’t help the client understand their needs or solve their problems. He’s dedicated only to write code.

The current trend in software development and agile methodologies are increasingly realizing the need for multidisciplinary teams, or in other words, people who contribute in various ways to the aim pursued, rather than people who only specialize in one part of the process and do not have a complete view of the project.

Thus, all are equally responsible for achieving the successes and learn from the failures  (if any exists.) The most reasonable solution that some organizations are finding in order to meet the changing business context is to increase their flexibility. It is even logical to deduce that the engagement of specialists in certain areas alone will create many economic losts and even higher costs of communication within the team, which can impair the successful product development.

What is expected of a developer then? The developer is basically who does EVERYTHING but not at the same time (that would be an absurdity), he knows the process from beginning to end and therefore is able to detect “on time” any “misadventure” that might arise. In other words, it would be like those new digital cameras that obtain a panoramic image providing a comprehensive view of the scene photographed.

The tasks of a developer are:

  • Understand the business and the objectives that are being pursued
  • Collaborate with the Product Owner to identify the user stories and acceptance criteria
  • Being part player at the time of assembly and maintenance of the working environment
  • Ensure agile practices for software development as continuous integration, TDD, ATDD
  • Participate in the design of the solution, both logical and architectural

For a better world, the responsibilities of product development must be shared among all those involved in the project, with the exception that the Product Owner does not, in most cases, have the necessary expertise about thechnical topics. Yes, I see the next question is: what about the Scrum Master? My answer is another question: How could the Scrum Master to remove impediments and ensure an adequate team work environment if he doesn’t have the technical expertise required? Quote:

“A detailed and intimate knowledge of how something works posibilidade increases that help the team leader to discover more subtle technical issues that must be addressed” (LaFasto & Larson, When teams work best, 2001, p. 133).

At bottom, though the team is the primary caretaker of product development and of course is best known its development, the Scrum Master should not ignore the aspects of development and in some cases, who should be better known if it is want to avoid communication problems, interpretation and estimation, but above all, if we are to achieve a successful goal.

Returning to the beginning: what we need are real developers who have the tools and practices needed to achieve a successful development process and a high quality product. This does not mean that there is also need for programmers, but do not confuse a developer or “developer” with a simple timer. Even a good programmer could be a bad developer and Scrum Master who has not acquired these tools during their training could possibly be perceived by the development team as lacking the necessary skills to perform their duties.

If only we can understand these fundamental differences, we will have taken another step towards a better working world.

Leyes

Mariana’s Scrum Implementation Laws

Who is Mariana? True to the best journalistic style that doesn’t reveal its sources, sometimes for professional or ethic reasons and many other times just for fun (to annoy the audience), I won’t reveal his true identity. Let’s call it simply “Mariana.”

“Mariana” is one of the students who attended one of the Scrum courses I taught this year. Upon finalization, I gathered all my stuff, including the material usually used as letters, cards, post-its, tape rolls, markers, etc. Later when I got home, I proceed to arrange all those things and found this paper:

Infallible laws to Implement Scrum

1. Do it Iterativly, Incrementaly

2. Don’t try to cover everything from the beginning

3. Manage the expectations for the first Sprints

4. Don’t feel overwhelmed by all the impediments that will arise (previously hidden)

5. Have courage, experience and let experience – Its nor bad to fail, it’s bad if you don’t learn from your failure.

Well, the truth is that I do not know who was the author of this note because it wasn’t signed. Just guess it was a woman because she folded the paper very suspiciously neat and so I called her “Mariana.” Today I regret this haven’t been shared with the rest of the class, it would have been very productive, but at least the good thing is that she understood what it is to bring Scrum to practice.

photo by http://www.flickr.com/photos/limaoscarjuliet/225249268/

August 31st – Agile Development with Scrum

Sorry, this entry is only available in Español.

RVM Instalation

Sorry, this entry is only available in Español.

Scrum in Rosario City!

During a new visit to the beautiful riverside city, this time supported by Fundación Libertad, I have the chance to chat a few hours about the meaning of Scrum in order to get a little bit closer to Agile.

We were fortunate to enjoy a cool winter morning, in a high floor of a building in downtown that offers a breathtaking view of the river Paraná. Gorgeous!

At the beginning, we held a dynamic called  “tribes” through which we identified different groups of professionals and their knowledge and use of Agile methodologies in their projects (it’s amazing how this kind of exercise always works, whatever the context or group of persons).

Later on, we started talking about the Principles, the Agile Manifesto, User Stories, Sprints, Product Backlog, Release Plan, Task Board, Daily Standup Meetings, Retrospectives…, trying to understand what makes Agile Methodologies so effective when talking about improving the quality delivered to the customer and the practices of our daily work.
Even though many people are reluctact about these methodolgies and find them strongly contrasting with what they´ve learnt so far, there are many others who are positively interested and look forward both to learning more about Agile and applying it at work. The mere act of participating in this experience is a great way to do it!

Here I post the presentation we used (in spanish):

Hope to see you again soon, Rosario!

CSD – Certified Scrum Developer in BA

Last Week, from Monday to Wednesday, I facilitated another session of a 24hs intensive workshop about agile software development that belongs to the CSD certification (Certified Scrum Developer).

Here I post a video that illustrates the session:

For more information about these CSD certification workshops you can visit Keer’s dedicated webpage: http://www.kleerer.com/en/CSD

Hola Doc!

What if Doctors were Treated Like Web Developers?

See Original Post

A new era on motivation & engagement

The problem is that Andrew doesn’t have his shirt on.

Incredibly this is the most common reasoning I’ve encountered over the last few years addressing the lack of commitment and / or motivation of resources within an organization. Let’s start calling them “people” instead of “resources” and we’ll begin to understand a little better the issue.

Another argument that is also used is:

Well, thats the way “Y Generation” is.

I have dozens of real examples which I won’t disclose die to respect purposes, but most occur / occurred in those organizations that are used to reward the “Performance” of the people.

This is a topic to chat for a long time, but it would be better to do with a coffee in between, much better in a lunch. Unfortunately we are not in any of these situations.

At this time there’s  a very interesting discussion on the list of Agile Argentina that reminded me this issue, in which Juan sent a video that clearly illustrates the issue.

I leave it here for anyone who wants to see it. I hope you find Daniel Pink’s approach about the issue as interesting as i actually do.

For now, it would be good for the new start-ups to begin promoting autonomy, mastery and purpose of each of its employees.

PS: here’s another talk Daniel pink gave in TED:

OSX Leopard

Rails 3 Installation under OSX Leopard