The most important thing is "modularity" -- breaking up large projects into a lot of smaller pieces, each of which can be tested separately. One important example of this is procedural decomposition, where you break up long methods into more small methods (with parameters and return values), that you can test separately.
(There are also some techniques, like "unit testing", that help to make testing the small pieces faster and easier...)