Completed

Windows C++ MFC Desktop Application - Automation records and replays user actions with images

This project was successfully completed by licsistemas82 for $16 CAD / hour in 15 days.

Get free quotes for a project like this
Employer working
Completed by:
Project Budget
$8-$15 CAD / hour
Completed In
15 days
Total Bids
10
Project Description

I would like a Windows C++ MFC testing/automation application that captures user input (desktop screen image capture, mouse pointer and click location and keyboard text input) and records the data on disk for test cases so that they can be used to repeat the recorded actions. 

The captured data will be used to perform actions on the system by matching images from the recorded test case with the live desktop screen. The actions include moving and clicking the pointer and typing keys.

The user interface consists of a main window dialog with the following elements in descending order:
1) a menu,
2) a toolbar with buttons: Record, Play, Pause, Stop,
3) a scrolling tree view of test cases (with icon success/failure of last test run and an enabled/disabled check box) and
4) a scrolling list view of individual test case actions with icons indicating the type of action (mouse click, key press).

The test case tree view and test case action list view will contain context menus to add, edit, rename, delete and schedule items.
 

Primary Functions:

1) User Interface.
The user interface elements allow the user to add, edit and delete a 'test cases' and view them in a tree view. The tree view nodes should display the case name, a check box for status of the last run (success/fail) and a enabled/disabled check box scheduling. Selecting a 'test case' from the tree will load the associated actions for that case into the action list view. The test cases information is to be stored permanently on disk preferably in a folder with an XML file for the settings and image files for screen captures. 

Test cases and action entries should be able to move up and down in sorting order.

2) Recording a test case.
Clicking the record toolbar button will start a recording. The recording starts a thread that captures the desktop screen tile around the mouse pointer. When a mouse click or keyboard entry event occur save the last recorded image tile, around the mouse pointer, to disk along with the pointer location and the event type to an XML entry for the test case.

3) Running a test case.
Starting a test case will run through all of the steps recorded and stored in the case XML file. The actions recorded in a test case describe how to repeat mouse and keyboard actions given the current contents of the desktop. A mouse click will include a captured image tile and screen coordinates. As a test case runs the desktop image is continuously captured and scanned for a match against the current test case action tile.

Performance is key for this step and multiple threads and vectorization i.e. SSE would be ideal.

4) The scheduler
A thread and desktop tray icon manage a schedule function that runs test cases at a time specified by the test case or a global time. A schedule dialog allows the user to select a time of day to run the tests or if one test case is scheduled individually the time of day to run that case.

5) Detail view
A dialog displays action details including the image tile and any text input or mouse clicks in form fields. The user can modify the click location on the tile, change the input text etc.


Please note that this is just a summary of the project and detailed requirements as well as a prototype Visual Studio 2010 project are available upon request.

If you are interested in working on this project please send me a message with your availability, a reference to a similar or relevant application you have developed and a few sentences about how you would approach development.

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online