Jeśli mogę coś zaproponować, to zainteresuj się property testingiem. W ten sposób będziesz miał ogromną ilość testów, testujących często dziwne przypadki, praktycznie za darmo. Przykładowo:
property "non-empty message sent is received" do
from = create_user()
to = create_user()
check all message <- string(:printable, min_length: 1) do
Communicator.send(message, from, to)
assert message in Communicator.messages(to)
end
end
test "empty message is not sent" do
from = create_user()
to = create_user()
Communicator.send("", from, to)
assert [] == Communicator.messages(to)
end
(tutaj użyłem przykładu w Elixirze, ale idea mam nadzieję jest dość czytelna)
W ten sposób masz zapewnione, że jeśli ktoś wyśle ciąg drukowalnych znaków, to odbiorca powinien taką wiadomość otrzymać. Dodatkowo jeśli gdzieś będzie błąd to narzędzia tego typu są "inteligentne" na tyle, że postarają się zrobić redukcję przykładów, by zwrócić jak najmniejszy możliwy przykład, który wywołuje błąd.