Approche d’automatisation des tests pour les jeux mobiles

Défis liés aux tests de jeux mobiles
- Jeux développés avec OpenGL ou ActiveX contournant les services au niveau du système d’exploitation afin que les éléments mobiles ne soient pas identifiables
- Les éléments de l’application ne peuvent être identifiés par aucune stratégie de localisation telle que xpath, id, classname, autres.
- Les outils d’inspection ne parviennent pas à s’identifier sur l’application de jeu
- Résolution d’écran différente pour Android, d’où une vaste gamme d’appareils à tester
- L’interface utilisateur du jeu est très rapide par rapport aux applications mobiles, ce qui rend la synchronisation entre les scripts et le jeu réel une tâche judicieuse.
- La bibliothèque de comparaison d’images comme Sikuli ne fonctionne que pour les applications de bureau, c’est-à-dire pas pour les appareils mobiles.
- L’automatisation sur les émulateurs n’est pas recommandée car la plupart des bugs des applications de jeu dépendent des appareils réels
- Performances sur toutes les combinaisons matérielles et logicielles
Approche d’automatisation pour les jeux mobiles
L’intégration du framework mobile avec l’API/l’outil ci-dessous permettra d’automatiser le jeu :
Ce n’est pas une bibliothèque :
http://www.sikulix.com/
Automatise tout ce que vous voyez sur l’écran de votre ordinateur de bureau exécutant Windows, Mac ou Linux/Unix. Il utilise la reconnaissance d’image optimisée par OpenCV pour identifier et contrôler les composants de l’interface graphique. Ceci est pratique dans les cas où il n’y a pas d’accès facile aux composants internes d’une interface graphique ou au code source de l’application ou de la page Web sur laquelle vous souhaitez agir.
Cadre Robort :
https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html
Cette classe est utilisée pour générer des événements d’entrée système natifs à des fins d’automatisation des tests, de démonstrations auto-exécutables et d’autres applications où le contrôle de la souris et du clavier est nécessaire. L’objectif principal de Robot est de faciliter les tests automatisés des implémentations de la plateforme Java.
Vysor:
http://www.vysor.io/
Vysor place une fenêtre entièrement contrôlable de votre Android sur votre bureau. Une application Chrome facile à installer, compatible avec tous les systèmes d’exploitation.
Exemples de scénarios et de code
// Démarrez le pilote Appium et lancez l’application. Le travail du pilote dans l’automatisation du jeu consiste uniquement à lancer l’application
[sourcecode language=”javascript”]
Pilote AppiumDriver ;
Capacités DesiredCapabilities = new DesiredCapabilities();
capacités.setCapability(« appPackage », « PACKAGE_NAME »);
capacités.setCapability(« appActivity », « ACTIVITY_NAME »);
capacités.setCapability(« deviceName », « DEVICE_NAME »);
capacités.setCapability(« platformVersion », « DEVICE_VERSION »);
capacités.setCapability(« platformName », « PLATFORM_NAME »);
[/sourcecode]
// assurez-vous de définir une valeur élevée pour COMMAND TIMEOUT car aucune commande ne sera donnée par le pilote appium une fois l’application lancée
[sourcecode language=”javascript”]
capacités.setCapability (« newCommandTimeout », 360000);
driver = new AndroidDriver
[/sourcecode]
// La fonction prendra une capture d’écran du bureau à l’aide de la bibliothèque sikuli et renverra une image tamponnée
[sourcecode language=”javascript”]
Écran écran = nouvel écran ();
public BufferedImage takeScreenshot() {
Fichier scrFile = new File(screen.saveScreenCapture(System.getProperty(« user.dir ») + « /src/main/resources/ », « FILE_NAME.png »));
BufferedImagebufferedImage = null ;
essayer {
bufferedImage = ImageIO.read(scrFile);
} catch (IOException e) {
e.printStackTrace();
}
renvoie l’Image tamponnée ;
}
[/sourcecode]
// La bibliothèque Sikuli comparera à la fois l’écran et renverra le centre des coordonnées de correspondance sur le bureau
[sourcecode language=”javascript”]
Coords Point2D = getCoords(takeScreenshot(), targetImgPath);
System.out.println(« ———-« + coords.getX());
System.out.println(« ———-« + coords.getY());
[/sourcecode]
//Utilisez la classe Robot pour cliquer sur la correspondance trouvée sur l’écran de bureau, c’est-à-dire qu’elle sera dans l’image de diffusion mobile
La classe Robot peut être utilisée pour effectuer diverses actions sur la diffusion mobile sur le bureau qui seront répliquées sur mobile par Vysor comme moveMouse, mouseWheel, keyPress, glisser-déposer, etc.
[sourcecode language=”javascript”]
if ((coords.getX() >= 0) && (coords.getY() >= 0)) {
Robot bot = nouveau Robot();
bot.mouseMove((int) coords.getX(),(int) coords.getY());
bot.mousePress(InputEvent.BUTTON1_MASK);
bot.mouseRelease(InputEvent.BUTTON1_MASK);
100);
}
[/sourcecode]
Limites
OpenGL ou ActiveX contournant les services au niveau du système d’exploitation.
L’OCR est possible mais n’est pas en mesure de confirmer la même chose car aucune information n’est nécessaire ;
VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE
Source link