Bzgl, wie soll eine Test-Methode aussehen, dass sie hilft. Da gibt es verschiedene Aspekte.
Lesbarkeit
Ein Test, der nicht lesbar ist, hilft nichts im Fehlerfall. Weil dann versteht man nicht ist der Test falsch oder hab ich was kaputt gemacht. Das heißt an einen Test gelten ähnliche Anforderungen wie an Produktiv-Code. Er sollte verständlich sein, möglichst Duplikatsfrei etc. Konstanten/Werte sollten sinnvoll benannt sein
Vollständigkeit
Wie testet man alle Konstellation ab? Hier gibt es zwei Dinge, die man im Kopf haben sollte.
a) Äquivalenzklassen. Man kann oft nicht alle Eingaben testen. Das heißt, man bildet Äquivalenzklassen von Werten, die fachlich und technisch identisch sein sollten. Und dann nimmt man einen Vertreter (oder drei - untere Grenze, obere Grenze, mitten Drin) daraus und testet das Verhalten für die ab. Wie man die findet, hängt von der zu testenden Funktion ab. Bei Zahlen bietet es sich an immer mindest drei Äquivalenzklassen zu haben - kleiner 0, gleich 0 und größer 0. Können aber auch mehr sein.
b) Fehlerhafte Eingaben
Man neigt bei Testfällen oft dazu sich auf die Werte zu fokussieren, wo sich die Methode sinnvoll verhält. Fast noch wichtiger sind aber die Aufrufe, die nicht ok sind. Das ist oft null, Leerstrings oder ähnliches. Auch für diese Eingaben sollte eine Funktion ein definiertes Verhalten zeigen (Was durchaus eine Exception sein kann). Die sollten daher auch getestet werden.