Archive for September, 2010

WebTest Fixtures, FitNesse, Selenium and Integrated Windows Authentication

0

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

4

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.

Is this PMI Agile perspective?

3

Update: The article mentioned in this post does not exist any more at the PMI website. Thanks to the agile community within the Project Management Institute and its efforts to promote the essence of agile methodologies, we can say that PMI’s perspective on agility is much more objective.

Here my original post:

In the August edition of “PM Network” a short presentation about what is and whether to adopt Agile was published. It touches on several of the principles and suggested (in a somewhat biased way in my opinion) the situations where they apply or situations where they don’t. Anyone interested in seeing it, can do it here::

http://www.pmi.org/resources/pages/agile.aspx

But the interesting part is the response posted by some Agile Folks :) Enjoy:

Video: http://www.xtranormal.com/watch/6973505

Go to Top