Ce que le testeur de backend devrait savoir



On me demande souvent quoi lire avant d'interviewer pour le poste de testeur backend. Et dans mon travail, je tombe sur le fait que de nombreux candidats ne comprennent pas toujours ce qui se passera lors de l'entretien et ne sont pas préparés. L'idée est donc née de recueillir des informations utiles dans un seul article.

FunCorp a une liste de sujets avec des questions que nous posons aux candidats. J'ai décidé de le compléter, de le rendre plus universel, de décomposer chaque sujet en niveaux (ce que vous devez savoir et ce qui sera un plus) et d'ajouter des liens vers des articles et des livres qui peuvent être lus sur ces sujets.

Quels problèmes ce texte aide à résoudre: candidat - préparer une entrevue, n'importe quel testeur de backend - actualiser les connaissances, testeur de frontend ou testeur d'application mobile - élargir ses horizons. Les employeurs peuvent utiliser la liste pour créer des exigences d'emploi.

Connaissances nécessaires


Je ferai tout de suite une remarque: les connaissances et compétences nécessaires dépendent des spécificités du poste. Si le poste vacant concerne le test de l'API où HTTP est utilisé, vous devez bien connaître HTTP et ne pas avoir besoin de connaître les nuances du système d'exploitation. Si vous travaillez avec Windows, vous n'avez pas besoin de connaître bash.

Je veux également lancer un appel aux employeurs: ne posez pas de questions sur la gestion de la mémoire sous Linux en tant que candidat au poste d'Ingénieur Mobile QA, cela ne lui sera probablement pas utile dans son travail.
Je ne mentionne pas les langages de programmation car cela dépend beaucoup de la pile utilisée. Mais souvent, on ne leur demande rien à leur sujet lors des entretiens avec les testeurs (sinon ils indiquent le niveau de connaissance nécessaire de la langue dans la description de poste).

Sur de nombreux sujets, je fournirai des liens, y compris vers Wikipedia. Oui, bien que ce ne soit pas la source d'information de la plus haute qualité, je pense qu'elle est tout à fait appropriée pour une étude superficielle du sujet ou des connaissances rafraîchissantes et est bonne car dans tout article, il existe de nombreux liens vers d'autres articles dans un domaine spécifique. Dans tous les cas, je fournis des liens vers d'autres articles et livres, afin que chacun puisse choisir lui-même la source d'information appropriée.

Théorie des tests


Je commencerai peut-être par le plus évident, mais pas le plus clair: certains chefs d’équipe peuvent vous guider dans tous les termes et les concepts lors de l’entretien, certains ne vous demanderont rien du tout.

Qu'attend-on de tout candidat


Connaissance des termes de base, des techniques de conception de tests, capacité à rédiger un rapport de bogue de qualité.

Ce qui suggère que le candidat connaît bien le sujet


Formellement, ce sont des certificats ISTQB.

Que lire sur le sujet


Il y a un bon article sur Habré avec toutes les informations nécessaires. Si vous souhaitez comprendre la théorie des tests plus en détail, vous pouvez lire les documents ISTQB .

coquille


Selon le système d'exploitation, vous devez connaître soit bash (sh, zsh, etc., mais il est peu probable que les nuances jouent un rôle important), ou CMD et PowerShell.

Qu'attend-on de tout candidat


Connaissance des commandes de base.

Ce qui suggère que le candidat connaît bien le sujet


Le candidat connaît de nombreuses commandes, diverses options pour celles-ci, leurs avantages et inconvénients, diverses façons de les utiliser, ainsi que des outils de débogage de problèmes, par exemple, strace , tcpdump , gdb et autres.

Que lire sur le sujet


Vous pouvez lire sur les principales commandes sous Linux dans l' un de mes articles précédents , et il y a aussi un référentiel très cool avec un tas d'exemples sur GitHub . D'après les livres, je conseillerais «UNIX Operating System» de Robachevsky, Nemnyugin et Stesik - ce n'est pas seulement sur les équipes, mais sur le système dans son ensemble.
Vous pouvez lire sur les commandes CMD ici , mais PowerShell a une bonne documentation .

HTTP (ou les protocoles spécifiés dans la description de travail)


Très souvent, HTTP est choisi comme protocole principal pour l'architecture client-serveur, donc ils posent souvent des questions sur ce protocole. Cependant, vous devrez peut-être connaître IMAP, POP3, SMTP (si vous testerez le courrier), Protobuf ou MessagePack ou d'autres protocoles. 

Qu'attend-on de tout candidat


Tout dépend de la prévalence du protocole. Il est peu probable qu'ils vous donnent un vidage binaire du trafic et demandent de le désérialiser sur un morceau de papier de Protobuf, mais si nous parlons de HTTP, alors vous devez le connaître à un bon niveau: la structure de la demande et de la réponse, les en-têtes principaux, les méthodes, les codes de réponse, HTTPS.

Ce qui suggère que le candidat connaît bien le sujet


Le candidat peut répondre aux questions sur la mise en cache, la compression des données, les cookies et l'utilisation de divers en-têtes dans HTTP. Pour les autres protocoles, tout est plus subjectif.

Que lire sur le sujet


À propos de HTTP, toutes les informations nécessaires sont sur Wikipédia . Pour les autres protocoles, je vous conseille de lire leur documentation et leurs spécifications. N'oubliez pas non plus le HTTPS . Bien sûr, vous devriez toujours avoir à portée de main des liens vers RFC 2616 et RFC 7540 (mais il existe d' autres spécifications ).

Protocoles réseau de couche inférieure


De nombreux candidats n'ont aucune idée de ce qui est sous HTTP. Je crois que cela ne les caractérise pas très bien, car le testeur doit avoir un esprit interrogateur et une curiosité modérée, j'ai donc certainement besoin de connaître en termes généraux le modèle de réseau OSI.

Qu'attend-on de tout candidat


Le candidat doit savoir qu'il existe des protocoles TCP, UDP et IP et comprendre leur essence.

Ce qui suggère que le candidat connaît bien le sujet


Comprenant le mécanisme de fonctionnement du protocole TCP (prise de contact à trois, certains champs de l'en-tête, drapeaux, fenêtre coulissante), le candidat peut nommer les inconvénients et avantages de TCP et UDP, leurs domaines d'application, la connaissance générale de l'IP. Ce sera cool si le candidat parle en bref d'autres protocoles (par exemple, ARP, ICMP, ICMPv6).

Que lire sur le sujet


Les connaissances de base peuvent être obtenues à partir d'articles de Wikipedia: OSI , TCP , UDP , IP , IPv6 , ICMP , ARP , modèle de réseau ICMPv6 . Si vous voulez vous plonger dans ce sujet, vous pouvez lire «Réseaux informatiques» de Tanenbaum.

Base de données


Qu'attend-on de tout candidat


Requêtes SQL de base (JOIN préféré de tous).

Ce qui suggère que le candidat connaît bien le sujet


Connaissance générale des différents SGBD, réplication, partitionnement, structure interne d'un SGBD, connaissance générale des bases de données non relationnelles.

Que lire sur le sujet


De manière générale, les bases de données se trouvent dans la documentation d'un SGBD spécifique. Si vous souhaitez traiter en détail les bases de données, je recommande les chapitres correspondants des «Applications hautement chargées » de Kleppman.

OOP


Qu'attend-on de tout candidat


Connaissance des principes de base de la POO.

Ce qui suggère que le candidat connaît bien le sujet


Ce sera cool si le candidat connaît certains modèles.

Que lire sur le sujet


Vous pouvez lire sur les principes, par exemple ici , sur les modèles - ici . Il y a aussi un livre sympa «Techniques de programmation orientée objet. Design Patterns "gang de quatre".

Systèmes d'exploitation


Qu'attend-on de tout candidat


Pour la plupart des postes vacants des testeurs, la connaissance des nuances des systèmes d'exploitation n'est pas pertinente.

Ce qui suggère que le candidat connaît bien le sujet


Ce sera cool si le candidat connaît la gestion de la mémoire, le noyau et la pile, la création de nouveaux processus et leur délestage, les systèmes de fichiers et plus encore.

Que lire sur le sujet


Brièvement, vous pouvez lire dans le livre déjà mentionné "UNIX Operating System" par Robachevsky, Nemnyugin et Stesik. Si le sujet vous intéresse, vous pouvez vous y plonger en utilisant, par exemple, les systèmes d'exploitation modernes de Tanenbaum. En général, vous pouvez vous familiariser avec le sujet en utilisant Wikipédia: il y a des articles sur le noyau Linux , la mémoire virtuelle , le changement de contexte et autres.

L'architecture des ordinateurs


Qu'attend-on de tout candidat


Pour la plupart des postes vacants des testeurs, la connaissance des nuances des processeurs, de la mémoire et des périphériques n'est pas pertinente.

Ce qui suggère que le candidat connaît bien le sujet


Ce sera formidable si le candidat connaît en termes généraux le processeur, les registres, les caches, la mémoire et le disque, etc.

Que lire sur le sujet


Vous pouvez vous familiariser superficiellement avec le matériel en utilisant Wikipedia: CPU , mode processeur , microarchitecture (il existe de nombreux liens vers d'autres articles connexes dans cet article), cache , ALU , pipeline , prédicteur de branche , superscalarité , etc. Ce sujet peut être étudié de manière plus globale et plus approfondie, par exemple en utilisant le livre « Computer Architecture» de Tanenbaum.

Algorithmes et structures de données


Très probablement, ils ne poseront pas de questions sur les algorithmes et les structures de données (surtout si le poste n'est pas au niveau stagiaire ou junior), mais vous devez toujours connaître certaines choses courantes. Personnellement, lors d'une interview, on ne m'a questionné qu'une seule fois sur le tas binaire; je ne suis moi-même pas non plus fan de poser des questions aux candidats à ce sujet. Par conséquent, je n'introduirai aucun critère et ne joindrai qu'un article avec de bonnes images , vous pouvez les imprimer et les mettre en évidence. Si vous voulez vous plonger dans les algorithmes et les structures de données avec votre tête, n'hésitez pas à commencer à lire «Algorithmes. Guide de développement » Skien ou « Algorithmes. Construction et analyse » Cormen.

Autre


  1. Beaucoup où Docker est utilisé .
  2. (« »).
  3. REST SOAP.
  4. JSON XML.
  5. Protocol Buffers, MessagePack BSON.
  6. TLS.
  7. Git ( VCS).
  8. Nginx Apache.
  9. .
  10. TeamCity Jenkins ( CI-).



, google.com Enter?


Une tâche classique avec laquelle vous pouvez vérifier à quel point un candidat comprend les technologies Web en général. Il y a une analyse détaillée de cette tâche sur Habré, mais je ne recommande pas de lire des nuances comme "une petite quantité de courant est envoyée à travers le schéma de câblage du clavier."

Test d'un formulaire avec un bouton


Oui, cette tâche est souvent posée lors de l'entretien avec les testeurs backend. La tâche est classique, donc ce sera cool si le candidat fantasme un peu et imagine ce qui pourrait être derrière ce bouton avec un bouton. Par exemple, nous pouvons supposer que les données quittent le formulaire pour un backend composé de plusieurs serveurs et d'une base de données, que le backend écrit des journaux et a une configuration - cela ajoutera immédiatement de nombreux cas de test d'un niveau plus profond que «entrez une valeur trop longue dans le champ de saisie» . Par exemple, vous pouvez utiliser tcpdump pour voir si le trafic va exactement vers tous les serveurs principaux; vous pouvez essayer d'envoyer une injection SQL ou un JSON cassé (naturellement, si tout à coup le JSON est du tout dans le contexte de la tâche); vous pouvez vérifier ce qui se passe si les journaux occupent tout l'espace libre sur le disque; vous pouvez vérifier le système lorsqueun backend sécurisé , l'exactitude de l'ajout de données à la base de données, etc. Ainsi, le candidat montrera ses larges horizons, ce qui lui profitera sans aucun doute.

Test de service


Une variante de la tâche précédente: par exemple, il existe un service qui écoute sur le port et reçoit JSON en entrée, répond dans le même format. Tout est similaire, mais il n'y a pas d'étain, vous n'avez donc pas besoin d'en avoir peur. Nous nous connectons au port en utilisant telnet , puis tout est identique.

Test du point de terminaison de l'API REST


Et encore une fois, tout est le même, uniquement avec HTTP (le plus probable). Ici, vous pouvez démontrer la connaissance du protocole HTTP: par exemple, vérifiez le fonctionnement du service s'il y a plusieurs en-têtes dans la demande.

Bien sûr, vous ne pouvez pas compiler un manuel de formation universel pour préparer un testeur backend à partir de zéro: tout dépend des spécificités de l'entreprise, des spécificités du département et du chef d'équipe. Et la technologie ne s'arrête pas: jusqu'à récemment, Docker n'était pas activement utilisé, et maintenant l'expérience avec elle peut être un gros plus. Cependant, j'ai essayé de rassembler les choses de base en un seul endroit, et si cela aide à préparer et à trouver du travail pour au moins une personne, j'ai écrit cet article pour une bonne raison.

PS Je recommande également de lire l’article de mon collègue «L’image d’un testeur moderne. Ce que vous devez savoir et savoir », il décrit diverses directions de développement pour les testeurs.

All Articles