Posts Tagged ‘ testing

Rational Rational Rational

So this summer I’ve been working with (and will continue to work with) an entire suite of IBM Rational tools, so I thought I would write down a few first impressions of this, seemingly, popular software. Ill start with just one today, and hopefully add more reviews as the summer progresses.

My one overwhelming gripe about all the Rational software is that it is all based on Eclipse. Yes I know, IBM originally wrote Eclipse and donated it as open source, but Eclipse is a resource hog that tends to quickly run out of control. Rational Functional Tester, Rational Performance Tester, Rational Team Concert Client, Rational Software Modeler, and more are all Eclipsed based. Oh, and as if that wasn’t enough, so is the installer for each of them (add that to the Eclipsed-based Lotus Symphony that IBM has us use for office documents and Eclipse-based Lotus Notes for email and collaboration, and my laptop is out of memory before I can even start coding). Whats worse in my opinion, is that as you incrementally install each Rational Tool, they build on each other into some mega Eclipse monstrosity rather than stay separate as their own installs. This beast then takes forever to load, oh yeah, and a lot more memory to run.

Rational Functional Tester: All I can say is, it does the job, but makes it painful. Ever since I started writing software, user interfaces were always the most challenging aspects to test. Simulating clicking on something, checking the appearance of a window, etc is no small task, which is why I have seen several project groups that I have mentored at school resort to manual testing for this kind of thing. RFT allows a developer to write functional “test scripts” in Java or which guide RFT to interact with another application. One great aspect of RFT is that, well only on Windows, it has a recorder feature which allows the developer to interact with the software and have RFT record what was done. The developer can also insert checkpoints into the recording where he can instruct RFT to compare various attributes of objects in the application to baseline readings to judge if a test passed or not. Another handy feature I wish I had back when I was working on AS400s is the ability to test command line applications and terminal applications both on System Z mainframes and IBM i 5250 green screens. But enough of the good stuff, heres what I’m not so fond of…..First off, let me say that I use RFT purely for testing web applications, so this experience is only based on RFT’s ability to work with the webapps that I am trying to test. So, my biggest gripe with RFT is a lack of consistency. Often times when I’m writing up a test script, I have code that I am positive will work, but it just plain wont. So ill restart the browser under test, sometimes that will fix it, or Ill restart RFT, sometimes that works, but most often I end up rebooting my entire machine to fix some stupid error. Oh yeah, Im working on windows testing using IE6, so that may have a lot to do with it, but RFT should be better. Second problem, RFT doesnt support many browsers. Hence why we are using IE6 at work (because the webapp under test doesnt behave well with firefox, sigh). Next, although the recorder is great for simple tests, it just isnt powerful enough to do many of the tests that we want to do, so we code every test script by hand, which leads me to my final gripe….Horrible API. I won’t even sugarcoat it, its not fun at all to deal with. In my opinion, it is far to generalized and leave the burden on the developer to do most of the work. There is even an internal IBM project which has developed a layer that sits on top of the RFT API and exposes a simpler API for webapp testers, but this layer doesnt cover everything. It can take 30-40 lines of code just to find a hyperlink on a webpage and click on it. Not cool. So overall, RFT is alright, it does the job, but can be a pain to work with. Ill try to update here more over the next few weeks with my impressions of the other Rational tools I’m using.