Maciej Mirski has been working for the past three years as a tester in an offshore center located in Poland. The main scope of his work is Data Warehouse testing.
Based on that practical experience, Maciej decided to create a Data Warehouse Testing Tool when working on his thesis at the Warsaw Institute of Information Technology.
Hi Maciej, please say a few things about the application you're working on for your thesis.
Well, I've come to the realisation that there is a big gap between tools for development and tools for testing, in the area of Data Warehouses. While developers use nice handy tools like DataStage or Informatica, testers have little more than SQL queries and such. Having tools that can help model and then retrigger test scenarios when needed would be of great benefit to Data Warehouse testers.
The idea for the application I'm now working on arose after I played with CubicTest, an application for graphical design of GUI testing. Scenarios created using this tool can be executed using Watir or Selenium. I started thinking why don't we have a tool like that for Data Warehouse testing.
So, first of all, I wanted a graphical representation of the test scenario, which would be easy to read and adjust. I dug into our test cases, as well as articles on Data Warehouse testing available on the internet. That helped me to figure out what possible types of object/data comparisons are needed, plus what other kinds of actions would be handy for a tester.
From that idea, how did you develop the application?
I started development from the low-level layer of test steps, without any graphical representation. Initially I wanted to use Eclipse and it's GMF for this purpose but after a month I was still at the same point, trying to figure out how everything there works.
Since time was running out, I started looking around for some other library I could use. After some time, I discovered that there's another handy graph library out there, the Visual Library that is part of the NetBeans Platform. And also because my thesis was, from the very beginning, intended to be a module for an IDE, I switched to using the NetBeans Platform.
After a week I had quite a good understanding of how to develop something that works via the Visual Library. Then my real development/learning curve started! I can say it was lots of playing with the possibilites of the NetBeans Platform, often adding some functionality just because it was cool or I found it by accident when looking for something else on blogs connected to the NetBeans Platform.
Can we see a screenshot of where things are right now?
Sure. Here it is. (Click to enlarge the screenshot.)
So the main benefit of the NetBeans Platform was the Visual Library, enabling you to provide the widgets seen above?
Yes, the main part where my application "needs" the NetBeans Platform is the Visual Library. However, there were also many other situations where I found something in the NetBeans Platform that I hadn't expected and which I was able to quickly adapt to my application. For example, this was the case with Database Explorer API, which I'm now using in my application.
To summarize, here are the most useful NetBeans APIs, from the perspective of my application:
- Visual Library. It's very handy, has good tutorials, you can get up to speed in a relatively short time. When you need more out of it, you dig deeper and you have it. So it's both easy to catch up and provides you some really good possibilites when you want to tweak it.
- Window System. That's pretty similar as the Visual Library. It's very easy to use it (thanks to how the NetBeans Platform makes it easy to add TopComponents, etc.), and there is lots of information on the Internet when you need to change something from the way it works "out of box".
- Database Explorer. Maybe it's not the most developed API in the NetBeans Platform but I really liked the way I could easily integrate it with my module.
More generally, what do you see Swing applications generally gaining from the NetBeans Platform?
The NetBeans Platform gives you the possibility to create fully functional applications. I think in today's software world, it is necessary to quickly adapt and, especially, minimize development time by using already available libraries.
Students often try to create everything from scratch by themselves. I'd rather use what's already given, such as the NetBeans APIs (e.g., the Visual Library) and combine them with my own code. That gives me more time to really focus on implementing my ideas rather than just code.
Thanks to the NetBeans Platform, it's also easier for me to model how the user will experience my application. I think without it, I wouldn't be able to get beyond creating just a student project.
What's the current status of the tool you created and what are your plans in continuing to develop it?
Well, I have to say this is only a BSc thesis at this point, so it's not a very sophisticated tool (and I had to learn lots of things about the NetBeans Platform on the fly), but I do have plans to keep on developing it!