The importance of 24×7 automation in your quality assurance process

dnaI was in a discussion the other day about automation, which in itself is an extremely broad term, but we were talking around quality assurance and the importance of having some kind of automated process when the “product” was ready. Whether this be spreadsheets, reports, commercial products, applications, system builds, etc. At some level you should have automation to verify that at least at a high level the product is consumable.

Test driven development and agile development have played a huge role in the quality of software over the past 10 years and it shocks me to know companies are simply not doing this today.

My side of the discussion was around the work I did when I joined Iris Associates – which changed to Lotus, then ultimately to IBM Collaboration Solutions. While this was around software quality, the story I was in discussion about was data integrity in spreadsheets. We had several layers of automation following a build. Once the build completed (on five different platforms) a series of automated tests were run for build verification. Once the automated tests ran there were some manual tests run if the automated tests had passed. We then had what we called “automated system tests”, also known as DNA (Domino Notes Automation). These tests were much more functional in nature and not at a single API level. So you can imagine these tests using many (if not hundreds or thousands of API’s) to complete what would normally be done by a human. I remember talking to a QA person about automating Event Admin (a Domino Server feature) and he said the hundred or so tests run by DNA would take me three months to do manually – and DNA did it in about 20 minutes – every day, on every build, on every platform. At the end of the day, and I am not sure of the exact number, but there were literally 10’s of thousands of tests run every single day on almost every single supported platform for both client and server. The results of the tests were of course published to a Lotus Notes database and notification emails were generated.

Why is this important?

So on any given day you could see exactly what and who broke the build. This was a huge leap forward in terms of quality because you no longer introduce a problem into the build and find out two months later during feature testing or even worse after the code is shipped. Resolution was often fast because we could isolate the exact submitted code from the ClearCase source control system.

Having a “clean” build meant any developer could synchronize the latest binaries and start work on “the next thing”. This allowed over 1200 developers to not be dependent on a single build model. A single build model is, we do builds on Fridays. That would mean if you wanted to start working on “the latest code” you would have to wait until Friday or use last Friday’s build. Over time this could kill a development cycle, especially if Friday’s build was bad. And remember, if you do builds once a week that’s 1200 developers checking code in every day – unchecked. By the time Friday roles around you may have merge conflicts and even worse – run time conflicts.

Today, much of this is done in the form of Unit Tests – like JUnit or our custom internal unit test suite called DLLTest for C/C++. Many members on my team had patents around this process and some of the small utilities we wrote in order to accomplish this. See below for the two patents I received for my automation work.

Patent References: (patent profile)

2006/0070,034 2006 System and method for creating and restoring a test environment
2005/0289,517 2005 System and methods for client and template validation
Advertisements

Time for a change

As few have probably seen either on Twitter or LinkedIn or have spoken with me directly, I am making a rather large move in my career. I am moving to the Websphere Commerce technical sales team. Hopefully my client engaging experiences and my public speaking experiences will help as I ramp up with the technology piece. So far its been five days and over 30 videos from IBM Education Assistant – they really did do a great job on this stuff.

Continue reading

Webinar: Creating Plugins for Lotus Notes, Sametime, and Symphony

Meeting Agenda:

  • Community updates – news on the expanded scope of our community!
  • Community member spotlight
    • Declan Lynch, Czarnowski Exhibit Services
    • Stacey Lieder, IBM
  • Special Topic: Authors will discuss and demo the recently published Redbooks wiki: Creating Plugins for Lotus Notes, Sametime, and Symphony
  • Speakers: Mikkel Heisterberg (Intravision), Tim Parsons (IBM)

Phone Conference Information:

Tues, March 22nd 10:00 AM EASTERN TIME (US)
North America Toll Free – 888-677-1634
North America Toll – 773-756-0229
Verbal passcode: Lotus Community

Web Conference Information:
Launch this URL to attend online – https://apps.lotuslive.com/meetings/join?id=001-637
Enter your name (please include your company name in parentheses)
Click the ‘Join Meeting’ button

Learn about deploying features, plugins and widgets

This is a really good web cast about Eclipse Features, Plug-ins and how they are deployed and installed into Lotus Notes.  Chris Miller does a great job explaining the difference between plugins, features and widgets.  I really like how Chris talks about Eclipse Features – many do not understand or even realize what a Feature is.  If you want to know this stuff make sure you watch and listen to his great web cast about these new packaging models in the Lotus Notes 8.x client. You can see his original post or you can just watch the embedded replay below.

Education like this is very important.  More and more companies develop plugins and widgets; as an administrator you need to know how the plugin and widget get deployed and then, more importantly, how they are updated or removed.

http://ui.mevio.com/widgets/mwm/MevioWM.swf?r=36915

All software should implement CTRL+ and CTRL-

I must be a FireFox advocate or at least like the zoom in and out shortcuts because I find myself using CTRL+/- in many places like Notes, Symphony, etc.  The only problem is the keys do nothing in them!

Who is with me?

Lotus Notes IS the ultimate platform

While I completely sympathize with the people who have lost large contracts, work, or even their jobs because of some company moving to another platform I honestly do not understand some of the comments about Notes not being a good platform for application development.  I do think IBM AND the Community need to do a much better job marketing things like the Eclipse and Lotus Expeditor Platforms because that is what its primary installed Lotus offerings are based on.   More and more companies are getting it, each week I hear of a new plugin, extension, or Eclipse view being created for some use case – so its not only the few business partners that have given Eclipse programming a chance, IT shops are starting to get it.  What I would like to see are more business partners expanding the organic marketing campaign of Eclipse and Expeditor.  XPages has gotten a lot of attention but I think once again the client has gone to the back burner; but I also see a lot of stir in the client space with plugins coming from partners like GIST, LinkedIn, SAP, customers, etc.  I was just at customer site yesterday and they have built an amazing plugin that integrates Notes with EMC’s Documentum – it was very cool – and guess what – that was an IT shop that did it because they have Eclipse developers.

In short, you have XPages for Web and the Expeditor platform for rich client.  Mix Expeditor plus NSF, Web, Portal, SWT, and native applications and you get composite applications.  You can do things in the Notes client today you could not imagine doing in version 7 and below.  Some stuff is easier, some just different but now you can do most of it in Java and it works on all platforms.  I have personally been pushing Eclipse and Expeditor for well over four years and I am sure my readers are aware of that – we as a community need to create compelling applications that make the platform stand out!

Now, in Notes 8.5.1 you can even create XPage based components that run locally in the client – meaning write your components once and they run in both Domino and Notes applications.  Many may not be aware, but you could also do this with pre-compiled JSP’s and Portlets for over 5 years in Lotus Expeditor – and yes, that means in Lotus Notes also.  So the Notes community has had the ability since Notes 8.0 to completely enhance their skill set to industry standards like Java, Eclipse, and many web technologies.  With technologies like XULRunner in the platform the web technologies that can be deployed to the Lotus Notes client are essentially limitless and are only held back by your imagination.

I am not sure how to close this rant but in short I would like to see the community better selling “the platform” versus posting long rants in the opposite direction.  I do not speak for IBM or the marketing behind our products, I can only “sell” what the platforms can do technically and from a technical point of view the Lotus Platform is an amazing piece of software that can present amazing applications.

Creating your own preference panels in Lotus Notes

I was going to write up a nice article/tutorial on this but I knew it has been written about many times over.  Not too mention it is in almost every Eclipse book on the planet.  Many Notes developers still do not realize that most of the extensibility in Notes 8.x is really just plain old Eclipse extensions – preference panels being one of them.  Eclipse.org is always the place to find the best small articles, this article is specifically about preferences – the store and the user interface.

The following tutorial post by Raja is also a great start in learning this stuff.  So if you want to create Eclipse plug-ins for Lotus Notes make sure you check out what is available in the online community.  I found this article by searching “creating an Eclipse preference panel extension” in Google, unfortunately it was found on the second page, near the bottom.  So in short, I think this stuff is very hard to find and this kind of information is most likely not included in the Notes 8.x documentation.  Your best bet is to search Eclipse.org!

Introduction to Eclipse Plugin Architecture

Putting iWidgets in XPages and Domino Web applications

In case you have not seen this entry (like me) on the Lotus Notes and Domino Wiki, there is an article that explains how to add an iWidget to an XPage application.

Enabling iWidgets in IBM Lotus Domino Web applications

Extending Notes with new view context menus and text selection context menus

Over the last few weeks I have received several Eclipse questions for how business partners and customers can extend Notes 8 in new ways.  The following two posts should answer some of those questions.  The first post shows how you can extend the right click menu for a text selection in a Notes document while the second post explains how you can extend the right click menu in a Notes view entry.

How to extend the right click text selection menu in a Notes Document

Adding right click options to your Notes 8 mail box entries with Eclipse