Embaucher un testeur chez Google

La création et le passage de tests sont fondamentaux pour créer un logiciel de qualité. Le test est souvent le parent pauvre du développement informatique. En haut de la pyramide d’un service informatique se trouve le développeur et tout en bas le testeur.

Le métier de testeur est souvent considéré comme un tremplin vers des activités (soi-disant) plus enrichissantes, de nombreux stagiaires ou alternants sont employés dans les équipes de tests pour leur première expérience. Pendant leur entretien d’embauche on leur dit clairement que cette période de stage est simplement une étape obligatoire avant d’accéder au Saint Graal : l’équipe de développement.

A l’autre bout de la chaîne l’équipe de test est aussi utilisée pour gérer les fins de carrière d’informaticiens fatigués. Le test peut constituer une nouvelle orientation de carrière après des années de développement sans aucun autre débouché que de coder de nouvelles lignes de code sur de nouveaux projets.

Cet article est basé sur le livre « How Google tests software ». Ce livre comprend beaucoup d’interviews de managers de Google qui expliquent leurs implications dans le processus de test logiciel chez Google. Il décrit aussi succinctement les différents outils de tests chez Google. Bien sûr on s’aperçoit qu’ils sont dans un processus d’intégration continue avec des tests automatiques dans des environnements virtualisés. Le livre parle aussi des entretiens de recrutement menés chez Google pour embaucher un ingénieur de test. C’est clairement une des parties les plus intéressantes du livre. La description ci-dessous est une traduction non littérale du livre « How Google tests software ».

Entretien d'embauche d'un ingénieur de test chez Google

Le but est bien sûr de recruter un testeur, il est donc demandé à partir d’un simple problème de définir les tests qui doivent être menés pour valider la fonctionnalité.

La fonctionnalité à tester :

un test pour les testeurs

Il s’agit simplement d’une zone de texte avec un bouton. Le clic sur le bouton permet de compter le nombre de 'a' présent dans la zone de texte.

Quels sont les tests et les questions que vous pouvez vous poser pour tester cette fonctionnalité ?

Afficher les réponses de la première question (essayez de ne pas cliquer sans avoir réfléchi à la réponse)

Vous avez commencé à détailler les tests sans vous poser de question, c’est mauvais signe. L’approche est clairement mauvaise pour Google. Le bon candidat demande à l’examinateur de clarifier certains points :

Le texte est-il seulement en anglais ? Est-ce-que le texte est effacé après l’appui sur le bouton ? Que se passe-t-il si on appuie plusieurs fois sur le bouton ? Etc…

Après avoir clarifié ces points l’entretien peut continuer en détaillant les différent cas de tests.

Afficher les autres réponses (essayez de ne pas cliquer sans avoir réfléchi à la réponse)

L’examinateur apprécie que les tests soient ordonnés et qu’il y ait un plan d’ensemble.

Voici la liste :

  • "banana": 3 (An actual word.)
  • "A"" and "a": 1 (A simple legal case with a positive result.)
  • "": 0 (A simple legal case with a zero result.)
  • n null: 0 (Simple error case.)
  • "AA" and "aa": 2 (A case where the count is > 1 and all As.)
  • "b": 0 (A simple, nonblank legal case with a negative result.)
  • "aba": 2 (Target character at the beginning and end to look for an offby-one loops bug.)
  • "bab": 1 (Target character in the middle of the string.)
  • space/tabs/etc.: N (Whitespace characters mixed with N As.)
  • long string without As: N, where N > 0
  • long string with As: N, where N is equal to the number of As
  • X\nX in the string: N, where N is equal to the number of As (Format characters.)
  • {java/C/HTML/JavaScript}: N, where N is equal to the number of As (Executable characters, or errors or accidental interpretation of code.)

Si vous avez manqué certains tests ci-dessus c’est un mauvais point.

Les candidats les plus forts peuvent se poser des questions sur la couleur et le design pour savoir s’il est cohérent avec les autres applications.

Ils s’interrogent aussi sur la taille de la zone de saisie et sur le fait de savoir si des données personnelles peuvent être sauvegardées, si on peut proposer une auto complétion automatique, si le copier/coller fonctionne.

Enfin d’autres candidats plus expérimentés peuvent poser d’autres questions.

L’application fonctionne-t-elle avec tous les langages ? Peut-on compter autre chose que les ‘A’ et rendre l’application plus paramétrable ?

Peut-on écrire un script qui détermine la longueur maximum de la chaine à analyser ? Est-ce qu’il y a un risque de vulnérabilité des données si elles sont transmises sur le réseau ?

Les meilleurs candidats s’interrogent sur la façon dont le code est écrit. Par exemple si la chaîne peut contenir 1000 caractères le candidat doit tester les limites avec une chaîne de 999, 1000 et 10001 caractères. On doit être plus précis que tester une grande chaîne.

Une fois le plan de tests établi l’examinateur peut être amené à modifier les données. Par exemple la zone de saisie peut contenir au maximum 5 caractères. Comment modifiez-vous vos tests ?

Bon, en fait Google veut des gens intelligents qui réfléchissent avant de prendre en compte une modification, il faut avant tout s’interroger si le fait de réduire la zone de texte à 5 caractères est intéressant pour l’utilisateur.

Citation du livre:

We want curious, passionate engineers who don’t just do what they are told but investigate options and do things outside the direction job description. Job responsibilities must get done, but life and work should be about maximum impact on the world around you. We want people who are connected to the world around them and the larger computer science community

On peut aussi vous demander si vous participez à des projets open-source et si vous remplissez des fiches de tests pour ces projets.