(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

AIDEZMOI
Messages : 15
Inscription : ven. mai 25, 2018 11:31 am

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par AIDEZMOI »

Bonjour,

Je peine depuis plus de 3 semaines à trouver le moyen de tester en SQUASH_TA DSL que l'on obtient bien le message "Votre login ou mot de passe est invalide !"

J'ai essayé :
ASSERT _temp.result IS contain $(Votre login ou mot de passe est invalide !)

_temp.result est issu de exemples dont je me suis servi dans les exemple du site squashtest.

Par avance, merci pour votre aide.
qdusser
Messages : 55
Inscription : lun. mars 05, 2018 2:56 pm

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par qdusser »

Bonjour,

Pouvez-vous m'indiquer de quel exemple vous vous êtes inspiré ?

Mais encore, quel est votre projet?

J'ai l'impression que vous tentez de faire un test d'application web via le DSL SquashTA. Si tel est le cas, sachez que ceci n'est pas le rôle du DSL, mais des plugins (Sahi ou Selenium) intégrés à Squash TA.

Il vous faudra alors utiliser les macro-commandes (shortcuts) Selenium et sahi directement dans vos test.ta (executer un script de test automatisé qui contiendrait l'assertion de vérification du message d'erreur)

voici deux tutos qui pourraient vous aider :
1/ Sahi : https://sites.google.com/a/henix.fr/wik ... a-and-sahi

2/ Selenium : https://sites.google.com/a/henix.fr/wik ... d-selenium

Bon week-end,

Quentin
AIDEZMOI
Messages : 15
Inscription : ven. mai 25, 2018 11:31 am

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par AIDEZMOI »

Bonjour Monsieur Quentin,


D'abord merci pour votre message.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Etape A :
Je me suis inspiré au départ -effectivement- de votre exemple :
2/ Selenium : sites.google.com/a/henix.fr/wiki-squash-...uash-ta-and-selenium

Puis, du fait que je réalisais, que je me dirigeais vers une voie peut-être sans issue,
(Puisque vraisemblablement, dans cet exemple du tutorial 3,
nous avons le sentiment que -pour le "rejouage" de la capture de la partie web-, il ne fait que rejouer sans vraiment tester des valeurs ou message d’erreurs IHM attendus -sauf mal vu de ma part- ).
~~~~~~~~~~~~~~~
Or, mon étude de faisabilité et d'évaluation de la gamme "SQUASH" se demandait :

Si le Produit évalué(toujours SQUASH TA ici) était en capacité
1 de récupérer les message d'erreur IHM attendus
2 de comparer le message d'erreur IHM attendue avec le message d'erreur "trappé" obtenu
3 de déclarer OK (Vert, test réussi), de déclarer KO (rouge, test échoué obtenu "Votre user ou mot de passe est incorect" au lieu de "Votre login ou mot de passe est invalide !")

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Etape B :

Puis je me suis dirigé vers cette exemple qui test vraisemblablement des mots clef attendus au travers d'un command.bat propageant en sorti deux séries de phrases :
https://sites.google.com/a/henix.fr/wik ... --commands

Mais non approprié (effectivement, exemple DSL pas conçu pour aider à gérer et trapper de la sortie texte d' IHM/Web.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Le projet est une étude de faisabilité sur la capacité de la gamme SQUASH en fonctionnel (métier) tests Management dans le contexte de pouvoir rejouer automatiquement et quotidiennement une batterie de test fonctionnels sur des applications WEB Java, WEB Javascript ou autre, WEB PHP, bref tout ce qui est IHM Web sur poste de travail PC.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ceci nous permettra de mettre en valeur le produit avec la suite qui s'en suit dans la force de proposition auprès des clients.

Mais pour cela, nous devons en avoir une certaine maitrise et l'étudier sur les critères attendu.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dans un premier temps, nous n'attendons pas la gamme SQUASH TEST au niveau de la performance, mais sur la puissance IHM voire dans un deuxième temps introspective à vérifier la fiabilité des composants logiciels associés à l'IHM (BDD, MQ systemes, ESB, LDAP,....).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Si vous pouvez nous aider à évaluer le produit avec ou sans DSL sur la faisabilité suivante :
1 de récupérer les message d'erreur IHM attendus
2 de comparer le message d'erreur IHM attendue avec le message d'erreur "trappé" obtenu
3 de déclarer OK (Vert, test réussi
obtenu
"Votre login ou mot de passe est invalide !"
attendu
"Votre login ou mot de passe est invalide !")

4 Ou de déclarer KO (rouge, test échoué

obtenu
"Votre user ou mot de passe est incorrect"

attendu
"Votre login ou mot de passe est invalide !")


Agréez, Monsieur, mes sincères salutations.

Maurice Olivier BERDAH
Etude, Ban de tests et Qualification
AIDEZMOI
Messages : 15
Inscription : ven. mai 25, 2018 11:31 am

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par AIDEZMOI »

Rebonjour Monsieur,

Pour plus de précision, Voici ce que j'ai utilisé :


L'appelé C_EUGENA_MDP_KO.java =>

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxProfile;
import java.io.File;

public class C_EUGENA_MDP_KO {
private FirefoxBinary binary = new FirefoxBinary(new File("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"));
private FirefoxProfile profile = new FirefoxProfile();
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {
driver = new FirefoxDriver(binary,profile);
baseUrl = "https://www.eugena.fr";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void Logintest() throws Exception {
driver.get(baseUrl);

driver.findElement(By.cssSelector("button.navbar-toggle")).click();

driver.findElement(By.id("extranet")).click();

driver.findElement(By.name("username")).clear();
driver.findElement(By.name("username")).sendKeys("mon_nom_de_login");

driver.findElement(By.name("password")).clear();
driver.findElement(By.name("password")).sendKeys("mauvais_mot_@_de_passe_##@");

driver.findElement(By.name("submit")).click();

}

@After
public void tearDown() throws Exception {
// driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}

private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}

private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}

private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
____________________________________________________________________________________________

Et l'appeleur :

C_EUGENA_MDP_OK.ta

SETUP :

LOAD selenium AS _temp.file

CONVERT _temp.file TO script.java(compile) AS _temp.compiled

CONVERT _temp.compiled TO script.java.selenium2(script) USING $(C_EUGENA_MDP_OK) AS _temp.selenium

TEST :

EXECUTE execute WITH _temp.selenium AS _temp.result

ASSERT _temp.result IS success

TEARDOWN :

______________________________________________________________________

Bien à vous.
qdusser
Messages : 55
Inscription : lun. mars 05, 2018 2:56 pm

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par qdusser »

Bonjour M. Berdah,

Effectivement votre projet est parfaitement réalisable avec Squash TA. Selon les compétences de vos équipes, vous pourriez utiliser les solutions Selenium ou Sahi pour l'écriture de vos scripts automatisés, et l'utilisation du framework Squash TA vous permettrait la gestion de vos environnements de tests ainsi que la maîtrise de vos jeux de données (en entrée et sortie de test). Enfin, Squash TA vous fournirait un rapport post-exécution avec en vert les tests OK ; en rouge les tests KO.

Je vois que vous avez opté pour Selenium. Mais l'écriture de votre script de test ne me paraît pas correct. Sachez que vous pouvez réaliser vos assertions directement dans votre code java (de préférence dans une seule et même méthode du @test. (ex d'assertion : assertEquals(alert.getText(), "Votre login ou mot de passe est invalide !").
Pour ce qui est de votre script .ta. Il existe des macro-commandes pour l'exécution de script sélénium. Je vous propose celle-ci :

TEST :
# EXECUTE_SELENIUM2 {votre_repertoire_de_scripts_java} WITH MAIN CLASS C_EUGENA_MDP_KO.java


Dans le cadre du support en ligne, je ne peux malheureusement pas rédiger le cas de test pour vous, ni réaliser votre étude d'opportunité.
Néanmoins, pour l'organisation d'un POC ou l'inscription à une formation Squash TA et Selenium, je vous invite à contacter nos équipes dédiées : contact@squashtest.com

Très cordialement,

Quentin.
AIDEZMOI
Messages : 15
Inscription : ven. mai 25, 2018 11:31 am

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par AIDEZMOI »

Rebonjour Monsieur Quentin,

Je vous remercie pour votre retour.



Mais le rapport considère :
Que bien que le test se soit déroulé à 100%, eh bien, le rapport ne déclare voir aucune Failures ou Errors.


Pourtant, J'ai effectivement essayé la phylosophie du code que vous me suggérez, par exemple comme suit, mais pour SQUASH pas moyen d'y faire, le test est vu comme "Successes".
Outre cela, je n'ai aucun moyen sous l'IDE Eclipse Oxygen de valider mon code puisque l'artefact semble inhiber l’assistance automatique au code (que l'on a chez Eclipse avec ctrl + espace par exemple pour proposer les méthodes d'un objet (Je suis en en vol à vue (comme dans les années 90 :P :

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxProfile;
import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class C_RATP_MDP_KO {
private FirefoxBinary binary = new FirefoxBinary(new File("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"));
private FirefoxProfile profile = new FirefoxProfile();
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {
driver = new FirefoxDriver(binary,profile);
baseUrl = "https://monsite:8185/login";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void Logintest() throws Exception {

String expectedStr = "XXXXXX_MESSAGE_D_ERREUR_BIDON_XXXXX";

System.out.println("AAAA DEBUT AAAA");

System.out.println("AAAAA expecteStr=[" + expecteStr + "]");

driver.get(baseUrl);

driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("JESSICA");

driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys("bidon$");

driver.findElement(By.id("submitButton")).click();

driver.findElement(By.name("submit")).click();

Alert alert = driver.switchTo().alert();

WebElement wm_element=driver.findElement(By.className("alert alert-danger"));

System.out.println("AAAAA [" + wm_element + "]");

[b]assertEquals(expectedStr,wm_element);[/b]

}

@After
public void tearDown() throws Exception {
driver.quit();
System.out.println("AAAA FIN AAAA");
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}

private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}

private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}

private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
Pièces jointes
SQUASH_Rapport.png
SQUASH_Rapport.png (280.67 Kio) Consulté 3549 fois
AIDEZMOI
Messages : 15
Inscription : ven. mai 25, 2018 11:31 am

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par AIDEZMOI »

C'est à dire :

Que je veux déclencher une failure ou erreur (que m'importe, mais surtout lui faire constater que le message attendu :
XXXXXX_MESSAGE_D_ERREUR_BIDON_XXXXX

n'est pas celui affiché par le site/application web :
"Informations d'identification fournies non valides"

Agrèez mes cordiales salutations.
AIDEZMOI
Messages : 15
Inscription : ven. mai 25, 2018 11:31 am

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par AIDEZMOI »

Rebonjour,

Voici le code qui a su extraire le message d'erreur :

Le System.out.println("@AFTER AAAAA sTEXTEALERT=[" + sTEXTEALERT + "]"); renvoit bien dans la console Eclipse/Oxygen :
@AFTER AAAAA sTEXTEALERT=[Informations d'identification fournies non valides]

Mais, le rapport SQUASH dit toujours qu'il ne voit pas d'erreur fonctionnelle (failures ou errors).

import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxProfile;
import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class C_RATP_MDP_KO {
private FirefoxBinary binary = new FirefoxBinary(new File("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"));
private FirefoxProfile profile = new FirefoxProfile();
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();

@Before
public void setUp() throws Exception {
driver = new FirefoxDriver(binary,profile);
baseUrl = "https://monsite:8183/login";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void Logintest() throws Exception {

// String expectedStr = "Informations d'identification fournies non valides";

String expectedStr = "@TEST XXXXXX_MESSAGE_D_ERREUR_BIDON_XXXXX";

System.out.println("@TEST AAAA DEBUT AAAA");

System.out.println("@TEST AAAAA expectedStr=[" + expectedStr + "]");

// log.info("XXXX");

driver.get(baseUrl);

driver.findElement(By.id("username")).clear();
driver.findElement(By.id("username")).sendKeys("ANAIS");

driver.findElement(By.id("password")).clear();
driver.findElement(By.id("password")).sendKeys("bidon$");

driver.findElement(By.id("submitButton")).click();

driver.findElement(By.name("submit")).click();

WebElement wm_element=driver.findElement(By.className("alert-danger"));

String sTEXTEALERT=wm_element.getText();

System.out.println("@TEST AAAAA sTEXTEALERT=[" + sTEXTEALERT + "]");

assertEquals(expectedStr,sTEXTEALERT);

// Assert.assertTrue(wm_element.contains(expectedStr));


}

@After
public void tearDown() throws Exception {
// String expectedStr = "Informations d'identification fournies non valides";

String expectedStr = "XXXAFTERXXX_MESSAGE_D_ERREUR_BIDON_XXXXX";

System.out.println("@AFTER XXXXX DEBUT AAAA");

System.out.println("@AFTER XXXXX expectedStr=[" + expectedStr + "]");

WebElement wm_element=driver.findElement(By.className("alert-danger"));

String sTEXTEALERT=wm_element.getText();

System.out.println("@AFTER AAAAA sTEXTEALERT=[" + sTEXTEALERT + "]");

assertEquals(expectedStr,sTEXTEALERT);

// Assert.assertTrue(wm_element.contains(expectedStr));

driver.quit();
System.out.println("@AFTER XXXAXX FIN AAAA");
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}

private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}

private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}

private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}
qdusser
Messages : 55
Inscription : lun. mars 05, 2018 2:56 pm

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par qdusser »

Bonjour,

Pouvez-vous m'envoyer les configurations de build maven que vous utiliser pour le "run"?

Quentin
AIDEZMOI
Messages : 15
Inscription : ven. mai 25, 2018 11:31 am

(SQUASH_TA).Comment tester "Votre login ou mot de passe est invalide !"

Message par AIDEZMOI »

Rebonjour Monsieur Quentin,

Ci-joint le pom.xml.
Merci !

Cordialement
Maurice Olivier
Pièces jointes
C_MONJAVA.txt
(3.94 Kio) Téléchargé 157 fois
Répondre

Revenir à « SKF »