An meinem jetzigen Arbeitsplatz haben wir keine Tester, was vom Management so begründet wurde: "Wenn wir Tester hätten, würden Sie Ihren eigenen Code überhaupt nicht testen". Diese Art des Denkens wirkt sich nachteilig auf die Produktqualität aus, da ich zwar meinen eigenen Code teste, aber viele Dinge vermisse, nur weil ich das System in- und auswendig kenne und nicht weiß, wie man es verwendet es "falsch". Black-Box-Tests funktionieren nicht wirklich, da ich unbewusst die Fallstricke vermeide, in die ein engagierter Tester geraten würde. Ein großer Teil meiner Zeit fließt in die Behebung von Fehlern, die vom Endbenutzer im Produktionscode gefunden wurden.
Das fragliche System ist groß, wird aber nur von mir entwickelt. Dies hat auch dazu geführt, dass einige Managementaufgaben auf meinen Schoß fielen, wie das Definieren von Zeitplänen und das Arbeiten an Spezifikationen.
Sollte diese Art von Aufgaben in meiner Verantwortung liegen? Ich sehe mich streng als Programmierer und nichts anderes. Und wenn dies in meiner Verantwortung liegt, in welchem Umfang? Wann ist ein Projekt so groß, dass es Tester benötigt? Sollte ein Programmierer die Spezifikation verfeinern, sich um das Projektmanagement kümmern oder sogar Kundenunterstützung leisten müssen?
Hinweis
Einige haben vielleicht den Eindruck, dass ich gegen eine Ausweitung meiner Zuständigkeiten bin - das ist nicht der Fall, ich bin bestrebt, eine Rolle zu bekommen, die mehr Managementaufgaben beinhaltet, aber derzeit nicht in meiner Stellenbeschreibung. Bis ich offiziell als solcher angestellt bin oder die zusätzlichen Pflichten in meinem Gehaltsscheck erscheinen, werde ich mich als "nur" einen Programmierer betrachten. Leider wird es als Junior-Entwickler nicht sehr bald zu einem Wechsel in die Geschäftsführung kommen.
Ausgezeichnete Antworten bisher, lassen Sie sie kommen, wenn Sie etwas hinzuzufügen oder persönliche Erfahrungen zu teilen haben!
quelle
Antworten:
Sie tun Tester haben. Sie nennen sie nur "Endbenutzer". Dies ist aus allen von Ihnen beschriebenen Gründen nachteilig. Egal wie gewissenhaft Sie als Kodierer sind, Sie werden einfach nie in der Lage sein, Ihre eigenen Vorurteile darüber, wie der Code "verwendet" werden soll, um alle möglichen Fehler zu finden, zu überwinden .
Sie müssen dieses Problem erneut beim Management eröffnen. An diesem Punkt scheint es, als hätten Sie einige harte Daten, um Ihren Fall zu sichern. Der derzeitige Ansatz der praktischen Qualitätssicherung verschwendet sowohl Ihre Zeit als auch die Benutzererfahrung. Sie müssen vorsichtig sein, wie Sie dies präsentieren, damit klar ist, dass es sich um ein strukturelles Problem handelt und nicht um den Fall "Sie saugen nur am Testen", aber es klingt wie eine Diskussion, die stattfinden muss.
Es hört sich so an, als stünden Sie mit diesem Arbeitgeber am Scheideweg. Wenn Sie beabsichtigen, ein Programmierer zu bleiben, und sonst nichts, müssen Sie möglicherweise anfangen, zurückzudrängen und zu fordern, dass sie Ihnen die Hilfe geben, die Sie benötigen, um einige der Verwaltungsaufgaben von Ihrem Teller zu nehmen, entweder indem Sie jemanden neu holen oder indem Sie Erweiterung der Verantwortlichkeiten eines bestehenden Mitarbeiters. ("Dafür haben Sie mich nicht engagiert, und diese Aufgaben gehen nicht verloren. Zeit, in der ich dieses Zeug schlecht mache , verbringe ich nicht mit dem , in dem ich gut bin.") Aber das kann oder kann nicht realistisch sein. Glauben Sie, Sie könnten eine Führungsrolle übernehmen, wenn Sie die Ressourcen und Befugnisse erhalten, die Sie benötigen, um die Arbeit richtig zu erledigen?
Wie groß ein Projekt sein muss, bevor es Tester braucht, weiß ich nicht genau, wie ich diese Linie definieren soll, aber ich denke auf jeden Fall, dass Sie sie überschritten haben. Sie verbringen mehr Zeit damit, Fehlerberichte von tatsächlichen Benutzern zu beheben, als Sie möchten. Für mich ist es an der Zeit, mehr Anstrengungen zu unternehmen, um zu verhindern, dass die Bugs überhaupt zu den Nutzern gelangen.
quelle
Ja. Wenn Sie müssen , sollten Sie in der Lage sein, Ihren Code zu testen. (Ich spreche nicht von Unit Tests, sondern von Abnahmetests und dergleichen.)
Nein . Tester können besser testen als Sie. Und wie Sie bereits betont haben, ist es sehr schwer, Ihre eigenen Fehler zu erkennen, genau wie beim Korrekturlesen. Zusätzliche Augäpfel haben einen großen (guten) Einfluss auf Ihre Programmqualität.
Sie haben viele andere Fragen. Ich werde nur eine Antwort geben:
Sollte ein Programmierer die Spezifikation verfeinern müssen?
Ja! Sie müssen die Spezifikation implementieren, damit sichergestellt ist, dass die Spezifikation tatsächlich implementierbar ist. Außerdem können Sie als Programmierer - geschult in klarem Denken, Präzision und Ähnlichem - Menschen dabei helfen, herauszufinden, was tatsächlich getan werden muss, und unklare oder logisch fehlerhafte Anforderungen beseitigen.
quelle
Was sie sagen und Realität sind wahrscheinlich zwei verschiedene Dinge. Höchstwahrscheinlich lautet die Begründung:
"Warum muss ich ein Testergehalt bezahlen, wenn ich den Programmierer nur dazu bringen kann, doppelte Pflicht zu tun?"
Natürlich werden sie das nicht sagen und alle möglichen Ausreden finden, die sie für vernünftig halten. Ich kann mir mehrere Widerlegungen vorstellen, aber ehrlich gesagt werden sie nicht helfen. Ich habe diesen Kampf immer wieder gesehen und sie werden ihre Herangehensweise immer dann ändern, wenn Sie ihre derzeitige Argumentation entlarven. Irgendwann geben sie auf und weisen Sie einfach an, es trotzdem zu tun, und Sie werden als Beschwerdeführer bezeichnet.
Der beste Ansatz, den ich mir vorstellen kann, besteht darin, ihn nicht unter dem Gesichtspunkt der Qualität anzugehen, den das Management zu schätzen scheint, bis es Probleme gibt, sondern unter dem Gesichtspunkt der Kosten. Tester sind oder werden zumindest als billiger als Programmierer angesehen. Erinnern Sie sie daran, dass sie durch Ihre doppelte Pflicht eine höher bezahlte Ressource (Programmierer) bezahlen, um die Arbeit zu erledigen, die von einer kostengünstigeren Ressource (Tester) ausgeführt werden könnte. Daher maximieren sie nicht den Wert, den sie aus Ihrer Programmierkenntnis ziehen.
Dieser Ansatz hat den Nachteil, dass Sie auseinanderfallen, wenn Sie als Angestellter arbeiten, und sie können Sie nicht dazu bringen, mehr unbezahlte Überstunden zu machen, aber es ist einen Versuch wert.
quelle
Meinetwegen.
Die Entscheidung liegt letztendlich bei Ihrem Management.
Vielleicht hast du dann den falschen Job. Vielen Menschen gefällt es, die zusätzliche Verantwortung zu übernehmen.
Wenn das Management das sagt, ja.
Wenn es zu viel andere Arbeit gibt, die die Entwickler erledigen müssen. An diesem Punkt muss das Management entscheiden, ob es einen dedizierten Tester einsetzen möchte oder das Risiko eingeht, beim Testen zu sparen. (Letztendlich können Entwickler nur so viel tun.)
Es hat definitiv Vorteile, engagierte Tester zu haben, aber es gibt auch Nachteile ... zusätzlich zu den Kosten für die Einstellung von zusätzlichem Personal.
Wenn nötig ja Wenn die Spezifikation überarbeitet werden muss und niemand anderes daran arbeitet, schlägt das Projekt wahrscheinlich fehl, wenn dies nicht getan wird.
Wenn nötig ja
Wenn nötig ja
Es klingt für mich, als ob Sie überarbeitet sind und auf den Druck reagieren. Das ist ein Problem. Aber die Position einzunehmen, dass es nicht Ihre Aufgabe ist, X, Y, Z zu tun, wird nicht helfen. Ein besserer Plan ist es, klar zu machen, dass Sie nur so viel tun können, und darauf hinzuweisen, dass dies wahrscheinlich dazu führt, dass Fristen versäumt werden, die Qualität sinkt, die Kundenbetreuung schlecht ist und so weiter. Aber tun Sie trotzdem Ihr Bestes, ohne dabei Ihre Gesundheit, Beziehungen usw. zu schädigen.
quelle
Wir haben Tester. Ich würde nicht ohne sie arbeiten wollen. Obwohl ich Unit-Tests (mit TDD) und automatische Integrationstests für meinen gesamten Code schreibe, haben Tester immer noch eine sehr wertvolle Funktion.
quelle
" Wenn Ihr Auto einen Sicherheitsgurt hätte, würden Sie es die ganze Zeit zerschmettern! "
Die Antwort darauf lautet "es kommt darauf an". Soweit ich weiß, sehen Ihre Arbeitgeber Sie als "Ein-Mann-IT-Abteilung". Wenn dies der Fall ist, sind sie (in Ihrer Verantwortung). Wenn Sie Aufgaben haben, die Sie absolut hassen und vermeiden möchten, suchen Sie eine Stelle in einem Unternehmen mit einer größeren IT-Abteilung.
Das ist keine (ganz) richtige Frage. Sie sollten besser fragen: "Wann ist die Qualität des Produkts / das Image des Unternehmens so wichtig, dass Tester erforderlich sind?"
Ja definitiv. In den meisten Fällen besteht eine große Diskrepanz zwischen dem, was ein Entwickler / Implementierer benötigt, und dem, was die Clients [als Spezifikationen] bereitstellen.
Oftmals liegt es an Ihnen, graue / nicht spezifizierte Bereiche zu finden und die richtigen Fragen zu stellen, technisch unmögliche oder widersprüchliche Anforderungen zu bemerken und darauf hinzuweisen usw. (insbesondere, wenn Sie der einzige Entwickler sind).
Dies hängt von der Verantwortung ab, die Sie bei der Übernahme der Position übernommen haben. Bei einigen Positionen müssen Sie beispielsweise Kunden direkt ansprechen. Wenn alle anderen Dinge gleich sind, würde ich versuchen, solche Positionen zu vermeiden (aber es liegt an Ihnen, und Sie haben möglicherweise nicht viele Berufswahlen).
quelle
Beim Testen oder besser gesagt bei der Qualitätssicherung geht es nicht nur darum, die Funktionalität durch Klicken durch die Anwendung zu testen. Bei der Qualitätssicherung geht es um Prozesse . Sie müssen nicht nur die Anwendung testen, um die Fehler zu finden, sondern auch Entwickler daran hindern, diese zu beheben.
Auch wenn jeder weiß (oder glaubt, dass er es tut), was die Produktfunktionalität ist, muss dies notiert werden. Sie können eine Anwendung nicht ohne eine klare Spezifikation testen. Eine Spezifikation definiert, was korrektes Verhalten und was ein Fehler ist.
Tests der Interna, die über die Benutzeroberfläche nur schwer zu testen sind, außergewöhnliche Anwendungszustände. Dies ist ein Muss für jedes größere System. Beide Arten von Tests haben eine weitere interessante Eigenschaft: Sie zwingen Sie, jeden Teil des Codes erneut durchzugehen, und Sie werden Fehler / Architekturprobleme feststellen, die Sie noch nie gesehen haben.
Eine der Aufgaben, die die Qualitätssicherung erfüllen sollte, ist die Messung der Codekomplexität. Code mit geringer Komplexität verringert die Möglichkeit von Fehlern (Verhinderung von Fehlern).
Wenn ein Projekt eine bestimmte Größe erreicht oder von vielen Benutzern verwendet wird, sind Codeüberprüfungen ein Muss. Ein anderer Programmierer findet immer Code-Probleme / Fehler, die Sie übersehen hatten. Programmierer sind manchmal blind für offensichtliche Fehler in ihrem eigenen Code.
Dokumentieren Sie Ihren Code und seine Architektur, damit Sie mögliche Fehler erkennen können (meine eigene Erfahrung).
Tester ist kein Affe, der nur durch die Benutzeroberfläche klickt. Ein Tester übernimmt die Spezifikation und die Anwendungsfälle und erstellt Testfälle. Dann testet er sie einzeln. Wenn ein Fehler von Endbenutzern gemeldet wird, muss ein Testfall hinzugefügt werden.
Ein Programmierer sollte niemals die Spezifikation (1) erstellen. Sie sind nicht da, um die Funktionalität zu bestimmen. Normalerweise müssen sie mit den Endbenutzern sprechen, Grafikdesigns erstellen usw. Es ist eine zeitaufwändige Aufgabe. Wenn ein Programmierer die Funktionalität entscheidet, endet dies normalerweise mit "Es ist in Ordnung, aber können Sie bis morgen alles in diesem Fenster ändern?" "das ist nicht was ich wollte" "es funktioniert, aber es ist schwer zu benutzen" "es fehlt die einzige Funktionalität, die wir wirklich brauchten".
Was ein Programmierer erreichen kann, ist 2, 3 und 5.
Sie benötigen einen anderen Programmierer für 4. Jedes Unternehmen mit einem großen IT-Projekt und nur einem Entwickler, der das System kennt, betritt einen sehr gefährlichen Bereich.
Wenn Sie nicht genug Zeit haben, sollten Sie sich nie die Mühe machen, Testfälle zu erstellen (5). Eine engagierte Person wird normalerweise benötigt, da dies viel Zeit in Anspruch nimmt. Ohne Testfälle ist Testen nur ein Scherz.
quelle