Warum mögen sich Tester und Programmierer nicht? [geschlossen]


18

Während meiner Karriere als Programmierer habe ich verschiedene Programmierer und Tester gesehen, und viele von ihnen mochten / mochten sich nicht. Ich meine, Programmierer denken, dass der Job eines Testers kein "echter" Job ist, und Tester denken, dass Programmierer zu "stolz" sind.

Ist das die richtige Entscheidung von mir, warum und was können wir tun, um solche Probleme zu vermeiden?


Kommentatoren : Kommentare dienen der Klarstellung und nicht der ausführlichen Diskussion. Wenn Sie eine Lösung haben, hinterlassen Sie eine Antwort. Wenn Ihre Lösung bereits veröffentlicht wurde, stimmen Sie sie bitte ab. Wenn Sie diese Frage mit anderen diskutieren möchten, verwenden Sie bitte den Chat . Weitere Informationen finden Sie in den FAQ .

Antworten:


50

Ich denke, das ist ein ekelhaftes Übermaß an Verallgemeinerung und Vereinfachung.

Ich bin momentan ein Tester, ich schreibe fast so viel Code wie ich als Entwickler geschrieben habe (hängt von der Testphase ab) und mein bester Freund in der Firma ist ein Entwickler und wir alle verstehen uns.

Vielleicht möchten Sie einen Blick auf die Unternehmenskultur und die Art und Weise werfen, wie die Teams miteinander umgehen, um Ihre Antwort zu finden. Wenn Sie meiner Erfahrung nach sehr reaktionäre Workflows haben (dh devs "wirft einen Build über die Mauer, um zu testen" und testet "wirft Bugs zurück"), anstatt zusammenzuarbeiten , nur aus verschiedenen Fokuspunkten oder "Angriffsvektoren". werden feststellen , dass in der Regel beide Abteilungen, werden sie nicht mögen.

Wo ich arbeite, hat jedes Feature-Team oder Designteam fast so viele Tester wie Entwickler, die zusammenarbeiten, um Ergebnisse zu erzielen. Diese Ausgabe ist ein Produktionscode, der die Anforderungen des Testcodes erfüllt.

bearbeiten

Beachten Sie auch, dass ich denke, dass der Tester mehr als der Entwickler die Aufgabe hat, die Beziehung zwischen den beiden zu unterstützen.

Es ist für uns viel einfacher, das Leben von Entwicklern besser oder schlechter zu machen, aber das Ziel ist nicht nur, "Fehler zu finden", sondern auch mögliche Lösungen zu finden. Wenn ich nicht kann, kann ich nicht und ich werde mit demjenigen zusammenarbeiten, dem der Fehler zu diesem Zeitpunkt zugewiesen wurde , um eine Lösung zu finden. Wenn es sich jedoch um eine einfache Lösung handelt, werde ich eine Lösung anbieten, die meiner Meinung nach die verschiedenen Anforderungen und den möglichen Regressionstest erfüllt, den ich schreiben werde.


4
+1 Ich würde den Tester (QA) lieber dazu bringen, mehr Fehler zu finden, als Zeit damit zu verschwenden, den Code herauszufinden und mögliche Lösungen zu finden. Deshalb sind sie im Test und wir sind in der Entwicklung. Eine großartige QS-Person ist genauso viel wert wie ein großartiger Entwickler, und ich möchte lieber jede Zeit in ihren Stärkebereichen verbringen. Das heißt, was wirklich von der Qualitätssicherung hilft, ist das Zurücksenden eines verständlichen Fehlerberichts, in dem die genauen Bedingungen des Fehlers aufgeführt sind, damit er leicht reproduzierbar ist. Nichts ist schlimmer als "X fällt aus" und nichts ist besser als "Unter den Bedingungen A, B, C und D fällt X mit Fehler Y aus"
unpythonisch

3
@ Mark Mann: Ich denke, wir haben eine andere Ansicht darüber, was Zeitverschwendung ist :) Aus Sicht der Qualitätssicherung ist es eine interessante Situation, für die Qualität der Arbeit eines anderen verantwortlich zu sein. Wenn ich bedenke, dass es manchmal Leute in der Qualitätssicherung gibt, die doppelt so viele Entwickler haben wie einige im Entwicklerteam. Frustration kann die Oberhand gewinnen und Sie denken am Ende: Schreiben Sie es einfach so, und es wird funktionieren Ich möchte nicht die Mühe machen müssen, dies erneut zu testen und denselben Bug oder eine Regression erneut auszulösen. " Außerdem bin ich ein glücklicher Mann, wenn ich helfen kann, die Arbeit / den Tag von jemandem zu erleichtern.
Steven Evers

2
Probleme und Spannungen entstehen, wenn die (QA) -Ziele des Projekts nicht jedem im Team klar sind und ein schlechtes Projektmanagement QA oder Entwicklern erlaubt, den Schlafplatz zu "regieren". Ich habe an Orten gearbeitet, an denen die Qualitätssicherung Mängel feststellt und sich wie ein Pitbull mit Knochen verhält, sie nicht loslässt, das Projekt verspätet ein Überbudget darstellt und der Mangel im Vergleich zu denjenigen, bei denen dies der Fall ist, signifikant unwahrscheinlich und geringfügig ist noch zu finden oder Features noch zu vervollständigen. Die Aufgabe von QA ist es, sicherzustellen, dass das beste Produkt innerhalb der geschäftlichen Grenzen ausgeliefert wird, und nicht, dass jeder Fehler auf Kosten des Projekts behoben wird.
Mattnz

28

Ich LIEBE meine Tester - sie helfen mir, Probleme zu beheben und Dinge zu erkennen, die ich nicht für ein Problem halten würde, aber unsere Kunden. Und das Wichtigste für mich ist, dass sie mir dabei helfen, sicherzustellen, dass ich niemanden mit schlechtem Code töte.

Warum tauchen Probleme auf?

  • Sie beurteilen ständig die Arbeit der anderen, und manche Leute können keinerlei Kritik vertragen
  • Einen schlechten Job zu machen, verschwendet die Zeit Ihres Gegners
  • Sie stehen beide gleichzeitig unter Druck, und niemand möchte derjenige sein, der die Dinge aufhält

Die Kombination der oben genannten Faktoren zusammen mit der Art der Positionen bedeutet, dass es wirklich einfach ist, Ihre aktuellen Ängste und Frustrationen gegeneinander auszutauschen. Wenn Sie in diese Falle tappen, hören Sie auf, zusammenzuarbeiten und fangen an, gegeneinander zu arbeiten. Das ist schwer auszubrechen und für niemanden gut.


6
So frustrierend es auch sein mag, von Testern (QA) abgelehnte Fehlerbehebungen zu erhalten, es ist weit, weit (habe ich weit gesagt?) Schlimmer, Fehlerberichte von Kunden zu erhalten. Ich würde lieber meiner QA-Abteilung zeigen, was für ein Blödsinn ich für einen Fehler behoben / ein Feature implementiert habe, als hundert Kundenfälle geöffnet zu haben, weil es vor der Veröffentlichung nicht abgefangen wurde.
unpythonic

16

Ich würde vermuten, dass es passiert, wenn die Programmierer ein Programm erstellen und sie bemerken, dass die Tester dann versuchen, Fehler darin zu finden (obwohl die Tester tatsächlich einen Teil der Verbesserung des Endprodukts darstellen). Wenn jemand Fehler in etwas findet, in das Sie viel Mühe stecken, ist es wahrscheinlich eine natürliche Reaktion, negativ auf ihn zu reagieren.

Eine Möglichkeit, dies zu mildern, besteht darin, die Entwickler und Tester zu veranlassen, das fertige Produkt als Ergebnis des gesamten Teams (einschließlich der Tester UND Entwickler) zu betrachten und ihnen klar zu machen, dass das Testen keine eigenständige Mission zur Fehlersuche ist, sondern ein wichtiger Bestandteil von der Entwicklungsprozess . Und wenn die Entwickler das Testen nicht für eine echte Aufgabe halten oder es einfach ist, lassen Sie sie die Testmatrizen schreiben, Hunderte von Testfällen ausführen, jeden einzelnen Schritt und jedes einzelne Ergebnis dokumentieren.


2
Einverstanden. Indem Sie die Tester vom ersten Tag an in die Entwicklung einbeziehen (Tests während der Planung und des Designs erstellen), vermeiden Sie einen Großteil der Reibung.
Martin Wickman

3
Der Schlüssel besteht darin, die Einstellung von der Suche nach Fehlern zu ändern und Wege zu finden, um das Programm zu verbessern . Als Tester ist es einfach, sich auf die Idee einzulassen, dass das Auffinden von Fehlern Ihr vorrangiges Ziel ist.
edA-qa mort-ora-y

@ edA-qa mort-ora-y: Guter Punkt!
FrustratedWithFormsDesigner

"beause" -> "because"
Peter Mortensen

8

Ich kenne bestimmte Programmierer und bestimmte Tester, die sich nicht mögen, aber nicht aus den von Ihnen angegebenen Gründen, sondern weil sie sich gegenseitig unterstützen.

Es ist die Natur des Tieres. Einige der speziellen Tester, von denen ich weiß, dass sie sich nicht um bestimmte Programmierer kümmern, weil sie der Meinung sind, dass ihr Code durch Nachlässigkeit / Faulheit / usw. Fehleranfällig ist. Einige der mir bekannten Codierer, die sich nicht für bestimmte Tester interessierten, meinten, sie hätten lächerlich erfundene Testbedingungen (Stichproben) verwendet oder würden eine Überarbeitung des Codes auf der Grundlage des Stils verlangen.

Ich denke, dass es einen großen Beitrag zum Abbau von Spannungen leistet, wenn man sich nicht auf Persönlichkeiten konzentriert. Wenn eine Organisation groß genug ist, ist ein Doppelblindtest eine gute Idee.

Ein Tester, der Probleme klar ausdrücken kann, und Programmierer, die Lösungen klar implementieren, sind ein großartiges Team.


5

In Teams, in denen ich eng mit den Testern zusammengearbeitet habe, haben wir uns hervorragend verstanden. Tester verstehen die Entscheidungen, die in verschiedenen Entscheidungen getroffen wurden, sie wissen, wie die Zeitpläne der Entwickler aussehen, und es wird ein Verhältnis zwischen den beiden Gruppen aufgebaut.

In Teams, in denen der Test eine amorphe Entität vor der Küste ist, war dies nicht der Fall. Die Testergebnisse sind weniger relevant, weil sie nicht so viel darüber wissen, was vor sich geht. Die Entwickler fürchten sich vor der Flut von Informationen, die sie als unwichtige Details betrachten und die in Teilen des Programms enthalten sind, die in zwei Teilen nicht angesprochen wurden Monate lang ärgert sich das Testteam darüber, dass keiner der gemeldeten Fehler behoben wird (weil der Zeitplan verkorkst ist und die Entwickler damit beschäftigt sind, sich auf Demos vorzubereiten oder gewünschte Funktionen usw. hinzuzufügen), und im Allgemeinen sehen sich beide Gruppen gegenseitig als feindselig an "Andere" im Gegensatz zu Teammitgliedern.

Arbeiten Sie eng zusammen und alles wird gut. Jemand muss sicherstellen, dass beide Teams koordiniert und auf derselben Seite sind. Meine beste Erfahrung war, dass das Testteam zu jedem hochrangigen Meeting eingeladen wurde, zu dem das Entwicklerteam eingeladen wurde (alle), und wir alle kannten den Zeitplan, hatten eine einheitliche Prioritätenliste und Entwickler und Test hatten beide die gleiche (aktualisierte Version). aktuelles Anforderungsdokument. Meine schlimmste Erfahrung (abgesehen von keinem Test) war, dass wir unsere Sachen zusammenpackten, nach Übersee verschickten, um sie uns anzusehen, und dann einen Monat später alles mit Dingen zurückbekamen, die als falsch markiert waren, die nicht einmal unsere waren (Plugins von Drittanbietern, die das Neue erfüllten) Anforderungen, aber nicht die Erwartungen des Testteams).

Kein Entwickler oder Test wird ohne den anderen erfolgreich sein. Wenn Sie wie zwei Hälften einer Maschine arbeiten und die andere Seite genauso respektieren wie Ihre direkteren Teammitglieder, ist alles in Ordnung. Benimm dich wie zwei getrennte Maschinen und gehe davon aus, dass deine Maschine besser ist und die Dinge schrecklich werden.


5

Wenn sich Programmierer und Tester nicht mögen, dann oft, weil sie sich irrtümlich vorstellen, dass ihre Ziele in Konflikt stehen.


3

Ich habe festgestellt, dass diese Probleme erheblich verringert werden, wenn Tester und Entwickler im selben Team und nicht in einem "Testteam" und einem "Entwicklungsteam" arbeiten. Aus diesem Grund arbeite ich als Tester lieber in agilen Teams als in der Wasserfallentwicklung. Es gibt mehr Kommunikation, die Abwicklung ist schneller und die Entwickler wissen die Zeit und das Talent, die für das Testen aufgewendet werden, besser zu schätzen, wenn diese Arbeit transparenter ist.

Individuell kann auch viel getan werden. Als Tester kann ich diese Reibung reduzieren, indem ich positives Feedback gebe und Fehler finde. Ich habe noch keinen Test für einen Entwickler , der mir nicht viel beibringen konnte , und Entwickler schätzen einen Tester, der wirklich daran arbeitet, den Code zu verstehen. Entwickler sind stolz, wie jeder gute Handwerker. Es ist wichtig, dass sie wissen, dass Fehler sie nicht weniger bewundernswert machen

Die Entwickler, mit denen ich am einfachsten arbeiten konnte, schätzten die gute Qualität und zeigten dies, indem sie sich bemühten, hochwertigen Code zu schreiben, bevor der Tester ihn sah, einschließlich vorläufiger Tests (hauptsächlich automatisierte Komponententests und manuelle Rauchtests). Diese Entwickler baten den Test auch, Code-Überprüfungen auf Testbarkeit durchzuführen, und banden die Tester so schnell wie möglich in den Prozess ein, einschließlich der Vorlage von Designs zu einem frühen Zeitpunkt (wodurch die Tester frühzeitig Teststrategien planen können, wenn der Test eine geringere Belastung aufweist). Entwickler können Testern dabei helfen, schwache Bereiche in ihrem Code zu finden, indem sie ihnen mitteilen, welche Bereiche im Eiltempo entwickelt wurden oder welche Bereiche schwierig zu testen waren. Im Allgemeinen wird alles geschätzt, was Entwickler tun können, um die Arbeit eines Testers zu erleichtern, und es zeigt, dass sie die Zeit des Testers ebenso schätzen wie ihre eigene. Wenn Entwickler dies tun,


3

Ein weiteres Problem ist, dass die Qualitätssicherung von vielen Unternehmen oft nachgedacht wird. Oft wird in letzter Minute über Projekte berichtet und die Mitarbeiterzahl ist im Vergleich zum Entwicklerteam stark unterbesetzt. An einigen Stellen ist der Weg zum Entwickler der technische Support, die Qualitätssicherung und dann der Entwickler. Manchmal gibt es also Leute, die sich wünschen, Entwickler zu sein ... Und wenn sie dann einen Defekt finden, wie kann diese Person dann ein Entwickler sein und nicht ich? Ich würde niemals einen solchen Fehler machen, etc ...

Insgesamt würde ich ein QA-Team lieben. Ich denke auch, dass Komponententests ein notwendiger Teil der Softwareentwicklung sein sollten, der von der Qualitätssicherung getrennt ist. Wenn die Qualitätssicherung Fehler findet, werden die Komponententests dahingehend geändert. Außerdem denke ich, dass Entwickler, die Unit-Tests durchführen, besser verstehen können, was die Qualitätssicherung vorfindet.

Darüber hinaus müssen viele QA-Teams die Dinge manuell erledigen. In diesem Fall ist es WIRKLICH langweilig. An einigen Stellen schreibt QA Skripte und verwendet Automatisierungsprogramme, die sogar das Erstellen von Skripten für GUIs ermöglichen (durch eine Art Bilderkennung auf dem Bildschirm für Schaltflächen usw.) Dann ist es immer noch schwierig, wenn zuerst große Änderungen stattfinden, aber dann ist alles automatisiert und es scheint mehr Spaß zu machen ...

Auch einige Entwickler blicken auf die Qualitätssicherung zurück. Trotzdem würde ich viel lieber einen QS-Defekt finden als den Kunden ...


2

Wir lieben unsere Tester hier, aber dann erinnern sich viele von uns, wie es war, bevor wir sie hatten. Es ist viel besser, dass Tester Probleme finden, als dass der Kunde sie findet, nachdem Sie in die Produktion gegangen sind. Es ist kein Entwickler am Leben, der keinen Fehler verursacht oder eine Anforderung falsch interpretiert hat.

Der Schlüssel ist, alle Fachleute höflich zu behandeln und zu respektieren, ob sie das tun, was Sie tun oder nicht. Wenn Sie glauben, Ihr Job sei besser oder wichtiger als der Ihre, haben Sie verloren.

Basierend auf dieser Frage: Softwaretesttechniken oder -kategorien Ich vermute, dass Sie eine Einstellungseinstellung gegenüber Testern und Tests im Allgemeinen benötigen.


2

Als Entwickler habe ich meine Spannung mit Testern erlebt.

In einem Job würden die Tester selten das "Richtige" testen. Ich würde eine neue Funktion für den Server unseres Produkts implementieren und die Tester würden eine Menge Fehler bezüglich der Benutzeroberfläche melden. Da in diesem Produkt die Benutzerschnittstelle nicht codiert konfiguriert war , war das Vorhandensein (oder Nichtvorhandensein) von Problemen in unserer Entwicklungsbenutzeroberfläche absolut nicht damit verknüpft, ob Endbenutzer eine Benutzeroberfläche mit ähnlichen Problemen haben würden. Die Tester wussten das, beharrten jedoch darauf, Fehler in fremden Bereichen zu protokollieren.

Gute Tester sind Gold wert - ich würde sofort einen miesen Entwickler gegen einen guten Tester eintauschen. Ein guter Tester ist ein Partner bei der Lieferung eines Qualitätsprodukts.

Ich habe auch einige Entwickler gekannt, die die Tester als Feinde behandeln - als würden die Tester die Fehler einführen. Für Entwickler ist es wichtig zu erkennen, dass Tester den Fehler niemals einführen - sie decken ihn nur auf.


1

Wie vermeide ich diese Probleme? Wie wäre es nett zueinander zu sein? Das eine braucht das andere, um eine hochwertige Softwareanwendung herauszubringen. Warum also nicht respektieren, was jede Seite tun muss, um dies zu erreichen? Erfahren Sie, was jede Seite tut, und Sie werden die damit verbundene Arbeit vielleicht wirklich schätzen.


1

Hartnäckigkeit auf beiden Seiten der richtigen Interpretation einer Anforderung würde bedeuten, dass ich den Konflikt zwischen Entwicklern und Testern im Allgemeinen tendenziell sehe. Während es den Anschein von Snobismus oder Arroganz geben mag, ist es nur so, dass jede Seite an ihren Waffen festhält und Recht haben möchte.

Eine gute Möglichkeit, dieses Problem zu vermeiden, besteht darin, drei Parteien, den Entwickler, den Tester und einen Mediator, entweder einen Geschäftsanalysten oder einen Projektmanager, zu beauftragen, wie mit verschiedenen Grenzfällen umgegangen werden soll. Zu überlegen ist, welche Art von Ego entstehen kann, wenn zwischen Entwicklern und Testern Meinungsverschiedenheiten bestehen.


1

Ein schlechtes Gefühl ist normalerweise die Folge einer schlechten Kommunikation, die normalerweise darauf zurückzuführen ist, dass Programmierer und Tester unterschiedliche Sichtweisen auf den Code haben. Der Programmierer kennt die Teile, an denen er intensiv gearbeitet hat, weiß jedoch möglicherweise nicht, wie sie in das Gesamtsystem passen (über das hinaus, was ihm die Spezifikation sagt). Tester sehen das große Ganze, kennen den Code aber nicht im Detail. Die Gruppen können für die gleichen Dinge unterschiedliche Begriffe und Verfahren verwenden.

Dies kann dazu führen, dass Fehler an der falschen Komponente abgelegt werden (weil die Komponente auf einen Fehler im Upstream reagiert), oder dass Entwickler legitime Fehler schließen, weil sie das Problem in ihrer Umgebung nicht reproduzieren können (weil sie nicht wirklich verstehen, wie es zu reproduzieren ist das Problem richtig). Wenn dies häufig vorkommt, kann dies die Beziehungen zwischen den Gruppen belasten.

Dann gibt es die Freude, in der elften Stunde eine Menge Mängel zu bekommen; Die Fristen stehen vor der Tür, Ihr direkter Vorgesetzter in der Kette macht Druck, und Sie bekommen eine neue Charge von Fehlern bei einem Problem, von dem Sie wissen, dass Sie es bereits behoben haben, und Sie möchten sich wirklich nicht die Zeit dafür nehmen müssen durch den Prozess, um es zu beweisen.

Eine wirklich gute Möglichkeit, Ihr QA-Team zu verärgern, besteht darin, mehrere hundert legitime Fehler mit niedriger Priorität (die hauptsächlich gegen hässliche oder inkonsistente Benutzeroberflächen mit anderen Funktionen abgelegt wurden) mit der Begründung zu schließen, dass Ihr Fehlerrückstand mit höherer Priorität so groß ist, dass " wir werden nie dazu kommen. " Sie wechseln in der Tabellenkalkulation des Programmmanagers von Rot zu Grün und erhalten einen Attaboy vom höheren Management, während das QA-Team die Messdaten überprüft, um eine Reihe von falschen Fehlern zu melden.

Schlechter Juju.


1

Dies ergibt sich häufig aus drei Faktoren:

  • Fragen wie diese weisen auf die Existenz einer „Folklore“ in der Branche hin, die Entwickler und Tester nicht mögen. Menschen versuchen, Aspekte zu finden, die dies verstärken, auch wenn ein solches Gefühl in ihrem Team möglicherweise nicht vorhanden ist.
  • Inkompetente Projektmanager, die den Fortschritt anhand von Messwerten wie der Anzahl der protokollierten Fehler messen.
  • Ein dysfunktionales Team (und ein Mangel an Führungskräften, die genug dafür tun, um das Problem zu beheben).

1

Ich mag Tester, aber zwei Fälle habe ich Konflikt gefunden.

  1. Beim Management spielen Tester und Entwickler gegeneinander.

  2. Wenn ständig Fragen eingereicht werden, die nicht detailliert sind, zB "Screen x funktioniert nicht".


0

Ich denke, wenn das wirklich der Fall ist, ist es ein Zeichen der Unreife. Manchmal könnte man es als Witz bezeichnen. Aber wenn Sie (Entwickler und Tester, die am selben Projekt arbeiten) sich nicht als Team fühlen, wäre das Ergebnis eine Katastrophe.

Testen ist ein ziemlich wichtiger Teil des Softwareentwicklungszyklus (ob agil oder nicht). Sie sollten Tester also nicht als Menschen betrachten, die Sie mit Fehlern belästigen, sondern als Teamkollegen, der Sie beim Versand hochwertiger Software unterstützt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.