Handling Multipath Drags Preview

Bitbar, the mobile devops company. Logo, large

Hi all,
if you are developing for example OpenGL games, or other apps with complex gestures, you will be interested in our new feature: multipath drags. We are sure that this feature will be very useful and makes testing easier.

At the beginning we had to choose some criterion to distinguish between simple drags and those that are not that simple. After deliberating with several approaches we finally chose the length criterion. There are differences between length of segment from first point to last point and sum of lengths between all points. The greater the difference the more the drag is multipath drag. To collect some statistics we customized a little sample application called “GestureBuilder” provided with Android SDK. Our version was designed to collect statistics for simple drags. We collected samples from all people in our office and everyone drew a straight line that reflects a simple drag. The idea was to distinguish between simple drags and more complex gestures by utilizing a “bullet proof” mathematical formula. Screen from the application:
We adopted the criterion of length of the path. Drag consists of several points. So far, we created only simple drags on the basis of the first and last point. We compared the length between the first and last point with the sum of the length between points which make up the drag.

The maximum value is 4,13%, for simplicity we adopted 5%, If the sum of the segments is greater by more than 5% of the distance between the first and last point, we interpret the drag as a multipath drag. We have created a new method in ExtSolo library that allows playback – multidrag (float [][] points). The “points” is an array of arrays of floats. Values have to be normalized. More information will be available soon in the new API after releasing the Recorder. For now, we can just present, how easy it is to use it:

[sourcecode language=”java”]
private void multiDragGroup_1() throws Exception {
float points[][] = {
{ 0.6204f, 0.2188f }, { 0.6204f, 0.2188f },
{ 0.6204f, 0.2188f }, { 0.6204f, 0.2188f },
{ 0.6204f, 0.6365f }, { 0.6259f, 0.6979f },
{ 0.6630f, 0.6365f }, { 0.7537f, 0.4844f },
{ 0.8111f, 0.3625f }, { 0.8889f, 0.2542f },
{ 0.9148f, 0.2188f }, { 0.9259f, 0.2146f },
{ 0.9426f, 0.2156f }, { 0.9426f, 0.2156f }

Below are some screenshots from the Cloud:
Because Testdroid Recorder scales all clicks and drags, also the multipath drags will be scaled to any resolution during test execution and all this will be available in the new release of the Recorder – 2.7. We hope you enjoy it,
Testdroid team.