empty - размер контейнера
size/length возвращает чисо символов в строке, причём она может состоять из кучи '\0'.
Поэтому нужно проверить, что строка имеет нулевую длину, либо нулевой символ навен '\0'. if( test.empty() || test[0] == '\0' ) ...
Для сравнения строк есть специальный метод
(string.h) int strcmp( const char * string1, const char * string2 );
Однако, вам достаточно проверить строку на пустоту. Строка пустая, если первый же символ - символ конца строки, поэтому условие должно выглядеть так:
test[0] == '\0'