A function f(x 1, ... , x d ), where each input is an integer from 1 to n and output is a real number, is Lipschitz if changing one of the inputs by 1 changes the output by at most 1. In other words, Lipschitz functions are not very sensitive to small changes in the input. Our main result is an efficient tester for the Lipschitz property of functions f : [n] d → δℤ, where δ ∈ (0,1] and δℤ is the set of integer multiples of δ. The main tool in the analysis of our tester is a smoothing procedure that makes a function Lipschitz by modifying it at a few points. Its analysis is already nontrivial for the 1-dimensional version, which we call Bubble Smooth, in analogy to Bubble Sort. In one step, Bubble Smooth modifies two values that violate the Lipschitz property, i.e., differ by more than 1, by transferring δ units from the larger to the smaller. We define a transfer graph to keep track of the transfers, and use it to show that the ℓ 1 distance between f and BubbleSmooth(f) is at most twice the ℓ 1 distance from f to the nearest Lipschitz function. Bubble Smooth has other important properties, which allow us to obtain a dimension reduction, i.e., a reduction from testing functions on multidimensional domains to testing functions on the 1-dimensional domain, that incurs only a small multiplicative overhead in the running time and thus avoids the exponential dependence on the dimension.