Müssen sich Tester den Quellcode ansehen?

8

Wie notwendig ist es für Tester, zusätzlich zu Black-Box-Tests White-Box-Tests durchzuführen? Als Entwickler sehe ich Wert darin, dass eine QS-orientierte Person meinen Code durchläuft und nach Schwachstellen sucht. Wenn ein nicht-technischer Tester jedoch gründlich und methodisch genug ist, kann er die Anwendung gut abdecken.

White-Box-Tests können wichtige Testfälle aufdecken, die bei Betrachtung der Anwendung nur aus Anwendersicht nicht offensichtlich sind. Ausschließliche Black-Box-Tests können jedoch weniger Zeit in Anspruch nehmen und die Anzahl der Personen, die in der Lage sind, die Aufgabe auszuführen, erheblich erhöhen . Außerdem sollte der Entwickler eine nicht triviale Anzahl von White-Box-Tests durchführen, bevor er jemals zum Tester gelangt. Stimmt das?

Mr. Jefferson
quelle
7
Die Codeüberprüfung wird nicht getestet.
Job
Bei irgendeiner Art von Software besteht eine kleine Trennung zwischen dem Quellcode und der offensichtlichen Funktionalität der Anwendung. Bei anderen Arten von Software kann die Unterbrechung sehr groß sein.
Rwong

Antworten:

15

White-Box- und Black-Box-Tests sind zwei verschiedene Fähigkeiten - jemand, der sich mit dem einen auskennt, muss sich nicht unbedingt mit dem anderen auskennen.

Vieles, was die Qualitätssicherung tut, werden Black-Box-Tests sein - um sicherzustellen, dass das System "wie angekündigt" funktioniert, und in dieser Hinsicht müssen sie nicht wissen, wie das System funktioniert, um gute Arbeit zu leisten. Tatsächlich kann die Kenntnis des Codes dazu führen, dass sie in die gleichen Fallen geraten, in denen der unachtsame Entwickler seine eigenen Tests durchführt. Es ist weitaus besser, dass sie keine Vorurteile darüber haben, wie der Entwickler glaubt, dass das System funktionieren soll.

Das heißt nicht, dass es keine White-Box-Tests geben sollte - was (teilweise) das Testen von Entwicklereinheiten ist. Eine gute Reihe von Komponententests sollte darin bestehen, gültige Eingaben, ungültige Eingaben und Edge-Case-Eingaben zu testen. Ich denke jedoch nicht, dass es für die Qualitätssicherung immer notwendig ist, dies zu tun - wenn auch aus keinem anderen Grund, als es wirklich in der Verantwortung des Entwicklers liegt.

Wie SnOfus in seinen Kommentaren hervorhebt, können gute White-Box-Tests jedoch äußerst nützlich sein.

ChrisF
quelle
Dies ist bereits eine gute Antwort, aber als Ergänzung würde ich empfehlen, dieses GTAC-Video anzuschauen: youtube.com/watch?v=cqwXUTjcabs
Alvin
1
Dies scheint ein ziemlich enger Standpunkt der Qualitätssicherung zu sein, und ich kann dem wirklich nicht zustimmen. QAs Rolle ist nicht nur "Test geschrieben, nicht bestanden, es ist jetzt das Problem des Entwicklers, meine Hände sind sauber". Das Erkennen von Fehlern und deren Ursache ist ein entscheidender Aspekt der Verantwortlichkeiten von QA. Am Ende ist die Qualitätssicherung da, um sicherzustellen, dass der Code des Entwicklers immer funktioniert . Das erfordert manchmal ein noch genaueres Wissen darüber, wie es funktioniert, als es Entwickler haben.
Steven Evers
Vielleicht liegt die Meinungsverschiedenheit in "Ich muss nicht wissen, wie das System funktioniert". Was @ChrisF bedeutet, ist, dass Black-Box-Tests durchgeführt werden können, ohne dass der Quellcode überprüft werden muss. @SnOrfus bedeutet jedoch, dass die Anforderungen des Systems nicht gut verstanden werden müssen.
Rwong
@rwong: Nein. Das heißt nicht.
Steven Evers
1
Ich glaube nicht , dass es die einzelnen Entwickler Verantwortung ist - es ist die Entwicklung Team Verantwortung.
4

Ich hatte viel Glück in meinem Team mit Testcode-Überprüfungen. Tester neigen dazu, Code genauso zu betrachten wie Anwendungen - sie fragen sich, "wie würde dieser Code nicht funktionieren" und finden häufig Probleme, die Programmierer bei der Codeüberprüfung nicht finden.

Für eine längere Antwort habe ich dieses Papier geschrieben .

Alan
quelle
+1 für Testcode-Überprüfungen und ich wünschte, ich könnte +1 für das ausgezeichnete Papier noch einmal!
Ethel Evans
3

Absolut

Wie ich als Antwort auf @ChrisF sagte: QA ist da, um sicherzustellen, dass der Produktionscode immer funktioniert . Ohne erschöpfend zu sein, bedeutet dies, zu wissen, welche Plattformen erwartet werden, wie der Status des bereitgestellten Computers sein wird, wie die Leistungsanforderungen sind und sicher zu sein, dass jede Linie erfolgreich sein wird.

IME, ein gutes QA-Team wird mehr Code schreiben, lesen und überprüfen als das Entwicklerteam.

Wenn Ihre Feature-Teams und (großen) Bugfix-Teams keinen QS-Entwickler haben, der daran arbeitet, die API, den Workflow, die Sicherheit und alle anderen Aspekte des Features / Fix zu entwerfen, dann verpassen Sie wirklich eine Stärke dass Ihre QS-Abteilung Ihr Produkt während der Entwicklung unterstützen kann .

Steven Evers
quelle
1

Es ist überhaupt nicht notwendig. Anstatt eine QA-orientierte Person Ihren Code durchgehen zu lassen, empfehle ich, dass ein Entwickler Ihren Code durchläuft. Wenn Sie während der Entwicklung Ihres Codes Komponententests schreiben, ist es nicht die beste Nutzung der QA-Zeit, wenn eine QS-orientierte Person Ihren Code durchläuft.

Die QS-Person sollte sich nicht darauf konzentrieren, wie der Code geschrieben wurde, sondern darauf, WAS der Code tut.

Die QS-Person sollte sich auf keine Funktionstests konzentrieren und die Anforderungen für diese Tests nutzen. Am Ende werden Unit-Tests und ein QS-Funktionstester, der Black-Box-Tests durchführt, die beste Zeit für jeden sein.

Dakotah Nord
quelle