Give a concise argument for testing public behavior.
Test public behavior because it’s the contract users depend on. If tests target internals, they become brittle: harmless refactors break tests even when the software still works. By testing observable inputs/outputs and side effects, you verify real correctness while preserving freedom to change the implementation.