Question

J'ai un testeur lors du test aura une erreur se (ok jusqu'à présent), mais il rapporte souvent tout de suite. Nous (les développeurs), puis trouver plus tard que le testeur n'a pas essayé de reproduire le problème et (quand on lui demande) ne peut pas trouver un moyen pour y arriver à nouveau.

Maintenant, ce sont encore des bugs, je ne veux pas les ignorer. Mais sans étapes repro Je suis un peu coincé. Parfois, il y a une trace de la pile (si souvent il est pas utile parce que c'est cadre compact et il n'y a aucun numéro de ligne). Mais quand il est celui que je peux prendre la trace de la pile et entrouvrir le code et commencer à deviner, mais cela ne conduit pas à testables « fixe ».

Que faites-vous dans des scénarios comme celui-ci?

Était-ce utile?

La solution

Un bug sans contexte est pas un bug, il est un coup de chance. Le problème pourrait être votre code, il pourrait être une bibliothèque tierce partie, il pourrait être le matériel, ou il pourrait être un rayonnement solaire provoquant un seul bit à retourner sur son propre. Si vous ne pouvez pas le reproduire avec au moins certains régularité (même si seulement « il se produit une fois tous les 10 ou 20 fois que je fais X »), ce n'est pas beaucoup mieux que votre testeur vous dire « Quelque chose quelque part a mal tourné en quelque sorte -. Réparez »

Vous pouvez expliquer à votre testeur que son travail est de ne pas générer juste entrée jusqu'à ce que quelque chose se brise. Si elle était, vous pouvez le remplacer par un générateur de nombres aléatoires. Une partie de son travail est d'identifier les bugs, qui consiste à identifier la façon de les produire.

Autres conseils

En fin de compte, si ni le développeur ni le testeur peut reproduire le bogue devrait être fermé, mais marqué comme tel.

Cependant, combien de temps il vous faut pour arriver à ce point est discutable.

Certaines personnes soutiennent que si elle est alors pas immédiatement reproductible, il doit être immédiatement fermé.

Je me efforce généralement d'essayer d'obtenir plus d'informations à l'origine du problème. Il peut y avoir quelque chose qu'ils ont oublié dans le rapport initial. Avoir une conversation sur les étapes nécessaires peut souvent révéler les informations manquantes.

Une dernière pensée - fermée comme "non-repro" ne pas mean fixe. S'il y a un vrai problème, il se révélera tôt ou tard et avoir toutes les informations que vous pouvez vous aider lorsque vous pouvez enfin reproduire le problème.

Quelques autres suggestions:

  1. Consignation Ajouter (et pas seulement un keylogger:}) à votre code de produit. « Non repro » bugs peuvent être douve, mais ils peuvent être la mémoire ou la corruption état qui se produit uniquement sur un système de sale utilisé de manière inattendue (par exemple comme un ordinateur de clients). Enregistrement de données ou des informations de traçage peut vous aider à comprendre ce que peut ont été mal lorsque le testeur a trouvé le coup de chance.

  2. Numérisez le reste des bugs « pas repro » dans la base de données (ou tout ce que vous utilisez pour le suivi des bogues). Souvent, les flets agglutiner dans une zone du produit. Si cela ressemble à un composant est en faute, le code avis sur ce composant le composant pour flakiness possible, ajoutez l'enregistrement supplémentaire -., Ou les deux

  3. Prenez une demi-heure environ et regarder votre test du testeur. Leur approche peut vous donner une idée de ce qui a mal tourné (par exemple « intéressant - je ne savais pas qu'on pouvait arriver à cette boîte de dialogue de cette façon »). Vous pouvez également constater que ils sauter une étape de dialogue ou une configuration sans le vouloir. Il vaut la peine l'investissement en temps pour obtenir dans leur tête un peu.

Je fais QA sur un grand code de commerce, ce scénario irritant ne se place trop souvent. Habituellement, il est indicatif de ne pas avoir de proceedures à toute épreuve pour la construction du binaire sur toutes les plates-formes que nous soutenons. Donc, si le développeur construit son propre code (qu'il doit faire pour le débogage et fixe), et ne suit pas la même version proceedure à la lettre, il y a une chance que les bugs dépendants du système apparaîtront à disparaître comme par magie (ou paraître) . Bien sûr, ces choses se fermé avec « fonctionne pour moi », généralement dans la base de données de bogue, et si elles ne parviennent pas la prochaine fois que ce problème est exécuté, le virus peut être rouverte. Chaque fois que je soupçonne un bug peut dépendre du système, je tente de le tester sur une variété de plates-formes et rapport conditions dans lesquelles il se produit. Très souvent un problème de corruption de mémoire onlt apparaît si les données corrompues est assez grande ampleur pour causer un accident. Certaines plates-formes (combinaisons HW et OS) peut se bloquer près de la source réelle de la corruption, et cela peut être très utile pour le pauvre gars qui a le déboguer.

Le testeur doit faire une certaine valeur ajoutée, au-delà des rapports que son système indique un échec. Je passe beaucoup de temps à filtrer les faux positifs -peut-être la plate-forme en question était surchargé, ou le réseau avait un petit problème. Et oui, parfois, vous pouvez obtenir quelque chose qui est vraiment affecté par des événements aléatoires de synchronisation, les bugs matériels peuvent souvent être comme proto exemple: Si deux demandes de données reviennent un exactement de la même période d'horloge, et la logique matérielle pour gérer le conflit potentiel est défectueux, le bug n'affichera par intermittence. De même avec le traitement parallèle, à moins que par une conception soignée vous avez limité la solution à être indépendante dont le processeur est arrivé à être plus rapide, vous pouvez obtenir des bugs qui se produisent qu'une seule fois dans une lune bleue, et leur imporbablity statistique fait le débogage d'un cauchemar.

Aussi notre code est mis à jour, le plus souvent plusieurs fois par jour, traquer un numéro de révision de code source exacte quand il est allé au sud peut être des informations très utiles pour l'effort de débogage. Le testeur ne doit pas être dans une relation contradictoire avec les débogueurs et les développeurs, il est là dans le cadre d'une équipe pour améliorer la qualité du produit.

Il y a deux sortes de bugs qui ne sont pas reproductibles:

1) Ceux qui un testeur (ou utilisateur) a vu une fois, mais n'a pas été en mesure soit ou non tenté de reproduire.

Dans ces situations, vous devez:

  • Très brièvement vérifier le cours de base des actions qui ont montré le défaut de faire en sorte que ce n'est pas reproductible.

  • Speak au testeur / utilisateur pour voir s'il y a d'autres informations qui peuvent aider.

  • Référence croisée avec les autres défauts qui pourraient être liés à voir si vous avez suffisamment d'informations pour les examiner en fonction des instances multiples. Vous trouverez peut-être que celui-ci ne question assez d'informations vous donner de ne pas aller cependant lorsqu'elle est associée à un certain nombre d'autres questions, il peut vous suggérer quelque chose qui ne va pas mérite d'être étudié.

  • Si vous n'avez pas encore assez pour continuer, alors vous devez expliquer à l'utilisateur / testeur que vous n'avez pas assez d'informations. Plan pour poliment ce que suffisamment d'informations ressemblerait et pourquoi il est nécessaire.

2) Ceux où ils ne peuvent pas être reproduit de façon fiable, mais il y a suffisamment de preuves (en termes d'occurrences répétées) de suggérer que le défaut existe, alors je tendance à voir que ce sont des questions de développement et que le développeur - pris en charge par le testeur / utilisateur - a besoin d'enquêter sur

.

Il est susceptible d'être lente et douloureuse, vous allez probablement avoir à marcher le code, ajouter la journalisation, regardez les données et parler aux testeurs / utilisateurs en profondeur mais s'il y a suffisamment de preuves pour suggérer que il est probable qu'il y ait un problème que vous avez besoin de se l'approprier et faire tout ce qui doit être fait pour y remédier.

On dirait que cela arrive assez souvent - ce qui me fait me demande, est-ce parce que la plupart des bugs sont vraiment difficiles à repro, ou est-ce pour une autre raison qu'il ne cherche pas? Savez-vous pourquoi il ne cherche pas à reproduire le problème? Est-ce parce qu'il ne se rend pas compte combien il est important pour vous? Ou peut-être est-ce qu'il a d'autres pressions - un gestionnaire de test qui le veut juste passer à travers les essais alloués rapidement et jeter les bugs sur le mur, par exemple? Ou peut-être qu'il est tout simplement pas sûr de savoir comment s'y prendre?

Je suis d'accord avec les autres que le travail sur l'exploitation forestière meilleure est une priorité. En attendant, si vous pensez que le manque de compétence du testeur / confiance peut être un problème, alors je aime vraiment cet article Danny Faught sur l'isolement bug - vous pourriez lui faire remarquer à ce pour un début.

Si le problème se révèle être dû à la pression de la direction - vous avez toute ma sympathie, comme c'est une question difficile à craquer, surtout si les testeurs et programmeurs rapport aux différents gestionnaires et les gestionnaires ne sont pas enclins à « aider à » une autre équipe.

En général, je constate que ce n'est pas reproductible, mais le laisser ouvert jusqu'à ce lot de test ou itération est terminée.

Si elle n'a pas été reproduit par ce point, il est fermé, mais peut être rouverte si elle est à nouveau rencontré.

coller un keylogger sur le poste de travail de ce testeur!

Eh bien, la première tâche est d'avoir un système de test reproductible. Votre testeur doit un processus bien défini -. Automatique si possible

ce que ces trois conditions:

  • binaire même
  • Les mêmes étapes
  • La même machine

Si le bug apparaît de façon sporadique avec les conditions ci-dessus 3, commencer à isoler davantage. Considérons chaque niveau de la pile du système et de sa configuration.

Une façon de détecter les erreurs de gestion de la mémoire est d'exécuter le programme sur plusieurs systèmes d'exploitation avec plusieurs compilateurs. Valgrind peut aussi aider.

Cependant, en général des systèmes parallèles sont susceptibles d'induire des bugs non repro. Des choses comme la taille des tampons et des vitesses de traitement, asynch io, serrures de base de données, entrelacements d'écriture de mémoire variables; tous ceux qui peuvent générer des problèmes. Et ainsi de suite et ainsi de suite.

Tout d'abord, vous devriez avoir une procédure de tests rigoureux (mais je vous comprends, dans mon entreprise ce que vous avez décrit cela arrive fréquemment).

En fonction de la gravité du bogue, vous pouvez investir un peu de temps ou (mieux) ignorer les étapes jusqu'à repro sont fournis.

Licencié sous: CC-BY-SA avec attribution
scroll top