The o means an optional argument is expected; if present it should be enclosed in square brackets, so
\documentclass{article}
\usepackage{xparse}
\NewDocumentCommand{\test}{o}{\IfNoValueTF{#1}{test}{#1}}
\begin{document}
\test
\test[gino]
\end{document}
will print
test
gino
Note \test[gino], not \test{gino}.
Such a command can be defined more briefly
\NewDocumentCommand{\test}{O{test}}{#1}
that is, passing to the O specifier the code to execute when the optional argument is not present.
By the way, if #1 stands for a mandatory argument (defined with the specifier m), \IfNoValueTF{#1} will always return false. It returns true when the argument is optional (typically o, but not only) and is not present in the input for the macro call.
xparsepackage and its commands, for example here or here. There seems to be little that the community can gain from this question that wouldn't be found elsewhere. Am I wrong about this? – Sandy G Sep 25 '17 at 17:38