2009-05-29 6 views
9

Ich kämpfe um herauszufinden, was von Funktionstests ausgeschlossen werden sollte (in meinem Fall mit Rails, aber ich denke, das Framework ist wahrscheinlich irrelevant).Verwirrung: Funktionsprüfungen weglassen, die den gleichen Boden wie Einheitstests abdecken?

Ich habe den Eindruck, dass ich keine Funktionstests für Dinge verwenden sollte, die in Komponententests abgefangen werden - z. B. um zu überprüfen, ob ein Feld nicht zu viele Zeichen enthalten kann oder dass ein Feld " Sei leer. Wenn dies der Fall ist, welche Eventualitäten sollten auf jeden Fall mit Funktionstests getestet werden und/oder wie lautet die Faustregel, dass andere nur für Komponententests übrig bleiben sollen?

Oder ist dieser Eindruck zu Beginn falsch?

Ich habe bei this sah und this aber ich bin immer noch mit einem Verlust.

Antwort

7

Funktionstest: Macht es die Dinge Marketing/Usability/Kunden abgemeldet für? Wenn Ihre Spezifikation ausdrücklich angibt, dass das ZIP-Textfeld nur gültige US-Postleitzahlen zulässt, sollten Sie dies wahrscheinlich in einem Funktionstest testen.

Komponententest: Macht es was der Entwickler erwartet es zu tun? In diesen Tests sollten Sie test double verwenden, um den Code von Abhängigkeiten zu isolieren.

Also ja, es wird eine Art Überlappung geben.

+0

Also sollten Sie in Funktionalen dann jede mögliche Kontingenz testen? Es hört sich so an, als könnte man wirklich nichts aus den Funktionalen herauslassen. – fig

+0

Ich glaube nicht, dass Sie jede Kontingenz in Funktionalen testen, Sie testen die Kontingenzen, die explizit in der Spezifikation angegeben sind. Sie werden wahrscheinlich auch Unit-Tests für diese haben, und hoffentlich einige andere Unit-Tests für Dinge, an die Sie gedacht haben und die nicht. – Robert

+0

Ich bin definitiv * kein * Testexperte. Also hüte dich davor, irgendeinen Rat von mir zu nehmen, aber ich würde zumindest eine Überprüfung der Funktionen durchführen, die in der Spezifikation verlangt werden. Ihr Gerätetest kann Brute-Force-Tests mit allen möglichen US-Postleitzahlen durchführen, aber Ihr Funktionstest kann 1 ungültigen und 1 gültigen Zip-Test versuchen. – dss539

3

Ich für einen würde "spike" durch die Funktionalität mit Funktionstests und keine Sorge über alles abdecken und stattdessen konzentrieren sich auf die Unit-Tests.

Gründe:

  • Funktionstests sind langsam
  • Funktionstests schwer
  • funktionelle Tests zu schreiben und halten nur zwei zusätzliche Elemente neben Komponententests fangen:
    • GUI Bugs
    • Kreuzschicht Mismatches

Alles in allem habe ich festgestellt, dass es sich nicht auszahlt, alles doppelt abzudecken.

+0

Wie wählen Sie bei Ihrer Herangehensweise, welche Dinge abgedeckt und welche übersprungen werden sollen? Ist es zufällig oder gibt es eine Faustregel? – fig

+1

Faustregel ist, einen Anwendungsfall aus einer "Geschichte" mit einem Integrationstest zu decken. Zum Beispiel, wenn ich eine Zahlungsseite hätte, würde ich einfach eine erfolgreiche Zahlung verarbeiten, um zu bestätigen, dass die Integration richtig gemacht wird. Der Unit-Test würde alle anderen Fälle abdecken. –