Testen Sie Ihren Code, bevor Sie ihn zur QA freigeben

8

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?

    
user279521 16.06.2010, 13:22
quelle

10 Antworten

20

Entwickler arbeiten normalerweise von innen nach außen, mit einem Fokus auf den Code:

  • Behauptungen - Überprüfen Sie den Datenfluss und die Strukturen
  • Debugger - Code-Flow und Daten überprüfen
  • Statischer Analysator - überprüfen Sie Codierungsstandards und finden Sie bekannte Fehler
  • Komponententest - Überprüfen Sie jede Funktion
  • Integrationstest - verifiziere Subsysteme
  • Systemtest - verifiziere die Funktionalität
  • Regressionstests - verifizieren, dass Fehler behoben sind
  • Sicherheitstests - verifizieren Sie, dass das System nicht leicht durchdrungen werden kann.

Tester hingegen funktionieren normalerweise von außen nach innen, mit einem Fokus auf die Features:

  • Akzeptanztests - überprüfen Sie die Endbenutzeranforderungen
  • Szenariotests - überprüfen Sie reale Situationen
  • Globale Tests - verifizierbare Eingaben
  • Regressionstests - verifizieren, dass Fehler behoben sind
  • Usability-Tests - verifizieren Sie, dass das System einfach zu bedienen ist
  • Sicherheitstests - verifizieren Sie, dass das System nicht leicht durchdrungen werden kann
  • Code coverage - Testen des unberührten Codes
  • Kompatibilität - mit früheren Versionen
  • Auf der Suche nach Macken und Ecken und Kanten.

Endnutzer arbeiten im Allgemeinen ziemlich zufällig von außen:

  • Akzeptanztests - überprüfen Sie die Endbenutzeranforderungen
  • Szenariotests - überprüfen Sie reale Situationen
  • Usability-Tests - verifizieren Sie, dass das System einfach zu bedienen ist
  • Auf der Suche nach Macken und Ecken und Kanten.
RoadWarrior 16.06.2010, 13:34
quelle
5

Ein Entwickler sollte IMMER seinen Code zu seiner eigenen Zufriedenheit testen, dass er so funktioniert, wie er es erwartet.

Das QA-Team ist da, um zu testen, wie ein Endbenutzer die Dinge finden und tun würde, an die der Entwickler gerade nicht gedacht hat.

    
Robin Day 16.06.2010 13:20
quelle
3

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 ..

    
Rob Lambert 22.06.2010 21:25
quelle
2

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.

    
Otávio Décio 16.06.2010 13:18
quelle
2

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.).

    
Gilbert Le Blanc 16.06.2010 13:31
quelle
2

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.

    
Bryan Oakley 16.06.2010 13:53
quelle
1

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).

    
AllenG 16.06.2010 13:18
quelle
1

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.

    
Julius A 16.06.2010 13:19
quelle
1

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:

  • Erstellen Sie erste Testfälle
  • Schätzen Sie, was brechen könnte

Beim Codieren:

  • Autocomplete-Symbolnamen
  • Markieren Sie die Symbolnamen, um zu überprüfen, ob sie identisch sind
  • Tippen Sie ruhig, um Tippfehler zu vermeiden
  • Kleinere Beträge gleichzeitig codieren
  • Fragen Sie Ihre Kollegen
  • Teilnahme an der Paarprogrammierung
  • Notieren Sie weitere Testfälle
  • Schätzen Sie weiter, was brechen könnte
  • Verwenden Sie guten OOD und sauberen Code
  • Verstehen Sie den Code
  • Lassen Sie den Code für einige Zeit (Tage) und kommen Sie zurück, um es zu überprüfen
  • Führen Sie Diffs für persistente Daten aus, um sicherzustellen, dass sie sich entsprechend ändern
  • Syntax Checker zur Überprüfung von Fehlern
  • Syntax-Checker, um Fehlverhalten zu vermeiden und den Kodierungsstandard durchzusetzen
  • Komponententests
  • Automatische Funktionstests
  • Manuelle Funktionstests
  • Validierung der Ausgabe

Vor der Übergabe:

  • Arbeitskopie aktualisieren und alle Tests und Validierungen ausführen
  • Debugger run
  • Rechtschreibprüfung
  • Diff Vergleich was sich geändert hat
  • Peer Review
  • Schätzen Sie, was brechen könnte

Integrationsserver

  • Syntax-Prüfer
  • Automatische Tests und Validierungen
  • Rauchtest
  • Peer-Review-Benachrichtigung

Freigabe zur Qualitätssicherung:

  • Führen Sie Tests im Staging-Bereich durch
  • Ausgabe validieren
  • Benachrichtigen Sie die QA über den Abschluss der Aufgabe und senden Sie die Schätzungen des Bruchs

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.

    
Heikki Naski 19.03.2013 11:31
quelle
0

Als Entwickler können Sie Ihren Code bis zu einem gewissen Grad wie folgt testen:

  • Unit Testing, sobald die Module vollständig erstellt sind
  • Integration Testing nach der Integration von zwei oder mehr Modulen ist fertig.

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.

    
Kedar T 13.05.2013 13:43
quelle

Tags und Links