Differential of a smooth map over a manifold So the definition of differential of a smooth map between manifolds, $f:M\longrightarrow N$, at a point $p\in M$ is:
$f_{*p}:T_{p}M\longrightarrow T_{f(p)}N$, where $f_{*p}(X)\in T_{f(p)}N$ and for real-valued smooth function on $N$, $g:N\longrightarrow \rm I\!R$, we have $f_{*p}(X)(g)=X(g\circ f)$. But recently I have seen some "without-test-function" definition when we have more than one consecutive differentials:
$$f:M\longrightarrow N, g:N\longrightarrow R$$
$$g_{*f(p)}(f_{*p}X)=X(g\circ f).$$
Which bothers me a lot and I want to know why it is ok to use. Here is an example from a book (and it is not only in that one book so it must be right but no clue why and how) 
Thank you!
 A: Keep in mind that this is an equality only if we take into account some identifications between objects involved in the question. Since the differential is a map between tangent spaces, $g_{*f(p)}(f_{*p}(X))$ is an element of $T_{g(f(p))}\mathbb{R}$, while $X(g \circ f)$ is an element of $\mathbb{R}$, since $X$ is a tangent vector of $M$ at $p$.
What happens is that we have a natural identification between $T_{t_0}\mathbb{R}$ and $\mathbb{R}$ for any real number $t_0$ given by the map
$$
t \mapsto t \cdot \frac{d}{dt}\Bigg\rvert_{t_0}.
$$
What we need to show then, to understand what the book means by the equality mentioned, is that
$$
g_{*f(p)}(f_{*p}(X)) = X(g \circ f) \cdot \frac{d}{dt}\Bigg\rvert_{t_0}. 
$$
Since $T_{g(f(p))}\mathbb{R}$ is a 1-dimensional vector space generated by $d/dt\rvert_{g(f(p))}$, we know that
$$
g_{*f(p)}(f_{*p}(X)) = \alpha \cdot \frac{d}{dt}\Bigg\rvert_{g(f(p))}
$$
for some constant $\alpha \in \mathbb{R}$. To find out the value of the constant, we evaluate the two sides on a certain "test function" so as to simplify the equations. In this case, we can take this test function to be the identity function $1_{\mathbb{R}}$.
To evaluate the left side, we just use the definition of the differential along with the Chain Rule
$$
g_{*f(p)}(f_{*p})(X)(1_\mathbb{R}) = (g \circ f)_{*p}(X)(1_\mathbb{R}) = X(1_\mathbb{R} \circ g \circ f) = X(g \circ f).
$$
To evaluate the right side you just differentiate normally. Comparing the two sides then we obtain that $\alpha = X(g \circ f)$ and so we have the equality
$$
g_{*f(p)}(f_{*p}(X)) = X(g \circ f) \cdot \frac{d}{dt}\Bigg\rvert_{g(f(p))},
$$
so $g_{*f(p)}(f_{*p}(X)) = X(g \circ f)$ if we consider the identification between $T_{g(f(p))}\mathbb{R}$ and $\mathbb{R}$.
As a final note, it is important to take a look at the book you are reading to see how he defines all these objects. There are certainly many approaches to defining tangent spaces, and different approaches have different identifications and actual equalities. 
A: The "without-test-function" way of computing $d_p f = (f_\ast )_p$ comes another version of what is meant by a tangent vector.  That is, there are two (equivalent) definitions of tangent vector.
The first definition of a tangent vector is that a tangent vector $v\in T_p M$ is an equivalence class of derivative of a curve.  That is, there is a curve $\gamma:(-\epsilon,\epsilon)\rightarrow M$ for which $\gamma(0) = p$, $\gamma'(0) = v$.  Further, two such curves are called equivalent if in local coordinates, they have the same derivative at $p$.
The second definition of a tangent vector is that $v\in T_p M$ means that $v:C^\infty(M)\rightarrow \mathbb{R}$ acts on $C^\infty(M)$ as a linear transformation satisfying the Leibniz rule: $v(fg) = f(p) v(g) + v(f) g(p)$.  That is, $v$ is a derivation of $C^\infty(M)$.
The link between the two:  given any vector $v\in T_p M$, write it as $\gamma'(0)$.  Then $\gamma'(0)$ acts on $f\in C^\infty(M)$ by $\gamma'(0)(f):= \frac{d}{dt}|_{t=0} f(\gamma(t))$.  Further, it's a not-too-hard-but-not-trivial exercise to show that every derivation arises from this construction.
How does pushforward work in definition one?  Well, given $v \in T_p M$ with associated curve $\gamma$, and given $f:M\rightarrow N$ smooth, we create an element $f_\ast (v) \in T_{f(p}(N)$ as follows:  $f\circ \gamma$ is a curve in $N$, so $(f\circ \gamma)'(0)\in T_{f(p)}N$. Note that no test function is used here.
How does pushforward work in definition two?  Well, given $v\in T_p M$, and smooth $f:M\rightarrow N$, we pick a test function $g:N\rightarrow \mathbb{R}$.  Then $f_\ast(v)(g) = v(g\circ f)$.
Now, in the beginning of your post, you are using the second notion - you are describing how $X$ acts on functions.  But the first notion is what's occurring in the "textbook" calculation: they are replacing $X$ by a curve $\gamma(t) = \exp(tX)$ with $\gamma'(0) = X$.
