Showing posts with label Tools. Show all posts
Showing posts with label Tools. Show all posts

Tuesday, August 21, 2007

Adobe Captivate or Techsmith Camtasia?

Although most of my friends seem to prefer Camtasia, I have been a long-time fan of RoboDemo, now Captivate.

The main difference between the two products is:

  • Camtasia records a full-motion video;
  • Captivate records still images, keyboard strokes and mouse movements which it assembles into a video;

The two approaches have their own strengths and weaknesses:

  • Camtasia is better at recording and displaying scrolling panes, progress bars and drag-and-drop operations;
  • Captivate gives a lot more control on the output. In fact, Captivate produces not only demonstrations but also true e-learning content.

The new Captivate 3.0 closes the gap and introduces full-motion recording, not in replacement but in addition to still images. Captivate is clever enough to trigger the full-motion recording when it detects a scrolling pane or a drag-and-drop. Anyway you can trigger it manually anytime.

In my opinion, Captivate 3.0 is now far superior to Camtasia on all grounds except price. The Captivate product remains significantly more expansive but it is now justified.

Monday, July 30, 2007

Developing a quick and dirty bulk email infrastructure to clean your lists

If you want to send an email newsletter, I can only recommend you use:

In our research for the ideal tool, we have found that services are weak on editing and layout and strong on reporting, whereas software is strong on editing and weak on opt-in/opt-out use cases and cleaning contact lists. There is no perfect tool. There is in my opinion an advantage to email marketing services because there is a workaround to their weaknesses which is to compose the newsletter in an HTML editing tool like Dreamweaver.

You may choose not to use these software and services, either to spare your marketing dollars or because you need specific features that these tools do not provide. In this case you will need to assess the following requirements and you will find that developing a bulk email infrastructure is no easy task:

  • Editing and layout
  • Contact list management
  • Mail merge
  • Bulk send performances
  • Opt-in/opt-out use cases
  • Cleaning contact list (email bounces)
  • Reporting

In our case, we had to find a way to clean our contact list before considering a subscription to an email marketing service because their pricing is per contact and some contacts in our list were fairly old. To achieve that, we have spent a couple of days building a quick and dirty bulk email infrastructure comprising:

  1. An SMTP server with two mailboxes, newsletter@domain.tld and dsn@domain.tld, where the first one has an autoresponder;
  2. A bulk email tool including management of bouncing emails, which is only a GUI around devMail;
  3. An opt-in/opt-out web page;
  4. Integration with Google Analytics for reporting (not in the sample).

The process to build, send and analyse a newsletter is the following:

  1. Design the newsletter in Dreamweaver (use %%dbfield%% for mail merge)
  2. Check the newsletter against the SPAM checker of iContact using a trial account
  3. Open the newsletter in IE and save as web archive (*.MHT) with embedded images
  4. Open the MHT file in the bulk email tool (configured to use a specific database and SMTP server)
  5. Build the text version of the HTML newsletter
  6. Click send
  7. A few days later, open the tool and click Analyze to interpret delivery status notifications and tag bouncing emails
  8. Open the mailbox in Outlook to handle manually the notifications which could not be interpreted

You can download the source code here. This tool does not measure up with the software and services mentioned above, but it offers a convenient way to purge a contact list before subscribing to an email marketing service.

Wednesday, June 27, 2007

Getting metrics from .NET projects

There are loads of free tools available to get metrics from Java projects. I have found much more difficult to find similar tools for .NET projects.

When googling for ".NET project metrics" you get many references to devMetrics from a company called Anticipating Minds. I will spare you the time: Anticipating Minds is no more doing business and devMetrics does not work with .NET framework 2.0 and above.

I have used two complementary tools which give simple but effective metrics:

  1. A Reflector add-in called CodeMetrics, and
  2. Source Monitor from Campwood Software.

Thursday, June 21, 2007

Getting scheduled scans to work with Norton Antivirus 10.2 running in unmanaged mode

We use Norton Antivirus (NAV) Corporate Edition which is installed in managed mode on our LAN.

We have been using an old version of NAV on dedicated hosted web servers. Recently we have realized that NAV was triggering ThreadAbortException on long running ASP.NET pages. Excluding files did not solve the problem. We have had to upgrade NAV.

We have installed NAV in unmanaged mode on these servers as per the documentation, but after a couple of days, we have realized that scheduled scans were not working. The reason is explained here.

The workaround which is not given in the Symantec knowledge base is simply to copy (export + import) the following registry keys (and all subkeys) from a computer which has NAV in managed mode to the computer which has NAV in unmanaged mode:
  • HKEY_LOCAL_MACHINE\SOFTWARE\INTEL\LANDesk\VirusProtect6\CurrentVersion\LocalScans\ClientServerScheduledScan_1
  • ...
  • HKEY_LOCAL_MACHINE\SOFTWARE\INTEL\LANDesk\VirusProtect6\CurrentVersion\LocalScans\ClientServerScheduledScan_n

Wednesday, January 31, 2007

Functional and load testing of ASP.NET Ajax applications – part I

Introduction

Velodoc is developed in ASP.NET C# 2.0 with Visual Studio .NET 2005.

VSTS comes with unit testing, web testing and load testing, considering load testing is actually an execution environment for unit tests and web tests.

Unfortunately Visual Studio web tests work at the protocol level, recording HTTP traffic in order to replay it. The same applies to Redgate’s ANTSLoad and many other load testing tools. Velodoc is an Ajax application and this does not work.

We have started our search for a solution from the following lists of testing tools:

Obviously there are tools like Mercury Winrunner/Loadrunner and the IBM Rational equivalents which certainly cope but they are too expensive.

Our requirements are the following:

  • Test ASP.NET applications
  • Works on Windows XP with IE
  • Compatible with NetAdvantage controls, iFrames, file uploads and Ajax
  • Scripts IE including IE dialogs to drive functional UI tests
  • Several instances can be executed concurrently to create load/stress tests
  • Uses a familiar technology (low learning curve)
  • Open source is a plus and a requirement if the supplier has not been around for a long time.

There are three types of solutions which cope more or less with these requirements:

  • Macro recorders/players
  • Test environments
  • Web application scripting frameworks

Macro recorders/players and test environments

Searching on Tucows, Download.com and other shareware web sites reveals loads of macro recorders. Most of them hook the message pump and replay the windows messages. Obviously, the result is not good. We have tried a dozen of them but only iOpus iMacros 5.2 could do a decent job at automating a file upload from https://www.velodoc.net/. The code is reproduced below:

TAB T=1
TAB CLOSEALLOTHERS
URL GOTO=https://www.velodoc.net
SIZE X=876 Y=627
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm ATTR=ID: SenderTextBox CONTENT=test1@acme.com
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:aspnetForm ATTR=ID: RecipientTextBox CONTENT=test2@acme.com
TAG POS=1 TYPE=TEXTAREA FORM=NAME:aspnetForm ATTR=ID: MessageTextBox CONTENT= Test<SP>with<SP>iMacro
FRAME F=1
WINCLICK X=100 Y=429 CONTENT=
WINCLICK X=100 Y=429 CONTENT=C:\test.bin
FRAME F=0
TAG POS=1 TYPE=INPUT:CHECKBOX FORM=NAME:aspnetForm ATTR=ID: SendTermsCheckBox&&VALUE:on CONTENT=YES
WINCLICK X=490 Y=513 CONTENT=

I see at least three drawbacks to using iOpus iMacros as a functional test tool:

  • The lack of assertions and reporting capabilities makes it insufficient for functional testing;
  • The lack of infrastructure makes it insufficient for load testing;
  • The proprietary language reduces the possibilities despite the fact that it can call external scripts or be called via a COM component.

I have also tried several test environments mentioned in the above lists. Generally, recording the file upload test on https://www.velodoc.net/ has always proved difficult but I cannot tell whether it was feasible or not for some of them. I have limited myself to 2 hours per evaluation and the inherent complexity and learning curve was not worth digging passed first impression.

Web application scripting frameworks

I have looked at two open-source frameworks, which both script IE to execute functional tests on the web application:

  • IEUnit 2.3, a framework based on JavaScript
  • WatiN 0.9.5, a framework based on C# .NET

Both frameworks are very easy to start with due to a familiar language and an intuitive API. Additionally both frameworks provide the necessary assertions to report on the success or failure of a test fixture.

Scripting a file upload on the Velodoc home page with IEUnit entails the following JavaScript code:

_.openWindow(https://www.velodoc.net);
_.setField("SenderTextBox",
test1@acme.com);
_.setField("RecipientTextBox",
test2@acme.com);
_.setTextArea("MessageTextBox", "Test with IEUnit");
var fname = "C:\\test.bin";
var cmdShell = new ActiveXObject("WScript.Shell");
cmdShell.Run("C:\\EnterFileName.sbk " + fname, 0, false);
_.setFrame(0);
_.clickObjById("FileInput");
_.setFrame(-1);
_.setCheckBox("SendTermsCheckBox",true);
_.clickObjById("SendWebImageButton");

Where EnterFileName.sbk contains:

var fpath = " " + WScript.Arguments(1);
var popupWin = _.waitForWindow("Choose file", 30000);
_.setFrame(0);
_.findWindow(popupWin, "Edit").sendText(fpath);
_.findWinButton(popupWin, "&Open").click();

Scripting a file upload on the Velodoc home page with WatiN entails the following C# code:

using (IE ie = new IE(https://www.velodoc.net/))
{
ie.ShowWindow(NativeMethods.WindowShowStyle.Maximize);
ie.TextField(Find.ById("SenderTextBox")).TypeText("
test1@acme.com");
ie.TextField(Find.ById("RecipientTextBox")).TypeText("
test2@acme.com");
ie.TextField(Find.ById("MessageTextBox")).TypeText("Test with WatiN");
Frame f = ie.Frame(Find.ById("FileUploadFrame"));
FileUpload fUp = f.FileUpload(Find.ById("FileInput"));
fUp.Set("C:\\test.bin");
ie.CheckBox(Find.ById("SendTermsCheckBox")).Checked = true;
//ie.TextField(Find.ById("SenderTextBox")).FireEvent("onKeyUp");
ie.Button(Find.ById("SendWebImageButton")).ClickNoWait();
SimpleTimer t = new SimpleTimer(60 * 60);
Span s;
do
{
s = ie.Span(Find.ById("DownloadLinkLabel"));
if (!String.IsNullOrEmpty(s.Text))
goto EXIT;
System.Threading.Thread.Sleep(1000);
} while (!t.Elapsed);
throw new WatiN.Core.Exceptions.TimeoutException("...", 60 * 60));
EXIT:
Assert.AreEqual(true, s.Text.Contains(
https://www.velodoc.net/));
}

Conclusion

The beauty of WatiN is that it builds on top of C# and .NET framework. Accordingly you get not only a rich language but also a rich environment. Test code built with WatiN can be executed within NUnit and Visual Studio unit testing projects which means that they can also be executed for load tests which I am going to try next although we know already that launching several instances of IE has its own limitation.

Thursday, November 23, 2006

Troubleshooting SMTP using Telnet

Today, I have been confronted to configuring Virtuozzo + Plesk on our new VPS web site server to send emails from ASP.NET code.

On our old Plesk 7 server, we used to send emails from an email account which had no mailbox but the same configuration did not seem to work in the more recent Plesk 7.6. I am not a Plesk aficionado, so I went the old way to find out what was going wrong.
  1. Open a command windows by typing cmd in the Start -> Run… dialog box and click OK.
  2. At the prompt, type telnet mail.yourdomain.tld 25 + Enter
  3. The mail server should display version information.
  4. Type HELO + Enter.
  5. Type AUTH LOGIN + Enter.
  6. Type your mailbox username or username@ yourdomain.tld encoded in base64 + Enter. ESMTP requires a login in the form username@ yourdomain.tld. A helpful site to get a base64 encoded value is http://www.motobit.com/util/base64-decoder-encoder.asp.
  7. Type your mailbox password encoded in base64 + Enter.
  8. If you have successfully authenticated, the server will reply "235 authenticated".
  9. Type MAIL FROM: username@ yourdomain.tld + Enter.
  10. Type RCPT TO: anothermailbox@ yourdomain.tld + Enter.
  11. Type DATA + Enter.
  12. Type Subject: Test + Enter + Enter (Send a blank line to separate the headers from the message body).
  13. Type SMTP test + Enter.
  14. Type . + Enter (a dot, then Enter).
  15. The server should reply "250 Message queued"
  16. Type QUIT + Enter.
  17. Close the command window and check your mailbox.
In my case, the message that I was getting in .NET was “no email account can send to anothermailbox@ yourdomain.tld”, which is not very helpful but the procedure above was showing that step 8 was actually going wrong. After a few changes in the Plesk configuration I have discovered that the email account required a mailbox to send emails.

Thursday, October 12, 2006

Useful networking tools

Today, I was working on integrating a web application with Paypal. My IPN handler in my development environment could not be reached by Paypal, although my test web server was published to the Internet.

Having searched for simple ways to test a Url from the Internet, I have found the following which I recommend: http://www.changedetect.com/cd-test-url.asp

[Updated on 22 Oct 2006]

Endeavouring to compare web hosting packages, I have used:
http://www.vertain.com/?sst

[Updated on 25 Oct 2006]

An excellent and still free web site monitoring service is available at:
http://site24x7.com/

[Updated on 6 Nov 2006]]

A comprehensive DNS toolset can be found at:
http://www.dnsstuff.com/

Sunday, July 09, 2006

Choosing a wiki and a blog

I recently had to choose both a wiki and a blog. I also expected to find both functionalities within the same product or hosted service as they are not that different.

My requirements for the wiki were the following:
  • Topic articles with versioning, attachments and discussions;

  • Authoring of articles by invitation only, discussions opened to everyone;

  • Hierarchical organisation of topics, ideally presented like online help: table of contents, index, search;

  • Customisable UI (branding);

  • Full-text search;

  • Authoring using Word;

  • Preferably a hosted service with a friendly URL,

  • Ad-free.
My requirements for a blog were very similar, except:
  • Authoring of articles by the owner of the blog only;

  • Organisation by category and by date.
My first observation is that you apparently cannot have both within the same solution.

http://www.wikimatrix.org/ is an invaluable resource to compare wiki software and two hosted solutions rise above average: jotspot and stikipad, although neither of them fulfils 100% of my requirements. Both products are basic but they do the job although authoring in Word, my top requirement, is not possible with these wikis.

I have not been able to find a comprehensive resource that compares blog software properly although there is some information at http://www.cmsmatrix.org/. The well-known products I have come across are Community Server (formerly .Text), Moveable Type and WordPress. The top services are Blogger, MySpace and MSN Spaces. There is now also a Yahoo offering based on Moveable Type. My preference is Blogger because there is a Word plug-in which works reasonably well and it is free. The main objection is that Blogger lacks proper categories.

My conclusion is that there is still a lot to improve on wikis and blogs especially to streamline the authoring process and to make navigation more fluid.