DISCLAIMER: This e-mail transmission and any documents, files and
previous e-mail messages attached to it are private and confidential.
They may contain proprietary or copyright material or information that
is subject to legal professional privilege. They are for the use of
the intended recipient only. Any unauthorised viewing, use, disclosure,
copying, alteration, storage or distribution of, or reliance on, this
message is strictly prohibited. No part may be reproduced, adapted or
transmitted without the written permission of the owner. If you have
received this transmission in error, or are not an authorised recipient,
please immediately notify the sender by return email, delete this
message and all copies from your e-mail system, and destroy any printed
copies. Receipt by anyone other than the intended recipient should not
be deemed a waiver of any privilege or protection. Thales Australia
does not warrant or represent that this e-mail or any documents, files
and previous e-mail messages attached are error or virus free.
[@@ OPEN @@]
There is no technical issues in the use of QFTest with obfuscated code. I’ve indeed already used it with an HMI using Luciad Map and obfuscated through Proguard.
For the obfuscation, your best choice is to only record system classes (cf: http://www.qfs.de/qftest/manual/en/contents.html#toc_sec_opt_recordcomponents, tick the top box).
QFTest will record the base class when recording the components (like javax.swing.Dialog) and not “a.b.c”
The hierarchy of your components will still be maintained, but the class attribute will be quite generic.
You won’t have to maintain a consistent obfuscation between your builds either.
The drawback is that the recognition of your components may not be as good as without obfuscation. So you should try to name your components as much as you can.
Now it seems to be possible to implement a ClassNameResolver and use the mapping file. I’ve never done it so can’t give any feedback on this option. Looks attractive though.
In regards to the interaction with the objects on Luciad, indeed QFTest will not be capable of recognizing ‘drawn’ objects (OpenGL objects I guess).
The only viable way is to implement an ItemResolver. It can be quite a challenging task depending on how much control you have over the code of your SUT. But it is definitely worth it. Once done QFTest will recognize your objects like any other components and you will be able to check for pretty much anything. All of this nicely integrated in QFTest HMI.
The latest version of QFTest (3.5.0) introduces the support of image recognition (well, it was there well before that but for your purpose you will probably look at: qfs.autoscreen.screen.getPositionOfImage) but I don’t recommend this path. It is not robust and very hard to maintain.
Regarding your layers, not too sure I follow. My understanding is that objects are drawn on different layers and some objects overlap each other. This technically is not a concern for QFTest. It is more your concern (as a tester). How can you target a mouse click on a component that is below another one? If you cannot do it manually, QFTest will not be able to do it either. It will be able to check for anything though (provided you have developed an ItemResolver).
Usually LuciadMap applications allow you to select which layer is active/visible, or manage the ordering of the layers. If it is your case the selection of the adequate layer should be part of your test procedure you want to automate.
We can have an offline discussion about all this if you want more details. We should be able to find each other J
This message contains OPEN information that is not sensitive and can be freely accessed by people both inside and outside of the Thales Group
This email was classified byGauthier, Denis on Thursday, 16 May 2013 2:11:13 PM
From: qftest-list-bounces@?.de [mailto:qftest-list-bounces@?.de] On Behalf Of Déborah Vidal
Sent: Wednesday, 15 May 2013 6:11 PM
Cc: DOYEN Aurore; vincent.astruc@?.com; Mr Michel Le Pape
Subject: [QF-Test] Obfuscated classes, Luciad Map use (and JXLayer)
I have globally two main questions that a member of QFTest adviced me to ask here, in this forum.
First, has anyone ever used QFTest with an obfuscated code?
In fact, a large part of our code is obfuscated and, evidently, we want it to stay like this. Nevertheless, we can know the hierarchy of the obfuscated elements (we just non-obfuscate the code in another window just to have the information, but we don't want to use a non-obfuscated code in our futur tests in QFTest).
So : - is it possible to access the obfuscated code if we know the entire hierarchy of the component?
- we thought about coding a « resolver » taking in entry the mapping file generated by proguard. This, in order to resolve the obfuscated classes. We would like to know if it is a possible solution with QFTest and how many time it would take to make it (we are obligated to give results very soon).
- we also thought about ensuring that this obfuscation does not change from one version to another which is normally possible with Proguard. But we are not sure that this would resolve the entire problem and won’t be too binding?
- Finally, more generally, have you got advices for us or returns of experiences on obfuscation, please?
Second, have you ever used Luciad maps or similar maps/systems with QFTest?
Indeed, on our Software, we use Luciad maps.
We saw in the forum that a Luciad employee posted a question (26 Oct 2002 16:03:24) on components snapshots and we wondered if it is the best way to identify components on these maps in order to be capable of getting its own component properties (color, position...).
In fact, we sent questions to a person of QFTest who adviced us to use an ItemResolver but he was not so sure and told us to ask the question because he does not know for the specific case of the Luciad maps which has particularities :
To be more precise, Luciad gives an environment where the components, which are on the background map, are not really distinguished. In fact, the whole interface (background map + the elements on it) are seen as a single drawing, not as known objects (like JButton, for example).
Knowing this, have you other recommendations that will permit us to use QFTest with this type of configuration? So, has anybody ever used an itemResolver or other methods with this type of configuration, have you any experience on this?
For it we have two components, one above the other. On the one which is below we would like to access a great number of objects that it contains but it is not possible due to the one which is above. So we do not know how to access this JXLayer which is above : is it possible with QFTest to copy all the objects on the JXLayer on the top or is there any other method to access them?
We have been told by a member of QFTest that it may function with “JLayers” and we would like to know if there are special moduls in QFtest for the "JXLayer" or if anybody has ever used it?
Thank you very much for your return,