sdet interview questions
Lisez ce guide complet de l'ingénieur en développement logiciel dans les entretiens de test pour connaître le format et comment répondre aux questions d'entrevue SDET posées lors des différents cycles:
Dans ce didacticiel, nous en apprendrons davantage sur certaines questions d'entretien fréquemment posées pour les rôles SDET. Nous verrons également, en général, le schéma commun des entretiens et partagerons quelques conseils pour exceller dans les entretiens.
Nous utiliserons le langage Java pour les problèmes de codage de ce didacticiel, cependant, la plupart des didacticiels SDET sont indépendants du langage et les intervieweurs sont généralement flexibles autour du langage que le candidat choisit d'utiliser.
Ce que vous apprendrez:
Guide de préparation aux entretiens SDET
Les entretiens SDET, dans la plupart des principales sociétés de produits, sont assez similaires à la façon dont les entretiens sont menés pour les rôles de développement. En effet, les SDET doivent également connaître et comprendre globalement presque tout ce que le développeur sait.
Ce qui diffère, ce sont les critères sur lesquels l'enquêté SDET est jugé. Les enquêteurs pour ce rôle recherchent des compétences de pensée critique, ainsi que la question de savoir si la personne interrogée a une expérience pratique du codage et a le sens de la qualité et du détail.
Voici quelques points sur lesquels une personne se préparant à un entretien SDET devrait se concentrer en grande partie:
quels programmes peuvent ouvrir un fichier dwg
- Étant donné que, la plupart du temps, ces entretiens sont indépendants de la technologie / de la langue, les candidats doivent donc être prêts à apprendre de nouvelles technologies (et à tirer parti des compétences existantes) en cas de besoin.
- Doit avoir de bonnes compétences en communication et en équipe, car les rôles SDET nécessitent de nos jours une communication et une collaboration à différents niveaux avec plusieurs parties prenantes.
- Doit avoir une compréhension de base des différents concepts de conception de système, de l'évolutivité, de la concurrence, des exigences non fonctionnelles, etc.
Dans les sections ci-dessous, nous essaierons de comprendre le format général de l'entrevue avec quelques exemples de questions.
Ingénieur en développement logiciel en entretien de test
La plupart des entreprises ont leur format préféré pour interroger les candidats pour un rôle SDET, car parfois, le rôle est très spécifique pour une équipe et la personne devrait être évaluée comme étant parfaitement adaptée à l'équipe pour laquelle la personne est embauchée.
Mais, le thème des entretiens s'articule généralement autour des points ci-dessous:
- Discussion téléphonique: Conversation avec le manager et / ou les membres de l'équipe qui est généralement une ronde de sélection.
- Tour écrit: Avec des questions spécifiques au boîtier de test / test.
- Cycle de compétence de codage: Des questions de codage simples (indépendantes du langage) et le candidat est invité à écrire du code au niveau de la production.
- Compréhension des concepts de base du développement: Comme les concepts OOPS, les principes SOLID, etc.
- Conception et développement du cadre d'automatisation des tests
- Langages de script: Sélénium, Python, Javascript, etc.
- Discussion et négociations Culture Fit / RH
Questions et réponses d'entrevue SDET
Dans cette section, nous discuterons de quelques exemples de questions ainsi que de réponses détaillées, pour différentes catégories qui sont posées par la plupart des entreprises de produits qui embauchent pour des rôles SDET.
Compétence en codage
Dans ce tour, des problèmes de codage simples sont donnés pour écrire dans la langue de votre choix. Ici, l'intervieweur veut évaluer la maîtrise des constructions de codage ainsi que gérer des choses comme les scénarios de bord et les vérifications nulles, etc.
Parfois, les enquêteurs peuvent également demander à rédiger des tests unitaires pour le programme écrit.
Voyons quelques exemples de problèmes.
Q # 1) Ecrire un programme pour échanger 2 nombres sans utiliser la 3e variable (temporaire)?
Répondre :
Programme pour échanger deux numéros:
public class SwapNos { public static void main(String() args) { System.out.println('Calling swap function with inputs 2 & 3'); swap(2,3); System.out.println('Calling swap function with inputs -3 & 5'); swap(-3,5); } private static void swap(int x, int y) { System.out.println('values before swap:' + x + ' and ' + y); // swap logic x = x + y; y = x - y; x = x - y; System.out.println('values after swap:' + x + ' and ' + y); } }
Voici la sortie de l'extrait de code ci-dessus:
Dans l'extrait de code ci-dessus, il est important de noter que l'intervieweur a spécifiquement demandé d'échanger 2 nos sans utiliser une troisième variable temporaire. De plus, il est important qu'avant de soumettre la solution, il soit toujours recommandé de passer en revue (ou de passer à sec) le code pour au moins 2-3 entrées. Essayons des valeurs positives et négatives.
Valeurs positives: X = 2, Y = 3
// swap logic - x=2, y=3 x = x + y; => x=5 y = x - y; => y=2 x = x - y; => x=3 x & y swapped (x=3, y=2)
Valeurs négatives: X = -3, Y = 5
// swap logic - x=-3, y=5 x = x + y; => x=2 y = x - y; => y=-3 x = x - y; => x=5 x & y swapped (x=5 & y=-3)
Q # 2) Ecrire un programme pour inverser un nombre?
Répondre: Maintenant, l'énoncé du problème peut sembler intimidant au départ, mais il est toujours sage de demander des clarifications à l'intervieweur (mais pas beaucoup de détails). Les enquêteurs peuvent choisir de fournir des indices sur le problème, mais si le candidat pose beaucoup de questions, cela indique également que le candidat ne donne pas assez de temps pour bien comprendre le problème.
Ici, le problème attend d'un candidat qu'il fasse également des hypothèses - par exemple, le nombre peut être un entier. Si l'entrée est 345, la sortie doit être 543 (ce qui est l'inverse de 345)
Voyons l'extrait de code de cette solution:
public class ReverseNumber { public static void main(String() args) { int num = 10025; System.out.println('Input - ' + num + ' Output:' + reverseNo(num)); } public static int reverseNo(int number) { int reversed = 0; while(number != 0) { int digit = number % 10; reversed = reversed * 10 + digit; number /= 10; } return reversed; } }
Sortie pour ce programme contre entrée : 10025 - Attendu serait : 52001
Q # 3) Ecrire un programme pour calculer la factorielle d'un nombre?
Répondre: Factorial est l'une des questions les plus fréquemment posées dans presque tous les entretiens (y compris les entretiens avec les développeurs)
Pour les entretiens avec les développeurs, l'accent est davantage mis sur les concepts de programmation tels que la programmation dynamique, la récursivité, etc., tandis que du point de vue de l'ingénieur en développement logiciel dans la perspective Test, il est important de gérer les scénarios de pointe tels que les valeurs maximales, les valeurs minimales, les valeurs négatives, etc. et l'approche / l'efficacité sont importants mais deviennent secondaires.
Voyons un programme pour factorielle utilisant la récursivité et la boucle for avec la gestion des nombres négatifs et renvoyant une valeur fixe de disons -9999 pour les nombres négatifs qui devraient être traités dans le programme appelant la fonction factorielle.
Veuillez vous référer à l'extrait de code ci-dessous:
public class Factorial { public static void main(String() args) { System.out.println('Factorial of 5 using loop is:' + factorialWithLoop(5)); System.out.println('Factorial of 10 using recursion is:' + factorialWithRecursion(10)); System.out.println('Factorial of negative number -100 is:' + factorialWithLoop(-100)); } public static long factorialWithLoop(int n) { if(n <0) { System.out.println('Negative nos can't have factorial'); return -9999; } long fact = 1; for (int i = 2; i <= n; i++) { fact = fact * i; } return fact; } public static long factorialWithRecursion(int n) { if(n < 0) { System.out.println('Negative nos can't have factorial'); return -9999; } if (n <= 2) { return n; } return n * factorialWithRecursion(n - 1); } }
Voyons la sortie pour - factorielle utilisant la boucle, factorielle utilisant la récursivité et factorielle d'un nombre négatif (qui renverrait une valeur définie par défaut de -9999)
Q # 4) Ecrire un programme pour vérifier si une chaîne donnée a des parenthèses équilibrées?
Répondre:
Approcher - Il s'agit d'un problème légèrement complexe, dans lequel l'intervieweur cherche un peu plus que la connaissance de simples constructions de codage. Ici, on s'attend à penser et à utiliser la structure de données apt pour le problème en question.
Beaucoup d'entre vous pourraient se sentir intimidés par ces types de problèmes, car certains d'entre vous ne les ont peut-être pas entendus et, par conséquent, même s'ils sont simples, ils peuvent sembler complexes.
Mais généralement pour de tels problèmes / questions: par exemple, dans la question actuelle, si vous ne savez pas ce que sont les parenthèses équilibrées, vous pouvez très bien demander à l’enquêteur et ensuite travailler à la solution au lieu de frapper un angle mort.
Voyons comment aborder une solution: Après avoir compris ce que sont les parenthèses équilibrées, vous pouvez penser à utiliser la bonne structure de données, puis commencer à écrire des algorithmes (étapes) avant de commencer à coder la solution. Souvent, les algorithmes eux-mêmes résolvent de nombreux scénarios de pointe et donnent beaucoup de clarté sur l'apparence de la solution.
Regardons la solution:
Les parenthèses équilibrées permettent de vérifier qu'une chaîne donnée contient des parenthèses (ou des crochets), doit avoir le même nombre d'ouverture et de fermeture et bien structurée en position. Pour le contexte de ce problème, nous utiliserons des parenthèses équilibrées comme - «()», «()», «{}» - c'est-à-dire qu'une chaîne donnée peut avoir n'importe quelle combinaison de ces crochets.
Veuillez noter qu'avant de tenter de résoudre le problème, il est bon de préciser si la chaîne ne contiendra que les caractères entre crochets ou des nombres, etc. (car cela pourrait changer un peu la logique)
Exemple: Une chaîne donnée - '{() {} ()} - est une chaîne équilibrée car elle est structurée et a un nombre égal de parenthèses fermantes et ouvrantes, mais une chaîne -' {(}) {} () '- cette chaîne - même si a un nombre égal de parenthèses ouvrantes et fermantes, ce n'est toujours pas équilibré car vous pouvez voir que sans fermeture '(' nous avons fermé '}' (c'est-à-dire que tous les crochets intérieurs doivent être fermés avant de fermer un crochet extérieur)
Nous utiliserons une structure de données de pile pour résoudre ce problème. Si vous voulez en savoir plus sur les bases de la pile, veuillez vous référer ici
Une pile est un LIFO (type de structure de données Last In First Out), pensez-y comme une pile / pile d'assiettes lors d'un mariage - vous ramasserez l'assiette la plus haute chaque fois que vous l'utiliserez.
Algorithme:
#1) Déclarez une pile de caractères (qui contiendrait les caractères de la chaîne et, selon une certaine logique, pousser et faire sortir les caractères).
# 2) Parcourez la chaîne d'entrée, et à chaque fois
- Il y a un caractère entre crochets ouvrant - par exemple '(', {'ou' ('- placez le caractère sur Pile.
- Il y a un caractère de fermeture - c'est-à-dire ')', '}', ')' - pop un élément de Stack et vérifier s'il correspond à l'opposé du caractère de fermeture - c'est-à-dire si le caractère est '}' alors sur Stack pop vous devriez vous attendre ' {'
- Si l'élément popped ne correspond pas aux parenthèses fermantes, la chaîne n'est pas équilibrée et vous pouvez renvoyer des résultats.
- Sinon, continuez avec l'approche push et pop de la pile (passez à l'étape 2).
- Si la chaîne est complètement traversée et que la taille de la pile est égale à zéro, alors nous pouvons dire / inférer que la chaîne donnée est une chaîne de parenthèses équilibrée.
À ce stade, vous voudrez peut-être également discuter de l'approche de solution que vous avez en tant qu'algorithme et vous assurer que l'intervieweur est d'accord avec l'approche.
Code:
import java.util.Stack; public class BalancedParanthesis { public static void main(String() args) { final String input1 = '{()}'; System.out.println('Checking balanced paranthesis for input:' + input1); if (isBalanced(input1)) { System.out.println('Given String is balanced'); } else { System.out.println('Given String is not balanced'); } } /** * function to check if a string has balanced parentheses or not * @param input_string the input string * @return if the string has balanced parentheses or not */ private static boolean isBalanced(String input_string) { Stack stack = new Stack(); for (int i = 0; i La sortie de l'extrait de code ci-dessus:

Comme nous l'avons fait pour nos problèmes de codage précédents, il est toujours bon d'exécuter le code avec au moins 1 à 2 entrées valides et 1 à 2 entrées non valides et de s'assurer que tous les cas sont traités de manière appropriée.
REMARQUE: Il est toujours bon de réfléchir à la solution à haute voix (et pas seulement dans l’esprit) - et étonnamment, c’est un trait important que les enquêteurs recherchent. De nombreux enquêteurs pourraient simplement supprimer l'algorithme et passer à l'énoncé du problème suivant.
Dans la solution de codage ci-dessus, pour l'entretien avec le développeur, l'intervieweur peut demander à le résoudre en utilisant des tableaux au lieu de directement empiler (c'est-à-dire en utilisant un tableau comme une pile), mais en général, il s'agit plus d'être conceptuellement clair et capable de gérer tous les entrées invalides.
Liés au cadre d'automatisation des tests
Cette section de l'entrevue est plus spécifique autour des tests et des responsabilités SDET. Attendez-vous à la conception du cadre d'automatisation et aux questions liées au développement, aux avantages et aux inconvénients de l'utilisation de différentes approches, etc.
Voyons quelques exemples de questions et solutions pour la même chose.
Q # 5) Expliquer et concevoir les composants du cadre d'automatisation d'une application Web?
Répondre: Cette question est un peu subjective, et l'intervieweur a l'intention d'évaluer ce que le candidat sait de la conception et du développement du cadre. La réponse à cette question aide l'intervieweur à comprendre si le candidat peut créer ou créer des cadres personnalisés à partir de zéro.
Voyons quelques points qui vous aideraient à structurer la solution à cette question:
- Vous pouvez parler de différents types de frameworks tels que - Framework hybride, basé sur les données.
- Modèle d'objet de page pour stocker les détails de divers éléments sur différentes pages / modules de l'application Web.
- Modules communs tels que les fonctions d'assistance, les utilitaires, les enregistreurs, etc.
- Des modules de reporting tels que la génération de rapports d'exécution de test, l'intégration de rapports avec le courrier électronique et la planification de l'exécution de tests, etc.
Lecture recommandée => Cadres d'automatisation de test les plus populaires
Q # 6) Expliquez les stratégies de test pour une application mobile?
Répondre: Ces questions sont généralement posées en fonction du rôle. Si le rôle est principalement de travailler sur des applications mobiles, la question est plus pertinente. Vous pouvez parler de votre expérience si vous avez prévu des tests mobiles dans le cadre de vos rôles actuels ou précédents.
Certains conseils pour structurer la réponse à cette question pourraient être,
- Test sur les appareils vs émulateurs.
- Identifier et stocker des objets / éléments sur différents écrans - Exemple: Modèle d'objet de page.
- Test de charge d'une application mobile.
- Vous pouvez parler de différents types d'applications mobiles telles que les applications natives, les applications hybrides et discuter des stratégies / approches que vous utiliseriez pour les tester.
Lecture recommandée => Tutoriels de test d'application mobile
Q # 7) Concevoir un cadre d'automatisation pour tester les API REST?
Répondre: C'est encore une question subjective et vous pouvez poser des questions de clarification si l'intervieweur souhaite que vous développiez un cadre pour tester le comportement fonctionnel de l'API ou des exigences non fonctionnelles telles que les tests de charge / performance.
Vous pouvez commencer votre réponse en couvrant les points ci-dessous:
- Composants du cadre d'automatisation d'API comme la configuration locale, la configuration fictive de l'API ou les tests d'API hébergés.
- Outils utilisés pour l'automatisation des API. Il existe différents outils prêts à l'emploi pour valider les aspects fonctionnels d'une API REST. Certains de ces outils sont Postman, Rest Assured, etc. Pour plus de détails sur les différents outils, vous pouvez vous référer à notre article ici .
- Automatisation non fonctionnelle des API.
- Exécution programmée de tests d'automatisation.
- Intégration de tests d'automatisation pour les API.
Q # 8) Questions spécifiques au cadre.
Répondre: Parfois, selon le profil interrogé, il peut être nécessaire qu'un candidat maîtrise un certain cadre - ex. Sélénium, JMeter, etc.
Lecture recommandée => Facteur , Mockito , Specflow , Sélénium , JMeter
Tests liés
Bien que rarement, mais en fonction du profil, il peut y avoir des questions sur les pratiques générales de test, les termes et les technologies - comme la gravité des bogues, la priorité, la planification des tests, le casing de test, etc. Un SDET doit connaître tous les concepts de test manuel et doit être familier avec les terminologies importantes.
Dans cette section, vous pouvez vous attendre à des questions comme celles-ci:
Q # 9) Quels sont les différents composants d'un plan de test?
Répondre: On leur demande généralement de valider les concepts et l'état d'esprit de base des tests. Ces termes et documents sont quelque chose que chaque QA manuel ainsi que les SDET d'automatisation devraient connaître.
Vous pouvez discuter de divers composants du plan de test ici comme,
- Critères d'entrée et de sortie
- Portée: Discutez des fonctionnalités de test qui entrent dans la portée et de ce qui serait automatisé - S'agira-t-il uniquement de fonctionnalités fonctionnelles ou d'exigences non fonctionnelles telles que l'évolutivité, les performances, etc.
- Délais
- Outils à utiliser
- Allocation des ressources, etc.
Lecture recommandée => Comment rédiger un bon plan de test
Q # 10) Qu'est-ce qui définit et décide de la priorité et de la gravité d'un bogue?
Répondre: La priorité et la gravité des défauts peuvent être facilement expliquées à l'aide d'exemples. Supposons qu'une fonctionnalité telle que l'inscription est interrompue et empêche les utilisateurs d'accéder à l'application. Il s'agit alors d'un problème hautement prioritaire et de grande gravité. De même, il peut y avoir des exemples de défauts de faible gravité / haute priorité et diverses autres combinaisons.
En général,
- Priorité signifie l'importance de la question.
- Gravité signifie l'impact que le problème a sur le client ou l'utilisateur de l'application.
Lecture recommandée => Priorité et gravité des défauts
Q # 11) Qu'est-ce que le partitionnement d'équivalence? Illustrez avec un exemple.
Répondre: Le partitionnement d'équivalence est une technique principalement utilisée pour les tests de boîte noire, pour tester diverses combinaisons d'entrées par rapport à un champ donné.
Par exemple, si vous testez une application de trading et que vous souhaitez écrire tous les scénarios de test pour le champ «Quantité» - quelles seraient les différentes entrées que vous testeriez pour ce champ?
Étant donné l'exigence fonctionnelle, la quantité doit être une valeur entière positive comprise entre 1 et 100 000. Ainsi, pour tester diverses entrées (valides et non valides), vous pouvez avoir des tests pour 1 entrée de chacune de ces catégories.
- Valeurs valides: Entre 1 et 100000 -> tester toute valeur valide x telle que x> 1 et x<100000.
- Valeurs limites: Testez les valeurs limites autorisées, c'est-à-dire 1 et 100000.
- Valeurs non valides: Valeurs qui se trouvent en dehors de la plage autorisée - c'est-à-dire testez une de ces valeurs pour x, telle que x 100000.
Lecture recommandée => Stratégie de partitionnement d'équivalence
Liés à la conception du système
Les questions de conception de système sont généralement plus adaptées aux entretiens avec les développeurs où un développeur est jugé sur une large compréhension de différents concepts généraux - comme l'évolutivité, la disponibilité, la tolérance aux pannes, la sélection de la base de données, le filetage, etc. En un mot, vous devrez utiliser l'intégralité de votre expérience et connaissance des systèmes pour répondre à ces questions.
Mais vous pensez peut-être qu'un système qui nécessite des années d'expérience et des centaines de développeurs pour coder, comment une personne pourrait-elle répondre à la question en 45 minutes environ?
La réponse est: Ici, l’attente est de juger de la compréhension du candidat et du large éventail de connaissances qu’il peut appliquer tout en résolvant des problèmes complexes.
De nos jours, ces questions commencent également à être posées dans les entretiens du SDET. Ici, l'attente reste la même que celle de l'entretien avec le développeur, mais avec des critères de jugement assouplis et c'est principalement une ronde de relance de la barre où, en fonction de la réponse du candidat, un candidat peut être considéré pour le niveau suivant ou déplacé à un niveau inférieur.
En général, pour les questions d'entrevue de conception de système, le candidat doit être familiarisé avec les concepts ci-dessous
- Bases des systèmes d'exploitation: Pagination, systèmes de fichiers, mémoire virtuelle et mémoire physique, etc.
- Concepts de mise en réseau: Communication HTTP, pile TCP / IP, topologies de réseau.
- Concepts d'évolutivité: Mise à l'échelle horizontale et verticale.
- Concepts de concurrence / threads
- Types de bases de données: SQL / Pas de bases de données SQL, quand utiliser quel type de base de données, avantages et inconvénients des différents types de bases de données.
- Techniques de hachage
- Compréhension de base de CASQUETTE théorème, partitionnement, partitionnement, etc.
Voyons quelques exemples de questions
Q # 12) Concevez un système de raccourcissement d'URL comme un petite URL ?
Répondre: De nombreux candidats ne connaissent peut-être même pas les systèmes de raccourcissement d'URL en général. Dans ce cas, vous pouvez interroger l’enquêteur sur l’énoncé du problème au lieu de plonger sans comprendre.
Avant même de répondre à ces questions, les candidats doivent structurer la solution et écrire des puces, puis commencer à discuter de la solution avec l'intervieweur.
Discutons de la solution en bref
a) Clarifier les exigences fonctionnelles et non fonctionnelles
Exigences fonctionnelles: L'exigence fonctionnelle est simplement du point de vue du client, c'est un système qui est alimenté par une grande URL (longue longueur), et le résultat doit être une URL raccourcie.
Lorsque l'URL raccourcie est accédée, elle doit rediriger l'utilisateur vers l'URL d'origine. Par exemple - essayez de raccourcir une URL réelle sur la page Web https://tinyurl.com/, alimentez une URL d'entrée comme www.softwaretestinghelp.com et vous devriez obtenir une petite URL comme https://tinyurl.com/shclcqa
Prérogatives non fonctionnelles: Le système doit être performant en termes de redirection avec une latence de l'ordre de la milliseconde (car c'est un saut supplémentaire pour un utilisateur accédant à l'URL d'origine).
- Les URL raccourcies doivent avoir un délai d'expiration configurable.
- Les URL raccourcies ne doivent pas être prévisibles.
b) Estimation de la capacité / du trafic
Ceci est très important du point de vue de toutes les questions de conception du système. L'estimation de la capacité détermine essentiellement la charge attendue que le système va recevoir. Il est toujours bon de commencer par une hypothèse et de discuter avec l’intervieweur. Ceci est également important du point de vue de la planification du dimensionnement de la base de données, que le système soit lourd en lecture ou en écriture, etc.
Faisons quelques numéros de capacité pour l'exemple de raccourcisseur d'URL.
Supposons qu'il y ait 100k nouvelles demandes de raccourcissement d'URL par jour (avec un taux de lecture-écriture de 100: 1 - c'est-à-dire que pour chaque URL raccourcie, nous aurons 100 demandes de lecture par rapport à l'URL raccourcie)
Donc nous aurons,
100k write requests/day => 100000/(24x60x60) => 1.15 request/second 10000k read requests/day => 10000000/(24x60x60) => 1157 requests/second
c) Considérations relatives au stockage et à la mémoire
Après les chiffres de capacité, nous pouvons extrapoler ces chiffres pour obtenir,
- La capacité de stockage qui serait nécessaire pour accueillir la charge attendue, Par exemple, nous pouvons envisager de concevoir une solution de stockage pour prendre en charge les demandes jusqu'à 1 an.
Exemple: Si chaque URL raccourcie consomme 50 octets, le total des données / stockage dont nous aurions besoin sur un an serait:
=> total write requests/day x 365 x 50 / (1024x1024) => 1740 MB
- Les considérations de mémoire sont importantes pour planifier le système du point de vue du lecteur. c'est-à-dire pour les systèmes à lecture intensive - comme celui que nous essayons de construire (car l'URL serait créée une fois mais accédée plusieurs fois).
Les systèmes lourds en lecture utilisent généralement la mise en cache pour devenir plus performants et éviter la lecture à partir du stockage permanent pour économiser sur les E / S de lecture.
Supposons que nous souhaitons stocker 60% de nos demandes de lecture dans le cache, donc sur l'année, nous aurions besoin de 60% du total des lectures sur un an x octets requis par chaque entrée
=> (60/100) x 100000 x 365 x (50/1024x1024) => 1045 MB ~ 1GB
Ainsi, selon nos chiffres de capacité, ce système nécessiterait environ 1 Go de mémoire physique
d) Estimations de la bande passante
Des estimations de bande passante sont nécessaires pour analyser la vitesse de lecture et d'écriture en octets qui serait requise pour l'exécution d'un système. Faisons des estimations par rapport aux chiffres de capacité que nous avons pris.
Exemple: Si chaque URL raccourcie consomme 50 octets, les vitesses totales de lecture et d'écriture dont nous aurions besoin seraient les suivantes:
WRITE - 1.15 x 50bytes = 57.5 bytes/s READS - 1157 x 50bytes = 57500 bytes/s => 57500 / 1024 => 56.15 Kb/s
e) Conception et algorithme du système
Il s'agit essentiellement de la principale logique métier ou algorithme qui serait utilisé pour répondre aux exigences fonctionnelles. Dans ce cas, nous souhaitons générer des URL raccourcies uniques pour une URL donnée.
Les différentes approches qui pourraient être utilisées pour générer des URL raccourcies sont:
Hashing: Nous pouvons penser à générer des URL raccourcies en créant un hachage de l'URL d'entrée et en attribuant la clé de hachage comme URL raccourcie.

Cette approche peut poser des problèmes lorsqu'il existe différents utilisateurs du service, et s'ils entrent la même URL, ils aboutiront à obtenir la même URL raccourcie.
Chaînes raccourcies pré-crééeset attribué à des URL lorsque le service est appelé: Une autre approche peut être de renvoyer une chaîne raccourcie prédéfinie à partir du pool de chaînes déjà générées.

API de service: Nous pouvons considérer le système de raccourcissement d'URL comme un ensemble d'API basées sur REST qui ont les points de terminaison suivants:
- createUrl (String Url, DateTime expiryTime): Ce point de terminaison crée et renvoie une URL raccourcie avec une durée d'expiration définie comme spécifié dans l'entrée.
- retrieveUrl (chaîne shortenedUrl): Ce point de terminaison récupère l'URL à rediriger vers l'URL raccourcie donnée.
f) Mise à l'échelle et concurrence
La mise à l'échelle est une considération importante du point de vue des exigences non fonctionnelles.
Il traite, comment le système peut-il
- Balance sous charge: Le système doit pouvoir évoluer de manière gracieuse sous charge et ne pas simplement s'arrêter de fonctionner après un pic de charge inattendu.
Lecture recommandée => Techniques de mise à l'échelle
- À quel point le système peut-il être performant, par exemple: si le système est utilisé avec une capacité soutenue pendant une longue période, les performances du système se dégraderaient-elles ou resteraient-elles stables?
Il peut y avoir beaucoup de questions de conception de système différentes comme ci-dessous, mais de manière générale, toutes ces questions testeraient la compréhension plus large du candidat des différents concepts dont nous avons discuté dans la solution du système de raccourcissement d'URL.
Q # 13) Concevez une plateforme vidéo comme Youtube.
Répondre: Cette question peut également être abordée, de la même manière que nous avons discuté de la question TinyUrl ci-dessus (et cela s'applique à presque toutes les questions d'entrevue de conception de système). Le seul facteur de différenciation serait de regarder / détailler le système que vous souhaitez concevoir.
Donc, pour Youtube, nous savons tous que c'est une application de streaming vidéo et dispose de nombreuses fonctionnalités telles que permettre à un utilisateur de télécharger de nouvelles vidéos, de diffuser des webémissions en direct, etc. Ainsi, lors de la conception du système, vous devez appliquer les composants de conception système requis. Dans ce cas, nous pourrions avoir besoin d'ajouter des composants liés aux capacités de streaming vidéo.
Vous pouvez discuter de points comme,
- Espace de rangement: Quel type de base de données choisiriez-vous pour stocker le contenu vidéo, les profils utilisateur, les listes de lecture, etc.?
- Sécurité et authentification / autorisation
- Mise en cache: Puisqu'une plate-forme de streaming comme YouTube doit être performante, la mise en cache est un facteur important pour la conception d'un tel système.
- Concurrence: Combien d'utilisateurs peuvent diffuser des vidéos en parallèle?
- D'autres fonctionnalités de la plate-forme comme le service de recommandation vidéo qui recommande / suggère aux utilisateurs les prochaines vidéos qu'ils peuvent regarder, etc.
Q # 14) Concevoir un système efficace pour faire fonctionner 6 ascenseurs et s'assurer qu'une personne doit attendre un minimum de temps en attendant l'arrivée de l'ascenseur ?
Répondre: Ces types de questions de conception de système sont de plus bas niveau et s'attendraient à ce que le candidat réfléchisse d'abord au système d'ascenseur et énumère toutes les fonctions possibles qui doivent être prises en charge et conçoit / crée des classes et des relations / schémas de base de données comme solution.
Du point de vue SDET, l'enquêteur s'attendrait simplement aux principales classes que vous pensez que votre application ou système aurait et les fonctionnalités de base seraient gérées avec la solution suggérée.
Voyons les différentes fonctionnalités du système d’ascenseur qui seraient attendues
Vous pouvez poser des questions de clarification comme
- Combien d'étages y a t il?
- Combien d'ascenseurs y a-t-il?
- Tous les ascenseurs sont-ils des ascenseurs de service / passagers?
- Tous les ascenseurs sont-ils configurés pour être arrêtés à chaque étage?
Voici les différents cas d'utilisation applicables à un système d'ascenseur simple:

En termes de classes / objets de base de ce système, vous pouvez envisager d'avoir:
- Utilisateur: Traite toutes les propriétés d'un utilisateur et les actions qu'il peut entreprendre sur l'objet Ascenseur.
- Ascenseur: Ascenseur Propriétés spécifiques comme la hauteur, la largeur, le numéro_série_ascenseur.
- Porte d'ascenseur: Toutes les choses liées à la porte comme aucune porte, type de porte, automatique ou manuelle, etc.
- Elevator_Button_Control: Différents boutons / commandes disponibles dans l'ascenseur et différents états dans lesquels ces commandes peuvent être.
Une fois que vous avez terminé de concevoir les classes et leurs relations, vous pouvez parler de la configuration des schémas de base de données.
Un autre composant important du système d'ascenseur est le système de concours complet. Vous pouvez parler d'implémentation de files d'attente ou dans une configuration plus complexe de création de flux d'événements à l'aide d'Apache Kafka où les événements sont livrés aux systèmes respectifs pour être traités.
Le système de concours complet est un aspect important car plusieurs utilisateurs (à différents étages) utilisent l'ascenseur en même temps. Par conséquent, les demandes de l'utilisateur doivent être mises en file d'attente et traitées selon la logique configurée dans les contrôleurs d'ascenseur.
Q # 15) Concevez Instagram / Twitter / Facebook.
Répondre: Toutes ces plates-formes sont en quelque sorte liées puisqu'elles permettent aux utilisateurs d'être connectés d'une manière ou d'une autre et de partager des choses via différents types de médias - comme des messages / vidéos et des chats également.
Ainsi, pour ces types d'applications / plates-formes de médias sociaux, vous devez inclure les points ci-dessous tout en discutant de la conception de tels systèmes (en plus de ce que nous avons discuté pour la conception d'un système de raccourcissement d'URL):
- Estimation de la capacité: La plupart de ces systèmes seraient lourds en lecture, par conséquent une estimation de la capacité est nécessaire et nous permettrait de nous assurer que la configuration appropriée du serveur et de la base de données est assurée pour servir la charge requise.
- Schéma DB: Les principaux schémas de base de données importants qui devraient être abordés sont: les détails de l'utilisateur, les relations avec les utilisateurs, les schémas de message, les schémas de contenu.
- Serveurs d'hébergement vidéo et image: La plupart de ces applications ont des vidéos et des images partagées entre les utilisateurs. Par conséquent, les serveurs d'hébergement vidéo et d'image doivent être configurés selon les besoins.
- Sécurité: Toutes ces applications doivent garantir un haut niveau de sécurité grâce aux informations utilisateur / informations personnellement identifiables des utilisateurs qu'elles stockent. Toute tentative de piratage, SQL Injection ne devrait pas réussir sur ces plates-formes car cela pourrait coûter la perte de données de millions de clients.
Problèmes basés sur des scénarios
Les problèmes basés sur des scénarios sont généralement destinés aux personnes de haut niveau, où différents scénarios en temps réel sont donnés et le candidat est interrogé sur la façon dont il va gérer une telle situation.
Q # 16) Étant donné qu'un correctif critique doit être publié dès que possible - Quel type de stratégie de test auriez-vous?
Répondre: Maintenant, ici l'intervieweur veut essentiellement comprendre
- Comment et à quel type de stratégies de test pouvez-vous penser?
- Quelle couverture feriez-vous pour un correctif?
- Comment valideriez-vous le post-déploiement du correctif? etc.
Pour répondre à ces questions, vous pourriez utiliser des situations de la vie réelle si vous pouviez vous rapporter au problème. Vous devez également mentionner que sans tests appropriés, vous ne seriez pas disposé à publier un code en production.
Pour les correctifs critiques, vous devez toujours travailler en tandem avec le développeur et essayer de comprendre les domaines auxquels cela pourrait avoir un impact et préparer un environnement hors production pour répliquer le scénario et tester le correctif.
Il est également important ici de mentionner que vous continueriez à surveiller le correctif (à l'aide d'outils de surveillance, de tableaux de bord, de journaux, etc.) après le déploiement pour voir tout comportement anormal dans l'environnement de production et vous assurer qu'il n'y a pas d'impact négatif du correctif qui est Fini.
Il peut également y avoir d'autres questions qui visent principalement à comprendre le point de vue du candidat sur les tests d'automatisation, les délais de livraison, etc. (et ces questions peuvent varier d'une entreprise à l'autre ainsi que l'ancienneté du rôle. Généralement, ces questions sont posées au niveau senior / lead rôles)
Q # 17) Souhaitez-vous sacrifier des tests complets pour lancer un produit rapidement?
Répondre: Ces questions impliquent généralement que l'intervieweur comprenne vos pensées du point de vue du leadership et quelles sont les choses sur lesquelles vous feriez des compromis, et seriez-vous prêt à sortir un produit buggy au lieu de moins de temps.
Les réponses à ces questions doivent être étayées par les expériences réelles du candidat.
Par exemple, vous pourriez mentionner que dans le passé, vous deviez prendre un appel pour publier un correctif, mais il n'a pas pu être testé en raison de la non-disponibilité de l'environnement d'intégration. Vous l'avez donc publié de manière contrôlée - en le déployant à un pourcentage plus petit, puis en surveillant les journaux / événements, puis en initiant le déploiement complet, etc.
Q # 18) Comment créeriez-vous une stratégie d'automatisation pour un produit qui n'a aucun test d'automatisation?
Répondre: Ces types de questions sont ouvertes et sont généralement un bon endroit pour mener la discussion comme vous le souhaitez. Vous pouvez également mettre en valeur vos compétences, connaissances et domaines technologiques qui font votre force.
Par exemple, Pour répondre à ces types de questions, vous pouvez citer des exemples de stratégie d'automatisation que vous avez adoptée lors de la création d'un produit dans votre ancien rôle.
Par exemple, vous pouvez mentionner des points comme,
- Étant donné que le produit nécessitait de partir de l'automatisation à partir de zéro, vous avez eu suffisamment de temps pour réfléchir et concevoir un cadre d'automatisation approprié en choisissant un langage / une technologie que la plupart des gens avaient les connaissances nécessaires pour éviter d'introduire un nouvel outil et tirer parti des connaissances existantes.
- Vous avez commencé par automatiser les scénarios fonctionnels les plus basiques considérés comme P1 (sans lesquels aucune version ne pourrait passer).
- Vous avez également pensé à tester les performances et l'évolutivité du système via des outils de test automatisés tels que JMETER, LoadRunner, etc.
- Vous avez pensé à automatiser les aspects de sécurité de l'application comme indiqué dans le OWASP Normes de sécurité.
- Vous avez intégré les tests automatisés dans le pipeline de construction pour un retour rapide, etc.
Coupe d'équipe et coupe culturelle
Ce tour dépend généralement d'une entreprise à l'autre. Mais le besoin / nécessité pour ce cycle est de comprendre le candidat du point de vue de l'équipe et de la culture de l'organisation. Le but de ces questions est également de comprendre la personnalité du candidat et son approche du travail / des personnes, etc.
En règle générale, ce sont les responsables des ressources humaines et du recrutement qui effectuent cette ronde.
Les questions qui se posent généralement au cours de ce tour sont les suivantes:
Q # 19) Comment résolvez-vous les conflits dans votre rôle actuel?
Répondre: Une explication supplémentaire ici est la suivante: supposons que vous ayez un conflit avec votre patron ou les membres immédiats de l'équipe, quelles sont les mesures que vous prenez pour résoudre ces conflits?
Pour ce type de questions, justifiez autant que vous le pouvez avec des exemples réels qui pourraient s'être produits au cours de votre carrière dans des organisations actuelles ou antérieures.
Vous pouvez mentionner des choses comme:
- Vous aimez régler le plus rapidement possible les conflits résultant de raisons professionnelles (et ne souhaitez pas affecter vos relations personnelles en raison de celles-ci).
- Vous pouvez mentionner que vous essayez généralement de communiquer efficacement et de parler / discuter avec la personne individuellement pour résoudre les différences / problèmes.
- Vous pouvez mentionner que si les choses commencent à empirer, vous prendriez l'aide d'un cadre supérieur / de votre gestionnaire et obtiendriez ses contributions.
Vous trouverez ci-dessous d'autres exemples de questions sur l'adéquation de l'équipe / l'adaptation à la culture (la plupart d'entre elles doivent recevoir une réponse similaire à celle que nous avons évoquée pour la question ci-dessus. Parler de scénarios de la vie réelle est une clé ici car l'enquêteur peut le relier d'une meilleure manière. bien.
Q # 20) Quel genre d'équilibre travail-vie personnelle attendez-vous du nouveau poste pour lequel vous êtes considéré comme embauché?
Répondre: Étant donné que le responsable du recrutement est quelqu'un qui sait ce que le rôle exige, combien d'efforts supplémentaires peuvent parfois être nécessaires, de sorte qu'en général, l'intervieweur essaie de déterminer si vos attentes sont radicalement différentes de ce que le rôle attend.
Supposons que vous disiez que vous ne préférez pas assister à des réunions nocturnes et que le rôle s'attend à ce que vous ayez une collaboration majeure entre une équipe qui siège dans un fuseau horaire différent, alors l'intervieweur peut lancer une discussion indiquant que ce sont les attentes du rôle - Serez-vous en mesure de adapter? etc.
Encore une fois, il s’agit plutôt d’une conversation informelle, mais du point de vue de l’intervieweur, il souhaite comprendre vos attentes afin d’évaluer votre candidature au poste pour lequel l’interview est effectuée.
Q # 21) En dehors du travail, quels sont vos passe-temps?
Répondre: Ces questions sont purement subjectives et spécifiques à l'individu, et ces questions sont généralement utiles pour que le candidat se sente détendu et facile et initie des discussions informelles.
En général, les réponses à ces questions pourraient être comme - vous aimez lire un genre particulier, vous aimez la musique, vous avez reçu un prix pour une activité bénévole / philanthropique, etc. De plus, ces questions sont généralement posées dans le cycle RH (et moins susceptible d'être demandé par une personne technique).
Q # 22) Combien de temps êtes-vous prêt à consacrer à l'apprentissage de nouveaux outils et technologies de manière proactive?
Répondre: Ici, l'intervieweur évalue votre volonté d'apprendre de nouvelles choses si quelque chose d'inhabituel ou de nouveau vous est lancé. Cela permet également à l'enquêteur de savoir que vous êtes proactif? Êtes-vous prêt à investir dans vous-même et votre carrière? etc.
Donc, tout en répondant à de telles questions - soyez honnête et étayez vos réponses avec des exemples - Par exemple, Vous pourriez mentionner que vous vous êtes présenté pour une certification Java l'année dernière et que vous vous êtes préparé en dehors du travail en prenant quelques heures chaque semaine.
Conclusion
Dans cet article, nous avons discuté du processus d'entretien Ingénieur en développement logiciel en test et des exemples de questions généralement posées aux candidats de différentes organisations et profils. En général, les entretiens SDET sont de nature très large et dépendent beaucoup d'une entreprise à l'autre.
Mais les processus d'entrevue sont similaires à ce qui existe pour un profil de développeur avec un plus grand accent sur la qualité et les cadres d'automatisation.
Il est important de comprendre que, de nos jours, les entreprises se concentrent moins sur un langage ou une technologie spécifique, mais davantage sur une large compréhension des concepts et la capacité de s'adapter aux outils / technologies requis par l'entreprise.
Meilleurs voeux pour votre entretien SDET!
lecture recommandée
- Qu'est-ce que SDET: connaître la différence entre le testeur et le SDET
- Questions et réponses d'entrevue
- Questions et réponses d'entrevue de test ETL
- Quelques questions et réponses difficiles sur les tests manuels
- Questions d'entrevue Spock avec réponses (les plus populaires)
- 25 meilleures questions et réponses d'entrevue de test Agile
- Top 32 des meilleures questions et réponses d'entrevue de datastage
- Top 20+ Questions et réponses d'entrevue .NET