It sounds like you have a very smart little guy on your hands. If he is that smart, you may want to at least TRY time out.
I used to work in child care with a 12 to 18 month old class. At this age, an appropriate time out would be to:
1. Look him straight in the face and FIRMLY (but not yelling) say, "no!"
2. Pick him up facing AWAY from you (do not let him hold/hug your body/neck).
3. Carry him to his crib or play pen.
4. Put him in, state firmly (still not yelling) "We don't [blank]" (fill in the inappropriate action).
5. Turn around and walk out of the room (do not look into the room for 2 minutes).
6. After 2 minutes, enter the room cheerfully and pick him up from the crib saying something like, "lets go play blocks" or another activity that is in another room from the misbehavior.
Yes, he is TESTING you. He seems very smart to do this at such a young age -- you are right. The best thing to do is let him know that the SAME infraction will occur with EVERY misbehavior. This is how you TEACH the boundaries. Once he realizes where the boundaries are, he will stop.
Just be consistant. You are doing a great job to have such a smart little one.
I hope this helps.
Blessings,
P. <><