Minecraft wiki entry for Exploring_caves, associated text: Exploring surface
By exploring the surface of the map, there is a good chance that an exposed caves will be found. Surface aquifers may indicate the location of a potentially-expansive cave system, and azalea trees will guarantee a lush cave below.
Digging
Digging around might uncover caves, but it is not easy as the map is (very) large. Choosing a random location and digging a tunnel straight down will intersect a cave system roughly 40% the time, but is not recommended since mining straight down may cause the player to fall in lava, a deep underground cave, or a cave system full of mobs. A diagonal tunnel (downward staircase) takes 3 times as long to dig, but is much safer and can be traversed both ways. Make sure to look out for dripping water or lava above you as it may hint at an aquifer or a lava lake.
Listening
By following the source of ambience, or the sound of mobs coming from underground, there is a great chance to find a cave. It's also useful to follow sound of water and lava.
Piston
Dig down, place a piston and power it. Since pistons don't extend if there are 13+ blocks ahead of them, you can use pistons to find caves.
The Nether
Traveling to the Nether, going down roughly 20 to 30 blocks, along by at least 16 blocks, and creating a new portal will likely cause the new Overworld portal to spawn in a cave since a portal is spawned in the nearest suitable space for the portal.
Cartograph
Use 3rd party software (such as cartograph) to make maps of caves. This can easily lead the player to dungeons or caves.