Nice to read you solved your problem, but I need to give you some small hints for a better understanding of Arduino programs.
First of all, digitalRead() returned value is actually not "true" or "false", but HIGH or LOW. They're symbols, meaning respectively the value 1 and 0.
Second, to test a value or an expression for true or false it's useless to compare it with true or false.
So instead of:
while (digitalRead(button) == true)
you can simply write:
while (digitalRead(button) == HIGH)
or, knowing that any value different from zero is considered "true", making simpler as
while (digitalRead(button))
If you use INPUT_PULLUP you must just invert the logic to:
while (digitalRead(button) == LOW)
After that, when dealing with buttons pressed, you should handle what to do if keep pressing the button. Moreover, there's no need to use "while()", it's useless continuosly print 10 times per second the same message! With your code, the LCD willi continuosly print the message making it unnecessarily flicker, especially because you keep clearing thousands of times per second (the loop() function is continuosly called).
After the message is printed, just wait for the button release, something like this (it's just an example, the code strictly depends on what you want to do while button is pressed, if you need to do it once or not, if you need to do something else in the meanwhile, and so on...):
void loop()
{
if (digitalRead(button) == LOW) {
// The user pressed the button! Show the message:
lcd.setCursor(0, 0);
lcd.print("Test");
// Just a little debounce time here
delay(50);
// Now wait until the button is released
while (digitalRead(button) == LOW) { delay(100); }
// Done. Now clear the message
lcd.setCursor(0, 0);
lcd.print(" ");
}
}