Hey. First I recommend you explore the design principles behind the Wolfram Language. Loops and Print statements are examples of procedural programming, which you can do, but the WL is designed around functional programming. Here is an example of functional code that does something like what you want:
tests = {test1, test2, test3};
Dynamic[Refresh[RandomSample[tests, 1][[1]], UpdateInterval -> 10]]
To adjust the update interval, you can place thin inside the Manipulate function:
Manipulate[tests = {test1, test2, test3};
Dynamic[
Refresh[RandomSample[tests, 1][[1]],
UpdateInterval -> update]], {update, {1, 5, 10, 20}}]
I shall leave it to you to place this inside a CloudDeploy function!