Ich habe Entwickler sagen hören, dass Leute, die Code schreiben, nicht diejenigen sein sollten, die es testen. Ich suche nach Erfahrungen von Menschen in dieser Situation. Viele Male habe ich meinen Anteil an der Entwicklung geleistet, dann an die QA-Abteilung entlassen und den Code an mich zurücksenden lassen, weil ein Teil der Anwendung aufgrund meiner Kodierung gebrochen war, unabhängig davon, wie sehr ich sie vorher getestet hatte QA-Freigabe.
Hat irgendjemand auf dieser Platine einen Prozess zu befolgen, der es ihnen ermöglicht, ihren Code gründlich zu testen, bevor er zur Qualitätssicherung freigegeben wird?
Entwickler arbeiten normalerweise von innen nach außen, mit einem Fokus auf den Code:
Tester hingegen funktionieren normalerweise von außen nach innen, mit einem Fokus auf die Features:
Endnutzer arbeiten im Allgemeinen ziemlich zufällig von außen:
Interessante Frage. Ich werde versuchen, Ihnen aus der Sicht der Tester einen guten Überblick zu geben.
Wenn ich einen Build bekomme, würde ich erwarten, dass der Code auf einer Unit-Test-Ebene getestet wird, um einige der Grundlagen zu überprüfen. Dies bedeutet, dass wenn ich einige grundlegende Grenzwertüberprüfungen einfüge, es nicht umfällt. Beispiel: Wenn ein Feld 0-100 akzeptiert, sollte es 101 und -1 korrekt behandeln.
Das ist ein einfaches Beispiel. Ich denke, wenn Leute sagen, dass du deinen eigenen Code nicht testen solltest, beziehen sie sich auf die traditionelle Testphase, die normalerweise von geschulten Testern durchgeführt wird. Das bedeutet nicht, dass es nicht auf einer Einheitsebene getestet werden sollte. Ich befürworte auch, es manuell zu testen, auch nur um zu überprüfen, dass es die Grundlagen durchführt.
Wenn ich Code schreibe, schreibe ich Komponententests, Integrationstests (wenn möglich) und überprüfe sie auf jeden Fall manuell auf Grundlagen. Das Problem ist jedoch, dass Testcode, den ich geschrieben habe, niemals so effektiv ist wie jemand, der sie testet. Ich habe Annahmen und Ideen über den Code, die bedeuten könnten, dass ich Bits überspringe oder ignoriere. Ich darf zu viel annehmen. Übernehmen Sie zu viel als selbstverständlich. Denke ich weiß, was der Code tut. Ein Pro-Tester wird diese Annahmen vermeiden und daher oft Fehler finden, die Sie möglicherweise nicht finden.
Ein guter Tester wird auch Kantenfälle, Benutzerfreundlichkeit und eine ganze Reihe von interessanten Bereichen prüfen.
Es gab einen Kommentar hier, dass die Spezifikationen vage und daher schwierig zu schreiben Tests sein könnten. Aber als Tester würde ich auch vorschlagen, dass das nicht auch die Programmierung kompliziert macht?
Nach meiner Erfahrung lohnt es sich, einen Entwickler und Tester zusammen zu stellen, um Komponententests zu schreiben. Es ist ein erstaunlicher Anblick und die Breite der Berichterstattung ist oft ausgezeichnet.
Prost Rob ..
Ein Entwickler sollte den Code im Umfang der angegebenen Spezifikationen testen. Was häufig passiert, ist, dass Spezifikationen unklar oder falsch interpretiert werden, und das wird von jemand anderem, der QA durchführt, aussortiert, was normalerweise bedeutet, dass die Entwickler die Spezifikationen verifizieren, dass die Implementierung das tut, was sie tun sollte, und wenn das nicht der Zeitpunkt ist, an dem die Fehlanpassungen gefunden und zur Reparatur zurückgeschickt werden.
Der Entwickler testet ihren Code, um sicherzustellen, dass der Code so funktioniert, wie der Entwickler es ausführen möchte.
Das QA-Team testet den Code, um sicherzustellen, dass der Code so funktioniert, wie das QA-Team in der Dokumentation denkt.
Das QA-Team testet nicht nur den Code. Das QA-Team testet die Wirksamkeit der Kommunikation zwischen den interessierten Parteien (Kunden, Entwickler, Qualitätssicherung, Management, etc.).
re: "Ich habe von Entwicklern gehört, dass Leute, die Code schreiben, nicht diejenigen sein sollten, die es testen."
Wenn sie es nicht testen, woher wissen sie, ob es funktioniert oder nicht? Die wirkliche Antwort lautet: "Leute, die Code schreiben, sollten nicht nur diejenigen sein, die sie testen". Es stimmt, dass wir als Entwickler blinde Flecken in Bezug auf unseren eigenen Code haben ("Ich weiß, dass ich diesen Code nicht berührt habe, also muss ich ihn nicht testen ...") und brauche Hilfe .
Idealerweise sollte für jede testbare Einheit ein Komponententest durchgeführt werden. Entwickler, die diese Einheiten schreiben, schreiben typischerweise die Komponententests, aber das muss nicht so sein. Aber Komponententests sind nur ein Teil der Geschichte. Testprofis sollten für Integrations- und Systemtests eingesetzt werden.
Meine Faustregel ist ein Unit Test für jede Methode, die einen Wert zurückgibt. Sobald Sie ganz grün sind, geht es an QA.
Ja, QA wird wahrscheinlich immer noch Defekte finden. Ihre Aufgabe ist es, über Situationen nachzudenken und sie zu testen, die Sie nicht berücksichtigt haben. Im Allgemeinen glaube ich nicht, dass es wahrscheinlich und sicherlich nicht üblich wäre, Code ohne Probleme während der ersten Iteration direkt durch QA laufen zu lassen (abgesehen von Bugfixes und sehr kleinen Änderungen).
1) Ja, als Entwickler müssen Sie viele Komponententests schreiben. Diese helfen Ihnen, Fehler früher im Zyklus zu finden, bevor Sie sie an Ihr QA-Team weiterleiten.
2) Ja, als Entwicklungsteam müssen Sie auch Systemintegrationstests durchführen, um sicherzustellen, dass Ihre Komponente keine anderen vorhandenen Funktionalitäten durchbricht.
Hier sind einige Ideen, um sicherzustellen, dass Ihr Code aus der Sicht von eine Aufgabe abschließen. Ich würde nicht empfehlen, jede dieser streng für jeden zu tun kleine Aufgabe, aber verwenden Sie das folgende als eine Checkliste, um Ihnen Ideen zu geben. Unterschiedliche Aufgaben erfordern unterschiedliche Prüfmengen.
Bevor Sie mit der eigentlichen Programmierung beginnen:
Beim Codieren:
Vor der Übergabe:
Integrationsserver
Freigabe zur Qualitätssicherung:
Einige davon können bei jedem Speichern der Datei automatisiert werden bearbeitet. Normalerweise ordne ich mindestens eine Fehlerüberprüfungssyntax linter ab, die ausgeführt wird, wenn die Datei gespeichert wird.
Als Entwickler können Sie Ihren Code bis zu einem gewissen Grad wie folgt testen:
System Testing kann auch bis zu einem gewissen Grad durchgeführt werden. Die Hauptarbeit QA ist, dass er die Benutzeranforderungen herausfindet und das System entsprechend überprüfen kann. Auch die QA hat den Code praktisch überprüft, wodurch immer mehr Fehler gefunden werden können.
Auch Benutzerakzeptanztests können von der QA auf systematischere Weise durchgeführt werden, da sie eine Vorstellung davon haben, was der Benutzer eigentlich möchte. Es wird gesagt, dass "Dritte aus Ihrem Code mehr Fehler als Sie herausfinden können". Daher ist Qualitätssicherung auch dann notwendig, wenn Entwickler ihren Code gründlich testen.