Supporting the supporters to supportby Ascendro Jun 6, 2013, updated Jan 27, 2014
Building up an efficient department is not easy - improvements can be done everywhere. We recently started to boost up the efficiency of our Quality Assurance department and the results were great!
Using the project management tool Redmine most of the time, beside actual testing, was spent on putting error reports into it.
Writing good error reports is a science already but you can improve it a lot by attaching screenshtos or videos - showing the actual "undocumented feature". Main task is to make it as easy as possible for the developer to understand and reproduce it.
The initial process went like this:
Lot of steps, for simply attaching an image to an issue. This can be definitely improved...
The first step was to use a better screenshot tool then the windows standard. A small case study resulted in Greenshot (http://getgreenshot.org).
A very simple to use open source tool with a lot of usefull features. You still use the keyboard Print Key - but before making the actual screenshot you get the option to mark the area you want to show. This is already removing the third step in the process. After that you get a list of various options. Saving the file directly with the preferred file name settings (date, time, active window name, etc...), save with a file dialog, print it directly, uploading it directly to Imgur, open it with MS Paint or open it with a own provided image editor.
The own provided image editor is similar to MS Paint, but has a stipped down toolset mainly focused on inserting labels and fast marking of areas. Additionally it gives a set of buttons providing all the possible steps given in the previous drop down box. The image editor is therefore integrating itself as an optional step in the process workflow.
The best part: It is possible to create own extensions of what to do with the image - by writing a plugin for the tool or configuring your desired program as command line tool.
Redmine .NET Api
This gave us the idea for the next steps: Creatimg a tool that uploads the image directly to a Redmine issue and therefore replacing all the other steps in the workflow.
Using .NET seems to be most applicable as there is already a .NET Redmine API available and .NET Frameworks are installed on all the computers of our QA Department.
Note: During development we found two problems with the .NET Redmine API and had to make a custom build. Both issues are marked as fixed now but we don't know if they are already in an official release. We included the pathces in the issue descriptions and if you need this custom changes you can find them here (http://code.google.com/p/redmine-net-api/issues/detail?id=31) and here (http://code.google.com/p/redmine-net-api/issues/detail?id=32).
Also we had to use undocumented features of the REST API which was included later due to Issue #12774 (http://www.redmine.org/issues/12773).
Update: The newer version of our tool includes the latest official builds and is therefore compatible with the original .NET API.
The tool should catch a file via command line from Greenshot and give the user the possibility to upload it as an attachment to an already existing issue in Redmine with as few clicks as possible.
The GreenshotRedmineUploader was born.
Functionality and how to use it
Taking the file as a command line parameter, it is already filling out the file field. Optionally it can be also used to upload files already existing on the hard drive with the "Open" button.
Filename and Description fields are used for the uploaded file in Redmine, to identify the file within the issue.
As for every application with user interface, special attention was given to the tab order and it is easy to fill in the complete form only with the keyboard - not using the mouse.
Also the resize behaviour was thought through, so that it is possible to resize the window in order to get a bigger description box.
A big problem where the drop down boxes with Redmine related Data. The tool needs to fetch a lot of informations from Redmine in order to present all possible Projects, Issues, Users, Priority types, Status types, etc...
This can take a while (up to several minutes depending on your redmine size!) and is not improving the workflow at all. The data needed to be cached!
This was done by saving the Redmine Data in a big Data Buffer Class which will be saved through an IsolatedStorageFileStream. A very nice way to store settings on various computer systems, not caring about used Operating System or Directory Structure.
After filling out the Redmine API access Informations, a sync is done and all the Redmine informations are downloaded. From there on the program will use the locally saved informations and only collect data from Redmine if the user requests it (by clicking the Sync button again).
Beside that the Setting form also gives the possibility to set various default Values, making the creation of new Issues much faster.
The option to close the program automatically after the upload was done saves another click.
Creating a new Issue:
For creating a new issue a project needs to be selected. Not cached are the project users, which can be requested pretty fast from Redmine by the click on “Get Userlist” (optional).
A subject, tracker, assignee (if Userlist was loaded), Priority, Parent issue and a Description can be entered. The parent issue box is a copy of the issue box in “Attach to Issue” and can therefore take a Issue ID or an Issue can be selected from the Drop Down Box.
Pressing on Upload generates the new Issue and uploads the Picture as attachment.
Attach to Issue:
The Issue can be given as Issue ID or an Issue can be selected via tha Drop Down Box/Autocomplete Search. With the SyncSave button a complete Redmine Sync can be triggered, if you don’t know the Issue ID and the Issue is newer then the last Redmine Sync.
“Check and get Userlist” is an optional button to check if the selected Issue exists and get a Userlist of possible Users the Issue can be assigned to.
Assignee, Priority and Status give you the possibility to change some attributes of the issue and note gives the possibility to enter a description (like an error report for example).
Pressing the Upload button makes the selected changes on the Issue and attaches the image to it.
The new workflow
After the addition of the new tool our workflow looked like this:
We did not only cut the steps by half but also improved the complexity of each step, cutting the time needed for creating and attaching a screenshot to an issue by 80%!
GreenshotRedmineUploader was released by us as an open source tool. You can use or even participate in further development by going on our github project: https://github.com/ascendro/GreenshotRedmineUploaderUpdate: By now the newer version 0.3 was released (Version described in article was 0.2), which included Category and Version selection as well as a better search for old issues and better loading of issue informations.