Normally SRP is discussed with reference to a class or module, but I think you're right to consider the meanings of functions, a "ragbag" function whose jobs is to "x and y and z" may not be good design.
Also performing two separate transactions to update score and timestamp is surely excessive.
I would tend to consider the functions in terms of a business meaning, say:
snapshotTest()
and
endTest()
and have a utility function that updates the student's score used by both of those.
In passing, all that transactional stuff is getting in the way of your business logic, can you not use EJBs or Spring to push that to a container?