I try to think of counterexamples to everything. So this function takes a number...does it work with any number? Is there one that can break it? Or such-and-such a function returns a dict, but does it
always return that type? Is there any way it can return anything else?
Another approach I use is to try to make things I don't want to happen impossible if the language can allow that. Want to make sure you have no duplicates in your list? Use a set (if your language has that). Things like this have the added advantage of making your intentions clear (a massively underrated concern imo).
I'm also a big fan of minimizing return statements and I think it reduces bugs but that's harder to prove. My ideal functions have one return statement.