Насколько я вас понял - вам нужно на стороне клиента считать время "от начала тестирования" (или "до конца тестирования", что почти одно и тоже). С моей точки зрения стоит в базе хранить только время начала/окончания тестирования для конкретного студента.
Сооветственнно делаете в базе данных таблицу со столбцами "ID студента" (ключевое поле), "Время начала теста" (или "время окончания теста", мне даже кажется что последнее лучше). Соотвтественно вы при открытии страницы как-то определяете кто у вас там тестируется (авторизацию в общем делаете. В простейшем случае, если не хотите авторизацию - доавте столбец "Код для доступа", который генерируете рандомно при добавлении новой строки в таблицу, этот код даете студенту для авторизации. Но если вы пишете что-то не наколенное. то все-таки делайте нормальную авторизацию). Затем смотрите - если такого студента не записанно - добавляете запись; Если есть - вы точно знаете когда ему надо закончить.
p.s.
Ну я думаю очевидно что я сильно все упростил. В реальности там, вероятно, вам захочвется в базу писать больше разной информации, но это вы уже и сами сообразите.
p.p.s.
Ну и не забывайте про куки - если студент нажмет "обновить страницу", то в идеале он должен увидеть все тоже самое (а не заново окно логина). Тут уж, извините, не дам пояснений т.к. к вебу отношения не имею, и про куки знаю только то, что они существуют. В общем рекомендую для гугления что-нибудь "про хранение сессии на стороне сервера" и "про куки".