Taki token służy nadaniu unikalności każdemu formularzowi, jednak u Ciebie nawet tego nie trzeba robić, bo możesz wykorzystać ID rekordu z tabeli, w której zapisujesz wyniki testów:
1. Odpalasz test i dodajesz rekord do bazy, w którym zapisujesz oczywiście ID, kto odpalił test, ip, czas i tak dalej - robisz dodatkowe pole, by zapisywać info o ew. refreshu strony i pola na id_testu, wyniki testu itd.
2. Dodajesz zapytanie updatujące ten rekord (np. zwiększające o 1 wartość pola refresh) przy każdym odświeżeniu strony, które nie jest:
- wywołaniem nowego testu (łatwo to sprawdzić, bo nowy test = nowy ID)
- wysłaniem gotowego testu (to też łatwo sprawdzić)
Możesz też zapisywać licznik odświeżeń za każdym wywołaniem strony, wtedy liczba refereshów musi być równa liczbie przewidzianych akcji, każdy dodatkowy F5 zwiększy licznik o 1 - na podobnej zasadzie działają liczniki odwiedzin

3. Przy akcji wysłania gotowego testu sprawdzasz te dodatkowe pole, czy nie było refreshu, jeśli był to nie pozwalasz wysłać testu lub generujesz test od nowa + odpowiedni komunikat
Ja bym to w ogóle jeszcze prościej zrobił:
Wywołujesz nowy test + czas start, teraz każdy F5 resetuje test i powoduje wygenerowanie formularza od nowa (oczywiście z już innymi pytaniami, innymi kolejnościami odpowiedzi itd.), użytkownik musi wtedy wysłać gotowy test, bo jak odświeży to mu się test zresetuje. Oczywiście wtedy trzeba dać komunikat: "zakaz F5", żeby nie było pretensji, jednak tak proste rozwiązanie ma też oczywiście wady:
- może być problem przy zawieszce przeglądarki lub łącza, użytkownicy często klikają "odśwież"
- taka metoda się sprawdzi tylko wtedy, jeśli mamy jeden etap i nie ma żadnych akcji które wymagają wysłania żądania do serwera