Quiz INLO - Tests logiciels

Classified in Informatique

Written at on français with a size of 6,22 KB.

INLO - Quiz

Quiz 2

Qu’est-ce que INLO signifie ?

Ingénierie de logiciel

Quelles disciplines est-ce que ça touche ?

Développement, programmation, Modélisation, Base de données

Qu’avons-nous choisi de voir ces 8 prochaines semaines ? Pourquoi ?

Test unitaire et test fonctionnel

Pourquoi ce choix ?

C’est le plus rapide à tester

Comment définiriez-vous le type de test sur lequel nous avons travaillé la semaine dernière après la grande pause ?

Test unitaire -> vérifie le bon fonctionnement d’une partie précise du logiciel / programme.

Test fonctionnel -> test automatiquement les fonctionnalités de l’application.

Est-ce que tester...

  • Permet de trouver les erreurs.
  • Sert à vérifier les données saisies par l’utilisateur (??)
  • Augmente le degré de confiance du logiciel produit.

Pourquoi les tests servent à ça ? (Par "ça", nous faisons référence aux cases que vous avez choisies de cocher à la question précédente)

Repérer les erreurs, permet d’améliorer la qualité du produit (…)

Souvenez-vous des tests réalisés sur la classe Validator.java (extrait ci-dessus) et en particulier des tests de ValidatorTest.java qui sont supposés valider l'efficacité de la méthode isValidEmail(String email).

public class Validator { public boolean isValidEmail(String email) { int posAt = email.indexOf('@'); if (posAt < 0) return false; return posAt > 0 && posAt < email.length()-1; } }

Les tests que nous vous avons fournis ne sont pas exhaustifs. En effet, on teste assertFalse(validator.isValidEmail(myStringTest)) avec les 4 valeurs suivantes : {"" ; "@" ; "@gmail.com" ; "schtroumpf@"} pour myStringTest.

Proposez une 5ème string qui permet d'identifier une situation non prévue par le programmeur et par le testeur, et qui permettrait donc de mettre en évidence une situation non prévue dans le code.

"@@"

Proposez une 6ème string qui permet d'identifier une autre situation différente non prévue par le programmeur et par le testeur.

"@.com"

Proposez une 7ème string qui permet d'identifier encore une autre situation, non traitée par les tests précédents.

"[email protected]@"

Quiz 3

Qu'est-ce qu'un test unitaire ?

C’est une procédure permettant de vérifier le bon fonctionnement d’une partie précise d’un logiciel / programme

Pouvons-nous simplement écrire des system.out.println() dans le code après chaque instruction que l'on souhaite tester, afin d'effectuer des tests unitaires ? Et pourquoi ?

Non, le système indique déjà si le test est réussi ou pas (à revoir !)

Quelle est la différence entre les tests manuels et les tests automatisés ? Pourquoi s'embêter à automatiser les tests ?

Les tests automatisés sont plus longs à élaborer mais deviennent rentables au niveau temps sur le long terme car réutilisables. Les tests manuels permettent de déceler les bugs qu’une machine ne peut repérer. L’inconvénient des tests manuels c’est qu’ils ne sont pas réutilisables.

Cycle de développement logiciel

Quel est le bon moment pour écrire un test unitaire dans le cycle de développement logiciel (en image ci-dessus) ?

Le test unitaire doit se faire dans la phase de Build

Selon vous, quelle devrait être la fréquence d'exécution des tests unitaires ?

La fréquence doit être exécutée après chaque fonctionnalité créée/modifiée

Qu'est-ce que le framework JUnit et quels sont ses principaux usages ?

Ce Framework est une infrastructure qui effectue des tests unitaires. Le concept a été développé pour plusieurs langages informatiques, cependant JUnit est dédié à Java.

Quiz 4

Faut-il écrire une classe de test unitaire pour chaque classe du code testé ? Pourquoi ?

Non, il faudrait une classe de test pour chaque fonctionnalité découlant d’une classe de code.

Comment testez-vous une méthode déclarée privée ? Que pensez-vous de la pertinence de votre solution ?

Il faut créer un accesseur pour pouvoir y accéder (getter, setter)

Comment allez-vous tester avec JUnit un scénario dans lequel une exception est levée ? Donnez un exemple de code.

@org.junit.Test(expected = java.lang.ArithmeticException.class) ;

-- À placer au-dessus d’une classe de test --

Est-ce que tester une fonction ou une méthode c’est faire un test fonctionnel ? Pourquoi ?

Non, car tester une fonction ou une méthode unique ne représente pas un test fonctionnel.

Test fonctionnel = tester toutes les fonctionnalités de l’application.

Quiz 5

Comment est-ce que l'on teste qu'un code de test fonctionne correctement ?

Un test fonctionne correctement si le résultat attendu est le même que le résultat affiché par le logiciel.

Citez un cas où le test passe en mode debug mais pas en mode d'exécution normal. Expliquez ce qui se passe.

Si le test d’exécution est plus rapide que le moteur de recherche, le test passe en mode debug.

Donnez quatre exemples de code illustrant quatre manières différentes d'accéder à un élément d'une page HTML depuis Selenium.

driver.findElement(By.id("submit")).click(); driver.findElement(By.name("mail")).sendKeys("[email protected]"); driver.findElement(By.xpath("//a[@href='index.php']")).click(); driver.findElement(By.linkText("Store")).click();

Quelle est la différence entre cloner et faire un fork d'un repository GIT ?

Un clone permet de faire une copie et on n’est pas propriétaire.

Un fork permet de créer sa propre copie et de devenir propriétaire, sans modifier l’originale.

Notre code de test est conservé dans GIT. Pour tester la connexion à la base de données ou bien pour tester un login sur notre site web, on doit préciser l'identifiant et le mot de passe dans le code de test. Qu'en pensez-vous ?

Non, cela représente une énorme faille de sécurité.

Entradas relacionadas: