This article is from the Asthma FAQ, by Patricia Wrean and Marie Goldenberg firstname.lastname@example.org with numerous contributions by others.
The float test (in which you take the MDI canister out of the
mouthpiece and place it in a container of water to see if it
sinks) is no longer the recommended way to determine whether
your MDI (metered dose inhaler) is empty. Glaxo, the
manufacturer of Ventolin and Beclovent, claims that the float
test is inaccurate, and recommends that doses be counted instead.
Other manufacturers agree: the triamcinolone acetonide (Azmacort)
package insert recommends dose counting also and the cromolyn
sodium (Intal) inhaler package insert states that the metal
cylinder should never be immersed in water. The number of doses
per canister should be clearly written on the canister label.
One variation of dose counting, for medications that are taken
regularly, is to calculate the date on which the medication will
be used up, and discard the old canister for a new one on that date.
There is also a gadget called The Doser. It fits on top of any MDI,
and keeps track of how many doses you've dispensed from the inhaler.
It provides daily totals for the past 30 days, and is useful if
(like me) you tend to forget whether you've taken your maintenance
inhalers already! See http://www.doser.com for more information.
The Doser is over the counter, but the units can be hard to locate -
if a drugstore can get them at all, the pharmacist usually has to
special order them.