-
Performing SQL Validation (a.k.a. “Data Dips”) with RIATest
We started using RIATest at Highwinds to automate our Flex functional testing. For those of you who are unfamiliar, RIATest is a great Flex-only alternative to products like HP’s QuickTest Pro, allowing you to fully automate your Flex functional testing either from the RIATest IDE itself, or via the command line. While QuickTest Pro can be used to automate a wide variety of GUI-based apps, it costs about five times as much as RIATest, so if you are only testing Flex apps RIATest is a great low-cost alternative.
Something else that QuickTest Pro lets you do that RIATest does not is perform “data dips” or, to put it in layman’s terms, query a database during functional testing. This can be useful for validating non-visual system state.
For example, let’s say that you have an application that allows you to change user information, and that the requirements dictate that whenever the user information is changed, a last modified date on the user’s record should be updated. If the last modified date is not visible as a label within the Flex app, RIATest can’t validate that the last modified date has changed, since it can only validate the state of Flex components. In this scenario, you’d typically want to
(a) execute a functional test to change a user’s info,
(b) validate the changes to the UI after the user’s information is saved and loaded again for viewing, and
(c) check the state of the database to validate that the last modified date has indeed been updated.However, since RIATest doesn’t offer data dip functionality, step (c) would be impossible without manual intervention from a QA tester. This is where riatest-integrator comes in.
Thankfully, the RIATest developers put a special object in RIATest called Process. Process allows you to execute an external process, and interact with its input, output, and error streams. Once I discovered this, I decided to write a little Java library that would make it easy for me to fire up a Java process from the command line, hook RIATest to its input and output streams, and write input from RIATest to it. The process would then pass the input to some kind of integration inside of the Java process, and return output from the integration for inspection by RIATest. This turned out to be pretty easy as expected, and I published the library to Google Code under the name riatest-integrator.
Currently, there is a download available on the Google Code site that lets you query MySQL databases right out of the box. There is a sample RIATest script on the home page of the project showing how you can call it from RIATest and validate output coming back from the database. It’s a really simple implementation, but if people are interested in it, I’ll add more features and functions. The API is also really straightforward, so any Java developer with even the most modest skills should be able to customize it to their needs.
The API in the library is not limited to SQL; anything that Java can talk to can be hooked in to. We have some proprietary back-end servers at Highwinds that speak NNTP, so we could easily write an NNTP integration that allows us to have RIATest query the state of our NNTP message groups after actions are taken in our Flex apps.
If you are a RIATest user, please take a look at the project, and share your feedback either here on my blog, or as feature/bug requests in the project’s issue tracker.
Category: Uncategorized | Tags: Coding,SQL
Related Posts
- Using AppleScript to Position iChat Windows
- An Objective-C Tutorial for Enterprise Java Programmers (4)
- Configuring Tomcat SSL Client/Server Authentication (5)
- Calculating the Differences Between Consecutive Rows with SQL
- Duct Tape, Astronauts, and Everything In Between
- JDK 1.7.0 on Snow Leopard
- Using Axis’s wsdl2java in a Maven Build
- How to Install m2eclipse in Flex Builder 3 (1)
- Saving OmniGraffle Documents in Subversion
- How To Become A Software Engineer/Programmer (15)
Recent Posts
- A Response To Gene Marks (4)
- How to work around problems with Xcode SCM and svn+ssh
- Adding Headers and External Libraries to Xcode Projects
- iPad, You Pad, We All Pad For iPad
- Using AppleScript to Position iChat Windows
- An Objective-C Tutorial for Enterprise Java Programmers (4)
- Performing SQL Validation (a.k.a. “Data Dips”) with RIATest
- Debt To America (4)
- Lamenting the Loss of 100% Mortgage Financing (1)
- Maybe I Don’t Want a Nook (2)