Если в moodle 1.9, то метакурсы (Вариант Б). Если 2.1 - то возможно лучше будет через когорты. (Вариант А). Примерно так:
1А. Создаёте когорты по именам классов или групп: 8A, 8Б, 9А, 9Б...
1Б. Создаёте специальные пустые курсы по именам классов или групп: 8A, 8Б, 9А, 9Б...
2. Вносите всех пользователей. Распределяете их по когортам.
3. Создаёте категории курсов в зависимости от желаемой структуры. Например: Математика, Физика, История. Или 8 класс, 9 класс и. т.п.
4. Внутри соответствующих категорий создаёте курсы. Например внутри математики - математика для 8 класса, математика для 9 класса и т.п. Или внутри 9 класса - математика для 9 класса, Физика для 9 класса. Первая структура чуть удобнее учителям и завучам, вторая ученикам.
5А. В соответствующих курсах настраиваете запись на курсы. При этом указываете запись из соответствующих когорт.
5Б. Указываете в настройков курсов с тестами, что это метакурс. В списке дочерних курсов выбираете те классы, которым нужно дать доступ.
6. В настройках главной страницы сайта указываете показывать только доступные курсы, тогда недоступные не будут мешаться.
Что касается отчётов. Можно вывести в excel список учеников с баллами и правильностью ответов на вопросы конкретного теста. Но гораздо удобнее прямо в системе смореть - можно посмотреть кому какой вопрос попался, кто как отвечал, за что какие баллы получил.
Другое дело, если вам нужна глобальная система контроля в масштабах всего учреждения с анализам качественной/абсолютной успеваемости в срезе по классам/предметам с отчётами по удобным руководству формам, то чтобы сделать такое решение с moodle придётся немало попотеть.