How to help users keep the effort when filling a long (160+- questions) questionnaires?

I am lending a hand on a project of my friend who is designing a questionnaire for high school students to determine what kind of higher education they are suitable for. There will be over hundred questions and their position is random. Progress bar is already present to show the user the percentage that's left. It shouldn't be very difficult to code as he is working on a tight schedule and has to code it himself. I am trying to figure out some "quick and dirty" method to keep them going.

For example some ideas I was thinking about :

  • Is there a best method to show the content (pagination, infinity scrolling etc..)
  • What about achievements every let's say 25% of the progress.
  • If he would go with pagination is there a number of questions asked per page to give it more doable feel?