Why FlexMonkey is Game Changing for Flex Developers

jonr originally posted this on FlexMonkey :: Flex UI Testing Tool.

What is FlexMonkey?

FlexMonkey is an open source Adobe AIR application used for testing Flex and AIR applications. It provides the functionality to record, playback, and verify Flex UI interactions. It also generates ActionScript / fluint tests that you can easily include within a continuous integration environment.

Who is FlexMonkey for?

Like many in the Flex community, we came to Flex development after many years of developing traditional web applications, where there are multiple tools that allow a developer to simulate a UI client for testing (like HTMLUnit). For testing our Flex user interfaces, we had a strong desire to continue using this paradigm for our developer level testing.

As software consultants, ensuring quality is an important part of what we do. So, we created FlexMonkey to fill the gap between a unit test and what’s really needed to ensure quality (and protect against regression) when developing user interfaces. While we initially created FlexMonkey for developers, many in the FlexMonkey community have found it just as valuable for use in creating QA / Functional tests.

So, we believe that FlexMonkey is useful to both software developers and quality control engineers on Flex development projects.

So, what’s so game changing about it?

If you ask Mike Labriola (one of the Fluint/FlexUnit 4 guys), ‘How do I unit test my Flex user interfaces?’ He will quickly respond, ‘You don’t.’ He won’t tell you this because he doesn’t believe in unit testing (as I can assure you that he strongly believes in Unit Testing), but because there are parts of a user interface that cannot be sufficiently tested with unit tests.

So, as we jump into the reasons why FlexMonkey matters for you, I’ll note that we do not believe that FlexMonkey replaces the need for traditional unit tests. There are still parts of a Flex application that are best tested this way (e.g. service clients, business logic, etc.). If you are building a framework, it’s likely that the majority of your testing will be done through unit tests, but if you are focusing on features and functionality you will likely be able to achieve upwards of 80% of your testing goals with FlexMonkey. Nevertheless, here are the high level places where FlexMonkey changes the game:

  1. FlexMonkey fills the gap left between unit testing and a truly successful test suite, as it provides a tool for doing developer level functional tests that replace traditional unit testing activities that developers perform in other tiers of application development.
  2. FlexMonkey allows developers to write their user interface code in the most natural way. Typically, when developing a user interface application without a tool to simulate a client of the running application, the code has to be written differently to support testing. This often leads to many unnatural acts, which can be avoided when using FlexMonkey.

    For the Java folks, I like to bring up the SpringFramework here, as it provides us with a powerful example of a framework that largely succeeded because it allows developers to write their code in a natural way. Over the long run, the frameworks and tools that make it possible for developers to work in the most natural way will always win out.

    Tools like FlexMonkey are able to facilitate this simply through the paradigm they provide for testing user interfaces, as they allow developers to test applications without any knowledge of the underlying code.

  3. Cost. FlexMonkey is free. So, even though it’s not a perfect tool, it does enable one to build and deploy a successful test suite, a task that is extremely difficult and costly in Flex development without FlexMonkey.

You can find the FlexMonkey project at: http://flexmonkey.gorillalogic.com/

FlexMonkey is built and open-sourced by Gorilla Logic, Inc.

Leave a Reply