Frage

Grundsätzlich frage ich mich, ob jemand irgendwelche Tipps hat, um sicherzustellen, dass Ihr Code gut getestet wird, ohne Hilfe von jemand anderem in einem begrenzten Zeitrahmen zu erhalten?

In der Vergangenheit konnte ich immer jemanden finden, der in meinem Code getestet wurde, oder hatte ein engagiertes Qualitätssicherungsteam alles und fand alle Fehler.

Ich bin normalerweise ziemlich vorsichtig, aber ich finde dort immer eine Dinge, die ich vermisse, und wenn ich sie teste, sehe ich sie einfach nicht.

In meinem aktuellen Job habe ich jedoch zwei PHP -Webanwendungen erhalten, um in einem sehr begrenzten Zeitrahmen zu schreiben, und mir wurde gesagt, dass ich trotz meines Feedbacks alle Tests selbst durchführen muss, dass dies keine gute Idee war.

Ich habe mich gefragt, ob noch jemand dieses Problem hatte und etwas Erkenntnisse geben könnte.

Ich dachte, es wäre vielleicht gut, einen kurzen Testplan zu schreiben, bevor er jeden Bereich codierte, und auch die Anforderungen zu überprüfen, bevor Sie das Testen durchführen.

War es hilfreich?

Lösung

Sicherlich sollte Unit-Tests, ob Test-First oder nicht, Ihre erste Verteidigungslinie sein, um sicherzustellen, dass jedes Stück Ihrer Anwendung so funktioniert, wie Sie es denken. Die Art der Tests, über die Sie sprechen, bei der es hilfreich sein kann, ein weiteres Augenpaar zu bekommen, ist jedoch mehr im Bereich von Akzeptanztests - die Anwendung als Ganzes so, wie es sollte. Funktioniert es für verschiedene seltsame Szenarien oder Verhaltensweisen usw.

Ein hilfreicher Ansatz besteht darin, sich Personas vorzustellen: Testen Sie zuerst die Anwendung als Sie selbst, testen Sie sie jedoch erneut vor, dass Sie 85 Jahre alt sind, nicht schrecklich gut sehen und keine Maus so gut verwenden können. Möglicherweise klicken Sie auf das hellste oder größte Ding, vorausgesetzt, es ist das, was Sie tun sollen, was es möglicherweise nicht ist. Stellen Sie sich jetzt vor, Sie sind 12 und eilig. Auf keinen Fall werden Sie Anweisungen lesen. Funktioniert es noch?

Was sind die Kantenfälle für ein bestimmtes Feld, in was eine Person eingeben könnte? Was passiert, wenn Sie nur Räume eingeben? Nur Zahlen in ein Textfeld? Was passiert, wenn Sie HTML eingeben? JavaScript? Etwas in einem nicht-westlichen Alphabet? Was ist, wenn Sie etwas wirklich wirklich lang tippen?

Der Schlüssel ist nicht nur, um den "glücklichen Pfad" zu testen, in dem der Benutzer die Anwendung so durchläuft, wie Sie es im Sinn hatten. Gehen Sie die Anwendung auf eine Weise durch, die niemand jemals sollte. Weil ... sie werden.

Das andere wichtige Stück ist nie, etwas zu ignorieren. Es ist einfach, einen seltsamen Bildschirm zu haben und sich selbst zu sagen: "Oh, das ist nur ein Zufall." Sie müssen sich bemerken und alles aufspüren, was nicht nur so ist, wie es sein sollte.

Andere Tipps

Es gibt immer Einschränkungen dafür, wie viel Test Sie durchführen können. Innerhalb der Einschränkungen müssen Sie offensichtlich Tests konstruieren. Es ist klar, dass Sie zuerst Tests für die kritischsten Bereiche konstruieren möchten (Sicherheit, Wahrscheinlichkeit von Schäden, Datenverlust, Funktionalität).

Abgesehen von der Funktionsspezifikation erhalten Sie wahrscheinlich nicht viel manuelle Hilfe bei der Entscheidung, was Sie testen möchten. Sie können jedoch automatisierte Hilfe in Form von Tools zur Testabdeckung erhalten. Diese Tools sagen Ihnen, welchen Code Sie getestet haben und daher welchen Code Sie nicht getestet haben. Durch die Überprüfung des nicht getesteten Code können Sie feststellen, ob er mehr oder weniger kritisch ist und daher mehr oder weniger verdient wird, Tests vor der Freigabe zu codieren. Die Testabdeckungsinstrumente geben Ihnen auch das Verhältnis von getesteten Code gegenüber dem Gesamtcode an, und es ist eine Best Practice in der Branche, um sicherzustellen, dass dieses Verhältnis 70% oder höher beträgt. Sie können diese Daten verwenden, um mehr Zeit mit Ihrem Chef mit einem einfachen Kunsthandwerk zu verhandeln: "Wir haben nur 15% Testberichterstattung ... Wagen wir es freigeben?"

Ein Testabdeckungsinstrument, das mit PHP funktioniert, finden Sie hier:Semantische Entwürfe PHP -Testabdeckungsinstrument

Ich denke, TDD ist genau das, wonach Sie suchen. Schreiben Sie zuerst Tests und schreiben Sie dann den Code, der die Tests besteht. Sie brauchen sonst niemanden von Ihnen (einige Hilfe bei den Tests würden jedoch empfohlen) und Sie werden eine klarere Vorstellung davon haben, was das Tool tun sollte, noch bevor Sie mit der Codierung beginnen.

http://en.wikipedia.org/wiki/test-driven_development

Ihr Arbeitgeber glaubt eindeutig nicht, dass Tests wichtig sind. Sie sollten kündigen und einen richtigen Job finden.

Ich hasse es, es zu sagen, aber ich denke in deinem Fall, Alex Tingles Recht. Es ist eine unmögliche Situation.

Jacobm und Santi erwähnen die Unit-Tests, die Annahmeprüfung und die testgetriebene Entwicklung korrekt. Ich würde dieser Liste Codeabdeckung und statische Analyse -Tools hinzufügen.

Während sich TDD- oder Basic -Unit -Tests im Allgemeinen in verkürzter Testzeit, gesenkter Defektquoten und einer einfachen Wartung auszahlt, helfen sie Ihnen jedoch nicht, pünktlich in einem Deathmarch zu liefern. Dies gilt insbesondere dann, wenn Sie beim Schreiben automatisierter Tests nicht mehr erfahren haben.

Ihr Chef bittet Sie höflich und bittet Sie, technische Schulden zu verursachen. Er bittet Sie richtig formuliert und bittet Sie, die berufliche Ethik zu ignorieren.

Lächle, sag "Ja, Sir", tun Sie in der zugewiesenen Zeit das Beste, was Sie können, und aktualisieren Sie Ihren Lebenslauf.

Eine Sache, die Sie beachten sollten, ist, dass ein Entwickler eine natürliche Tendenz gibt, den "besten Weg" für seinen Code zu testen. Mit anderen Worten, Sie haben es geschrieben, also wissen Sie, dass Sie auf bestimmte Stellen klicken, bestimmte Dinge eingeben und dies dafür testen. Dies ist natürlich wichtig.

Es gibt hier einige gute Vorschläge, aber die, die von den meisten (aber nicht allen) übersehen zu werden scheint, ist negative Tests. Grundsätzlich müssen Sie die Grenzen testen und die böswilligen testen. Geben Sie wie bereits erwähnt den Skriptcode in Felder wie:

<script>alert('abc')</script>

Es wird ziemlich offensichtlich, dass Sie es nicht richtig codieren konnten, wenn Sie eine Warnung erhalten! Eine andere Sache zu tun ist:

abc' or 'a' = 'a'

Dies zeigt möglicherweise SQL -Injektionsprobleme bei Dingen wie Authentifizierung. Sie können auch die SQL -Injektion mit Dingen wie: testen:

abc'; drop table users; select * from dual where 'a' = '

Wenn Ihr Tisch gerade weggegangen ist, haben Sie ein Problem! Es gibt eine große Anzahl von Beispielen, aber zumindest müssen Sie einige Zeit damit verbringen, die OWASP Top 10 zu testen.

Andere Orte, an denen Sie testen möchten, sind Dinge wie sehr große Zahlen, insbesondere wenn Sie eine Integer -Eingabe auf einer 32 -Bit -Plattform, negative Werte, keine Werte usw. erwarten, testen Sie, dass die gewünschten Ströme funktionieren und dann alles tun, um es zu brechen .

Ich stimme der vorherigen Antwort über den Wert und die Effektivität der Testentwicklung und die Einheitstests zu. Wenn Sie korrekt durchgeführt werden, hilft Ihnen ein TDD -Prozess, bei dem Sie Ihre Unit -Tests schreiben, bevor Sie den Produktions-/lieferbaren Code schreiben, Ihren Fokus beibehalten und Ihr Design und Ihre Schnittstellen validieren. Darüber hinaus können andere Entwickler eine klare und konsistente Möglichkeit haben, wie Sie Ihren Code in sehr geradliniger Weise verwenden und konsumieren können. Denken Sie nur daran, dass Unit -Tests nicht gleich sind und kein Ersatz für vollständige Integrationstests sind. Bei diesem Ansatz müssen Sie möglicherweise noch einen vollständigen Integrationstestplan schreiben.

Ich arbeite primarliy in .NET und habe nur gute Ergebnisse bei der Arbeit mit Nunit erzielt.

Ich habe noch nicht in PHP gearbeitet, aber nach dem, was ich gesehen habe, möchten Sie vielleicht berücksichtigen Einfachste oder Phpunit.

Angesichts der Anforderungen Ihres Chefs, die Sie respektieren müssen, während Sie für ihn arbeiten und bis Sie seine Meinung ändern können, haben Sie in der Frage die richtige Antwort gegeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top